软件的生命周期
从软件产品设想开始到软件不再使用而结束的时间,软件生命周期分为六个阶段,分别为:需求分析,计划、设计、编码、测试、运行维护。
瀑布模型
瀑布模型在软件工程中占主要地位,是所有其他模型的基本框架,瀑布模型的每一个阶段都只执行一次,是线性顺序进行的软件开发模式。
优点:强调开发的阶段性,强调早期计划及需求调查,强调产品测试;
缺点:需求分析只有一次,不适应需求变化,线性的开发模式,开发中的经验不能反馈应用于本产品,不易修改错误。
在瀑布模型中,测试阶段处于软件实现后,这就必须给软件开发后给测试留有相应的时间,否则测试不充分,易遗留错误。
螺旋模型
在软件开发初期需求不是很不明确,采用渐进式的开发模式,螺旋就是渐进式的模式之一,对于规模庞大,复杂度高,风险大的项目尤为适合,它带来的好处是测试随开发的迭代而迭代。
优点:强调严格的全过程管理,强调各开发阶段的质量,提供机会检讨项目是否有必要进行下去。
缺点:引入非常严格的风险识别、风险分析、风险控制,需要人员、资金和时间的投入。
增量与迭代
增量:增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一,增量开发模型,鼓励用户反馈,在每次迭代中,促使开发小组以一种循环的、可预测的方式驱动产品开发。但每一次的迭代都意味着需求可能需要更改,测试需要频繁进行,测试与开发要紧密协作。
增量与迭代的区别:
增量是逐渐构造的过程,迭代是反复求精的概念。
敏捷
敏捷的贡献在于他更多的去思考如何激发开发人员的工作热情。
敏捷开发有多种方式,其中scrum比较流行。
软件测试V模型
目的:改变软件开发的效率与效果。
- 明确了开发与测试各个阶段的对应关系。
- 缺点:未在开发阶段就进入测试
软件测试W模型
测试开发同步进行。