文档介绍:第五章软件过程管理与软件工程环境
软件过程
90年代初美国国防部软件工程研究所和CMU大学的研究者提出过程成熟度的CMM(Capability Maturity Model)模型。把过程成熟度分为五级:
第一级:原始的:自发过程,成功靠员工努力;
第二级:可重复的:参照成功的项目重复;
第三级:可定义的:所有管理、工程两方面的活动均文档化并纳入有组织的软件过程,新项目按批准的过程开发和管理;
第四级:可管理的:除三级而外,对软件过程和质量有定量的理解和度量,可以控制度量;
第五级:可优化的:除四级而外,可连续从实施过程的反馈中改进过程
1. 软件过程的活动
活动分为:框架活动、伞形活动
所谓框架活动是软件工程必须的大步骤、是决定产品如何出现、存在的重要活动。它包括一组软件工程工作任务并指出什么算完(里程碑)? 交付出什么?质量保证点是什么? 软件工程工作任务因产品特性而选用不同的过程模型展开。当然,最上层的框架活动是定义、开发、维护。有了模型它就可以把这三大步骤细化了。
伞形活动是为保证高质量产品出现、存在的活动。它凌驾于框架活动之上,故谓之“伞形”,典型的伞形活动是:
软件项目追踪和管理
(1)正式技术评审
(2)软件质量保证
(3)软件配置管理
(4)文档的准备和制作
可重用管理
软件度量(指本项目特殊的度量)
风险管理
2. 项目特征与框架活动
框架活动对某类项目、单位相对固定,但变动比较大
一般把软件项目分成五类。
(1)概念开发项目:相当于我国科研体制中“预研”项目
(2)新应用开发项目:例如,Word
(3)应用增强项目:有重大改进如Word ,
(4)应用维护项目:相对小的改进
(5)重构工程项目:将已有项目部分或全部重构
概念开发项目可以采用线性顺序模型:
(1) 项目定义:概念范围定义
(2) 作计划: 初步概念计划和技术风险评估
(3) 作工程/构建:概念证明
(4) 发布: 概念实现
(5) 客户评价: 客户反应
对于新应用开发项目和后续的增强和维护,可以采用螺旋模型,其框架活动是:
(1) 与客户通信: 建立有效通信
(2) 作计划: 定义资源、时限、项目相关信息
(3) 风险分析: 技术和管理风险
(4) 作工程: 作出主要应用程序表示
(5) 构建和发布: 构建、测试、安装并提供用户支持
(6) 客户评价: 收集反馈意见
这些框架活动可因公司(单位)项目而异。如CSC公司的Objectory方法学把框架活动定义为线性顺序四阶段模型:
(1) 初创(Inception): 定义环境、捕捉需求
(2) 求精(Elaboration): 定义需求、分析、设计
(3) 构建(Construction):实现、测试
(4) 移交(Transition): 测试、布署
每个阶段内部都是迭代的,即支持原型。因此生存周期模型不同与传统的,变为二维的模型,一维是框架活动,一维是可反复迭代的工程活动。
软件过程模型
1. 线性顺序模型
早期的瀑布模型即为线性顺序模型。它一次走完分析、设计、编码测试这些框架活动
质量保证、文档制作、正式技术评审、配置管理等伞形活动穿插其中
特点是严格把关、错误尽早发现并消灭在前一阶段
80年代中期发现严格按瀑布模型开发的大型系统成功率极低(低于23%) ,80年代中期以后出现了多种过程模型
2. 原型模型
基本思想是尽早拿出样板让用户试用,修改或补充了需求再接着开发
它基本上按瀑布模型划分阶段:分析—> 设计—> 编码—> 测试—>交付,设计注重上层,找一个或几个最有代表性的子系统快速编码测试,所以也叫快速原型(rapid prototyping)
原型增加了开发的工作量,增加了管理上的困难。特别是原型过程步骤事先难于计划,不知道应反复几次,从哪里开始反复,预算进度均难于控制。但它具有切合实际,成功率较高的优点, 故至今仍在使用。
3. 螺旋模型
4. 构件组装模型
面向对象和基于构件包的软件要重用大量构件,这些构件是适用于某个领域的(例如,建筑,财经、商场,电信等)。它将以前开发并使用良好的构件规范化之后放入项目库
这类软件的开发过程也采用螺旋模型,只是把作工程和构造及发布合成一个步骤。风险分析后,转入客户评价。步骤如下:
(1)先标识本项目需要什么构件;
(2)库中查找构件或相似的构件;
(3)如果可用转[4] 否则自行开发或修改,确认后入库;
(4)构造为新系统作第m次迭代;
(5)测试、确认。
5. 快速应用开发模型
RAD有以下步骤:
(1)业务模型:以什么信息驱动业务过程运作? 要生成什么信息? 谁生成它? 信息流的去向? 由谁处理? 可以辅之以数据流图
(2)数据模型:为支持业务过