NATO会议上首次提出了“软件工程”这个名词,希望用工程化的原则和方法来克服软件危机。此后,人们开展了软件开发模型、开发方法、工具与环境的研究,提出了瀑布模型、演化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构方法、面向对象等开发方法,以及一批CASE(Computer Aided Software Engineering,计算机辅助的软件工程)工具和环境。
一.软件生存周期
阶段 | 任务 | 参加人员 | 产生的主要文档 |
可行性分析与项目开发计划 | 确定软件的开发目标和可行性 | 用户、项目负责人和系统分析师 | 可行性分析报告和项目开发计划 |
需求分析 | 软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型 | 用户、项目负责人和系统分析师 | 软件需求说明书 |
概要设计 | 设计软件的结构,还要设计该项目的应用系统和总体数据结构和数据库结构。 | 系统分析师和软件设计师 | 概要设计说明书 |
详细设计 | 把功能描述转变为精确地、结构化的过程描述。 | 软件设计师和程序员 | 详细设计文档 |
编码 | 把每个模块的控制结构写成某种特定程序设计语言 | 程序员 | 源程序清单 |
测试 | 在测试用例的基础上检查软件的每一个部分 | 另一部门的软件设计师或系统分析师 |
软件测试计划 测试用例 软件测试报告 |
维护 | 由于各方面原因,对软件进行修改。 | —— | —— |
二.软件过程
软件开发中所遵循的路线图称为“软件过程”。
1.能力成熟度模型(CMM)
软件过程能力成熟度模型(Capability Maturity Model of Software,CMM),其研究目的是提供一种评价软件承接方能力的方法,
同时它可以帮助软件组织改进其软件过程。
CMM将软件过程分为5个成熟度级别。
(1)初始级 杂乱无章,项目的成功完成完全依赖个人的努力和英雄式核心人物的作用。
(2)可重复级 有必要的过程准则来重复以前在同类项目中的成功。
(3)已定义级 管理和工程两方面的软件过程已经文档化、标准化。
(4)已管理级 制定了软件过程和产品质量的详细度量标准。
(5)优化级 加强了定量分析,通过反馈使过程能不断持续改进。
2.能力成熟度模型(CMMI)
CMMI是若干过程模型的综合和改进,是支持多个工程许学科和领域的、系统的、一致的过程改进框架。
CMMI提供两种表示方法,阶段式模型(关注组织的成熟度)和连续式模型(关注每个过程域中的能力)。
3.统一过程(UP)
统一过程模型是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。
初始阶段:生命周期目标
精华阶段:生命周期框架
构件阶段:初试运作功能
移交阶段:产品发布