软件开发过程模型
软件工程的概念
■基于软件危机对于计算机发展的阻碍, 1968年,在联邦德国召开的国际会议上,北大西洋公约组织的计算机科学家讨论软件危机问题。提出了软件工程这个名词,从此软件生产进入工程化时代
■软件工程包括两方面的内容:
软件开发技术和软件项目管理。
其中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件质量、项目估算、进度控制、人员组织、配置管理、项目计划等。
引起软件危机的主要问题是软件质量问题。软件工程主要解决的就是软件质量问题。而软件测试是软件质量管理体系中一个非常重要的手段。类比在软件生产过程中,项目经理、软件开发工程师、软件测试工程师是最基本的三个角色。就像建筑工程中的项目经理、建筑师(含建筑工人)、项目监理之间的关系。
软件生命周期
立项--需求分析--设计、编码、测试--发布--运行维护--淘汰
软件立项需要考虑是内部研发还是外部研发,以及解决的问题;可行性研究分析对之前的方案目标进行分析;需求分析是对软件功能进行说明,将模糊的功能进行细化,发展成为后续的开发目标。
软件开发过程
■需求分析
■系统设计
■编码&测试
■用户验收
■上线后维护
经常用到的一个开发过程模型–
瀑布模型
制定计划--需求分析--软件设计--程序编写--软件测试--集成维护
优点:上一个阶段的工作输出是下一个阶段的工作输入
缺点:测试的进入时间太晚,因为在程序编写之后才进行,而真正的测试应该在需求分析就进行;不支持迭代
快速原型模型
主要目的是迅速建造一个可以运行的软件模型,也就是能够实现简单功能,但不能实现软件全部功能。
迅速建造一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品
◆快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;
◆用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软
件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护;
◆这种模型适合预先不能确切定义需求的软件系统的开发
优点:减少需求不明显带来的开发风险
缺点:开发工具和技术不一定符合主流;快速建立起来的系统结构和连续不断的修改可能导致产品质量低下。
增量模型
比较适合结构化开发,大型的功能复杂的项目
■增量模型是把待开发的软件系统模块化,将每个模块作为一一个增量组件,从而分
批次地分析、设计、编码和测试这些增量组件
■相对于瀑布模型而言, 采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交
优点:
1.将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展
2.以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统
3.开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整
限制:
1.软件产品可以分批次地进行交付
2.一待开发的软件系统能够被模块化
3.要求项目管理人员把握全局的水平较高
迭代模型
只要让过程可以重复就是一个迭代过程,现在比较常用的是增量迭代。
■迭代包括产生产品发布( 稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素
■在某种程度上,开发迭代是一次完整地经过所有 工作流程的过程:需求分析、设计
实施和测试工作流程
与传统的瀑布模型相比较,迭代过程具有以下优点:
◆降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费
◆降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙
◆加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
◆由于用户的需求并不能在一开始就作出完全的界定 ,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
上一篇: 测试用例的设计方法——因果图