1、第二章 过程模型软 件 工 程提出问题 在开发产品或构造系统时,由谁指导我们及时交付高质量的产品?所遵循的线路图就称为:软件过程软 件 工 程主要内容 过程框架 CMMI 过程模式 惯用过程模型 专用过程模型软 件 工 程2.1 过程框架 将整个软件过程再进一步细分为各个相对独立的功能块,即过程框架。(以工作开展的时间为线索)软 件 工 程图2-1软件过程框架定义了若干个定义了若干个框架活动框架活动过程框架软 件 工 程图2-1 软件过程框架适用于任何一个框架活动普适性活动软 件 工 程图2-1 软件过程框架五个最基本的框架活动:沟通、策划、建模、构建和部署框架活动框架活动软 件 工 程五个最
2、基本的框架活动 沟通:与客户之间的交流与写作 策划:为后续的软件工程工作制定计划 建模:包括分析和设计 构建:编码和测试 部署:软件交付用户,用户对其进行评估并反馈意见软 件 工 程图2-1 软件过程框架每个动作包括一系列相互关联的任务,并产生一个关键的工作产品比如“沟通”包含若干个软件工程动作,比如“获取需求”软件工程动作软件工程动作软 件 工 程图2-1 软件过程框架定义了为达到一个软件工程动作的目标所需要完成的工作。项目不同,任务集或不同任务集任务集软 件 工 程低于小型、相对简单的项目而言,获取需求的任务集可能包括:1.制定一个项目的共利益者列表2.邀请所有的共利益者成员参加一个非正式
3、会议3.咨询每一个共利益者对于软件特征和功能的需求4.讨论需求。并确定最终的需求列表5.划定需求优先级6.把不确定的地方标记出来软 件 工 程低于大型、复杂的软件工程项目而言,可能有不同的任务集,例如:1.制定一个项目的共利益者列表2.和共利益者的每一个成员分别单独讨论,获取所有的需求。3.基于步骤2的调查,建立初步的功能和特征列表4.安排一系列促进需求获取的会议5.举行一系列会议6.在每次会议上建立非正式的用户场景7.根据共利益者的反馈,进一步细化用户场景8.建立一个修正的需求列表9.使用质量功能部署技术将需求划分优先级别10.将需求打包以便软件可以分批交付11.注意系统的约束和限制12.讨
4、论系统的验证方法。软 件 工 程图2-1 软件过程框架每个工作任务都完成一部分动作所定义的工作工作任务工作任务软 件 工 程过程流 1.线形过程流 从沟通到部署线性执行 2.迭代过程流 在执行下一个活动前重复执行之前的一个或多个活动 3.演化过程流 采用循环的方式执行各个活动,每次循环都能产生更为完善的软件版本 4.并行过程流 将一个或是多个其它活动并行执行(如,软件一个方面的建模可以同软件另一个方面的建模活动并行执行)软 件 工 程2.1 过程框架(续)不同学者依据自己的理解将通用过程框架应用到侧重点不同的各个领域,提出了各自的用以描述过程的模型。软 件 工 程2.1 过程框架(续)过程模型
5、的适用性适用性(如软件需解决的问题、项目特点、开发队伍和组织文化等)是成功的关键!软 件 工 程2.2 能力成熟度模型集成 美国卡内基-梅隆大学软件工程研究所(SEI)在美国国防部资助下20世纪80年代末建立的能力成熟度模型集成(CMMI),用于预测软件开发组织所开发的系统和软件工程能力软 件 工 程CMM的5个能力成熟度等级软 件 工 程CMMI CMMI定义了每一个过程域的“特定目标”,以及达到该目标所需的“特定实践”任务:查相关资料,了解CMMI每级的目标和实践软 件 工 程成熟度模型等级成熟度模型等级关注焦点关注焦点过程域过程域优化级持续的过程改进组织创新和部署;原因分析和决定已定量管
6、理级定量管理组织过程性能;定量项目管理已定义级过程标准化需求开发;技术解决方案产品集成;验证;确认;组织过程焦点;组织过程定义;组织培训;集成项目管理;集成供方管理;风险管理;决策分析与决定;组织的集成环境;集成团队建立已管理级基本的项目管理需求管理;项目策划;项目监督和控制;供方合同管理;测量和分析;过程和产品质量保证;配置管理已执行级图2-4 达到成熟度模型等级需要的过程域软 件 工 程2.3 过程模式 所谓过程模式,比通用过程框架中定义的活动相对要具体些,包含这些通用的方面,但依据不同的领域,侧重点不一样,表述方法也不一样。(注意:模式的定义更宽泛,它可能适用于任何阶段,任何方面)软 件
7、 工 程一个描述过程模式的模版:模式名称目的类型(任务模式、步骤模式、阶段模式)启动条件问题解决办法结束条件相关模式已知应用实例软 件 工 程软 件 工 程2.4 惯用过程模型不同过程模型的共同特点:都支持通用过程结构,即都包含其五个要素:沟通、策划、建模、构建和部署规定了一整套的元素以及他们之间的相互关联的方式:框架活动、软件工程动作、任务、工作产品、质量保证以及每个项目的变更控制机制软 件 工 程2.4惯用过程模型(续)惯例过程模型包括:瀑布模型、增量过程模型(增量模型、RAD模型)、演化过程模型(原型开发、螺旋模型、协同开发模型)软 件 工 程2.4.1 瀑布模型 也称为线性模型或传统生
8、存周期,V模型软 件 工 程瀑布模型(续)适用范围?通常发生在对一个已有系统进行明确定义的适应性调整和增强的时候 对于一个新的项目,需求必须是准确定义和相对稳定的软 件 工 程线性顺序模型特点:阶段间的顺序性和依赖性;文档驱动性;严格阶段评估;开发初期需要清楚全部需求;开发周期长、风险大。瀑布模型(续)软 件 工 程瀑布模型(续)瀑布模型的缺点:1.顺序太严格。实际工作经常是在多个环节之间来回反馈调整,而不是将一个环节完成后再继续前进。2.产品在最后阶段才与客户见面,从心里学的角度讲有些考验客户。另外,如果此时才发现问题,需要改正,工作量将会很大。3.效率可能不高。软 件 工 程瀑布模型(续)
9、优点:它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。软 件 工 程图 实际的带反馈环的瀑布模型软 件 工 程 增量过程模型 增量过程模型包括:增量模型RAD模型软 件 工 程增量模型 以迭代方式运用瀑布模型。软 件 工 程增量模型(续)特点:一般来讲,最重要的增量放在前面。每次交付的增量产品都是可用的。适合于功能可以划分,而且时间不紧迫的情况。可以规避一定的风险。如有些技术还不稳定,将这部分放到后边。软 件 工 程增量模型(续)例如:采用增量模型开发的字处理软件:在第1个增量中提供基本的文件管理
10、、编辑和文档成文功能 第2个增量中提供复杂的编辑和文档生成功能 第3个增量中提供拼写和语法检查功能 第4个增量中提供高级页面排版功能软 件 工 程RAD模型 快速应用程序开发(Rapid Application Development,RAD)是一种侧重于短暂的开发周期的增量软件模型。软 件 工 程3.3.2 RAD模型(续)软 件 工 程RAD模型(续)瀑布模型的高速变体,通过基于构件的方法快速实现。适于工期紧张,又可细分功能,还要有合适的构件。软 件 工 程RAD模型(续)缺点:1.需要投入更多的人力。2.各团队要紧密协作。3.只适应于特殊的系统,必须可以合理模块化。4.不适于高性能需求(
11、若需调构件接口)5.系统需求灵活,现有构件不容易轻易满足。6.技术风险很高的情况下,不宜采用该模型。软 件 工 程演化过程模型 软件,类似于其他复杂的系统,会随着时间的推移而演化 软件有技术能力的限制,时间的限制,认识理解的限制,其它客观因素的限制。演化模型也是一种迭代模型。软 件 工 程演化过程模型 演化模型包括:原型模型 螺旋模型 协同开发模型 软 件 工 程原型开发 如果出现下面的情况,怎么办?客户也不能给出确切的要求 开发人员对算法的效率、操作系统的兼容性和人机交互的形式不确定 原型是一个循环的过程,所以也是迭代的过程。软 件 工 程原型开发(续)软 件 工 程图:原型法的处理过程软
12、件 工 程原型开发(续)对原型的基本要求:体现主要的功能 提供基本的界面风格 展示比较模糊的部分,以便于确定或进一步明确,防患于未然 原型最好是可以运行的,最少要在各主要功能模块之间能够建立相互连接软 件 工 程原型开发(续)原型的处理方法:抛弃型 在获取的明确需求的基础上,重新设计与开发 成本相对高,小公司一般慎用 演化型 在原型的基础上继续开发软 件 工 程原型开发(续)优点:1.能让人(开发者或客户)很快见到产品,有成就感。2.能渐进地启发客户提出新的要求或任务。软 件 工 程原型开发(续)缺点:1.容易蒙骗客户,也可能由此给自己带来麻烦。2.往往只为结果,而不考虑技术手段,为今后埋下隐
13、患。3.系统可能考虑不周全。软 件 工 程原型开发(续)它与增量模型相比:增量模型在开发以前基本能确定系统的需求,虽然在以后的过程中也可能不断完善;原型开发适应于预先不太清楚系统的需求。增量模型的反馈可能较少,而原型开发需要不断的大量反馈信息。软 件 工 程 螺旋模型 结合了原形的迭代性质和瀑布模型的系统性和可控性特点 风险驱动,引入非常严格的风险识别、风险分析和风险控制 早期迭代中可能是一个理论模型或原形软 件 工 程螺旋模型(续)软 件 工 程螺旋模型(续)螺旋模型与原型相比:1.螺旋模型虽不像增量模型中对功能有明确界定,但有比原型要清晰一些。2.螺旋模型的反馈要求持续于产品的整个生命期。
14、3.适合于大型软件的开发。软 件 工 程协同开发模型(续)又叫协同工程。定义了一个活动的网络,网络上每个活动、动作和任务同时存在。过程网络中某一点产生的事件可以触发状态的转换。可适用于所有类型的软件开发软 件 工 程演化过程评述 演化模型的初衷是采用迭代或者增量的方式开发高质量软件 用演化模型可以强调灵活性、可扩展性和开发速度 软件开发团队需要在严格的项目和产品参数与客户满意度之间找到一个平衡点软 件 工 程 2.4.2专用过程模型 具有通用过程模型的特点,只适应于一些特定的领域。包括:1.基于构件的开发2.形式化方法模型3.面向方面的软件开发等软 件 工 程基于构件的开发 利用预先打包的软件
15、构件开发程序 什么是构件?没有统一的定义 Gartner Group定义:运行时软件构件是一个可动态绑定的、含一个或多个程序的软件包,它作为一个独立单位,通过运行时可辨别的文档化接口加以管理和存取 类似于螺旋模型,本质上是演化模型软 件 工 程基于构件的开发(续)构件开发的步骤:对所需构件进行评估。考虑构件的集成。设计系统的软件框架。将构件放入框架。进行测试。软 件 工 程形式化方法模型 形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明。特点:精密、准确。缺点:难度大,成本高,可用人力资源少,用户不易理解,有时甚至无法完成。方法:有穷状态机、Petri网、Z语言等。软 件 工 程面
16、向方面的软件开发 将系统分成若干相对较独立的组成部分,这些部分称为方面。面向方面技术包括面向对象技术,比它大。系统的方面包括用户接口、协调工作、发布、持续性、存储器管理、事务处理、安全、完整性等。还不成熟。具有螺旋型和协同型的共同特点。软 件 工 程统一过程 试图将传统软件模型(惯例软件模型)和敏捷过程模型的优点结合起来,即统一起来。一些术语:面向对象(Object-Oriented,OO),面向对象分析(Object-Oriented Analysis,OOA),面向对象分析(Object-Oriented Design,OOD).软 件 工 程 统一过程包括:起始,细化,构建,转换,生产等
17、步骤。软 件 工 程统一过程(续)起始:包括客户沟通和策划活动此时的构架只是主要子系统及其功能、特性的试探性概括。软 件 工 程统一过程(续)细化:包括用户沟通和通过过程模型的建模活动扩展体系结构以包括软件的五种视图:用例模型、分析模型、设计模型、实现模型和部署模型。软 件 工 程统一过程(续)构建:与通过软件过程的构建活动相同。采用体系结构模型作为输入,开发或获取软件构件,使得最终用户能够操作用例。软 件 工 程统一过程(续)转换:软件被提交给最终用户进行Beta测试,用户反馈报告缺陷及必要的变更。另外,发布必须的支持信息:用户手册,用户指南及安装步骤等。结束时,软件增量成为可用的发布版本。软 件 工 程 统一过程(续)生产:与通过软件工程的部署一致提供运行环境支持,提交并评估缺陷报告和变更请求。软 件 工 程统一过程(续)软 件 工 程作业 P15 1.8 P37-38 2.5详细描述三个适于采用瀑布模型的软件项目详细描述三个适于采用瀑布模型的软件项目 2.6详细描述三个适于采用原型模型的软件项目详细描述三个适于采用原型模型的软件项目 2.8详细描述三个适于采用增量模型的软件项目详细描述三个适于采用增量模型的软件项目 2.13详细描述三个适于采用构件模型的软件项详细描述三个适于采用构件模型的软件项目目