diff options
Diffstat (limited to 'parnas-a-rational-design-process.rst')
-rw-r--r-- | parnas-a-rational-design-process.rst | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/parnas-a-rational-design-process.rst b/parnas-a-rational-design-process.rst index 2b0f695..ab38b61 100644 --- a/parnas-a-rational-design-process.rst +++ b/parnas-a-rational-design-process.rst @@ -391,19 +391,19 @@ D. 设计并记录模块内部结构 Page 13 ------------------------------------------------------------------------------- -(袁世家 翻) +(袁世家 翻, 卢梦茹 改) -在另一些情况下,我们从描述内部数据结构开始; 还有一些情况是, 这些数据结构被子模块实现(并隐藏)。 对于每个被访程序,我们包括一个函数 [1] 或者 LD-关系 [14], 用来描述对数据结构的影响。 对于模块返回给调用者的每个数值,我们提供叫做抽象函数的数学函数,这个函数将数据结构的值映射到返回值???。 对于每个意外事件, 我们描述了怎样去检查发现它。 最后,我们还提供一个"验证", 一个拥有这些属性的程序会满足模块说明的论据???。 +在其它情况下,我们从描述内部数据结构开始;在有些情况下,这些数据结构由子模块实现(并隐藏)。 对每个访问程序,我们包括一个函数 [10] 或者 LD-关系 [14], 用于描述它对数据结构的影响。对于模块返回给调用者的每个值,我们提供另外一个数学函数,这个数学函数叫做抽象函数,它将数据结构的值映射到返回值。对于每个意外事件,我们描述如何检查它。最后,我们提供一个"验证",论证拥有这些属性的程序则会满足模块说明。 -**继续分解设计子模块,直到每个工作任务足够小, 小到万一负责这个模块的程序员离开项目, 我们也可以承担丢弃它并重新开始的代价** 。 +我们继续分解与设计子模块,直到每个工作任务足够小,小到即使负责这个模块的程序员离开了项目,我们也可以承担舍弃它并重新开始的代价。 -如果无法用易读的高级语言编程,例如,如果没有可用的编译器,就把伪代码作为文档的一部分。 写伪代码的不是最终程序员, 并让他与最终程序员负责确保两种代码一致。 这么做很有用 [7]。 +如果我们无法用易读的高级语言编程,例如,如果没有编译器可用,我们就把伪代码作为文档的一部分。我们发现让伪代码由不是最终编码者的人写,并让两个程序员负责保持程序的这两个版本一致是有用的 [7]。 -E. 设计并且记录使用层级 (uses hierarchy) +E. 设计并且记录使用层次 (uses hierarchy) ```````````````````````````````````````````````````````````````````````````````` -一旦知道所有的模块与它们的被访程序, 就可以设计使用层级。 为记录方便, **用一个真值矩阵表示使用层级** ,当且仅当程序A的正确性取决于程序B的正确性, 矩阵的(A,B)位置为真。 使用层级定义了一组子集组成的集合, 这个集合可以由删除整个程序并且不需要重写任何程序获得。 使用层级对于分阶段交付, 软失败(fail-soft)系统,和开发程序家族很有用。 +一旦我们知道所有的模块与它们的访问程序,就能设计使用层次 [13] 了。使用层次可以用一个二进制矩阵方便表示,且仅当程序A的正确性依赖于系统中存在正确的程序B时,位置(A,B)上的条目为真。使用层次定义了子集组成的集合, 这个集合可以由删除整个程序且不需要重写任何程序得到。使用层次对于分阶段交付,失效弱化(fail-soft)系统,和程序族开发是重要的 [12]。 -(蓝珲的理解: 文中提到的程序, 容易引起混淆, 其实就是模块。 真值矩阵其实描述了模块之间的依赖关系。 例如, 有1,2,3,4四个模块, 3依赖1, 1依赖2, 2依赖4。 {4}, {2,4}, {1, 2, 4}, {3,1,2,4} 这些子集都可以组成独立程序。) +(蓝珲注:文中提到的程序,容易引起混淆,其实就是指模块。二进制矩阵其实描述了模块之间的依赖关系。例如,有1,2,3,4四个模块,3依赖1, 1依赖2, 2依赖4,则{4}, {1,2}, {2,4}, {3,1}. {1,2,4}, {1,3,4},{1,2,3,4} 这些子集都可以组成独立程序,因为每个子集都包含了全部依赖。) Page 14 |