8.0 瀑布与周期性项目管理(第 1 部分)

瀑布模型,六相模型是瀑布模型。 换句话说,阶段是按顺序发生的。 正如在瀑布上上游游泳是不可能的一样,纯瀑布技术排除了在瀑布完成后回到一个阶段。

在实施阶段决定更改设计,从而停止实施,这是不理想的。 由于各种原因,瀑布方法往往不太适合软件开发项目。

  • 软件开发是一项艺术努力:几乎很难预测所有需求(功能)。
  • 估计开发功能所需的时间是非常具有挑战性的。
  • 在整个项目的生命周期中,用户应该能够测试所有中间结果。

软件开发是一项艺术努力 #

对于新手来说,软件开发似乎更多的是关于工程而不是发明。 然而,它确实在许多方面与发明有关。 在创造的过程中,人们永远不知道会发生什么。

负责开发新软件的设计师和程序员必须拿出答案来回答他们提出的问题。 无论工作有许多技巧和处方,创建计算机代码仍大多未知,因此不可预知。 程序员可以从数百万种以数十种编程语言编写的解决方案中进行选择,并在数千种不同的硬件组合和软件平台上操作。 虽然这种灵活性有很多好处,但它也使项目比更传统的 项目管理 (如建筑或建筑项目)更具管理挑战性。

已设置实现 #

瀑布方法要求将要求定义为 项目定义阶段的结果。 理想情况下,在项目的剩余部分,应至少增加与这些标准的偏离。 软件开发的瀑布方法需要在分析所需的功能(要求)方面做出重大努力的初始承诺。 这会导致功能设计(有关功能设计的更多信息请参阅 I)。 软件架构师在整个设计过程中采用功能设计作为参考,创建技术设计。 此外,技术设计还提供了有关如何执行所需功能的说明。

虽然这似乎是一个简单的问题,但请考虑以下方案。 作为项目的一部分,正在开发一种新车。 作为一名活跃的汽车驾驶员,您的任务是开发汽车需求。 您与其他驾驶者商量并编制详尽的列表:

  • 汽车必须坐四个人:
  • 汽车的左侧必须前面有方向盘:• 汽车必须有制动踏板、油门踏板和手动制动器。
  • 汽车的前照灯必须是白色的,尾灯必须是红色的。 (显然,真正的名单将是巨大的)

设计与建模 #

设计师使用您的列表作为指南创建新设计,然后在几个月后构建。 当你走在街上时,你看到一辆车已经停了下来。 你意识到你从名单上省略了刹车灯! 您会快速联系汽车制造商的工程师,他几乎响应您的呼叫。 您声称这是一个小调整。 然而,这对汽车制造商来说是一场灾难。 已经生产的汽车必须完全拆除,从刹车踏板到后部的电线必须延长,车辆后部必须完全重新设计以安装制动灯,并且必须报废已经制造的引导舱口,并且名单将继续。

虽然上述情况似乎很荒谬,但它几乎每天都在软件开发中发生。 程序员错误地假设正在创建的产品的客户、客户或用户完全了解他们想要什么。 客户错误地认为软件开发人员可以在最小时间内创建(和修改)任何可行的产品。 这是消费者和软件开发人员之间争论的主要原因。