软件开发的201个原则
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

原则20 记录你的假设

RECORD YOUR ASSUMPTIONS

系统运行的环境在本质上是无限的,不可能被完全理解。当我们开发一个系统,宣称要解决某个环境中的一个问题时,我们会对该环境进行假设。Manny Lehman提出:“大约对于每10行代码,我们就会做出一个假设,即使偏差了两三倍,每20~30行代码也会做出一个假设”。这些关于无限世界的有限假设会使你陷入麻烦。Lehman描述了一种表现不如预期的直线加速器。一位物理学家提出,也许月球的相位会产生影响,对此每个人都说:“你一定是在开玩笑吧!”然而,在考虑了月球的因素后,得到的方程式解释了大多数看似“不正确”的行为。这是一个假设(没有月球效应)无效的例子。

对需求工程、设计、编码和测试期间所做的所有假设,始终保持觉察是不可能的。尽管如此,我还是建议,对你有意识做出的假设做个记录。即使这个假设是显而易见的或其他选项很荒谬,也要这样做。还要记录它们的影响,也就是说,在产品中,这些假设是如何体现的?在理想情况下,你应该可以通过封装每个假设来隔离这些影响(见原则65)。

Lehman,M.,"Software Engineering,the Software Process and Their Support," Software Engineering Journal,6,5 (September 1991),pp.243-258,Section 3.6.