您的位置:首页 > 其它

软件工程——软件开发模型

2018-03-22 20:46 344 查看

软件支持过程

1.软件过程

定义:软件过程是指软件生命周期(Life Cycle)中的时间序列,有起始点和终止点。
过程与阶段(Phase)有关,阶段与里程碑(Milestone)有关。某些重要里程碑上的文档(通过评审和审计之后)又称为基线(Baseline)。
软件工程的支持过程,由支持软件生命周期各个阶段的生产工具所组成。(包括需求分析工具、概要设计工具、详细设计工具、编程工具、测试工具、维护工具、软件开发环境、软件工程环境)

2.CASE工具

CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段。
CASE工具主要包括:画图工具,报告生成工具,数据词典、数据库管理系统和规格说明检查工具,代码生成工具和文档资料生成工具等。
目前CASE的标准是UML。
传统的软件生命周期:可行性研究→需求分析→软件设计→编码→软件测试→软件维护

软件的管理过程

1.

软件中的过程,分为“基本过程、支持过程、组织过程”三种。
基本过程:需求、设计、实现、测试、验收。
支持过程:支持过程开发和过程管理的各种CASE工具。
组织过程:建立有关小组,如软件工程组、质量保证组、测试组、文档组。

2.

软件工程中主要存在的3类过程管理模型:
(1)ISO9000质量管理和质量保证体系
            来源于国际标准化组织ISO,按20多个质量要素管理。

(2)CMM过程能力成熟度模型
            来源于卡耐基梅隆大学软件工程研究所,按24个过程域PA,分阶段模型和连续模型两种方式管理,属于重载过程管理。

(3)企业文化(微软企业文化、敏捷文化现象、IBM企业文化等)
            属于轻载过程管理。

软件生命周期与开发模型

软件的生命周期与选择的开发模型有关,不同的开发模型,对应不同的生命周期。
软件生命周期模型能清晰、直观地表达软件开发全过程,是软件开发过程应遵循的开发路线图

1.瀑布模型

瀑布模型(Waterfall Model)又称流水式过程模型。


在瀑布模型中,软件开发的各项活动严格按照线性方式进行。当前阶段的活动接受上一阶段活动的工作结果,实施完成所需的工作内容。
适用范围:
    早期的面向过程的结构化分析、结构化设计、结构化编程、结构化测试、结构化维护方法,很适合于瀑布模型。或者说,瀑布模型适合于结构化方法,即面向过程的软件开发方法

特点:
    里程碑或基线驱动,或者说文档驱动。

    过程逆转性很差或者说不可逆转,逆转将会延误工期,增加成本 ,造成重大损失。 

选择模型的条件:
不是任何软件都可以采用瀑布模型的,软件项目或产品选择瀑布模型,必须满足下列条件:

(1)在开发时间内需求没有或很少变化。
(2)分析设计人员对应用领域很熟悉。
(3)低风险项目(对目标、环境很熟悉)。
(4)用户使用环境很稳定。
(5)用户除提出需求以外,很少参与开发工作。
尽管上述条件比较苛刻,但是,软件企业在开发新产品或新项目时,往往还是采用瀑布模型。系统软件和工具软件的开发,也常常采用瀑布模型。 
模型的优点:
开发阶段清晰,便于评审、审计、跟踪、管理和控制。

2.增量模型

增量模型(Incremental Model)是遵循递增方式来进行软件开发的。
软件产品被作为一组增量构件(模块),每次需求分析、设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。

模型的本意:

要开发一个大的软件系统,先开发其中的一个核心模块(或子系统),然后再开发其他模块(或子系统),这样一个个模块(或子系统)地增加上去,就像搭积木一样,直至整个系统开发完毕为止。
在每增加一个模块前,先要对该模块进行模块测试。通过后再将此模块加入到系统中,然后还要进行系统集成测试。系统集成测试成功后,再增加新的模块。
这样多次循环,直到系统搭建完毕为止。 
模型的特点:
任务或功能模块驱动,可以分阶段提交产品。有多个任务单,这些多个任务单的集合,构成项目的一个总《任务书》,或总《用 户需求报告》/《需求规格说明书》。 
选择模型的条件:

(1)在整个项目开发过程中,需求都可能发生变化,客户接受分阶段交付。
(2)分析设计人员对应用领域不熟悉,难以一步到位。
(3)中等或高风险项目(工期过紧且可分阶段提交的系统或目标、环境不熟悉)。
(4)用户可参与到整个软件开发过程中。
(5)使用面向对象语言或第四代语言。

(6)软件公司自己有较好的类库、构件库。         
模型的优点:

(1)由于将一个大系统分解为多个小系统,这就等于将一个大风险分解为多个小风险,从而降低了开发难度。
(2)人员分配灵活,刚开始不用投入大量人力资源。如果核心模块产品很受欢迎,则可 增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供 了一种先推出核心产品的途径。即可先发 布部分模块给客户,对客户起到镇静剂的  作用。 
模型的缺点:
如果软件系统的组装和拆卸性不强,或开发人员全局把握水平不高(没有数据库设计专家进行系统集成),或者客户不同意分阶段提交产品,或者开发人员过剩,就不宜采用这种模型。

3.原型模型     

原型模型(Prototype Model)的本意是:在初步需求分析之后,马上向客户展示一个软件产品原型(样品),对客户进行培训,让客户试用,在试用中收集客户意见,根据客户意见立刻修改原型,之后再让客户试用,反复循环几次,直到客户确认为止。       
原型模型很适合于企业资源规划ERP(Enterprise Resource Planning)系统。

