(计算机软件与理论专业论文)基于需求模型的软件快速原型的自动生成.pdf_第1页
(计算机软件与理论专业论文)基于需求模型的软件快速原型的自动生成.pdf_第2页
(计算机软件与理论专业论文)基于需求模型的软件快速原型的自动生成.pdf_第3页
(计算机软件与理论专业论文)基于需求模型的软件快速原型的自动生成.pdf_第4页
(计算机软件与理论专业论文)基于需求模型的软件快速原型的自动生成.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(计算机软件与理论专业论文)基于需求模型的软件快速原型的自动生成.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华东师范大学硕士学位论立基于需求摸型的软件原型的自动生成 论文摘要 快速原型的方法是当前比较受欢迎的一种软件开发方法,它使开发更加迅速、 成本合理。本文在统一建模语言( u m l ) 的基础上,提出一种面向对象的软件 快速原型的方法,及其支持这种软件快速原型方法的工具一a u t o p a ( a u t o m a t i c p r o t o t y p eg e n e r a t i o na n da n a l y s i s ) 。 a u t o p a 是一个基于形式化方法的u m l 工具,它用于软件快速原型的自动生成 和分析,有着坚实、可靠的理论基础。本文将主要介绍a u t o p a l o 版本的设计与 开发,它将实现从u m l 系统需求模型到与其对应的一个可执行的软件快速原型 的转换。一个u m l 系统需求模型是由一个用况模型和一个概念类模型构成,可 以用u m l 中的用况图和类图来描述。a u t o p a l o 所接受的u m l 需求模型是,通 过m a 西c d r a w 9 5 来描述的,输出在个符合x m i 规范的x m l 文件上。对于在 用况模型中的每个用况,分别用一对基于概念类模型的前置条件和后置条件描 述,或者用一个同样基于概念模型的活动图描述。对于用前置条件和后置条件 描述的用况,a u t o p a l o 将用一系列算法产生个活动图,使之满足前置和后置 条件所要求的用况功能。通过生成的u m l 需求模型,a u t o p a l 0 将生成一个u m l 需求模型对应的软件快速原型程序的j a v a 源代码,运行生成的代码将可以观察 每个用况的运行。一旦获得了系统需求模型的快速原型,就可以通过运行软件 快速原型,来检查每个用况运行的前置条件和后置条件,以及系统不变式来验证 需求是否正确,这将有助于用户与系统设计者的沟通和理解。 在文章的最后将给出一个图书馆的例子,通过建立一个的图书馆系统的u m l 需求模型,介绍如何用a u t o p a l o 生成图书馆系统的快速原型,及其运行情况。 关键词:软件快速原型,u m l ,面向对象,x m i ,需求模型,用况模型,概念类 模型,j a v a 代码生成 华东师范大学硕士学位论文基于需求模型的软件原型的自动生成 a b s t r a c t s o f h v a r ep r o t o t y p i n gi sap o 芦u l a r 印p r o a c hf o rs o 矗w a r ed e v e l o p i n g i tm a k e st h e s o f h v a r ep m c e s sm o r ee f f e c t i v e ,a n dr e d u c e st h ec o s to fd e v e l o p m e n t i nt h i sp a pe t 、v ep m p o s ea no b j e c t - o r i e n t e da p p r o a c ht h a tb a s e do nu m lf o rs o 胁a r ep r o t o t y p i n g , a i l da l s od e v e l o pt h et o o lf o rp r o t o t y p i n g a u t o p a ( a u t o m a t i cp m t o t y p eg e n e r a i i o n a n da n a l y s i s ) a u t o p ai sau m lt o o lb a s e do nf b r m a lm e t h o d ,w ep r e s e n tt h ci n i t i a lv e r s i o n a u t o p a l 0t h a ti m p l e m e m st h et r a l l s f o 珊a t i o n sf 幻mu m ls y s t e mr e q u i r e m e n t s m o d e l st oe x e c u t a b l ep r o t o t y p e si n 山i sp a p e lau m ls y s t e mr e q l l i r e m e n t sm o d e l c o n s i s t so fau s e c a s em o d e la 1 1 dac o n c 印t u a lc l a s sm o d e l t h eu m lr e q u i r e m e n t m o d e lt h a tc a nb ea c c e p t e db ya u t o p a l oi sd e s c r i b e db ym a g i c d r a w9 5 ,w h i c hi si n f o 肌o fx m lf i l et h a tc o n f o n l lt ox m i e a c hu s ec a s ci se i t h e rd e s c r i b e da sap a i ro f p r ea n dp o s tc o n d i t i o n si nm ec o n t e x to ft h ec o n c e p t u a lm o d e lo rr e p r c s e m e da sa n a c t i v i t yd i a g r 锄d r a w nb yt h eu s e lf o r 血eu s ec a s e sm a td e s c r i b e da sap a i ro fp r e a n dp o s tc o n s i t i o n 3 ,a u t o p a 、i uu s es e v e r a la l g o r i t h e m st og e m e r a t eaa c t i v i t y d i a 留a n lw h i c hc a ni m p i e m e n tt h ef u n c t i o n st h a td e c l a r e db yu s ec a s e s b a s e do nt h e u m l r e q u i r e m e n tm o d e lg e n e r a t e db ym a g i c d r a w ,a u t o p a 1 0w i l ig e n e r a t et h ej a v a c o d eo ft h ep r o t o t y p ef o re x e c u t i o n a f t c rg e m n gm ep r o t o t y p eo far e q u i r e m e n t s m o d e l ,n m n i n gt h ep r o t o 啪ec a nv a l i d a t et 1 1 er e q u i r e m e n t sb yc h e c k i n gt h ep r ea n d p o s tc o n d i t i o n so ft h eu s ec a s eo p e r a t i o n sa n dt h es y s t e mi n v a r i a r | t s i th e l p st o i m p r o v em eu n d e r s t a n d i n gb e 帆e e nc u s t o m e r sa n dd e s i g n e r s , f i n a l ly w ew mu s ea ne x 锄p l eo fal i b r a r ys y s t e mt oi l l u s n 虬eh o wt og e n e r a t et h e p m t o t y p ef r o mt h eu m lr e q u i r c m e n tm o d e lo fl i b r a r yb ya u t o p a lo k e yw o r d :p r o t o t y p e ,o b j e c t o r i e n t e d ,u m l ,x m i ,r e q u i r e m e n tm o d e 【, u s e c a s em o d e l ,c o n c e p t u a lc l a s sm o d e l ,j a v ac o d eg e n e r a t i o n v 【i 基于需求模型的软件原型的自动生成 学位论文独创性声明 本人所呈交的学位论文是我在导师的指导下进行的研究工作及取得的研究成 果据我所知,除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰 写过的研究成果对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说 明并表示谢意 作者签名:盈。二立 日期: 学位论文授权使用声明 本人完全了解华东师范大学有关保留、使用学位论文的规定,学 校有权保留学位论文并向国家主管部门或其指定机构送交论文的电 子版和纸质版。有权将学位论文用于非赢利目的的少量复制并允许论 文进入学校图书馆被查阅。有权将学位论文的内容编入有关数据库进 行检索。有权将学位论文的标题和摘要汇编出版。保密的学位论文在 解密后适用本规定。 学位论文作者签名: 日期: 导师签名:( 石f 车二砂 日期:。1 3 ,l 华东师范大学硕十学位论文基于需求模型的软件原型的自动生成 1 1 问题的提出 第1 章引言 在软件开发的早期阶段,软件设计者往往很难得到一个正确的,可以满足顾客需要的软件 需求。很多情况下,这是由于软件设计者无法正确的理解用户提出的系统以及需求。此外, 初期获得的软件需求,在没有经过测试的条件下,很难验证其正确性。而在传统的瀑布式软 件工程方法中,开发过程包括需求分析和定义、系统设计、实现和单元测试、系统集成测试、 运行维护等多个阶段。这一方法的优点是全面、严谨:而最大的缺陷就是过程一旦启动就 难以适应变化。瀑布式的软件丁程方法必须基于一个重要的假设前提能够提出明确的需 求。当面对快速变化、甚至根本不明确的需求时,这种假设显然根本不能成立,因此这种传 统的开发方法的缺点就越来越突出,特别是应用软件的开发,由于它与市场的联系非常紧密, 使用这种传统的开发方法,已经难以为继。 然而在软件的开发过程中,对需求正确性的验证中非常重要 1 。在软件投入使用后会发 现,出现的很多问题根源就是缺乏早期对需求正确性的验证( v a l i d a t i o n ) 。而之所以会产生 这些问题,是因为需求往往在开发以前没有被很好的正确理解,导致需求在开发过程中频繁 变更,使最后开发的产品偏离真正的需求越来越远。相对于更正软件开发后续的其他阶段花 s o u r c eo fe r r o r s e r r o rc o r r e c t l o n 3 i a g e h e l a v ec o s t 0 f r e d a 阡 k e 口u i r e m e n t s 1 d e s i a n5 i m d i 吾m e n t d t i o n 1 0 u 捕tt e s t 2 0 a c c e d t d n c et e s t5 0 m a i n f e n a n c e 2 0 0 图1 1 软件需求验证的重要性 华东师范大学母i 士学位论文 基于需求模型的软件原型的自动生成 费的代价,需求分析阶段对需求做出更正的代价要少的多( 图1 1 ) 。 实践证明,这些需求 阶段未发现的错误,当逐层传递到软件开发周期的后续其他阶段时,要更正这些错误所花费 的代价将相当的高( 图卜1 ) 。并且在软件开发过程中,大多数的错误是发生在需求和设计 阶段只有少量是发生在编码阶段。所以,对需求的验证可以大量减少软件开发的成本,这 就很有必要在需求分析阶段,对需求的正确性进行验证。图1 - 2 中列出了在需求错误的种 类【2 ,我们发现需求的错误有7 7 是由于需求报告中的笔误,非笔误的报告只有2 3 。比 如一些语义上矛盾、模糊的而导致的错误,它们只占所有需求错误的1 8 。这也包括在传统 的瀑布式开发方法中,初期阶段的系统需求说明书上可能出现的错误。这使我们需要一种能 够有效的验证需求正确性的方法,从而寻找一种更加快速、使成本更加合理的软件开发方法。 4 9 一厣 3 1 f c l :耐 2 3 z r _ 同 7 l1 m l n 错产 o m 博s i o n i n c o n s 噶t e n c ya m b gu t yr 酗哥烯 f a c tr e q u i f e m e m 图1 2 需求错误的种类 这种情况下,软件快速原型方法( s o 脚a r ep r o t o l y p i n g ) 被提出来。快速原型方法就是这 样一种使开发更加迅速、成本合理的开发方法。在软件开发过程中,最关键的步骤就是确切 定义出需求,明确软件要实现的功能是什么,而这恰恰也是最困难的过程,因为现在许多用 户在初期只有一个隐约的、大致的考虑,根本不可能清晰而正确而表达出来的需求,特别对 于一些火型的复杂系统 9 。而目前大多数的关于程序的理论,一般只关注于程序的静态行 为,只有很少的理论去解决软件的动态行为。所以,当使用快速原型与顾客进行反复交流, 来验证、精化需求,就成为一种非常有效的方法。一个软件的原型,包括软件系统的功能性 需求( f u n c l i a l l a ir e q u i r e m e n t s ) 和非功能性需求( n o n 如n c t j a n a lr e q u i r e m e n t s ) ,而不去考 虑运行效率,也不考虑软件系统的健壮性以及出错处理等等,它的目的只是为了实际描述概 念中的结构,使用户能够检测与其概念的一致性和概念的可用住。它是一种非常高效的方法, 如 们 华东师范大学硕士学位论义基于需求模型的软件原型的自动生成 一方面,通过软件快速原型,使得顾客对待开发的软件系统有较直观的认识,这样可以填补 软件设计者与用户之间对需求理解的差异;另一方面,使得在需求分析和设计阶段,就可能 把一些潜在的错误暴露出来,使得软件设计者可以更正原先存在错误的软件需求,正如前面 提到的,早期错误检测对于项目来说可减少大量的成本。此外,b a r r yb 0 e h m 的实验数据, 揭示软件快速原型方法可以减少约4 0 的程序工作量【9 。 目前,软件快速原型的方法已经被r 大的业界人士所接受,图1 3 为软件快速原型的开 发流程,一般来说软件快速原型的方法具备以下几个特点 4 ,【5 ,【6 ,【7 】,【8 】: 图1 3 快速原型开发过程 使得系统 j 程师更深入的理解需求领域的很多概念, 通过向用户展示软件快速原型,加强与用户的交互来验证系统工程师理解的需 求是否与用户真正的需求是否一致, 提供一种机制,使得设计者( d e s i g n e r s ) 能将设计思想能有效的传输给开发者 ( i m p l e m e n t e r s ) ,确保软件设计者与实现者对需求理解的一致性, 提供更有效的方法,处理由于需求变更而带来的问题, 能够为软件测试提供有效的支持。 1 2 软件快速原型的相关工作 s a g e 和p a l m e r 总结了六个主要软件快速原型工作者所做的工作,按照三个主要特征,划 分了u 卜八种软件快速原型的方法 1 2 】。但是很难通过这三种简单分类,来区分这十八种快速 原型的方法的异同, 于是w o o d 和k y o 做了更细致的工作,他们按照更具体的十一二种子特 - 3 一 华东师范人学硕士学位论文 基于需求模型的软件原型的自动生成 征,重新将这十八种快速原型的方法进行划分 1 1 】( 表l 1 ) 。 e 啦b 皿啦_ 曰譬籀且越皿饪噬 嚣 t 毒 零 罾 暑 薹 p星 鲁 4 案 : 姜量 暑 譬 警 g j9 岳 垦 主 墨 堇至 暑 a u t h o f c i a s s m c a t i o n 量 l娶 皇 呈孽墨夸 芎 l ; 蠹 言 g点 砉 寻 o王 拿 譬 一; )寸 m芒 笙 s a g e ,p a i m e r s 仃u d u r a i f u n c 拄o n a i p u r p o s e f u i 卅 c h u r c t le ta i e x p i o r e 悖q s 卅 l n v e s t a 建e m 卅 f e a s i d e m r i d d i e ,w i i l i a m s 创d u t i c m a r y 一一 e x 口e n m e n t a i , 一 e x p l o f a t o r y c a 阳y ,m a s o nv 鹕i d no一 川川一 一 d e m o n s 订a 缸o n 一 卅一 s c 鲫a n o 一卅 卅, 一 h e k m a 佃o u r n c 悖m e n 掘l “,一一 一一 吼0 l u i i o n a r y 卅1 , 一一一一 仇巾w - a w a y 卅 卅 卅卅 s c h n e i d e r c o n c e m 一 一 i a b o 陪t o r y 一一 蟊e i d 一一 一 f r e e m a nd e c i s b n , 一一一 p 陀f i m i n a r y, 一, c o n c u r 瑭n t ,卅 s t e p c o n c e p te x p i 卅 s o l u l i o ne v a i 一 卅 d e v e i e v a l , ,_ 表格1 1 快速原型的分类 目前比较常用的快速原型方法,包括以下两种: 丢弃原犁( t h r o w a w a yp r 。t o t y p ;n g ) 【1 3 】,【1 4 】:其目标只是为了明确需求,使j 目最简 单的开发方法,以最低的成本实现一个可r :作的系统,该系统只关注功能,不考虑开 华东师范大学硕士学位论文 基于需求模型的软件腺型的自动生成 发工具、性能、容错、未来实际运行环境等【1 5 】。通过反复与客户交流和修改原型, 使原型的功能能够充分体现客户需求。在明确了需求之后,原型就会被丢弃,不过有 些快速原型的代码可能会被重用【1 6 ( 图1 4 ) 。以后软件的开发将根据明确了的需求, 按照传统的工程化方法来开发,这种快速原型的方法可以用在传统瀑布模型的各个 阶段, 但总的来说,比较适合用在需求与设计阶段 1 7 】: 图1 - 4 丢弃原型的开发流程 进化原型( e v 0 1 u t i o n a 叮p r o t o t y p i n g ) 1 3 , 1 8 :其目标是与客户一起工作,从一个 原始的、不稳定的需求的轮廓开始。逐步增量、迭代开发,最终发展成为符合实际需 要的系统( 图1 5 ) 。与丢弃原型相比,进化原型适用于无法在一开始获得稳定的需 求的系统,需求可能根据用户以及环境需要, 而不断变更、增加,进化原型要求能 动态、灵活的响应这些变化 1 9 】,这样开发周期会重复出现重新设计、重新实现和重 新评估簿过程r 而不必要在开发之前就要求有一个完备的系统需求规范 1 4 , 1 8 】。 圈1 - 5 进化原型的开发流程 华东帅范大学坝士学位论文 基于需求模型的软件原型的自动生成 1 3 本文研究的问题 一般来说软件快速原型覆盖了即将开发的软件系统的两个方面:软件的应用需求和软件 的架构。目前,统一开发过程( 1 1 1 eu n m e ds o f h v a r ed e v e l o p m e n tp r o c e s s ) 已经在工业界 被广泛应用。它是一种以用况驱动( u s ec a s ed r i v e n ) 的、以体系结构为中心 ( a r c h i t e c m r e - c e n 埘c ) 、迭代和增量( i t e r a t i v ea n di n c r e m e n t a l ) 的软件开发方法 2 3 】,采用统一建 模语言( u m l ) 进行系统建模。本文将采用统一过程在需求分析阶段的两个重要模型:用 况模型( u s e c a s em o d e l ) 和概念模型( c o n c e p t u a lm o d e l ) 【2 3 】, 2 5 ,来对系统的需求进行建 模,然后在需求模型的基础上构建软件快速原型。其中,用况模型包含了待开发系统中的各 个用况以及这些用况之间的关系,它们描述了软件系统中重要的功能需求 7 】;而概念模型 描述了待开发领域中各种概念名词,以及它们之间的关系。生成的软件快速原型,将以概念 模型为上下文,实现用况模型中每个用况的功,它反应了系统的基本需求以及软件架构。我 们将用生成的软件快速原型来验证需求模型的正确性。 当我们采用快速原型的方法来验证一个需求模型的正确性时,软件快速原型往往是系统的 简化版本,包括了一些系统重要的功能子集,但是不考虑最计阶段和实现阶段涉及的一些 细节这使我们可以把主要精力放在概念领域的分析。a u t o p a 【3 1 】是一个基于形式化方法的 u m l 工具软件【2 7 ,【2 8 】,【2 9 】, 3 0 】,有着坚实的理论基础【2 0 】。它根据输入的软件需求模 型,自动生成软件快速原型程序的j “a 源代码,运行生成的代码即可执行需求模型对应的 软件快速原型。从前面讨论的软件快速原型的分类上看由a u t o p a 产生的软件快速原型属 于丢弃原型【1 3 , 1 4 】。其目标是在软件开发的需求阶段,为了明确和验证需求根据一个原 始的需求模型,以非常低的成本实现一个可运行的软件系统,该系统只关注功能,不考虑开 发工具、性能、容错、未来实际运行平台等等。然后通过运行软件快速原型,反复与客户交 流,修改与验证原型,使原型的功能能够充分符合客户真正的需求,也尽可能修正一些用户 在初始时提出的一些可能存在错误的需求。在明确了需求之后,原型可能会被丢弃不过部 分实现的代码,可能会在将来的开发中不断精化、重用。当获得对原始的需求模型进行正确 性验证后,将会获得一个新的更为精确的需求模型屙,然后在设计与实现阶段将不断对此需 求模型精化,直到最后生成可交互使用的软件系统。 本文所使用的a u i o p 芦l 的版本是a u t o p a l 0 ,其导入的需求模型是由统一建模语言( u m l ) 来描述的【2 4 】,在工具中我们通过m a g i c d r a w 9 5 来获得这个需求模型,其输出是一个x m l 文 件,该x m l 文件遵循u m l l 4 【2 1 规范和x m l l 2 规范【2 2 】,这个两个工业规范均由对象管 6 华东师范大学硕士学位论文基于需求模型的软件原型的自动生成 理组织( o m g ,o b j e c tm a n a g eg m u p ) 所制定。a u t o p a l 0 导入x m j 文件后, 产生的软件 快速原型将包含了u m l 需求模型中每个用况的执行情况。 a u t o p a l o 采用j a v a 开发的,它主要包含以f 两部分( 图i 一6 ) : x m i 解析器:分析由m a g i c d r a w 产生的的x m i 文件,转成相应的j a v a 数据结构。 代码产生器:生成快速原型的j a v a 代码 1 4 本文的组织结构 图1 - 6 a u t o p a l0 的体系结构 文章剩余的章节将组织如下:第2 章简单的介绍x m l ,以及和x m i 与本文的关系;第3 章提出了一个形式化的u m l 需求模型,包括概念模型和用况模型,简单的介绍一个图书馆 系统的u m l 需求模型;第4 章介绍了软件快速原型工具a u t o p a 的设计和实现,重点介绍 了a u t o p a 的两个主要功能模块:x m i 文件解析和j a v a 代码生成;第5 章将给出一个完整 图书馆系统的需求模型作为案例分析,描述如何用a u t o p a 生成它的软件快速原型;第6 章 将做对本文所做的贡献,做一些简单的总结。 华东师范大学硕士学位论文基于需求模型的软件j 糸型的自动生成 第2 章x m l 元数据交换( x m i ) 随着i n t e m e t 的不断壮大以及网络技术的不断发展,可扩展标记语言( e x t e n s i b l em a r k u p l a n g u a g e ,x m l ) 正受到越来越多的关注。x m l 的简单性、严格性以及良好的数据传输性, 将使其成为下一代网络技术发展的核心。但是在x m l 中表示对象还是一件比较困难的工作, 必须依靠相应的技术在x m l 和应用对象之间进行转换。随之而来,一种新型的x m l 技术 诞生了,这就是x m l 元数据交换( x m lm e 诅d a t ai n t e r c h a n g e ,x m i ) ,它可以将x m l 文档 赢接映射成对象,或与其他的软件工具交换这些对象,最重要的是x m i 使人们可以在x m l 应用程序中实现建模。x m i 是对象管理组织( o b j e c im a n a g e m e n tg r o u p ,o m g ) 制定的一 个t 业规范标准。o m g 是一个软件工业联盟,它通过开放的标准来在支持面向对象技术的 互操作。 然而,x m l 不是面向对象的。x m l 定义了x m l 元素和x m l 属性,而不是对象。尽管 x m l 模式定义了类型,但是它不支持面向对象的很多特征( 比如多重继承) ,而且也不包括 对象模型。近几年,面向对象程序设计的技术不断发展,很多流行的编程语言都有面向对象 的特性,包括目前主流的c + + 、c # 和j a v a ,甚至一些脚本语言也开始提供支持面向对象的 特性,比如p e r l 和p ”h o n 。而使用x m l 作为数据交换也在程序设计中越来越频繁此时 x m l 不面向对象的特性就会引起一些麻烦。由于x m l 不是面向对象的,因此必须有一种 好的方法使对象映射到x m l 中。这时x m l 就很有必要被提出来,x m l 也是一种x m l ,它 并未扩展x m l ,而是建立在x m l 之上的。就像x m l 是建立在u n i c o d e ( 统一字符编码) 标准之上的,为了表示数据,u n i c o d e 详细的说明了不同语言中的字符。利h i 同样的方式 x m i 建立在x m l 之上表示对象,图2 1 描述了这种概念。 图2 - 1x m i 是建立在x m l 之上 华东师范大学硕士学位论文基于需求模型的软件原型的自动生成 由于x m l 的灵活性,所以可能会有多种映射方法。尽管如此,在交换x m l 文档时,这 种灵活性也会带来一定的问题。如果一个工具用一种方式将对象映射到x ml ,而另一个工 具用另一种方式,那么这两个工具就有可能不正确的解释了对方x m l 文档里的对象( 图 2 2 ) 。由于x m i 使用模型来确认对象是共享的,从而一个使用了x m i 的工具可以与另一个 使用x m i 的工具交换对象。这是由于x m i 定义了对象和x m l 之间的映射,因此一旦定义 了要被交换的对象,那么如果使用了x m i ,则不需要为对象创建自己的x m l 表示。同时, 不需要执行自己的转换代码来将对象转换为x m l 元素,反之亦然,使用x m i 的软件将进 行这种转换。因为转换是标准化的,所以能够与使用x m i 的其他软件交换对象( 图2 3 ) 。 此外,x m i 为对象和x m l 之间的差距建立桥梁的另一种方法,是通过指定怎样从x m l 文 档、d ) 和模式中创建模型。这种方式可以使用已经存在的x m l 资源以及定义自己的软件 模型。一旦创建了模型,就可以实现很多目的。 l 兰兰乓副兰竺 赢孑匕 图2 - 2 不使用x m i 的对象获取 图2 - 3 使用x m 本文之所以介绍x m i ,是因为a u t o p a 中作为输入的u m l 需求模型是通过u m l 工具 m a g i c d r a w 所生成的一个x m l 文件,它是基于x m i 规范的。 x m i 从制定到现在经过数个版本,这是由于x m l 技术在这几年也迅速发展,很多新的基 丁x m l 的标准被提出,包括x m l 的文档类型定义( d o c u m e n tt y p ed e n n i t i o n ,d t d ) 和 x m l 模式( s c h e m a ) 。为了迎合这些新的特性,x m i 也在做着相应的改变,目前比较常用 的包括x m l l 2 和x m l 2 o 。其中x m l l2 包含的内容详细说明了如何从模型中创建x m l 的 文档类型定义,而x m l 2 o 则更是支持x m l 模式,它详细说明了如何从模型中创建x m l q 一 华东师范大学硼一 学位论文 基于需求模型的软件原型的自动生成 的模式。d t d 和模式都定义了x m l 文档的内容。另外x m i 还详细说明了如何从x m l 文 档、x m ld t d 以及x m l 模式中反转工程模型。x m l 的主要优点包括: x m i 为x m l 中的对象的表示提供了标准从而有效的交换应用了x m l 里的对象 x m i 详细说明了如何从模型中创建x m l 模式。 x m i 详细说明了如何从模型中创建x m l 文档类型定义。 x m i 是用户能够简单的创建x m i 文档,并且使这些文档随着应用程序的不断改进而 变的更加的高效。 x m i 使得非x m l 专家也可以使用x m l ,不过用户可以利用自己的x m l 专业技能 来裁减( t a i l o r ) 对象的x m l 表示。 本文采用u m l 建立需求模型。由丁我们的需求模型不考虑将来实现的系统中包括编程语 言在内的很多特性,为了共享使用不同的语言编写的对象,需要定义对象的具体内容。当不 去考虑使用的编程语言时u m l 就为我们提供了这种便利。u m l 同时提供了一种标准的嘲 形化符号,用于分析以及设计面向对象系统,这使得我们使用u m l 建立需求模型时,不必 考虑系统实现时可能采用的编程语言。另外,目前很多u m l 可视化r 具都使用x m i 来存 储u m l 数据。使用x m l 可以使数据在对象中,也可以映射到对象。在u m l 中使用了面向 对象领域中类、实例以及继承等概念,u m l 的这些概念由一个对象模型定义,它就是元对 象工具( m e t a o b j e c t f a c i i i t y , m o f ,o m g 的一个规范标准) ,这是一个比u m l 更高层次 的抽象概念。是在u m l 的元数据模型( u m l m e t a m o d e l ) 之上,它的目的是为了描述u m l 的扩展或者其它未来可能出现的类u m l 的建模语言。而m o f 也是关于x m i 的对象模型, 所以很自然的就能用x m l 来描述u m l 模型,图2 4 描述了这样的过程。 礓h f 懂型 二二二二= n 儿甘式 图2 - 4u m l 模型生成x m i 模式 由于x m i 明确提供了对对象的支持,当人们使用x m i 创建u m l 模型时的时候,就不需 要关注定义的对象的x m l 表示。利用相似的方式,可以在实现x m i 规范的u m l 软件中, 直接操作对象,而不必另外花很多的工作用丁- 分析、操作x m l 元素和x m l 属性,这包括 华东师范大学硕士学位论文基于需求模型的软件原型的自动生成 了目前比较流行的u m l 工具m a g i c d r a w ,也就是a u t o p a 借助获得需求模型的上具。通过 允许直接操作对象的方式,实现x m l 指令的软件使得不是x m l 专家的用户也可以方便使 用x m l ,这将有助于在a u t o p a 中解析由m a g i c d r a w 产生的x m l 文件,它使用了x m i ,使 得我们可以很方便的获得当中的很多用u m l 定义的概念和符号。 a u t o p a 中的x m i 解析模块的主要功能是,分析在m a g i c d r a w 中建立的u m l 需求模型( 第 三章将会详细介绍需求模型) ,这是作为一个x m l 文件输出的。根据这个x m l 文件,a u t o p a 将生成这个文件里包含一系列u m l 符号对应的j a v a 类,这部分内容在第4 章中将会做详细 的介绍。 华东师范大学硕十学位论文基于需求模型的软件原型的自动生成 第3 章u m l 需求模型 需求的捕获与分析是统一软件过程早期阶段的主要活动,它包括用况模型和概念模型的建 立和分析。需求的捕获和分析,可能有各种不同的切入点,统一软件过程总结了需求分析流 程的主要4 个步骤 2 3 : l 列举出所有可能的需求, 2 了解系统的上下文环境( s y s t e mc o n t e x l ) , 3 捕获功能性需求, 4 捕获非功能性需求。 而作为软件快速原型,其关注的主要是系统的功能性需求,所以针对软件快速原型而建立 的系统需求模型只关注系统的功能性需求,本章后面讨论的需求模型将由用况模型与概念模 型组成,它们可以分别用u m l 中的用况图和类图来表示,本章分别讨论这两个模型。 3 1 概念模型 概念模型( c o n c e p t u a lm o d e l ) 又被称为领域模型、分析模型,它描述了待构建系统所涉 及领域的一切可能出现的概念、名词。为了获得正确的需求和构造正确的系统,软件设计与 开发人员必须掌握待构建系统的所涉及领域的大量相关词汇、概念,了解系统中存在哪些重 要概念名词以及这些概念名词之间的关系了鳃它们是用在何领域、如何工作。因为一般提 出需求的用户,他们都不是软件设计或计算机相关人员,不可能一开始就用很专业的计算机 术语和他们交流,所以这些概念、名词就是和他们沟通、交流的一个重要工具。当熟悉了特 设计软件系统所涉及领域的大量概念、名同后,我们就可以在此基础上以相对专业的其他术 语和方法来构建需求模型。 在联合国大学国际软件技术研究所,h e 、l i u 和l i 等人对u m l 的形式化作了大量工作【2 7 , 2 8 】, 2 9 。在这些工作的基础上,本文用一个二元组c m = ( d ,) 来描述概念模型,其 中d 是一个类图,描述了系统中所有关系的概念以及它们之间的关系: ,是一系列状态约 束谓词,用来描述i e | j 类图描述的系统里的一些约束5 制条件,是用属性和关系来表示的渭 词。概念模型定义了系统运行的环境上下文,之后用况模型就是在此基础上运作的。 华东师范大学硕士学位论文 基于需求模型的软件鲰型的自动生成 类图d 包含以下几个主要组成部分: 类的集合:本文使用c 来表示在类图里定义的所有类的集合,这是个有限集。 类的属性:对于任意一个c c ,我们用a n r ( c ) 来表示类c 里所有的属性, a m ( c ) 的格式是 a t t r ( c ) = , 其中t ,代表属性a 的类型。注意,对于在概念模型中的每个类,我们尽可能只考虑类 的一些其本身固有的属性中( 一些与其他类相关的属性尽量放到设计阶段,再逐渐被添 加作为类的属性中) ,这些属性可以 j 一些基本数据来表示。本文规定对于概念模型中 的每个类,其属性类型只有字符串( s i r i n g ) , 布尔值( b o o l e a n ) 和整数( f n t e g e r ) 三 种。这种考虑是为了最大限度简化需求模型中每个类的复杂性,使z 易于理解。把复 杂的数据类型( 比如类图里的其他类) ,以及通过类与类之间关系体现出来的属性做为 类的属性,将会留在设计阶段再逐步添加、细化,而添加依据是通过概念模型的类图中 的类与类的关系体现出来。此外,在概念模型里,我们不考虑数据的封装利保护,即不 用p u b l i c 、p r i v a t e 和p r o t e c t e d 等修饰符来限定类的某个属性,这里假定类的所有属性都 是p u b l i c 的。 关系集合:本文使用一j 来表示在类图里定义的所有类与类之间关系的集合,对于任 意一个a s s o 爿, a s s o 用如f 格式表示: a : 其中a 是关系名,c hc 2 c ,他们代表在此关系里各自的角色 关系的多重性:在类图里,每个关系都有其多重性约求,所谓多重性指的是个类在 一个类与类关系里,所允许的上限和下限,对丁a : 爿,我们用如f 方法 表示其多重性约束: m u l “( a : ) = ( m l ,m 2 ) 其中m 】,m 2 是两个正整数区间,分别代表c 1 ,c 2 在关系a : 里允许出现的个数 范嗣。 3 。2 系统状态以及状态约束 当我们刚概念模型将待建系统的各种概念、名词抽象为类后,我们用形象米代表在系统中 出现的每个类的具体实例。每个对象将有一个苏讶,费用来标识它与相同类型的其他对象的 华东师范大学硕士学位论文 基十需求模型的软件原型的自动生成 区别:每个存在的对象的各个属性在特定时刻都有其在特定时刻的值,但是对象的标识符从 对象在系统里被创建开始的整个生命期内保持不变。对象在系统存在的不同时刻各个属性的 值,构成了在此刻的膨象的犹泰。 下面将分别给出一系列定义, 通过这些定义来定义磊赞攒窟t 相同类的对象的集合: 用c 坛r ( c ) 来表示在系统中存在的所有类c 实例的集合, 其中c w 。 系统所有的对象集合: 用c 阮坩来表示在系统中存在的对象的集合: c 阮心= c 跆,( c ) c c ) 相同的关系对象的集合 用爿r 5 j 。) 来表示在系统中存在的所有关系5 s d , 其中a s s oe 一。 系统所有的关系对象的集合 用爿心来表示在系统中存在的关系对象的集合: 爿地,g = 一地,( 4 s s 。) i 4 s s 。ec ) 系统状态 当获得了系统所有的对象集合和系统所有关系对象的集合,我们用系统对象集合和 系统关系对象集合来定义系统状态: s v s t e m s a l e = c r sua 钮r s 系统状态代表了某个时刻系统里存在的所有对象,以及对象之间的关系,它描述了系统在 某个时刻的状态。 系统的状态约束是一系列作用在系统状态空间上的谓词约束,即一。个稳定的合法状态应 该满足所有这些约束条件,所有这些谓词在系统的一个稳定的合法状态f 的取值必须为真, 所谓的稳定的状态是指系统在执行某个功能的操作前后的状态,系统操作执行的过程中的某 些中间状态不受状态约束限制。系统的状态约束主要包括两个方面: 系统中,某些类型在系统稳定状态必须满足的一系列条件: 对cec : ,c 日,们其中d f 护是类c 的某个属性。 系统中,某些类型的关系在系统稳定状态必须满足的一系列条件,作用在关系上的约 束在类幽中的类与类的关系里规定了。比如,对于关系 a : ,m u l t j ( a : ) = ( m l ,m 2 ) 一i4 一 华东师范大学硕士学位论文 摹于需求模型的软件原型的自动生成 以下式子必须在系统状态稳定时满足, voec i 。i o i l ( o ,o 】) a : ) i m 2 vo c 2 i ( 0 2 i ( 0 1 ,o ) a : m 其中f 1 返回了一个集合里元素的个数。 3 3 一个图书馆系统的概念模型 现在本文给山一个图书馆系统的需求:图书馆管理员管理着一批书籍,管理员负责书目 以及与陪目对应的图伟的添加和删除,管理用户的注册和删除。每个书目可对应有一本或 多本图书。当一本图书处于空闲状态时,任何用户都可以借到此书,当这本圈f s 被某用户 借走时,该图书书就处于不可借状态, 无法被任何用户借走。当一本1 j 被一名注册_ l | 户借 走,管理员将创建一个借书卡,记载书本名字和用户名字。用户可以预订一个书目,该书目 的对应的图书如果处于空闲状态,被优先借给预定的用户,此时管理员将创建一个预订卡, 记载书目名称和读者名字。一名用户可以借走的图书数量不得超过十本,此外一个用户最多 只能预定三本饽目。图3 1 为通过需求分析后获得的图书馆系统概念模型的类图。 p u b c a t l o n1 1 o - 副n 晦 - p u b n a m e :s ” n g c o 0 。 r e 3 e n a t i o n - l d :甜r i n g 01 s h e f o c 0 p y - i d :s n g a v a i l a b l e :b o o i e a n b0 l m w s o31 u s e r - i d :嚣n g - u s e r n a m e s t n n g 图3 1 图书t 自系统的类图 类图里的信息包括: 概念类集合: p u b l i c a t i o n ,c 。p y u s e lr e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论