系统设计的混合方法

系统设计人员及其管理人员之间由来已久的争论是使用自顶向下还是自底向上的设计技术。经验表明,混合方法效果最好。为了使用自顶向下的方法,设计师从大的画面开始,向下工作到细节。顶层通常关注潜在用户希望系统做什么以及主要规格。

通过C.G. Masi,控制工程 二九年一月一日

系统设计人员及其管理人员之间由来已久的争论是使用自顶向下还是自底向上的设计技术。经验表明,混合方法效果最好。

自顶向下

为了使用自顶向下的方法,设计师从大的画面开始,向下工作到细节。顶层通常关注潜在用户希望系统做什么以及主要规格。然后设计师一步一步地往下做,填充细节,直到在最底部完成设计。

当然,经理们喜欢自上而下的方法。有了它,他们知道他们将得到什么,并可以估计总体成本和时间表。它也适用于项目团队环境,因为有一个任务的总体计划,可以在团队成员之间进行分配。自顶向下的方法自然地适用于标准的项目管理度量,例如里程碑、甘特图、材料清单等等。

自底向上

另一方面,自底向上的方法从一个特定的特性开始。在完成该特性的模块后,设计人员使用另一个特性并为其编写模块。然后他或她添加连接模块的“钩子”。设计师依次处理每个功能时,这个过程还在继续。由于工作是通过添加特性进行的,因此在任何时候添加新的、未预料到的特性(甚至在项目完成后很长时间)并不困难。当系统需要扩展时,这种方法尤其有效。

然而,自底向上的项目很难管理。如果没有全面的眼光,就很难衡量进展。没有里程碑。预算只是猜测。时间表毫无意义。团队合作很难。最终的设计可能不能很好地集成,因为模块间通信标准是特别的并且随着项目的推进而漂移。

混合设计

这两种方法显然都有优点和缺点。好消息是它们并非不相容。最好的方法是混合的:自上而下的计划和自下而上的执行。

从自顶向下的计划开始,以确定所需的模块和接口标准。这使得项目经理喜欢的所有里程碑、预算估计和任务定义都成为可能。

但是,不要指定如何体现每个特性或特性集。这就是道家大师刘祖所说的“为木匠大师砍柴”。计划应该提供足够的细节,以便团队中的每个人都知道对他们的期望是什么,但计划应该到此为止。

在这一点上,把任务分发给团队成员。他们应该自下而上地实施计划。例如,训练有素、纪律严整的程序员知道如何使用结构化编程方法来模块化他们的项目部分,并避免编写难以或不可能维护或扩展的“意大利面条式代码”。在其他工程学科中训练有素的团队成员也有类似的技能。

混合方法很容易应用于任何工程项目。例如,建造任何比狗窝更大的结构几乎不可能用其他方法。如果你不知道把它放在哪里,也不知道要用多少砖,你怎么建造一堵砖墙呢?这是自上而下的部分。你手里拿着泥铲和工得,要把一块砖从下往上垒在另一块砖上。

控件项目可以完全自上而下或完全自下而上完成。因此,对于控制工程师来说,理解这两种方法并在混合方法中适当地结合它们是很重要的。即使当工程师单独工作时,混合方法也有助于保持项目的组织性和最终系统的可用性、可维护性和可扩展性。

作者信息
C.G. Masi是一名高级编辑控制工程。通过电子邮件与他联系charlie.masi@reedbusiness.com