




已阅读5页,还剩84页未读, 继续免费阅读
(计算机应用技术专业论文)统一软件过程(rup)核心原则的实践.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 当今时代,软件开发活动越来越复杂。需求多,而且变化快,功能越来越复 杂,项目完成时间也一再地被压缩。如何在这种激烈的变化之中,达到软件质量 与工期的和谐,是许多软件开发组织所面临的重大问题。对于一个组织而占,一 个好的软件开发过程的价值远远大于一个好的产品的价值。 本文旨在对团队式软件开发过程进行研究。试图在理论与实践中,找到一条 解决之道,将随机的分析与设计集成起来以缩短开发周期、提高产品质量、增加 管理的透明度最终在预算内及时地向用户交付合格的软件产品。作者认为在 r u p ( r a t i o n a l 统一软件过程) 核心原则的指导下,使用u m l ( 统一建模语言) ,运 用面向对象的方法,就能构造出满足需要的软件来。 软件开发是一项复杂的工作,需要好的人员、好的技术以及好的过程才能得 到满意的产品。软件工程的三个基石是:方法,工具与过程。方法提供了“如何 做”的技术,工具为方法提供了自动的或半自动的支撑环境,过程将方法和工具 综合起来以便合理及时地进行软件开发。本文的重点在于研究r u p 核心原则指导 下的软件开发过程,即r u p 核心原则的实践。 本文从实际软件开发活动中遇到的困难入手,以亲身感受为引,详述了软件 工程技术的过去的弊端与现在的进展。介绍了面向对象方法及u m l 表示法之后, 详述了车道系统需求分析,并在需求分析的基础上详细展开了r u p 核心原则指导 下的车道系统建立设计模型的过程。随后对车道系统设计模型的实现及开发过程 进行了综述。文术,指出了实践r u p 核心原则对实际的软件开发所带来的益处。 r u p 核心原则是:用例驱动、以构架为中心、迭代化的基于构件的开发过程。 实践r u p 核心原则的前提是使用面向对象的方法与工具。面向对象的方法是一个 体系,本文的侧重在于进行面向对象的分析与设计,最终结果是:以何种顺序来 安排分析与设计任务中的各种活动即r u p 核心原则指导下的软件开发过程;使用 u m l 语言建立的车道设计模型及其实现。 关键字:面向对象,统一软件过程( r u p ) ,统一建模语言u m l ,核心原则 车道系统,设计模型。 a b s t r a c t a b s t r a c t n o w a d a y s ,t h es o f t w a r ed e v e l o p m e n ti sm o r ea n dm o r ec o m p l e x t h es o f t w a r e r e q u i r e m e n t si sd o u b l i n ga n dc h a n g i n gq u i c k l t h es o f t w a r ef u n c t i o ni sa d v a n c i n g f a s t ,b u tt h ep e r i o df o rd e v e l o p i n gs o f t w a r ei sr e d u c i n gm o r e h o wt og e tg o o dq u a l i t y s o f t w a r ei nt i m ea n do nb u d g e t ,i sab i gp r o b l e mf a c e db ym a n ys o f t w a r e o r g a n i z a t i o n s o w n i n gag o o ds o f t w a r ed e v e l o pp r o c e s si sm o r ei m p o r t a n tt h a n p r o d u c i n gag o o ds o f t w a r ep r o d u c t t h et o p i co ft h i st h e s i sa i m st og e t t i n gag o o ds o f t w a r ed e v e l o p m e n tp r o c e s s c o o p e r a t e db ym a n yr o l e si nat e a m t h i sp r o c e s sc a ni n t e g r a t e s t h ea n a l y s i sa n d d e s i g na c t i v i t i e so r d e r l yt or e d u c ed e v e l o p m e n tc y c l ea n di n c r e a s et h eq u a l i t yo f s o f t w a r ea n de n h a n c et h et r a n s p a r e n to fm a n a g e m e n t i fw ea r ed i r e c t e db yr a t i o n a l u n i f i e dp r o c e s s ,u s eu n i f i e dm o d e l i n gl a n g u a g e ,a n dp r a c t i c et h em e t h o do f o b j e c t - o r i e n t e d ,w ec a l lg e tt h ed e s i r a b l es o f t w a r ep r o d u c t s o f t w a r ed e v e l o p m e n ti ss o p h i s t i c a t e d g e t t i n gag o o dp r o d u c tn e e d sp r o f e s s i o n a l t e c h n i c i a n s & g o o dt e c h n i q u e & g o o dp r o c e s s t h et h r e eb a s e so fs o f t w a r e e n g i n e e r i n ga r em e t h o d s & t o o l s & p r o c e s s m e t h o d sm e a n ”h o wt od o ”t o o l sm e a n t h ec o n v e n i e n tt o o lu s i n gm e t h o d s ,p r o c e s sm e a n sm a n a g i n ga l lt h ea c t i v i t i e so f d e v e l o p i n gs o f t w a r e 。t h ee m p h a s i so ft h i st h e s i si st h ep r o c e s s 。 f r o mt h ee x p e d e n c eo fd e v e l o p i n gs o f t w a r e ,t h i st h e s i sd e s c r i b e st h ed i s a d v a n t a g e o f f o r m e rs o f t w a r ee n g i n e e r i n ga n dt h ea d v a n t a g eo f t h ec u r r e n ts o f t w a r ee n g i n e e r i n g t h e n ,t h eo b j e c t o r i e n t e dm e t h o da n du n i f i e dm o d e l i n gl a n g u a g ea r ei n t r o d u c e d f o l l o w e db y , a l la c t u a lm o d e l i n ge x a m p l ef o re x p r e s s w a yt o l lf e es y s t e mi s i n t r o d u c e d ,e l a b o r a t e si nw h i c ho r d e rt of i n i s ht h ef i v et a s k so fa n a l y z i n ga n d d e s i g n i n gt h es y s t e m f i n a l l yt h eb e n e f i t so fu s i n gt h ec o r er u l e so fr u pa r es h o w e d u p t h ec o r er u l e so fr u pa r e :d r i v e nb yu s ec a s e ,a r c h i t e c t u r e b a s e da p p r o a c ha n d t a k i n g a ni t e r a t i v e t h eb a s i so fc a r r y i n go u tt h ec o r er u l e so fr u pi s o b j e c t - o r i e n t e d t h eo b j e c t o r i e n t e di sc o m p l e x t h ee m p h a s i so ft h i st h e s i si s o b j e c t o r i e n t e da n a l y s i sa n dd e s i g n t h ef i n a lr e s u l t sa r eh o w t oa r r a n g ea l lk i n d so f a c t i v i t y t of u l f i l l a n a l y s i sa n dd e s i g nt a s k s & f o r m i n gad e s i g nm o d e lf o r t h e e x p r e s s w a yt o l lf e es y s t e m k e yw o r d s :o b j e c t o r i e n t e d ,r a t i o n a lu n i f i e dp r o c e s s ,u n i f i e dm o d e l i n gl a n g u a g e , f u n d a m e n t a lp r i n c i p l e ,e x p r e s s w a yt o l lf e es y s t e m ,d e s i g nm o d e l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 一r 、 签名;缢 日期:三口。产年牛月坪日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:王浩导师签名: 日期:矽 第一章引言 第一章引言 6 0 年代爆发软件危机到现在,软件开发的“危机”就一直困扰着软件开发 人员,而且到了现在不但没有缓解,反而越演越烈。软件危机的主要表现为: ( 1 ) 软件生产率低。在信息社会中,信息的获取、处理、交流和决策等都需 要大量高质量的软件,促使人们对软件的品种、数量、功能、质量、成本和开 发时例提出越来越多的要求。 ( 2 ) 开发进度难于控制、难于估计工作量、修改维护困难。 ( 3 ) 软件重用程度低。 ( 4 ) 软件非用户所需,已描述的系统需求模糊,变动也不可避免。这使得用 户对“己完成的”软件系统极不满意。 本课题针对上述软件开发中存在的问题,提出了新的时代背景下的软件开 发的新模式。也就是,使用面向对象的方法,采用u m l 工具,以r u p 的核心 原则( 用例驱动、构架为中心,迭代地增量的开发) 来指导软件开发团队的活 动。 本课题来源于两个项目。一个是四川省科技厅下达的研究项目“不停车收费 系统应用软件的研究与开发”的子项目“车道系统的研发”,另一个是“西南地 区高校i b m 电子商务软件设计大赛”获奖参赛项目“基于w e b 的网上报表系统”。 本课题主要研究“过程在软件开发中的应用”,主要内容包括:软件工程的发展 及r l i p 核心原则;面向对象方法与u m l 表示法;r u p 核心原则指导下的设计模型 的建立;车道系统需求分析;车道系统设计模型的建立:车道系统设计模型的实 现及开发过程综述i 实践r u p 核心原则的益处。 1 1 出现“软件危机”的原因 首先,软件不同于硬件。它是 程序代码并可在计算机上运行之前 开发的不可见性。 个逻辑部件而不是物理部件,在真正写出 软件开发的过程是很难度量的。这是软件 其次,软件也不同于一般程序,它的规模很大。早期的软件是在通用硬件 第一章引言 的基础上为某个具体应用而专门开发的。随着人们对计算机的认识,要求计算 机完成的任务越来越多,功能越来越复杂,而软件开发仍然沿用早期的个人分 析、个人编程的方法,这使得软件开发方法的发展远远落后于人们对软件的需 求的增长。这是软件开发的复杂性。 最后,人们最初对计算机软件能完成什么功能不太了解,但随着人们对已 开发氆来的软件的使用越来越熟悉,可能要求系统具有更多的灵活性,发现早 期提出的不完善或错误的需求,也可能提出早期没有发现的新需求,这就要求 开发新的软件或新的软件版本,也可能要求对旧的软件进行维护。这是需求的 变化性。 1 2 软件生产率低下和质量低劣的原因 首先,软件生产率和软件质量与个人能力密切相关,研究表明,软件开发 人员之间生产率的差别是很大的,这对整个项目的影响很大。 其次,涉及到开发人员是否真正理解了项目需求,可能与开发人员个人对 相关领域的熟悉程度有关。 再次,新的时代不断出现新的技术与新的工具,如果不能迅速地学习并掌 握这些东西,就很容易被时代所抛弃。 再次,开发团队中每个人之间的交流、沟通情况直接影响大型软件项目的 开发效率。 再次,与软件系统的复杂程度有关,软件越复杂,生产率就越低,软件越 简单,生产率就越高。 最后,良好而合理的表达方式和表示记号能够阐明开发过程中各方面的关 系和相互之间的影响。表达得不好,往往会把问题复杂化,影响开发人员的理 解,并且直接影响实施。 1 3 作者主要完成的工作 综上所述,要从原来的手工作坊式的软件生产转到大规模的团队式软件开 发,快速开发高质量的软件,以达到时间与质量的和谐,应从如下三方面入手: ( 1 ) 改变对系统需求的理解方式及实现需求的方式,这涉及到系统的建模。 第一章引言 ( 2 ) 改变软件开发的组织方式和管理方式,这涉及到软件过程。 ( 3 ) 将好的软件开发方法和工具应用在好的软件过程中。 即,在以面向对象的方法来理解系统需求并设计解决方案的基础上,以r u p 作为软件开发过程的指导,将以往相对比较随机与分散的分析与设计活动,整 合在一起,以团队协作的方式,使用新的工具高效地构造与管理系统。以上这 三方面是当今软件丌发效率低下的主要原因。到目前为止,国内对于此项内容 的理论研究与实际操作脱节很大,缺乏实用性的综合研究,r u p 过程是说到底是 成功经验的总结,而不是理论推导的结果。所以必须在充分实践的基础上,来 理解r u p 的核心精髓。因此本课题不仅具有学术意义,也具有重要的实用价值。 除了进行理论上的研究之外,作者以高速公路车道收费软件系统的面向对 象分析与设计过程为例,介绍了对应用进行建模的五大任务,并给出了五大任 务中每一个活动的相应的模型片段。 1 4 论文的组织 本文从实际软件开发活动中遇到的困难入手,以亲身感受为引,详述了软 件工程技术的过去的弊端与现在的进展。在介绍了面向对象及u m l 表示法之后, 在详述车道系统需求分析的基础上,详细展开了r u p 核心原则指导下的车道系统 建立设计模型的过程。随后对车道系统设计模型的实现及开发过程进行了综述。 文未,指出了实践r u p 核心原则对实际的软件开发所带来的益处。全文共由九 章组成,每章的主要内容如下: 第一章,主要介绍了软件开发中所遇到的困难及其成因,论文选题的背景 以及作者的工作介绍。 第二章,以项目开发亲历为出发点,介绍了旧的软件工程的弊端与新的软 件工程的优势,引出了r u p 核心原则。 第三章,对面向对象及面向对象的模型进行了较为深入地分析,并简单地 介绍了本文所用到的一些u m l 的表示法。面向对象的方法与u m l 表示法是实践 r u p 核心原则的基础。 第四章,分析了在设计模型的建立过程中,是如何体现r u p 的核心原则的。 第五章,介绍了车道系统的需求分析。 第一章引言 第六章,本文的核心内容。先是详细阐述了对车道系统建立设计模型的五 大任务,随后总结和综述了模型建立过程的整体框架。设计模型的建立过程, 实践了r u p 的核心原则。 第七章,描述了车道系统的主要组成部分及其相互关系,并综述了在r u p 核心原则指导下,车道系统的整个开发过程。 第八章,针对团队式软件开发,指出了实践r u p 核心原则所带来的益处。 第九章,总结全文,并提出了下一步努力的方向。 第二章软件j 二稗的发展及r u p 核心原则 第二章软件工程的发展及r u p 核心原则 2 1 软件工程概述 1 9 6 8 年正式使用软件工程这个术语以来,软件工程就作为一门独立的学科 发展起来了。软件工程是一门指导计算机软件开发和维护的工程学科,采用工 程的概念、原理、技术和方法来开发和维护软件,其核心思想是把软件产品看 作一个工程产品来处理。希望把工程项目中的需求分析、质量监督等引入软件 开发中,使软件工程项目能够达到如下基本目标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用 但软件工程又有不同于一般工业工程技术的一些技术方法。软件工程学定 义了软件工程的三个基本要素:方法、工具和过程。其中软件工程方法为软件开 发提供了“如何做”的技术。软件工具为软件工程方法提供了自动的或半自动 的软件支撑环境,当一种方法被证明有效后,往往就会随之研制出相应的工具 来帮助实现和推行这种方法,提高软件设计效率,减轻劳动强度。软件工程过 程将软件工程的方法和工具综合起来以合理及时地进行软件开发,定义了方法 使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理以及 软件开发各个阶段完成的里程碑。 软件工程第一强调的是方法,也就是技术。面向对象的方法:它包括面向 对象的需求提取技术,面向对象的分析技术,面向对象的设计技术,面向对象 的编程技术与面向对象的测试技术。 第二强调的是工具,也就是我们所使用的一些常见的工具。用于分析与设 计的工具有u m l 等。用于开发的工具有v c + + 。 第二章软件工程的发展及r u p 核心原则 以上两项,有向内的收敛性,主要在于个人的学习与提高。 第三强调的过程。也就是人们如何使用工具以发挥他们的技术。最终解决 问题。这些活动是有组织的,有计划的,系统的,完整的,高效的。 为了能开发高质量的软件产品,人们一直就在研究新的软件开发方法,如 早期的结构化方法和现在的面向对象方法等。借助于工程的概念,建模方法也 很早就在软件开发中使用,早期的建模方法有:基于功能的有结构化的分析和设 计和流程图,基于数据的有实体关系图建模。这些建模方法的缺点是:都只是集 中于功能或集中于数据:对需求的变化很敏感:各部分是相互连接起来的:维护 困难。 任何方法都要在一个适当的过程中使用,在7 0 年代f r e db r o o k s 就在其著 作( ( t h em y t h i c a lm a n m o n t h ) ) 中提到了软件过程的概念。遗憾的是,为了 追求新的技术来完成我们的复杂任务,我们一直忽略了软件过程,致使我们的 软件失败率大约为8 5 。这当然是一个残酷的事实,有八分之七的项目在失败。 因此我们必须改变我们的开发方式,这是我们选择成功的一个机会。 稍微分析一下我们可以看到,一个软件开发活动涉及到四个方面:人、项目、 产品、过程。项目是个容器,是个环境。容器的目标是生产出产品来。产品是 由人生产出来的,这又不是一下子就生产出来了,有一个过程,需要进行一系 列的有组织的活动。首先我们是对某一个确定的项目进行开发工作:开发活动的 最终结果是得到某种形式的产品:产品在开发期间是由许多不同类型的人员建 造的,包括开发人员和用户等:在开发过程中要经过一系列步骤来完成,这些步 骤就是开发过程,各种开发过程可以认为是一些模板的组合,用以指导开发人 员和参与项目的其他人员( 如用户等) 的工作,这些过程或模板可以用一些自动 化的工具来完成。 软件丌发是一项复杂的工作,需要好的人员、好的技术( 好的工具和好的 结构) 以及好的过程才能得到满意的产品。由此可见,软件过程是解决软件危 机的一个重要组成部分。 当今时代的要求是,随需应变。“在新经济环境下,企业对软件的应用提出 了新的要求:高质量、高速度和无处不在。”传统经济下,企业对软件的要求是 全功能和高质量:而现在,随着竞争的加剧和客户需求的多样化,企业对软件的 第二章软件工程的发展及r u p 核心原则 要求更高:首先是更新速度,过去一年更新一次的软件,现在是半年、三个月、 甚至一个月就必须更新:另一方面,软件从过去主要用于提高生产效率、加强内 部管理逐渐成为帮助企业获得更大效益的工具。这种变化使软件开发面临新的 挑战:如何快速、高质量地开发出满足用户需求的软件? 首先要看到用户需求的快速变化, 建立与用户商业模型一致的需求模型, 更,成为软件开发能否成功的前提。 不同的用户对软件有不同的需求,如何 更好地理解需求,有效地控制需求的变 其次,经过几十年的发展,前述的软件工程的三个基本要素:方法、过程和 开发工具中,发展最慢的是软件过程,它一直没有受到应有的重视。在过去的 几十年中,软件工程的焦点是探索新的软件开发方法和技术来提高软件生产率 和质量。大多数人认为,“只要有好的软件开发方法和工具就能开发出高质量的 软件,并能提高软件生产率”。到了1 9 8 7 年美国工业界和政府部门开始认识到: “在软件开发中,如果软件开发组织不能良好地定义和管理其软件开发过程, 就不能从良好的软件开发方法和工具中充分获益,从而得不到期望的结果。软 件过程的不断改进才是增进软件开发组织的能力和提高软件质量的第一要素。” 在无纪律、混乱的软件过程中开发软件不是开发进度严重滞后、就是经费预算 大大超支甚至翻番。虽然有些组织也能生产出优秀的软件产品,这只能归功于 其中的一些杰出个人和小组的努力,并不是通过成功的软件过程的重复使用, 开发组织并没有总结出经过验证有效的、可重复使用的开发方法和开发过程, 其开发过程不具有稳定性。这也是软件为什么生产不规范、质量低劣、进度拖 延、成本上升的一个主要原因。 最后,我们必须正确地理解和应用软件工程的这三个要素,选用好的软件 丌发方法,选用高效率的开发工具,并将它们使用在正确的软件过程中。 2 2 落后的软件工程的实践与分析 2 2 1 案例1 :案件报表统计系统 1 9 9 8 年至1 9 9 9 年,根据当时四川省森林公安局的业务需求,我历时两年时 间,以v i s u a lb a s i cf o ra p p ti c a t i o n ( v b a ) 为编程语言,以a c c e s s 数据库为 数据存取工具,以e x c e l 为用户界面,开发了“案件报表统计系统”。这套系统, 第二章软件j 二程的发展及r u p 核心原则 在当时的环境下,极大地提高了工作效率,并在全国推广发行。系统的代码总 量在6 0 0 0 行左右。 这个系统是以功能实现为直接目的,一步步地堆积出来的。开发的方法是 基于功能分解的结构化的方法;开发的工具是面向过程的v b a 语言;开发的过 程是一个人边学边写边改,手工作坊方式。到了开发的后期,由于程序代码总 量较大,系统的组织相当混乱,形成有价值文档的难度相当大,几乎所有的文 档都存在于自己的头脑之中,不容易书面化。 软件发行之后,使用过程中出现了些问题。这时,系统组织混乱的恶果 就暴露出来了。有时,无法重现错误,很难找到错误的原因。有时,找到了原 因之后,要同时调整系统的几个地方,才能解决问题:但此时,又不知道这样 的调整是否对其它的功能有所影响,只好不停地进行测试。系统的可维护性较 差,也不容易升级。 2 2 2 案例2 :遂回高速公路车道系统 2 0 0 2 年9 月至2 0 0 3 年1 2 月,根据遂回高速公路管理公司的业务需求,我 使用v c + + 语言开发与部署了遂回高速公路入口车道系统并承担了一年的维护 工作。车道系统分为两大主要部分,一是业务逻辑的实现,二是工控机外部设 备的控制。代码总量在1 万行左右。该系统至今仍在使用中。 由于工作量大、时间紧迫,新的车道系统是在重庆高速公路车道系统的基 础上进行适应性修改而得到的。业务逻辑的实现部分,采用的是面向过程的方 法进行编程,由于功能分解比较困难,有的函数代码长达上千行。设备控制部 分,采用的是面向对象的方法进行编程,结构很规则。开发的方法是面向过程 的结构化的方法与面向对象的方法相结合;开发的工具是v c + + ;开发的过程是 两人合作,边写边改。业务逻辑的实现部分未形成有价值的文档。 软件在部署到实际的高速公路车道之后,遇到了如下情况: 1 外部设备的控制。在不了解所有细节的情况下,只对关键之处做了少量 的修改,便很好地实现了控制。这体现了面向对象的封装的优势。 2 业务逻辑的实现。系统构造时花了大量的时间精力,了解了几乎所有的 细节,实现了新的业务流程。在现场实施过程中,一方面是发现已实现的业务 第二章软件工程的发展及r u p 核心原则 流程有不完善的地方,需要迸一步完善;另一方面,业主的需求也发生了变化, 需要实现一些新的业务。其结果是,忙于修改,疲于奔命。项目最终是顺利实 施了,运行也比较正常。但是一旦听说有问题发生,心罩就打鼓,问题发生的 原因不好找,找到之后也不容易修改。 2 2 4 面向过程( 结构化) 方法的缺点 结构化方法存在如下一些主要缺点: ( 1 ) 结构化方法本质是功能分解,是围绕实现处理过程柬构造系统的,强调 过程抽象和模块化,将现实世界映射为数据流和加工,加工之间通过数据流进 行通信,数据流为被动的实体,被主动的操作来加工,是以过程为中心来构造 系统和设计程序的。 然而现实世界中用户需求的变化大部分是针对加工的,这种变化对基于过 程的设计来说是灾难性的,由此设计的软件结构就会不稳定。所以可以说用户 需求的变化造成系统结构的变化。 ( 2 ) 结构化方法清楚地定义了目标系统的接口。当对外接口发生变动时,很 难扩充新的接口,也就是说,难以修改和扩充,如扩展新的设备支持,其他系 统提出新的要求等。 ( 3 ) 从本质上说,结构化方法仍是冯诺依曼的结构,在整个系统中将操作 和数据分离,这使得数据和行为之间缺乏一致性、在现实世界和模型之间以及 模型与软件实现之间概念上不匹配,以至一些潜在可重用的部件在实现阶段和 具体的应用环境密不可分,而得不到重用。 2 。2 ,5 落后的软件开发过程的缺点 软件开发模式,既软件开发过程,是从最初的构思到最终公开发表软件产 品的一段过程。 对于所有软件开发过程而言,它们并不能解决真正的问题。但一个好的过 程可以帮助所有的项目参与者创建一个优秀的团队。 开发软件的特点是:边学,边写,边改。学习是一个比较漫长的过程,这 中间必然要犯许多错误,主流程能够走通就是一个巨大的成功。 9 第二章软件工程的发展及r u p 核心原则 软件项目小组一般采用“边写边改”的软件开发模式,它的优点是能迅速 地展现工作的成果,但缺点也是明显的:缺乏计划性与整体性,没有时间做好, 总有时间返工。 如果要求软件项目开发采用“瀑布”模式,也是不现实的。 瀑布模式的核心是:将开发过程划分为需求、分析、设计、实现s n n 试等阶 段,根据不同阶段工作的特点,运用不同的手段来完成任务,设计者遵循严格 的规范,在每一阶段工作结束时都要进行阶段评审和确认,以得到该阶段的一 致、完整、正确、无歧义的文档资料,把这些文档资料作为阶段结束的标志“冻 结”起来,并以此作为下一阶段工作的基础,然后再一步步实现这些目标,从 而保证软件质量。 这首先要求所有的开发人员必须是专业的,训练有素的。而一个项目之中, 大家水平参差不齐,很难做到人人都合乎要求。其次,要求在开发初期就有比 较明确的需求。而实际情况经常是:( 1 ) 有些类型的系统需求是模糊的,许多大 型项目在开发早期用户只有一个模糊的想法,很难完全准确地表达对系统的全 面要求,对解决问题的方法更模糊。( 2 ) 项目参与者之间存在沟通障碍,造成相 互理解上的困难。( 3 ) 预先定义的需求是过时的,因为有的项目长达数年,在这 期间,用户可能产生新的需求,或因环境变化要求开发的软件系统也随之变化。 2 3 先进的软件工程的实践与分析 2 3 1 案例3 :基于w e b 的网上报表系统 2 0 0 3 月1 月至2 0 0 3 年6 月,根据“西南地区高校i b m 电子商务软件设计大 赛”的要求,实验室的四位同学组成一个丌发团队参加了竞赛。我们历时6 个 月,以w e b s p h e r e 为开发平台,以j a v a 为编程语言,以u m l 作为分析与设计工 具,以d b 2 为后台数据库,以j s p 进行用户界面控制,开发了“基于w e b 的网 上报表系统”。开发团队进入了前6 名,并获得了三等奖。系统的代码总量在5 0 0 0 行左右。 在系统的开发过程中,我们并没有立刻就进入编码阶段,而是在弄清需求 的前提下,先进行了充分的分析与设计。开发的方法采用的是面向对象的方法: 开发的工具是面向对象的工具j a v a 和u m l ;开发的过程实践了r u p 的核心原则。 第二章软作t 程的发展及r u p 核心原则 整个开发过程分工合理,条理清晰。在系统构造期间,系统构架师了解整个系 统的运行机制,其它的同学只关注自己所做的局部,经过短时间的编码冲刺, 第一次迭代就构造出了系统的构架。又经过两次迭代,系统全部实现。系统构 造出来时,有价值的文档也同时产生。 在系统的测试阶段,一旦发现了异常,或者出现了错误,系统构架师就能 够很快地准确定位,而后由负责局部的同学轻松地解决。没有牵一发而动全身 盼感觉,错误被局限在很小的范围内,可以很快地改正。 该项目的成功开发,体现了面向对象的整体系统设计的重要性,包括以下 三个方面的内容: 首先,建立系统的基础是面向对象的思想。开发人员有相当的抽象能力与 实践能力,能抽象出并实现这些抽象的、封装的、位于各个层次的类。 其次,遵循一定的流程,以确保分析设计与实现是系统化的,而不是随机 的。例如:在系统构架师的心中,有许多的需求用例,他会自觉地分离出实现 典型需求用例所需要的基本技术,而后,会分配给合适的人去探索这些基本的 技术,如连接远程数据库,操纵远程数据库,如何使用集成开发环境,用户界 面如何实现等等。在这些东西基本上确定之后。他就可以进具体的业务逻辑的 分析与设计活动,以确定实现各种需求的具体方式。整个开发过程是在即往经 验的支撑下,以需求为驱动,以体系构架为核心的,增量的迭代的开发过程。 最后,使用u m l 这个分析与设计工具。一是它能准确地、可视地表现系统 的需求以及系统构架师为实现这些需求所做的设想。二是它非常方便于交流。 既可以让参与项目的其它人员了解自己的工作在系统中大概位噩,又可以明确 自己所作工作与系统其它部分的接口,这样,就非常有利于团队式的并行开发。 2 3 2 面向对象的方法 相对于传统的结构化方法,面向对象的开发方法具有如下一些优点:( 1 ) 符 合人们通常的思维方式。将问题域的概念直接映射到对象及其对象之间的接口, 减少了结构化方法从问题域到分析阶段的映射误差,把描述事物静态属性的数 据结构与表示事物动态行为的操作封装在一起,爿能完整、自然地表示客观世 界中的实体,软件系统与业务系统有很好的对应关系,易理解:( 2 ) 高度的连续 性。用户、分析人员、设计人员、实施人员使用同一种语言,从分析到设计到 第二章软件工程的发展及r u p 核心原则 编码采用一致的模型表示,后一阶段可以直接利用前一阶段的工作成果,弥合 了结构化方法中从数据流图到模块结构图转换的鸿沟,减少了工作量和映射误 差:( 3 ) 重用性好。继承和封装机制支持软件复用,易于扩充,较好地适应复杂 系统不断发展和变化的要求。( 4 ) 可维护性好。现实世界直接映射到软件,使得 实体结构相对稳定,属性和服务封装在对象中:当外部功能变化时,保持了对 象结构的稳定性,将改动局限于一个对象内部,减少了改动引起的波动效应。 对象封装了实体的属性和操作,使得模块化程度更高,重用性更好,维护成本 低,也易于分发。 2 3 3 新的建模语言( u m l ) ( 1 ) u m l 是一种建模语言,是一种标准的表示方法,为不同领域的人们提供 了统一的交流标准。 ( 2 ) 各种模型在表示上的一致性,使得随着开发的进展,各种模型之间能够 进行无缝地转换,u m l 所使用的清晰统一的符号,消除了项目相关人员理解的不 一致性,使相互沟通更容易,有助于找出遗漏和矛盾的地方。 ( 3 ) 无论使用哪种方法和过程,减少了花在学习多种表示方法和多种工具上 的时间。 ( 4 ) u m l 体现了面向对象方法实践的最好经验,如注重系统架构的开发、注 重过程的递增和迭代。u m l 要求使用u m l 的过程支持用例驱动,以架构为中心, 增量和迭代的开发。 ( 5 ) 建立的模型更贴切地反映真实世界,根据自然划分进行分解,可以更精 确地描述相关数据和过程,且易于理解和维护。 2 3 4 统一软件过程( r u p ) r u p 过程采用的是螺旋方式,它的每一次迭代都包括了分析、设计、开发与 测试这几个步骤;每次都盘旋上升更进一步;每个大的阶段都有可运行的结果, 可以从外部进行考察,及时接受反馈。完全实现r u p 过程,因为所需的中间制 品过多,制作这些制品需要耗费大量的时间和精力,故它对于快速开发类型的 项目也是不现实的。但是,在项目开发中只要贯彻了r u p 的核心原则,根据项 目开发的实际情况,合理地对r u p 过程进行剪裁,就能取得很好的效果。 第二章软件t 程的发展及r u p 核心原则 在r u p 过程中,软件的一个新版本的开发包括多个循环,每个循环按时间 顺序包括以下四个阶段,每个阶段完成相应的任务。在每个阶段均进行相应的 活动以完成各种任务。 1 、初始阶段:确立系统的可行性。所包括的活动有: i ) 、定义系统的边界并确定与外部相关系统的接口,限定待开发系统的 范围 2 ) 、勾画出系统的候选框架,特别是全新的、带有风险的或较难实现的 部分。 3 ) 、识别出影响构造的重大风险,并设法缓解这些风险。 4 ) 、建造一个证明概念模型,表明待开发的系统能够解决实际的问题。 2 、细化阶段:关注做的能力。它的目标一是产生一个稳定的构架,二是制 定构造阶段的计划。所包括的活动有: 1 ) 、创建构架基线。 2 ) 、识别出重大风险。 3 ) 、确定系统的质量属性,如可靠性和响应时间。 4 ) 、捕获8 0 的功能用例。 3 、构造阶段:建造系统。它的目标是构造出能进行1 3 测试的产品。本阶段 人员多,时间也长,在此之前,所有的重要内容都已经搞清楚。所包括的活动 有: 1 ) 、捕获并实现所有的功能用例 2 ) 、完成分析、设计、实现和大部分测试 3 ) 、保持构架的完整性,并进行必要的修改 4 、移交阶段:转移到用户环境。一般而言,在用户环境中对产品的验证, 比开发环境内更严格。所包括的活动有: 1 、为用户使用做准备,如准备硬软件环境,操作手册等 2 、调整软件的参数,并纠正所发现的缺陷 第二章软件工程的发展及r u p 核心原则 在统一软件过程中,五个核心工作流需求、分析、设计、实现和测试,在 每一次迭代中都发生,在各个迭代中重点不同,重复发生多次。而在瀑布模型 中,它们理论上只发生一次。 2 3 5 软件开发成功的关键因素 软件工程的三个核心要素是方法,工具,过程。要想做出好的软件,这三 方面必须紧密配合,掌握了方法,熟悉了工具,安排好过程,就能构造出高质 量的软件来。这三个方面,相对独立,但是又密切相关,过程起到了方法与工 具的容器的作用。好的过程,可以极大地促进方法的掌握与工具的熟悉,但是 不能替代它们。 2 4 统一软件过程( r u p ) 核心原则 相对于传统的线形的瀑布模型,统一软件过程是螺旋形的,是用例驱动的。 首先获得并实现了关键用例,由此建立系统的基本构架。再以此构架为中心, 逐步实现其它的用例,从而得到一个功能完善的系统。每一次迭代只开发部分 用例,减少了复杂性,降低了成本。它对需求的变化有较强的适应性,能较早 产生可运行的版本,及时地得到反馈,降低风险。 在统一软件过程中,用例驱动,以构架为中心及迭代的增量开发是同等重 要的。去掉三个主要概念中的任何一个,都会严重地降低统一软件过程的价值。 就像一张三条腿的凳子,缺一条腿就会站不住,会倒下。构架提供一种结构来 指导迭代过程中的工作,用例则确定了每一次迭代的目标。即,具体的迭代工 作,由用例来确定目标,在构架确定的结构上进行。 2 4 1 用例驱动 软件系统是为了服务于用户而出现的。因此,为了构造一个成功的系统, 必须了解用户的需要是什么,并设法去满足这些需要。 用例是用户与系统的交互的动作集合,能够向用户提供有价值的结果。它 获取的是功能需求。所有的用例合在一起,构成用例模型,它描述了系统的全 部功能,代替了传统的系统功能说明。然而,用例不仅是一种确定系统需求的 工具,它还能驱动系统分析、设计、实现、测试的进行。即用例驱动整个的软 第二章软件工程的发展及r u p 核心原则 件开发过程。基于用例模型,开发人员创建一系列的实现这些用例的分析、设 计和实现模型,并审查每一个后续建立的模型与用例模型是否一致。测试人员 测试系统以确定实现模型的构件正确实现了用例。因此,用例不仅启动了开发 过程,而且使整个开发过程浑然一体。 用例驱动,表明开发过程是沿着一个流一系列从用例得到的工作流( 需 求、分析、设计、实现、测试) 前进的,用例被确定、分析、设计、实现,最 后用例又成为测试的基础。 在分析与设计期间,用例模型经由分析模型转化为设计模型。分析模型和 设计模型都是由类和说明如何实现用例的用例实现集合组成的。分析模型是需 求的详细的规格说明,将需求用例的事件流,用概念性的类之间的协作来重新 转述,是一个概念模型。设计摸型是实现的蓝图。 软件开发过程中的用例驱动表现形式如图2 1 所示: 首先,使用用例模型作为输入来创建分析模型。用例模型中的每个用例都 实现为分析模型中的用例实现。 而后,将分析模型转化为设计模型,以便充分利用实现系统的技术并适应 系统运行的环境。按照子系统对设计类进行分组,定义这些子系统间的接口。 而后,由设计模型产生实现模型。将设计好的类放在文件构件( 源代码) 集合中,经过编译与链接后,产生可执行代码。 最后,可由以上各模型产生测试模型,以进行“白盒”和“黑盒”测试。图 2 - 1 中所示的各模型间的关系是双向的。 ”币面两型l 一厣菥模扩卜f 丽丽雷卜 f 页面滋至闱丢浪基门 幽2 - 1 用例与系统构架是协调发展的。一部分用例驱动系统构架,系统构架又反 过来影响另一部分用例的选择。 用例驱动意味着,在生产最终产品的每个阶段,都能回顾一下为用户实际 上做了些什么,从而确保生产出来的产品能够满足用户的真正需要。 第二章软件工程的发展及r u p 核心原则 2 4 2 以构架为中心 软件构架的作用与建筑物构架所起的作用类似。我们可以从结构、服务设 施、供暖、供水、供电等各种不同的角度来审视一座建筑物。这使得施工人员 在开始施工之前,就可以全面了解该建筑的全貌。与此类似,软件系统的构架 也从不同的角度描述了即将构造的系统。 软件构架包含了系统中最重要的静态与动态特征。它受功能需求的影响, 也受具体的构造环境与实施环境的影响。不但要支持实现功能的需求,也要支 持实现非功能的需求。它刻画了系统的整体设计,去掉了细节部分,突出了系 统的重要特征。构架的建立主要依靠经验,它的价值依赖于系统构架师的素质。 过程的作用在于帮助确定系统构架师来确定正确的目标。 每个产品都有功能与表现形式两个方面。 构架相对应。用例在实现时必须适合于构架, 功能与用例相对应,表现形式与 _ ,- - _ _ _ _ _ 一- - - _ _ _ _ - - _ 一 扫玺卫监绥垂墼窒囹圭窭塑堑堕 用倒,构架与用例,必须并行进化。 软件系统是个单一的实体,从不同的视角展示它有助于更好地理解系统的 设计。至竺竺至塑塑鱼塑星歪塾星塑图:堕直盟塑l 目验垄二塑星委王塑垄: - _ ,_ ,、- 一_ _ _ 一 软件的构架包括四个方面的内容。一是软件系统的组织。二是构成系统的 结构元素及这些元素之间的接口,以及由元素间的协作所得到的各元素的行为。 三是王丕统,这些子系统由结构元素和行为元素组成。四是指导系统的组织的 构架风格。构架可以表示为多种模型的视图:用例模型视图、分析模型视图、 设计模型视图等。构架描述是所有系统模型的一个完整的系统的描述,只是它 的内容比较少,只包含用来实现构架的重要用例中的设计元素。 随着系统的日益复杂,“设计问题超过了计算的算法和数据结构,设计与确 定整个系统的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福利驾校活动方案
- 美甲公司团建活动方案
- 电信高考营销活动方案
- 端午语文活动方案
- 眼科赚钱项目活动方案
- 线上直播招聘会活动方案
- 电商公司大挑战活动方案
- 美术居家活动方案
- 祈雨庙会活动方案
- 睫毛护肤活动方案
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- 绘本《其实我很喜欢你》冯玉梅
- 可靠性试验管理办法
- 蓄电池组充放电记录表格格式模板
- 全国中学生物理竞赛复赛实验考查
- 智慧交通典型城市案例及启示
- 国家开放大学《人文英语4》边学边练参考答案
- 医疗器械设计开发流程培训课件
- 语法填空公开课课件市公开课一等奖省名师优质课赛课一等奖课件
- 《认识分式》教学课件【初中数学】公开课
- JJF 1062-2022 电离真空计校准规范
评论
0/150
提交评论