传统的软件生命期(software lift cycle)是指软件产品从形成概念(构思)开始,经过定义、开发、使用和维护,直到最后被废弃(不能再使用)为止的全过程。按照传统的软件生命周期方法学,可以把软件生命周期划分为软件定义、软件开发、软件运行与维护三个阶段。
软件定义包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标。具体分成问题定义、可行性研究、需求分析等。
软件开发时期就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。
概要设计是再软件需求规格说明的基础上,建立系统的总体结构(含子系统的划分)和模块间的关系,定义功能模块与各功能模块之间的关系。
详细设计对概要设计产生的功能模块逐步细化,把模块内部细节转化为可编程的程序过程性描述。详细设计包括算法与数据结构、数据分布、数据组织、模块间接口信息和用户界面等的设计,并写出详细设计报告。
编码又称为编程,编码的任务是把详细设计转化为能在计算机上运行的程序。
测试可分为单元测试、集成测试、确认测试和系统测试等。通常把编码和测试成为系统的实现。
软件运行就是把软件产品移交给用户使用。软件投入运行后的主要任务是使软件持久满足用户的要求。
软件维护是对软件产品进行修改或对软件需求变化做出响应的过程,也就是尽可能地延长软件的寿命。
当软件已没有维护的价值时,宣告退役,软件生命随之宣告结束。
一种线性的开发模型,各阶段按照顺序进行,通常在开始阶段就定义了所有的需求和设计。
在瀑布模型中,每个阶段都必须完成其任务,然后才能进入下一阶段。
这种模型通常在需求和设计变更较少的情况下使用。
一种迭代式的开发模型,通常在需求定义阶段就开始创建原型。
通过原型,开发人员可以获取早期反馈,并在实际开发过程中逐步完善和调整原型。
原型模型通常用于高度定制化的系统。
与瀑布模型相反,原型针对的就是需求不明确的情况,首先快速构建一个功能模型,演示给用户看,并按要求及时修改,中间再通过不断的演示与用户沟通,最终设计出项目,就不会出现与用户要求不符合的情况,采用的是迭代的思想,不适合超大型项目的开发
在增量模型中,系统的功能被分解为一系列的增量或模块。
每个增量或模块都独立地开发、测试和部署。
这种模型允许开发人员逐步地添加功能,而不是一次性地实现所有功能。
一种迭代和风险驱动的开发模型。
在螺旋模型中,开发过程被划分为一系列的迭代或周期。
每个迭代都包括四个主要活动:制定计划、风险评估、开发和测试。
这种模型特别适用于大型、高风险的系统。
一种瀑布模型的扩展,特别强调测试活动的重要性。
在V模型中,测试活动被分为单元测试、集成测试、系统测试和验收测试。
这种模型强调在开发过程中进行早期和频繁的测试。
一种迭代、需求驱动的开发模型,特别适用于面向对象系统的开发。
在喷泉模型中,软件开发活动被分为一系列的迭代或阶段。
在每个迭代中,开发人员根据需求文档进行开发,然后进行评审和修改。
这种模型强调需求分析和文档化。
基于构建的开发是一种以代码为中心的开发模型。强调复用性,
在这种模型中,开发人员通常先编写代码,然后进行编译、测试和部署。
基于构建的开发通常用于小型到中型的项目,强调快速开发和迭代。
形式化方法是一种基于数学模型的软件开发方法。
在形式化方法模型中,需求、设计、实现和测试都被明确地定义和描述。
这种模型强调通过形式化方法来保证软件开发的精确性和一致性。
这种模型通常在安全性要求极高的系统中使用,例如航空航天系统。
是一种敏捷开发模型,强调快速构建可运行的软件原型,然后逐步完善和优化。
比传统生命周期法(瀑布模型)快得多的开发方法,它强调极短的开发周期。在RAD模型中,也采用了基于构件的开发方法,利用已有的程序结构或使用构件进行复用,以提高开发进度和效率。
在RAD模型中,每个主要功能可以由一个单独的RAD组来实现,最后集成形成整体。这种基于构件的开发方法,使得RAD模型具有高效、灵活和可复用等优点。
此外,RAD模型还使用CASE(Computer-Aided Software Engineering)工具辅助软件构建,这有助于提高软件开发的效率和精度。
总的来说,快速应用开发模型通过基于构件的开发方法和CASE工具的使用,能够快速构建可运行的软件原型,然后逐步完善和优化,以适应需求的变化并提高开发效率。
RUP(Rational Unified Process)根据字面理解,可以知道RUP包括三个方面的意思,即Rational 、Unified 、Process。Rational表示RUP是由Rational公司提出来的,Unified表示RUP是最佳开发经验总结,而process表示RUP是一个软件开发过程。
RUP软件生命周期是一个二维的软件开发模型,RUP中有9个核心工作流,这9个核心工作流如下:
RUP把软件开发生命周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。
RUP中定义了如下一些核心概念,理解这些概念对于理解RUP很有帮助。
RUP2003对这些概念有比较详细的解释,并用类图描述了这些概念之间的关系,除了role、activity、artifact和workflow这4个核心概念外,还有其他一些基本概念,如工具教程(toolmentor)、检查点(checkpoints)、模板(template)和报告(report)等。
与别的软件开发过程相比,RUP具有自己的特点,即RUP是用例驱动的、以体系结构为中心、迭代和增量的软件开发过程。
在“4+1”视图模型中,分析人员和测试人员关心的是系统的行为,因此会侧重于用例视图;最终用户关心的是系统的功能,因此会侧重于逻辑视图;程序员关心的是系统的配置、装配等问题,因此会侧重于实现视图;系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于进程视图;系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于部署视图。
对软件组织化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。
是若干过程模型的综合和改进,是支持多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程的特点和需要,能提高过程的质量和工作效率。
CMMI的两种表示方法:
成度等级 | 过程域 |
---|---|
初始的 | 过程不可预测且缺乏控制 |
已管理 | 需求管理、项目计划、配置管理、项目监督与控制、、供应商合同管理、度量和分析、过程和产品质量保证 |
已定义 | 需求开发、技术解决方案、产品集成、验证、确认、组织级过已定义级 焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境 |
定量管理级 | 组织级过程性能、定量项目管理 |
优化级 | 组织级改革与实施、因果分析和解决方案 |