常见的软件开发模式:
- 线性模式
- 渐进式模型
- 变换模型
线性模式
一般在软件需求完全确定的情况下,会采用线性模式,最具代表性的是“瀑布模型”。
瀑布模型:在软件工程中占有很重要的地位,是所有其他模型的基础框架。每个阶段都只执行一次。
瀑布模型缺陷:可以运行的产品很迟才能被看到,给项目带来很大风险,尤其是集成风险。因为如果在需求引入的一个缺陷要到测试阶段甚至更后的阶段才发现,通常导致前面阶段的工作大面积返工。
瀑布模型
渐进式模型
一般在软件开发初期阶段需求不是很明确时,采用渐进式模型。螺旋模型是渐进式开发模型代表之一,如图,
螺旋模型的基本做法是在瀑布模型的每一个阶段之前引入严格的需求分析和风险管理。适用于规模庞大、复杂度高、风险大的项目。这种迭代开发的模式不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。
增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发,如图。每一次迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员与开发人员更加紧密协作。
增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念;而迭代是反复求精的概念。
目前很多软件过程所说的迭代开发,实际上都是增量开发和迭代开发的结合。
变换模型
变换模型是基于模式设计语言的开发模式,是目前软件工程学者们努力研究的方向。一个简单的变换模型如图,
变换模型的主要思想是省略编码和测试阶段,代之以自动化的程序变换过程,而主要集中精力在前面的需求分析和建模上。这种开发模式似乎可以把测试人员排除在外,实际上,他是要把测试人员提到原型验证阶段。