简介
之前简单的介绍了三个时期颇有代表性的瀑布模型,螺旋模型与敏捷开发的优缺点,并对他们分别做了对比。第三季主要介绍从上个世纪50年代至今影响软件生命周期发展的因素,并大胆猜想未来。(以下内容纯属个人学习后的猜想与总结,如有错误或者歧义还请大神指出并改正。)
复杂性
通常软件项目会根据大小,技术难度,可行性等因素划分为不同程度的复杂性,所以不同的软件生命周期通常是根据软件的复杂度而设计的。例如,大型的企业级软件通常需要大量的人力资源参与开发过程,所以瀑布模型或者螺旋模型会比较合适。相反近代涌现出大量的小型软件公司,由于公司规模与人员不足,他们往往只开发小型项目,这也是敏捷开发在近代这么普遍的原因。
易变性
易变性通常指的是在软件生命周期中客户需求的稳定性,最原始的瀑布模型就没有考虑项目的易变性,直接导致瀑布模型存在较高的失败率。也就是易变性的原因,后期的软件生命周期引入了迭代的概念,起初是在瀑布模型中添加了原型(Prototype),并且产生了V模型等拥有少量迭代的生命周期,直到后来出现的拥有大量迭代周期的螺旋模型与敏捷开发,都是受到易变性的影响。有时客户并不清楚自己的准确需求,软件开发只能在有限的需求下进行,这时增量开发的概念开始引入了软件生命周期,比如螺旋模型和敏捷开发都是处理增量开发的典型方案。
扩展性
扩展性同时代表“产品”与“团队”的扩展,比如在软件生命周期发生团队成员的变动,新成员需要快速理解并适应开发的进度,但是有时候阅读别人代码比重新编写代码更加困难,所以一些有明显的里程碑和文档