瀑布流开发

瀑布模型是从制造业和建筑行业借鉴而来,最早于 1970 年由 Winston Royce 提出。

需求分析 从对应领域的专家和潜在用户那里收集信息,从而建立一个需求文档。需求文档是一系列要求,指导我们在当前发布版本中应该实现哪些功能。功能就是软件的种种职责。 设计 接着是要根据写好的需求文档去设计软件。这些设计的形式通常是设计图例和其他表达设计思想的产出物。这并非代码,相当于另一个文档:如何构建软件的图例和描述。和蓝图不一样,蓝图是对建筑的每个细节的事无巨细的表达,但是软件的架构远谈不上精确或者全面。 实现 在设计之后是实现阶段,这个阶段代码被编写出来以满足设计。编码就是单纯地完成设计产出物中描述的设计。 集成 在所有代码编写完毕之后开始集成阶段。在集成阶段中,所有团队成员编写的代码放到一起。这通常是第一次所有代码被编译到一个计算机程序中。 测试 一旦软件集成完毕则测试阶段开始,验证软件表现是否如预期的那样。这个阶段包括对软件执行一系列的测试用于证明软件正常工作。 安装 在安装阶段,软件发布给用户。此阶段可能包括将载有程序的 CD 邮寄给用户或者在线上提供软件下载。 维护 最后,就是对软件进行持续维护:修复问题,添加新功能,提供更新。 瀑布模型在桥梁建造或者制造小物品时意义重大,因为将需求整合投入生产的方式更加高效。

许多 bug 都是只在集成阶段才会出现。我们在项目的最后阶段才集成代码,这给开发过程带来极大的不确定性。由于已经进入集成阶段,任何必要的修改和奇怪的 bug 都会成为严重且代价高昂的问题,需要付出大量的努力(以及附带的成本)去修复。我难以想象,还会有其他编写软件的方式比这样风险更高、更容易出错。

image