1. 简介
软件生命周期(Software Life Cycle)是软件的产生直到停止使用的生命周期。软件生命周期内有可行性分析、需求分析、软件设计、编码、测试、部署、验收交付、运行与维护升级、废弃等阶段。
这种按时间分阶段的思想方法,是软件工程中的一种思想原则,每个阶段有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
生命周期的每一个周期都有确定的任务,并产生一定规格的文档,提交给下一个周期作为继续工作的依据。
2. 阶段
2.1. 可行性分析阶段
与需求方共同讨论,确定软件的开发目标及其可行性,了解客户需求,形成功能需求说明书。
2.2. 需求分析阶段
根据需求说明书,对软件需要实现的各个功能进行详细分析,形成用例图、功能思维导图、方案书。功能思维导图、方案书提供给用户查看,再次与客户确定软件的功能需求。
2.3. 软件设计阶段
对整个软件进行设计,如系统框架设计、数据库设计等等,形成软件框架图(组件图)、类图、ER图、数据流图、时序图等等。分概要设计和详细设计。
2.3.1. 概要设计
根据用户交互过程和用户需求来形成交互框架和视觉框架,形成反映交互控件布置、界面元素分组以及界面整体板式的页面框架图,即系统框架图。
概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。
概要设计除了画系统框架图、还要编写概要设计说明书。
概要设计建立的是目标系统的逻辑模型,与计算机无关。
2.3.2. 详细设计
细化概要设计,设计每个模块的实现算法、局部数据结构,编写详细设计说明书。
2.4. 编码阶段
将软件设计阶段的设计内容用编码的方式实现,最终形成可运行的软件代码。在此阶段,不仅仅需要编码,还需要进行单元测试,每完成一个模块应进行单元测试。最后,进行集成,按软件组织结构的要求将各个子系统组合起来。
2.5. 测试阶段
软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。比如测试软件的性能、安全、bug等等。
2.6. 部署阶段
待软件测试稳定后,制定部署方案并实现,形成部署图。
2.7. 验收交付阶段
联系客户,将软件验收交付,提供软件的说明文档,指导客户使用软件。
2.8. 运行和维护阶段
是软件生命周期中持续时间最长的阶段,并根据实际情况对软件进行升级。
2.9. 废弃阶段
废弃阶段意味着软件走向灭亡,停止运行与维护。在此阶段的处理,保留相关的资料,有的将版权转卖,有的提供其他软件借鉴。
3. 模型
典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型、螺旋模型。