序代码。
④ 软件测试(Testing ) : 按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,包括单元测试和组装测试。 二者统称系统实现
3、运行维护(软件维护)时期( Running/Maintenance )
使软件持久的满足用户的需要。包括:
?改正性维护:运行中发现了软件中的错误需要修正。
?适应性维护:为了适应变化了的软件工作环境,需做适当变更。
?完善性维护:当用户有新的要求时,应该及时改进软件以满足用户的要求。 ?预防性维护: 即修改软件为将来的维护活动预先做准备。
几个关干软件生命周期阶段的问题
问题一:开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?
问题二:系统分析员主要工作在哪个时期?程序员主要工作在哪个时期? 问题三:软件定义时期的三个阶段,各自回答什么关键问题? 问题四:软件开发时期有几个阶段?各自回答什么关键问题? 问题五:软件体系结构最早是在哪个阶段决定的?
问题六:详细设计与程序编写阶段有什么样的密切联系? 问题七:“软件测试是为了验证系统的正确性”这句话对吗? 问题八:软件维护有那几种?各有什么功能?
§1.4 软件过程( Software Process )
1 、什么是软件过程
为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 ISO 9000的定义:
? 使用资源将输入转化为输出的活动所构成的系统 。 “系统”是相互关联或相互作用的一组要素。
过程是软件工程三要素之一。
通常用软件生命周期模型 来描述。
2 、什么是软件生命周期模型
又称:软件开发模型/软件过程模型/软件工程范型。 指软件项目从需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
常见的有:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型
§ 1.4.1瀑布模型(waterfall model)
1970年,由W.Royce提出 一、瀑布模型的过程 1 、传统的瀑布模型
? 从上一阶段接受本阶段的工作对象,作为输入; ? 利用输入,完成本阶段活动的内容.
? 本阶段的工作成果作为输出传入下一阶段。
2 瀑布模型 — 实际的瀑布模型
增加了一个评审活动,评审每个阶段完成的活动,若得到确认,则进行下一阶段的活动;否则返回前一阶段,甚至更前阶段返工;
二、瀑布模型特点
? 阶段间具有顺序性和依赖性 ? 推迟实现的观点 ? 质量保证的观点
三、瀑布模型优缺点
优点:
? 可强迫开发人员采用规范的方法;
? 严格地规定了每个阶段必须提交的文档;
? 要求每个阶段的所有产品都必须经过质量保证小组的仔细验证; 缺点:
无法解决软件需求不明确或不准确的问题;可能导致最终开发的产品不能真正满足用户需要。
瀑布模型比较适合开发需求明确的软件。
§ 1 . 4 . 2 快速原型模型
1 、什么是“原型” ?
原型是快速实现和运行的早期版本,反映最终系统部分重要特性。 常见的原型实例:人机界面;系统主要功能。 优点:
1 、通常能反映用户真实需求;
2 、软件产品的开发基本上是线性顺序进行的。
2 、快速原型的过程
?如下图。
?获得用户的基本需求说明,据此快速建立一个小型软件系统. ?用户试用,对其评价;
?开发人员按照用户的意见快速地修改原型系统,获得新的原型版本,再请用户试用,如此反复,直到满足用户的要求;
?用户确认原型系统之后,开发人员据此书写规格说明文档,进行下一步开发。
1.4.3 增量(渐增)模型
把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。 使用增量模型时,第一个阶段的增量构件往往实现软件的基本需求,提供最核心
的功能;后面的增量构架逐渐添加系统的功能。
增量模型注意事项
?增量构件规模适中;
?分解的约束条件是当把新构件集成到现有软件中时,所形成的产品必须是可测试的;
?软件体系必须是开放的,即在对现有系统添加新增量构件时,不能破坏系统原有功能。
增量模型优缺点
优点:
? 能在较短的时间内,提供可完成部分工作的初步产品给用户; ?用户有较为充裕的时间学习和适应新产品。 缺点:
对开发人员技术能力要求较高,要求能从系统整体出发正确划分增量构件,并进行分别开发,最后能很好地集成这些构件。风险更大的增量模型 有可能提高开发速度,但需要密切地监控整个开发过程,否则将冒构件无法集成到一起的风险。
§1.4 .4 螺旋模型(spiral model )
大型软件开发面临的重要问题:软件风险
? 如:产品交付给用户之后,用户不满意; ? 开发进度落后,开发成本超出预算; ? 产品完成前关键的开发人员跳槽;
? 在产品投人市场前,竞争对手发布了一个功能相近,价格更低的软件………
构建原型能使某些类型的风险降到最低.
一、简单的螺旋模型
螺旋模型改进了原型模型,在每个阶段都加入风险分析。
二、完整的螺旋模型