A software process model is often called a Software Development Life Cycle (SDLC) model
瀑布模型
The Waterfall Model
最早和最经典的线性顺序开发模型
该模型将软件开发过程分为一系列阶段,每个阶段都必须完成后才能进入下一个阶段。
优点
能够提前规划项目进度和成本,每个阶段的工作能够有序地进行 (orderly conduct),降低开发过程中的风险和错误。
应用场景
适用于需求稳定、任务明确(条件比较理想化、开发时间非常充足)的软件开发项目,大家按部就班,轮流执行自己的职责即可。
可以用在嵌入式系统(Embedded Systems)、关键系统(Critical Systems)、大型软件系统
(Large Software Systems)等。
- 偏工业化的软件 🧐?
但是不能用在需要应对频繁变化的系统(Software Systems that must cope with changes)——因为瀑布模型是单向(One-way process)的,不能有效应对变化。
所以只有在对需求了解得好, 而且在系统开发过程中不太可能发生重大改变的时候, 适合
采用瀑布模型:
- 一个人的生命危在旦夕,系统故障可能导致其死亡。
- 金钱和时间是次要因素,更重要的是项目的安全性和稳定性。
- 监督或问责程度极高的项目,如医疗保健 (Healthcare) 和核设施控制系统 (Control Systems For Nuclear Facilities) 领域的项目。
V 模型
V-Model
在瀑布模型的基础上发展而来,特点是同步进行软件系统的设计和测试。
优点
- It is simple and easy to manage due to the rigidity of the model.
- It encourages verification and validation at all phases.
- It gives equal weight to both development and testing.
缺点
- It is not suitable where the requirements are at a moderate to high-risk of changing.
- 和瀑布模型一样,需求不能变化太大
- It is not suggested for long and complex object-oriented software projects.
- 系统不能太复杂
增量式开发
Incremental Development
迭代式开发模型(可不断扩展功能需求)
该模型将软件系统被分成多个独立的模块或部分,每个模块都是一个增量,每个增量都包含了完整的软件开发过程,包括需求分析、设计、编码、测试和部署等。
优点
- Reduce cost for implementing requirements changes
- Receive feedback early
- Early delivery of partially working product (提前交付)
缺点
- The process is not visible
- 软件的功能是逐步增加的,而且每个增量的规模和内容都可能不同。因此,整个开发过程可能会相对模糊不清,尤其在早期阶段,难以确定最终的产品形态和功能。
- System structure tends to degrade as new increments are added
螺旋模型
The Spiral Model
渐进式的开发模型之一
结合了瀑布模型的阶段性和迭代模型的循环反馈,适用于复杂、高风险的大型软件开发项目。
面向复用的软件工程
面向对象的开发模型
该模型强调在软件开发过程中尽可能地复用已有的软件组件或模块。
The Reuse-Oriented development process focuses on the reuse of existing software.
- E.g., existing classes, libraries, patterns, designs, standalone application systems, web-services, etc.
具体阶段
- 需求细化 (Requirements Refinement)
- 程序系统配置(Application System Configuration):如果现成 (off-the-shelf application system) 的程序系统可用,那么应该首先考虑对其进行配置以用于创建新系统,
- 组件适配和集成(Component Adaptation and Integration):如果没有现成的应用系统,则应考虑可用的组件和新组件的开发,然后集成以创建系统。
优点
- Reducing the amount of software to be developed
- Reducing the cost and risks
- Faster delivery of the software
缺点
- The requirements compromises may drift the original idea of the system
- Newer versions of the reusable components may not be compatible with the current version used.
- For example, refactored APIs, new functionalities, deprecated function calls, etc.
统一过程模型
The Rational Unified Process, RUP
“There is no universal process model that is right for all kinds of software development.”
优点
- A disciplined approach to assigning tasks and responsibilities within a development organization. (集合了一般的过程模型所有要素)
- Ensures the production of high-quality software that meets the needs of its users within a predictable schedule and budget.
开端
Inception: the initial short step to establish a common vision and basic scope for the project.
- Analyses part of the use cases
- Analysis of critical non-functional requirement
- The purpose of the inception phase is NOT to define all the requirements.
- Preparation of the development environment
细化
Elaboration: build the core architecture, resolve the high-risk elements, define most requirements and estimate the overall schedule and resources.
目标是增进对问题域的理解,建立系统的体系框架,给出项目计划并识别关键项目风险。在这个阶段完成时,就得到了系统的需求模型。
构造
Construction: concerned with system design, implementation and testing. Parts of the system are developed and integrated
要关心的是系统设计、编程和测试。 系统的各个部分并行开发,然后集成在一起。
在这个阶段完成时,就得到了一个能工作的软件系统,还有能交付给用户的相关文档。
转换
Transition: deploy the system in a real production environment
关注如何将系统从开发单位转移到用户单位,并使之在真实环境中工作。
这是被绝大多数软件过程模型所忽视的东西,在此阶段完成时,就有了一个在运行环境下能正常工作的文档完备的软件系统了。