软件生命周期
![](https://i-blog.csdnimg.cn/blog_migrate/2cc77446b38e173e680e9961e7278445.png)
定义
软件生命周期(Software Life Cycle, SLC)是软件的产生直到报废或停止使用的生命周期。软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,也有将以上阶段的活动组合在内的迭代阶段,即迭代作为生命周期的阶段。
传统的软件生命周期的模型
瀑布模型
![](https://i-blog.csdnimg.cn/blog_migrate/2d3055bea943461a2bfd654551b86333.png)
瀑布模型(Waterfall Model)是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
演化模型
该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……
即根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称之为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。
螺旋模型
![](https://i-blog.csdnimg.cn/blog_migrate/148c098f4d841af3908fc2b5d4d211e8.png)
螺旋模型(Spiral Model)采用一种周期性的方法来进行系统开发。这会导致开发出众多的中间版本。使用它,项目经理在早期就能够为客户实证某些概念。该模型是快速原型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次。螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。
4.其他模型
敏捷开发
![](https://i-blog.csdnimg.cn/blog_migrate/700d9ec57dea0bf89d271e8a8f963436.png)
敏捷软件开发方法(Agile Development Method)起步于上世纪90年代,成熟于本世纪初。敏捷开 发方法强调以代码为中心,只编写少量文档,快速、轻巧、主动、增量式应对软件需求变化, 持续、及时交付可运行的软件系统。
本质:以快速的增 量和迭代方式进行 软件开发
敏捷开发与传统方法对比:
![](https://i-blog.csdnimg.cn/blog_migrate/7e913c8a2b0205089d50024cb62639d1.png)
软件配置管理与版本控制系统
软件配置管理:追踪和控制软件的变化
软件配置项:软件中发生变化的基本单元(例如:文件)
基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
CMDB:配置管理数据库存储软件的各配置项随时间发生变化的信息+基线
版本:为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为“身份标识
现如今使用普遍使用git作为版本控制系统:
![](https://i-blog.csdnimg.cn/blog_migrate/522d077e28edc7070f225f770db982e5.png)