1、1 概论1-1软件概念 1-2 软件工程概念、软件工程三要素1-3 软件工程基本原理1-4 四种软件工程方法之间的关系21-1软件概念软件概念软件=程序+数据+文档程序程序:按设计的功能和性能要求执行的指令序列按设计的功能和性能要求执行的指令序列数据数据:程序能正常运作的初始化数据程序能正常运作的初始化数据文档文档:为了理解程序所需的详细描述性资料。为了理解程序所需的详细描述性资料。31-2软件工程定义软件工程定义1968年NATO(北大西洋公约组织)会议上首次提出Fritz Bauer:建立并使用完善的工程原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。IEEE:软件工
2、程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究。2001年,软件工程大师Roger S Pressman 对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。习惯上,人们常常把软件工程的方法(开发方法)、工具(支持方法的工具)、过程(管理过程)称为软件工程三要素。4软件工程三要素:软件工程三要素:方法、工具和过程方法、工具和过程方法提供了方法提供了“如何做如何做”的技术的技术工具提供了自动的或半
3、自动的软件支撑环境工具提供了自动的或半自动的软件支撑环境过程定义了过程定义了:方法使用的顺序方法使用的顺序方法使用的顺序方法使用的顺序 要求交付的文档资料要求交付的文档资料要求交付的文档资料要求交付的文档资料 为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑51-3 软件工程基本原理习惯上,人们常常把软件工程的方法(开发方法)、工具(支持方法的工具)、过程(管理过程)称为软件工程三要素。而把美国著名的软
4、件工程专家B.W Boehm于1983年提出的7条原理,作为软件工程的基本原理。(1)用分阶段的生命周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。6(2)坚持进行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发。(3)实行严格的产品版本控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。因此,对文档要有严格要求。(6)开发小组的成员要少而精。(7)要不断地改进软件工程实践的经验和技术,要与时俱进。上述七条原理是在面向过程的程序设计时代(结构化时代)提出来的。但是,直到今天,在面向元数据和面向对象的程序设计新时代,仍然有效。7根据“与时俱进”的原则,还有
5、一条基本原理在软件的开发和管理中特别重要,需要补充进去,作为软件工程的第八条基本原理。(8)二八定律。对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%;对程序中存在问题的估计:80%的问题存在于20%的程序之中;对模块功能的估计:20%的模块,实现了80%的功能;对人力资源的估计:20%的人,解决了软件中80%的问题;对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。81-4 1-4 软件过程方法软件过程方法1.面向过程的方法2.面向对象的方法3.面向元数据的方法4.形式化方法91.1.面向过程方法面向过程方法(Procedure-(
6、Procedure-oriented method)oriented method)面向过程方法,习惯上称为传统软件工程开发方法,或结构化方法。有时又称面向功能的方法。面向过程方法包括面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程方法的要点面向过程方法,设计时强调模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分,分解和抽象是它的两个基本手段。面向过程方法编程时采用单入口单出口的控制结构,并且只包含顺序、选择和循环三种结构,目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构。优点:以处理流程为基础,简单实用。缺点:
7、只注重过程化信息,因而忽略信息的层面关系以及相互联系。描述能力不强,最后可能导致软件设计、开发和维护陷入困难。10曾经出现过的面向过程方法:(1).面向结构化数据系统的开发方法DSSD(Data Structured Systems Development);(2).面向可维护性和可靠性设计的Parnas方法;(3).面向数据结构设计的Jackson方法;(4).面向问题设计的PAM方法;(5).面向数据流方法。其中,面向数据流方法最具代表性。当前,面向过程方法主要用在过程式的程序设计中112 2 面向对象方法面向对象方法 (Object-oriented method)(Object-ori
8、ented method)面向对象方法,在不少教材中,称为现代软件工程开发方法。该方法包括面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。面向对象方法的要点运用对象、类、消息传递、继承、封装、聚合、多态性等概念来构造软件系统。特点:将现实世界的事物(问题域)直接映射到对象。分析设计时由对象抽象出类(Class),程序运行时由类还原到对象(Object)。基本特点:将对象的属性和方法封装起来,形成信息系统的基本执行单位,再利用对象的继承特征,由基本执行单位派生出其他执行单位,从而产生许多新的对象。众多的离散对象通过事件或消息连接起来,就形成了软件系统。12
9、优点:能描述无穷的信息世界,同时易于维护。缺点:对于习惯于面向过程方法的人,较难掌握。面向对象方法是当前计算机界关心的重点,是软件工程方法论的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到更宽的范围。如交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。业界流传的面向方面的方法、面向主体的方法和面向架构的方法,都是面向对象方法的具体应用案例。133.3.面向元数据方法面向元数据方法(Meta-data(Meta-data oriented method)oriented method)来源于关系数据库语言的程序设计思想。面向元数据方法包括面向元数
10、据需求分析、面向元数据设计、面向元数据编程、面向元数据测试、面向元数据维护。优点:通俗易懂,特别适合信息系统中数据层上的设计与实现。缺点:只能实现二维表格,不能实现窗口界面。14软件工程方法论小结软件工程方法论小结 四种基本的软件开发方法:包括面向过程方法、面向对象方法、面向元数据方法和形式化方法这四种基本的软件开发方法。在大型多层(B/A/S)结构的信息系统建设中,这四种方法的关系是:面向元数据方法用在数据库服务器S层面上系统的设计与实现,面向对象方法用在除数据库服务器层面之外的其他层面上(B/A)系统的设计与实现,面向过程方法用在其他两种方法本身内部函数的设计与实现,形式化方法用在某些核心
11、程序的正确性证明上。2 软件生命周期模型2-1软件生命周期各阶段2-2常见过程模型本意、特点、选用条件2-2-1瀑布、2-2-2增量、2-2-3原型、2-2-4迭代、2-2-5螺旋、2-2-6喷泉、2-2-7XP162-1软件生存周期软件生存周期(softwarelifecycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期。软件生存周期分为如下几个阶段:计算机系统工程(立项与合同)、需求分析、设计、编码、测试、运行和维护17计算机系统工程(立项与合同)确定软件总体要求和范围,以及其与其它计确定软件总体要求和范围,以及其与其它计算机系统元素之间关系算机系
12、统元素之间关系计算机系统元素:硬件软件使用者数据库文档等成本估算和进度安排成本估算和进度安排进行可行性分析进行可行性分析经济、技术、法律等方面是否有可行方案?在可行解决方案中作出选择。18软件需求分析确定待开发软件要确定待开发软件要“做什么做什么”。确定软件的功能、性能、数据、界面等要求,生成软确定软件的功能、性能、数据、界面等要求,生成软件需求规约。件需求规约。软件设计确定待开发软件确定待开发软件“怎么做怎么做”。分为系统设计和详细设计:分为系统设计和详细设计:系统设计:也称概要设计或总体设计。设计软件系统的体系结构,包括:软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计
13、全局数据结构;详细设计:设计各个组成成分的实现细节,包括局部数据结构和算法等19编码将设计的结果转换为可执行的程序代码。将设计的结果转换为可执行的程序代码。测试保证软件质量的重要环节。保证软件质量的重要环节。发现并纠正软件中的错误和缺陷。主要包括单元测试、发现并纠正软件中的错误和缺陷。主要包括单元测试、集成测试、确认测试和系统测试。集成测试、确认测试和系统测试。运行和维护在软件运行期间,当发现了软件中潜藏的错误或需要在软件运行期间,当发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出增加新的功能或使软件适应外界环境的变化等情况出现时对软件进行修改。现时对软件进行修改。2
14、02-2-1瀑布模型瀑布模型1970年年W.Royce提出瀑布模型提出瀑布模型1.模型的本意模型的本意:阶段间具有顺序性和依赖性:阶段间具有顺序性和依赖性l2.模型的模型的特点特点:文档驱动过程不可逆转l3.模型的模型的选择条件选择条件:(1)在开发时间内需求没有或很少变化。(2)分析设计人员对应用领域很熟悉。(3)低风险项目(对目标、环境很熟悉)。(4)用户使用环境很稳定。(5)用户除提出需求以外,很少参与开发工作。214.模型的优点模型的优点:开发阶段清晰,便于评审、开发阶段清晰,便于评审、审计、跟踪、管理和控制。审计、跟踪、管理和控制。5.模型的缺点模型的缺点按顺序完成每个工作流程,即瀑
15、布式生命周期。瀑布只能一个个台阶地往下流,不可能倒着往上流,这就是它致命的缺点。瀑布式生命周期通常会导致在项目后期,出现“问题堆积”,更可怕的是,错误的传递会采取发散扩大的方式。221模型的本意模型的本意要开发一个大的软件系统,先开发其中的要开发一个大的软件系统,先开发其中的一个核心模块(或子系统),然后再开发一个核心模块(或子系统),然后再开发其他模块(或子系统),这样一个个模块其他模块(或子系统),这样一个个模块(或子系统)地增加上去,就像搭积木一(或子系统)地增加上去,就像搭积木一样,直至整个系统开发完毕为止。样,直至整个系统开发完毕为止。在每增加一个模块前,先要对该模块进行在每增加一个
16、模块前,先要对该模块进行模块测试。通过后再将此模块加入到系统模块测试。通过后再将此模块加入到系统中,然后还要进行系统集成测试。系统集中,然后还要进行系统集成测试。系统集成测试成功后,再增加新的模块。成测试成功后,再增加新的模块。这样多次循环,直到系统搭建完毕为止。这样多次循环,直到系统搭建完毕为止。2-2-2增量模型增量模型232模型的特点模型的特点(1)任务或功能模块驱动,可以分阶段提交产品。)任务或功能模块驱动,可以分阶段提交产品。(2)有多个任务单,这些多个任务单的集合,构成项目的)有多个任务单,这些多个任务单的集合,构成项目的一个总一个总任务书任务书,或总,或总用户需求报告用户需求报告
17、/需求规格说需求规格说明书明书。3选择模型的条件选择模型的条件(1)在整个项目开发过程中,需求可能发生变化,客户接)在整个项目开发过程中,需求可能发生变化,客户接受分阶段交付。受分阶段交付。(2)分析设计人员对应用领域不熟悉,难以一步到位。)分析设计人员对应用领域不熟悉,难以一步到位。(3)中等或高风险项目(工期过紧且可分阶段提交的系统)中等或高风险项目(工期过紧且可分阶段提交的系统或目标、环境不熟悉)。或目标、环境不熟悉)。(4)用户可参与到整个软件开发过程中。)用户可参与到整个软件开发过程中。(5)使用面向对象语言或第四代语言。)使用面向对象语言或第四代语言。(6)软件公司自己有较好的类库
18、、构件库。)软件公司自己有较好的类库、构件库。244模型的优点模型的优点(1)由于将一个大系统分解为多个小系统,这就)由于将一个大系统分解为多个小系统,这就等于将一个大风险分解为多个小风险,从而降低了等于将一个大风险分解为多个小风险,从而降低了开发难度。开发难度。(2)人员分配灵活,刚开始不用投入大量人力资)人员分配灵活,刚开始不用投入大量人力资源。如果核心模块产品很受欢迎,则可增加人力实源。如果核心模块产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。完成产品时,它提供了一种先推出
19、核心产品的途径。即可先发布部分模块给客户,对客户起到镇静剂的即可先发布部分模块给客户,对客户起到镇静剂的作用。作用。5模型的缺点模型的缺点如果软件系统的组装和拆卸性不强,或开发人员全如果软件系统的组装和拆卸性不强,或开发人员全局把握水平不高(没有数据库设计专家进行系统集局把握水平不高(没有数据库设计专家进行系统集成),或者客户不同意分阶段提交产品,或者开发成),或者客户不同意分阶段提交产品,或者开发人员过剩,就不宜采用这种模型。人员过剩,就不宜采用这种模型。25原型的解释原型的解释:预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有
20、约束,其目的是能快速、低成本地构建。2-2-3原型模型原型模型部署交付和部署交付和反馈反馈构建原型构建原型交流交流快速设计方式快速设计方式建模建模快速计划快速计划26原型模型原型模型 软件企业界的主流开发模型软件企业界的主流开发模型.1模型的本意模型的本意原型模型(原型模型(Prototype Model)的本意是:)的本意是:在初步需求分析之后,马上向客户展示一个在初步需求分析之后,马上向客户展示一个软件产品原型软件产品原型(样品样品),对客户进行培训,让,对客户进行培训,让客户试用,在试用中收集客户意见,根据客客户试用,在试用中收集客户意见,根据客户意见立刻修改原型,之后再让客户试用,户意
21、见立刻修改原型,之后再让客户试用,反复循环几次,直到客户确认为止。反复循环几次,直到客户确认为止。272模型的特点模型的特点原型驱动。因此,开发者必须先有一个原原型驱动。因此,开发者必须先有一个原型型(样品样品),至少要有一个原型的核心。,至少要有一个原型的核心。原型模型与迭代模型相同点是:反复循环原型模型与迭代模型相同点是:反复循环几次,直到客户确认为止。不同点是:原几次,直到客户确认为止。不同点是:原型模型事先有一个展示性的产品原型型模型事先有一个展示性的产品原型(样品样品),而迭代模型可能没有。,而迭代模型可能没有。283选择模型的条件选择模型的条件(1)已有产品或产品的原型)已有产品或
22、产品的原型(样品样品),只需,只需客户化的工程项目。客户化的工程项目。(2)简单而熟悉的行业或领域。)简单而熟悉的行业或领域。(3)有快速原型开发工具。)有快速原型开发工具。(4)进行产品移植或升级。)进行产品移植或升级。由于上述条件不太苛刻,所以凡是有软件由于上述条件不太苛刻,所以凡是有软件产品的产品的IT企业,在他们熟悉的业务领域内,企业,在他们熟悉的业务领域内,当客户招标时,他们都会以原型模型作为当客户招标时,他们都会以原型模型作为软件开发模型,去制作投标书,去讲解标软件开发模型,去制作投标书,去讲解标投标。投标。294模型的优点模型的优点开发速度快,用户意见反馈实时,有利于开发速度快,
23、用户意见反馈实时,有利于开发商在短时间内推广并实施多个客户。开发商在短时间内推广并实施多个客户。正因为原型模型具有这些优点,所以它一正因为原型模型具有这些优点,所以它一直是软件企业界的主流开发模型。凡是有直是软件企业界的主流开发模型。凡是有软件产品积累的软件公司,他们在投标、软件产品积累的软件公司,他们在投标、开发、实施项目的过程中,都非常喜欢用开发、实施项目的过程中,都非常喜欢用原型模型。原型模型。5模型的缺点模型的缺点因为事先有一个展示性的产品原型,所以因为事先有一个展示性的产品原型,所以在一定程度上,不利于开发人员的创新。在一定程度上,不利于开发人员的创新。306快速原型法快速原型法由于
24、原型模型的开发速度较快,有时也将它称作快由于原型模型的开发速度较快,有时也将它称作快速原型法(速原型法(Rapid Prototyping)。)。在开发工具和开发环境迅速发展的今天,在信息系在开发工具和开发环境迅速发展的今天,在信息系统开发中,原型法和快速原型法又被赋予新的内容:统开发中,原型法和快速原型法又被赋予新的内容:事先没有原型产品,也可以采取这种办法。事先没有原型产品,也可以采取这种办法。基本思路是:采用以面向元数据为主的方法,在需基本思路是:采用以面向元数据为主的方法,在需求分析的基础上,利用求分析的基础上,利用Power Designer等数据库等数据库分析和设计工具,快速建立信
25、息系统的概念数据模分析和设计工具,快速建立信息系统的概念数据模型型CDM和物理数据模型和物理数据模型PDM;然后利用面向对象;然后利用面向对象的编程工具,快速地实现需求分析中确认的流程、的编程工具,快速地实现需求分析中确认的流程、功能、性能和接口;之后交付给用户试用,反复循功能、性能和接口;之后交付给用户试用,反复循环几次,直到客户确认满意为止。环几次,直到客户确认满意为止。31快速原型法选择的条件之一是:项目组中快速原型法选择的条件之一是:项目组中有数据库分析和设计的专家,有面向对象有数据库分析和设计的专家,有面向对象编程的专家,文档制作有成熟的模板,而编程的专家,文档制作有成熟的模板,而且
26、系统或项目又不是非常大。且系统或项目又不是非常大。快速原型法选择的条件之二是:项目组的快速原型法选择的条件之二是:项目组的开发环境为分行业的业务基础平台开发环境为分行业的业务基础平台(比如比如Justep X3业务基础平台业务基础平台),该业务基础平,该业务基础平台又完全适合所需开发的系统或项目,而台又完全适合所需开发的系统或项目,而且系统或项目又不是非常大。且系统或项目又不是非常大。以上两个条件,只要符合一个,就可以采以上两个条件,只要符合一个,就可以采用快速原型法。用快速原型法。32原型的类型:原型的类型:探索型:弄清要求,确定特性,并探讨多种方探索型:弄清要求,确定特性,并探讨多种方案的
27、可行性案的可行性实验型:大规模开发和实现前,验证方案或算实验型:大规模开发和实现前,验证方案或算法的合理性。法的合理性。演化型:原型作为目标系统的一部分。演化型:原型作为目标系统的一部分。原型的使用策略:原型的使用策略:废弃(废弃(throwaway)策略:用于探索型和实验)策略:用于探索型和实验型原型。型原型。追加(追加(addon)策略:用于演化型原型。)策略:用于演化型原型。原型可作为单独的过程模型,也常被作为一原型可作为单独的过程模型,也常被作为一种方法或实现技术应用于其它过程模型中。种方法或实现技术应用于其它过程模型中。332-2-4 迭代模型迭代模型(Iterative Model
28、)代表:代表:RUP(Rational Unified Process)模型)模型34这里所讲的迭代模型是这里所讲的迭代模型是RUP推出的一种推出的一种“逐步求精逐步求精”的面向的面向对象的软件开发过程模型,被认为软件界迄今为止最完善的、对象的软件开发过程模型,被认为软件界迄今为止最完善的、商品化的开发过程模型。商品化的开发过程模型。1模型的本意模型的本意多次执行各个开发工作流程,从而更好地理解需求,设计出多次执行各个开发工作流程,从而更好地理解需求,设计出更为强壮的软件构架,逐步提高开发组织能力,最终交付一更为强壮的软件构架,逐步提高开发组织能力,最终交付一系列逐步完善的实施成果,这就是迭代
29、式生命周期模型。系列逐步完善的实施成果,这就是迭代式生命周期模型。每次按顺序完成这一系列工作流程就叫做一次迭代,每次迭每次按顺序完成这一系列工作流程就叫做一次迭代,每次迭代,均以次要里程碑结束,按照特定的迭代成功标准,对迭代,均以次要里程碑结束,按照特定的迭代成功标准,对迭代的结果进行评估。每个阶段都可以进一步细分为迭代。代的结果进行评估。每个阶段都可以进一步细分为迭代。迭代是产生可执行的产品发布的完整开发循环,所发布的产迭代是产生可执行的产品发布的完整开发循环,所发布的产品是开发过程最终产品的子集,它将通过一次又一次的迭代,品是开发过程最终产品的子集,它将通过一次又一次的迭代,实现递增成长,
30、最后形成最终的软件系统或产品。实现递增成长,最后形成最终的软件系统或产品。352模型的特点模型的特点迭代或迭代循环驱动,每一次迭代或迭代循迭代或迭代循环驱动,每一次迭代或迭代循环,均要走完初始(先启)、精化、构建、环,均要走完初始(先启)、精化、构建、产品化产品化(移交移交)这四个阶段。这四个阶段。RUP的主要特征如的主要特征如下:下:1.采用迭代的、增量式的开发过程;采用迭代的、增量式的开发过程;2.采用采用UML语言描述软件开发过程;语言描述软件开发过程;3.有功能强大的软件工具有功能强大的软件工具Rational Rose支撑。支撑。363模型的选取条件模型的选取条件(1)项目组的管理人
31、员和核心成员,应对迭代的开发)项目组的管理人员和核心成员,应对迭代的开发方式比较熟悉。方式比较熟悉。(2)管理人员和核心成员应对软件工程的核心过程:)管理人员和核心成员应对软件工程的核心过程:系统建模、需求分析、系统设计、系统实现、项目管系统建模、需求分析、系统设计、系统实现、项目管理、配置管理、测试等比较熟悉。理、配置管理、测试等比较熟悉。(3)采用面向对象技术(如采用面向对象技术(如OOA,OOD等)的项等)的项目组,建议使用迭代式生命周期。目组,建议使用迭代式生命周期。(4)项目组的核心设计人员,应具备一定程度的软件)项目组的核心设计人员,应具备一定程度的软件架构的知识,并熟练掌握软件架
32、构设计技能。架构的知识,并熟练掌握软件架构设计技能。(5)项目组全体成员应熟悉)项目组全体成员应熟悉UML,并能利用建模工,并能利用建模工具(如具(如Rational Rose等)进行分析、策划、设计、测等)进行分析、策划、设计、测试等。试等。(6)项目组的管理人员应具备风险管理的知识和技能。)项目组的管理人员应具备风险管理的知识和技能。(7)拥有实施软件产品开发、组装的软件组织。)拥有实施软件产品开发、组装的软件组织。374模型的四个阶段模型的四个阶段(1)初始阶段。本阶段主要工作是确定系)初始阶段。本阶段主要工作是确定系统的业务用况和定义项目的范围。统的业务用况和定义项目的范围。(2)精化
33、阶段。本阶段主要工作是分析问)精化阶段。本阶段主要工作是分析问题域、细化产品定义,定义系统的构架并题域、细化产品定义,定义系统的构架并建立基线,为构建阶段的设计和实施工作建立基线,为构建阶段的设计和实施工作提供一个稳定的基础。提供一个稳定的基础。(3)构建阶段。本阶段主要工作是反复地)构建阶段。本阶段主要工作是反复地开发,以完善产品,达到用户的要求。开发,以完善产品,达到用户的要求。(4)产品化)产品化(移交移交)阶段。本阶段主要工作阶段。本阶段主要工作是将产品交付给用户,包括安装、培训、是将产品交付给用户,包括安装、培训、交付、维护等工作。交付、维护等工作。385模型的九个核心流程模型的九个
34、核心流程(1)业务建模。)业务建模。(2)需求获取。)需求获取。(3)分析设计。)分析设计。(4)实施。)实施。(5)测试。)测试。(6)部署。)部署。(7)配置与变更管理。)配置与变更管理。(8)项目管理。)项目管理。(9)环境。)环境。396模型的优点模型的优点在开发早期或中期,用户需求可以变化;在迭代在开发早期或中期,用户需求可以变化;在迭代之初,它不要求有一个相近的产品原型;模型的之初,它不要求有一个相近的产品原型;模型的适用范围很广,几乎适用于所有的项目开发。适用范围很广,几乎适用于所有的项目开发。7模型的缺点模型的缺点传统的项目组织方法是按顺序(一次且仅一次)传统的项目组织方法是按
35、顺序(一次且仅一次)完成每个工作流程,即瀑布式生命周期。迭代模完成每个工作流程,即瀑布式生命周期。迭代模型是采取循环的工作方式,每次循环均使工作产型是采取循环的工作方式,每次循环均使工作产品更靠近目标产品一次,这就要求项目组成员具品更靠近目标产品一次,这就要求项目组成员具有很高的水平并掌握先进的开发工具。有很高的水平并掌握先进的开发工具。40 2-2-5螺旋模型螺旋模型 1模型的本意模型的本意螺旋模型将瀑布模型和快速原型模型结合螺旋模型将瀑布模型和快速原型模型结合起来,强调了其它模型所忽视的风险分析,起来,强调了其它模型所忽视的风险分析,特别适合于大型复杂的系统。特别适合于大型复杂的系统。螺旋
36、模型基本做法是在瀑布模型的每一个螺旋模型基本做法是在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风一个或多个主要风险,直到所有的主要风险因素都被确定。如图险因素都被确定。如图2-4所示。所示。4142螺旋模型沿着螺线顺时针方向进行若干次螺旋模型沿着螺线顺时针方向进行若干次迭代,图中的四个象限代表了以下迭代活迭代,图中的四个象限代表了以下迭代活动:动:(1)制定计划:确定软件目
37、标,选定实施)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;方案,弄清项目开发的限制条件;(2)风险分析:分析评估所选方案,考虑)风险分析:分析评估所选方案,考虑如何识别和消除风险;如何识别和消除风险;(3)实施工程:实施软件开发和验证;)实施工程:实施软件开发和验证;(4)客户评估:评价开发工作,提出修正)客户评估:评价开发工作,提出修正建议,制定下一步计划。建议,制定下一步计划。432模型的特点模型的特点(1)把软件开发过程组成为一个逐步细化)把软件开发过程组成为一个逐步细化的螺旋周期,每经历一个周期,系统就得的螺旋周期,每经历一个周期,系统就得到进一步的细化和完善;到进一
38、步的细化和完善;(2)整个模型紧密围绕开发中的风险分析,)整个模型紧密围绕开发中的风险分析,推动软件设计向深层扩展和求精;推动软件设计向深层扩展和求精;(3)强调持续的判断、确定和修改用户的)强调持续的判断、确定和修改用户的任务目标,并按成本、效益来分析候选的任务目标,并按成本、效益来分析候选的软件产品对任务目标的贡献。软件产品对任务目标的贡献。443选择模型的条件选择模型的条件螺旋模型强调风险分析,使得开发人员和用户对螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风的反应,
39、因此特别适用于庞大、复杂并具有高风险的系统。险的系统。454模型的优点模型的优点(1)与瀑布模型相比,螺旋模型支持用户需求的)与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提动态变化,为用户参与软件开发的所有关键决策提供了方便,从而降低了软件开发风险。供了方便,从而降低了软件开发风险。(2)螺旋模型对可选方案和约束条件的强调,有)螺旋模型对可选方案和约束条件的强调,有利于已有软件的重用,也有助于把软件质量作为软利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。件开发的一个重要目标。(3)减少了过多测试(浪费资金)或测试不足)减少了过多测试(浪费
40、资金)或测试不足(产品故障多)所带来的风险。(产品故障多)所带来的风险。(4)螺旋模型中维护只是模型的另一个周期,在)螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。维护和开发之间并没有本质区别。465模型的缺点模型的缺点(1)很难让用户确信这种演化方法的结果是可)很难让用户确信这种演化方法的结果是可以控制的。由于建设周期长,而软件技术发展比以控制的。由于建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需技术水平有了较大的差距,无法满足当前用户需求。求。(2)采用螺旋模型
41、需要具有相当丰富的风险评)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。如果未能够及时标识风险,势必造成重大损失。(3)过多的迭代次数会增加开发成本,延迟提)过多的迭代次数会增加开发成本,延迟提交时间。交时间。472-2-6 喷泉模型喷泉模型 481模型的本意模型的本意喷泉模型喷泉模型(Fountain Model)认为,软件开认为,软件开发过程自下而上的各阶段是相互重叠和多发过程自下而上的各阶段是相互重叠和多次反复进行的,就像喷泉中的水喷上去,次反复进行的,就像喷泉中的水喷上去
42、,又可以落下来,所以叫做喷泉模型。又可以落下来,所以叫做喷泉模型。各个开发阶段没有特定的次序要求,而且各个开发阶段没有特定的次序要求,而且可以交互进行,在每个开发阶段中,还可可以交互进行,在每个开发阶段中,还可以随时补充其它任何开发阶段中的遗漏。以随时补充其它任何开发阶段中的遗漏。492模型的特点模型的特点喷泉模型是一种以用户需求驱动的模型,喷泉模型是一种以用户需求驱动的模型,主要用于描述面向对象的软件开发过程。主要用于描述面向对象的软件开发过程。由于各阶段的活动之间无明显界线,所以由于各阶段的活动之间无明显界线,所以喷泉模型也称为喷泉模型也称为“喷泉无间隙性模型喷泉无间隙性模型”。3选择模型
43、的条件选择模型的条件喷泉模型主要用于面向对象的软件项目,喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。象在每次迭代中随之加入渐进的软件成分。504模型的优点模型的优点喷泉模型不像瀑布模型那样,需要分析活动结束喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码后才开始设计活动,设计活动结束后才开始编码活动。活动。该模型的各个阶段没有明显的界限,开发人员可该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开以同步进行开发。其优点是可以
44、提高软件项目开发效率,节省开发时间。发效率,节省开发时间。5模型的缺点模型的缺点由于喷泉模型在各个开发阶段是重叠的,因此在由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项开发过程中需要大量的开发人员,因此不利于项目的管理。目的管理。这种模型要求严格管理文档,使得审核的难度加这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息。大,尤其是面对可能随时加入各种信息。512-2-7 XP模型模型 1模型的本意模型的本意XP模型,即极限编程模型,它本来是敏捷模型,即极限编程模型,它本来是敏捷企业文化现象,但是不少人将它当作一种企业文化现象,但
45、是不少人将它当作一种软件开发模型。软件开发模型。XP模型属于轻量级开发模型,它由一组简模型属于轻量级开发模型,它由一组简单规则单规则(需求、实现、重构、测试、发布需求、实现、重构、测试、发布)组组成,既保持开发人员的自由创造性,又保成,既保持开发人员的自由创造性,又保持对需求变动的适应性,即使在开发的后持对需求变动的适应性,即使在开发的后期,也不怕用户需求的变更。期,也不怕用户需求的变更。XP模型的迭模型的迭代开发过程,如图代开发过程,如图2-6所示。所示。52532模型的特点模型的特点在需求、实现、重构、测试、发布的迭代过程中,在需求、实现、重构、测试、发布的迭代过程中,XP模型有四条核心原
46、则:模型有四条核心原则:“交流交流”、“简单简单”、“反馈反馈”和和“进取进取”。XP开发小组不仅包括开发人员,还包括管理人员开发小组不仅包括开发人员,还包括管理人员和客户。和客户。XP模型强调小组内成员之间要经常进行模型强调小组内成员之间要经常进行“交流交流”,结对编程,在尽量保证质量的前提下力求过程和,结对编程,在尽量保证质量的前提下力求过程和代码的代码的“简单简单”化。化。来自客户、开发人员和最终用户的具体来自客户、开发人员和最终用户的具体“反馈反馈”意意见,可以提供更多的机会来调整设计,保证把握正见,可以提供更多的机会来调整设计,保证把握正确的开发方向。确的开发方向。在在XP模型中,采
47、取讲模型中,采取讲“用户场景故事用户场景故事”的方法,的方法,来代替传统模型中的需求分析。来代替传统模型中的需求分析。543选择模型的条件选择模型的条件XP模型克服了传统模型不灵活机动的缺陷,是一模型克服了传统模型不灵活机动的缺陷,是一种面向客户场景的轻量级模型。它只适合于中小种面向客户场景的轻量级模型。它只适合于中小型开发小组。实践表明,型开发小组。实践表明,XP模型特别适合于情投模型特别适合于情投意合的青年人群的小项目。意合的青年人群的小项目。4模型的优点模型的优点(1).由于采用简单策略,不需要长期计划和复杂由于采用简单策略,不需要长期计划和复杂管理,因而开发周期短;管理,因而开发周期短
48、;(2).由于采用迭代增量开发、反馈修正和反复测由于采用迭代增量开发、反馈修正和反复测试的方法,因而软件质量有保证;试的方法,因而软件质量有保证;(3).由于适应用户需求的变化,因而与用户关系由于适应用户需求的变化,因而与用户关系和蔼。和蔼。555模型的缺点模型的缺点XP模型作为一种新的模型,在实际应用中模型作为一种新的模型,在实际应用中还存在着一些问题,引起了许多争议。还存在着一些问题,引起了许多争议。它只适用于小型项目、小型项目组,不大它只适用于小型项目、小型项目组,不大适用于大型项目、大型项目组。适用于大型项目、大型项目组。同时,它与同时,它与ISO9001、CMMI的精神也存的精神也存
49、在冲突。在冲突。56序号模 型 名 称优 点缺 点适 用 范 围1瀑布模型 简单好学逆转性差 面向过程开发2增量模型 可以分阶段提交有时用户不同意 系统可拆卸和组装3迭代模型 需求可变风险大 有高素质软件团队4原型模型 开发速度快不利于创新 已有产品的原型5螺旋模型需求可变建设周期长庞大、复杂、高风险项目6喷泉模型提高开发效率不利于项目的管理面向对象开发7XP模型提高开发效率不适合大团队、大项目小团队,小项目各种模型之间的关系各种模型之间的关系 57在软件开发的过程中,软件工程不可能在软件开发的过程中,软件工程不可能百分之百地按照事先设计好的软件蓝图百分之百地按照事先设计好的软件蓝图进行,而是
50、一边施工、一边修改软件蓝进行,而是一边施工、一边修改软件蓝图、一边再按照修改的软件蓝图继续施图、一边再按照修改的软件蓝图继续施工,即按照工,即按照“软件蓝图软件蓝图-软件开发软件开发-软软件蓝图件蓝图-软件开发软件开发”这个顺序多次循环,这个顺序多次循环,循环中又包涵着各种生命周期及开发模循环中又包涵着各种生命周期及开发模型,最后才能到达胜利的彼岸。型,最后才能到达胜利的彼岸。58软件企业选取软件生命周期模型的方法:软件企业选取软件生命周期模型的方法:软件企业在创业时期,由于没有项目或产软件企业在创业时期,由于没有项目或产品的积累,所以他们常常会选取瀑布模型品的积累,所以他们常常会选取瀑布模型