summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parnas-a-rational-design-process.rst12
1 files changed, 6 insertions, 6 deletions
diff --git a/parnas-a-rational-design-process.rst b/parnas-a-rational-design-process.rst
index e8c734b..7bc41d4 100644
--- a/parnas-a-rational-design-process.rst
+++ b/parnas-a-rational-design-process.rst
@@ -383,9 +383,9 @@ Page 10
我们需求文档的核心可以被表述为表格形式的一组数学函数。每个函数都将单个输出的值指定为与应用程序相关的外部状态变量的函数。
以这种方式生成的完整文档的一个例子,我们将在本文[9]中给出并在[8]中讨论。
-B.设计和记录模块结构
-除非产品足够小,小到能由单个程序员生产,否则我们现在必须考虑如何将工作分成多项工作任务,我们称之为模块,应在此阶段生成的文档称之为模块指南。它通过陈述将由该模块封装的设计决策来定义每个模块的职责。
+B.设计并记录模块结构
+除非产品很小,小到能由单个程序员来做,否则我们必须想一想如何将工作分解为任务,即模块。 此阶段应生成的文档为 **模块指南 (Module Guide)** 。 模块指南定义各模块的职责, 把我们的设计决策 (design decision) 封装在该模块。 模块里可以有子模块,也可以单独作为一个工作任务。
Page 11
@@ -394,13 +394,13 @@ Page 11
徐焕众
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-模块可以由子模块组成,或者也可以被认为是单个工作任务。
+模块指南用来避免重复,避免空隙,实现 **关注点分离 (separation of concerns)** 。 最重要的, 当产品有问题时, 用来帮助维护人员找出对应的模块。 记录设计决策的文档与在维护阶段使用的文档是同一个文档。
-我们需要一个模块指南来避免重复,避免空白,共同实现关注点的分离,以及 最重要的,来帮助一个无知的维护人员找出需要的模块当他有问题报告时必须处理时。再来,记录我们的设计决策的文档与我们在维护阶段使用的文档是相同的。如果我们只是努力地将信息隐藏或关注点分离应用于一个大型系统,那么肯定会产生大量的模块。一个没有其他结构,只是很简单的列出模块的向导,只会帮助那些已经熟悉系统的人。我们的模块是树形结构的,将系统划分成少量的模块,并以相同的方式处理每个模块,直到所有模块都非常小为止。举一个相关文档的完整例子:见[3J]。关于这一办法及其好处的讨论,见[15,6]。
+如果我们努力地将信息隐藏 (information hiding) 或 关注点分离 (separation of concerns) 应用于大型系统,那么肯定会产生大量模块。 没有其他结构,只是简单列出模块名的指南,只对熟悉系统的人有帮助。 而我们的模块指南是树形结构的, 它将系统划分成几大模块,并以相同的方式细分每个模块,直到所有模块都非常小为止。 这种文档的例子, 参见[3]。 对这一办法及其好处的讨论,参见[15,6]。
-C.设计和记录模块接口
+C. 设计并记录模块接口
-高效和快速的软件生产需要程序员们能够独立工作。模块指南定义了需求与责任,但是它没有提供足够的信息来允许模块的独立实现。每个模块必须指定精确的接口。每个模块都必须编写模块接口规范;它必须是正式的,并提供每个模块的黑匣子图片。它们是由潜在的实现者与高级设计师一起编写的,并由使用这些界面的程序员一起评审。一个模块的接口规范只包含仅仅足够的信息供另一个模块的程序员使用它的设备,而不能做其他事。这也是系统所要求的。·
+高效快速的软件生产需要使程序员能独立工作。 模块指南定义了模块职责,但没有给出足够的信息使得每个人能去独立实现模块。 为此,每个模块必须指定精确的接口。 每个模块都必须有 **模块接口规范 (Module Interface Specification)** ; 规范必须正式,并提供每个模块的黑箱图片 (black box picture)。 规范由资深设计师撰写, 并由接口实现者与接口使用者一起评审。 一个模块的接口规范只需包含足够使其他模块的程序员使用该模块功能的信息, 而不需要其他信息。 接口实现者也需要 **模块接口规范** 。·
Page 12