模型的特点:
原型驱动。开发者必须先有一个原型(样品),至少要有一个原型的核心。
原型模型与迭代模型相同点是:反复循环几次,直到客户确认为止。不同点是:原型模型事先有一个展示性的产品原型(样品),而迭代模型可能没有。               
选择模型的条件:
(1)已有产品或产品的原型(样品),只需客户化的工程项目。   

(2)简单而熟悉的行业或领域。
(3)有快速原型开发工具。
(4)进行产品移植或升级
由于上述条件不太苛刻,所以凡是有软件产品的IT企业,在他们熟悉的业务领域内,当客户招标时,他们都会以原型模型作为软件开发模型,去制作投标书,去讲解投标。 
模型的优点:
开发速度快,用户意见反馈实时,有利于开发商在短时间内推广并实施多个客户

模型的缺点:
 因为事先有一个展示性的产品原型,所以在一定程度上,不利于开发人员的创新。           
快速原型法:
由于原型模型的开发速度较快,有时也将它称作快速原型法(Rapid Prototyping)。
在开发工具和开发环境迅速发展的今天,在信息系统开发中,原型法和快速原型法又被赋予新的内容:事先没有原型产品,也可以采取这种办法。             
基本思路是:采用以面向元数据为主的方法,在需求分析的基础上,利用Power Designer等数据库分析和设计工具,快速建立信息系统的概念数据模型CDM和物理数据模型PDM;然后利用面向对象的编程工具,快速地实现需求分析中确认的流程、功能、性能和接口;之后交付给用户试用,反复循环几次,直到客户确认满意为止。            
快速原型法选择的条件之一是:项目组中有数据库分析和设计的专家,有面向对象编程的专家,文档制作有成熟的模板,而且系统或项目又不是非常大。

快速原型法选择的条件之二是:项目组的开发环境为分行业的业务基础平台(例如用友业务基础平台),该业务基础平台又完全适合所需开发的系统或项目,而且系统或项目又不是非常大。

4.迭代模型

针对瀑布模型的缺陷,人们提出了迭代模型(Iterative Model)。
所谓迭代,是指活动的多次重复。从这个意义上讲,原型不断完善和增量不断产生,都是迭代的过程。但这里所讲的迭代模型是RUP推出的一种“逐步求精”的面向对象的软件开发过程模型,被认为软件界迄今为止最完善的、商品化的开发过程模型。
模型的特点:
迭代或迭代循环驱动,每一次迭代或迭代循环,均要走完初始(先启)、精化、构建、产品化(移交)这四个阶段。RUP的主要特征如下:

采用迭代的、增量式的开发过程; 采用UML语言描述软件开发过程;有功能强大的软件工具Rational Rose支撑。

面向对象的方法,尤其是面向对象的CASE工具Rational Rose,适合于迭代模型。

模型的选取条件:

(1)生命周期模型是以迭代为主要特征的。项目组的管理人员和核心成员,应对迭代的开发方式比较熟悉。
(2)管理人员和核心成员应对软件工程的核心过程:系统建模、需求分析、系统设计、系统实现、项目管理、配置管理、测试等比较熟悉。              
(3) 采用面向对象技术(如OOA,OOD等)的项目 组,建议使用迭代式生命周期。            

(4)项目组的核心设计人员,应具备一定程度的软件架构的知识,并熟练掌握软件架构设计技能。
(5)项目组全体成员应熟悉UML,并能利用建模工具 (如Rational Rose等)进行分析、策划、设计、测试等。
(6)项目组的管理人员应具备风险管理的知识和技能。
(7)拥有实施软件产品开发、组装的软件组织 。    
模型的优点:
在开发早期或中期,用户需求可以变化;在迭代之初,它不要求有一个相近的产品原型;模型的适用范围很广,几乎适用于所有的项目开发。

模型的缺点:
传统的项目组织方法是按顺序(一次且仅一次)完成每个工作流程,即瀑布式生命周期。迭代模型是采取循环的工作方式,每次循环均使工作产品更靠近目标产品一次,这就要求项目组成员具有很高的水平并掌握先进的开发工具。

5.螺旋模型

螺旋模型基本做法是在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。



螺旋模型沿着螺线顺时针方向进行若干次迭代,图中的四个象限代表了以下迭代活动:
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;              
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;            

(3)实施开发:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议模型的特点:

(1)把软件开发过程组成为一个逐步细化的螺旋周期,每经历一个周期,系统就得到进 一步的细化和完善;
(2)整个模型紧密围绕开发中的风险分析,推动软件设计向深层扩展和求精;
(3)强调持续的判断、确定和修改用户的任务目标,并按成本、效益来分析候选的软件产品对任务目标的贡献。
选择模型的条件:

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统。
对于这些系统,风险是软件开发不可忽视且潜在的不利因素,它可能在不同程度上损害软件开发过程,影响软件产品的质量。
减小软件风险的目标是在造成危害之前,及时对风险进行识别及分析,决定采取何种对策,进而消除或减少风险的损害。           模型的优点:

(1)与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,从而降低了软件开发风险。                           
(2)螺旋模型对可选方案和约束条件的强调,有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。  
(3)减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险。              
(4)螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。              
模型的缺点:

(1)很难让用户确信这种演化方法的结果是可以控制的。由于建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
(2)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
(3)过多的迭代次数会增加开发成本,延迟提交时间 
             
              
                   
              
           
              
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: