第二章介绍了那么多软件过程模型, 那么现在在开发应用的时候又是使用什么模型呢, 或者说是有新的模型、两个或者多个相互借鉴起来的模型?
1.瀑布模型
瀑布模型的核心思想是将软件开发的各个过程以线性的、顺序的方式进行。首先,清晰地了解要解决问题的需求,然后顺序地开展策划、建模、构建和部署等工作,最终交付一个完整的软件产品,并开展后续的技术支持服务。
例如,在不同阶段之间引入反馈,增加“前期设计”阶段让用户更早看到可测试的程序。但由于瀑布模型天然的不足,在当今需求易变、开发交付速度快的现代软件开发项目中已经很少采用了。只有当需求确定并且相对稳定、各个阶段工作基本按照顺序方式完成时,才会采用瀑布模型。
2.增量模型
值得注意的是,虽然增量模型提出是基于迭代地使用瀑布模型,但增量这一思想的发展却远远超出了瀑布模型和传统的增量模型本身。到20世纪90年代,增量开发的思想得到进一步的推进,开始特别强调更短的增量开发周期和更小、更具体的增量开发目标,这就比早先的增量模型增加了更多的方法学指导,逐步形成了敏捷方法。
3.演化模型
演化模型强调通过“迭代”来应对不断演变的软件需求。作为一种复杂的系统产品,软件会随着时间的推移而演化。由于商业环境、业务需求、产品目标都会发生变化,因此,采用迭代演进的方式逐步完善软件,成为一种自然而然的思路。
4.统一过程模型
统一过程(Unified Process,UP)是Ivar Jacobson等在其著作《统一软件开发过程》(Jacobson et al.,1999)中提出的。它作为一种过程模型和方法框架,一定程度上总结了传统软件过程中好的特征和性质。统一过程具有以下特点。
1)建立了增量、迭代的过程流
统一过程产出一次软件增量的过程称作一个循环。每个循环由初始(Inception)、细化(Elaboration)、构造(Construction)、移交(Transition)四个阶段(Phase)构成。每个阶段内部都包含一个或多个迭代(Iteration),每个迭代涉及核心过程工作流和核心支持工作流中的多个过程(见图2.2),也强调对系统的增量。在不同的阶段,迭代工作流中的过程工作量是不同的。例如,初始阶段更偏重业务建模和需求,而构造阶段则更加偏重实现。
2.在软件需求中,获取用户需求时,自己得到的信息和用户不符,导致做出来了的软件不是用户需要的,如何办?
3.为什么我感觉暗发布有点多余了呢?若功能已开发出来,直接发布不就行了,若有错误,再修改更新。
暗发布通过应用开关技术(即代码中的i-hen软件功能开关),使用的的情况下应用新功能或者新特性,而开发人员可以通过收集用户的实际操作记录对带对这个新功能或者新特性的反馈数据。如果发现问题,可以通过设置功能开关及时规箭功能或者新特性,从而支持快速回滚。