diff options
Diffstat (limited to 'parnas-a-rational-design-process.rst')
-rw-r--r-- | parnas-a-rational-design-process.rst | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/parnas-a-rational-design-process.rst b/parnas-a-rational-design-process.rst index e27e1a5..e8c734b 100644 --- a/parnas-a-rational-design-process.rst +++ b/parnas-a-rational-design-process.rst @@ -95,7 +95,7 @@ Page 2 I. 寻找哲人之石: 为什么要理性设计过程? ````````````````````````````````````````````````````````````` -理性的人做事总有理由。每一步都是实现既定目标的最佳选择。大多数人自认为 +理性的人做事总有理由。 每一步都是实现既定目标的最佳选择。大多数人自认为 是专业人士。 然而,在观察家看来,通常软件设计过程显得相当不理性。程序 员经常在没有理由的情况下做决定,没说清要做什么就动工了。他们做很多决定, 却说不清那么决定的理由。目标不明确,也很少解释如此决定的理由。 @@ -111,17 +111,37 @@ I. 寻找哲人之石: 为什么要理性设计过程? Page 3 ----------------------------------------------- -徐闰钞 +徐闰钞 OK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -所有可以被归类为“自顶向下”的方法都是我们希望有一种合理又系统的软件设计方法的结果。这篇文章既带来坏消息,也带来好消息。坏消息是,在我们看来,我们永远找不到哲学家stone。我们永远找不到一个能让我们以完全合理的方式设计软件的过程。好消息是我们可以伪造它。我们可以像是理性的设计师一样向别人展示我们的系统。还有一个好消息:这样做是值得的。 -二。为什么软件设计“过程”总是理想化? +(所有可以被归类为“自顶向下”的方法都是我们希望有一种合理又系统的软件设计方法的结果。) - 我们永远不会看到一个软件项目按照上面的建议进行。部分原因如下: - 1。在大多数情况下,委托构建软件系统的人并不确切地知道他们想要什么,也无法告诉我们他们知道什么。 - 2。我们即使知道了需求,也还需要知道很多其他的事实来设计软件。许多细节只有在我们实施的过程中才会被我们了解,我们从中学到的一些东西会使我们的设计失效,于是我们必须回溯。 - 3.即使我们在开始之前就已经了解了所有相关的事实,经验表明,人类无法完全理解那些为了设计和建立一个正确的系统而必须考虑的过多的细节。设计软件是一个我们试图分离关注点的过程,因此我们将会处理大量可管理的信息。然而,在我们达到目的之前,我们必然会犯错误。 - 4. 即使我们能够掌握所有需要的细节,除了那些最微不足道的项目外的所有项目都会受制于外部原因而发生变化,其中一些变化可能会使以前的设计决策失效。 +本文既带来坏消息,也带来好消息。坏消息是,在我们看来,我们永远找不到哲 +学家之石。 我们永远找不到一个能让我们以完美地理性去设计软件的过程。好 +消息是我们可以伪造它。 我们向别人展示我们的系统, 就像理性设计师那样。 +进一步的好消息是这样做是值得的。 + +II. 为什么软件设计“过程”总是理想化? +````````````````````````````````````````````````````````````` + +实际上软件项目永远不会按照上面的建议(像从公理中推出定理那样,从需求中 +获得程序)进行。 部分原因如下: + + +1. 大多数情况下,委托构建软件系统的人并不能确切地知道他想要什么,也无 + 法告诉我们他确实想要的东西(说不清楚)。 + +2. 即使我们知道了所有需求,也还需要知道很多其他事情来设计软件。 许多细 + 节只有在我们开始实施时才会浮出。 期间我们学到的东西会使我们原先的设 + 计失效,我们必须回溯。 + +3. 即使没有2的困难,经验表明,人类无法完全一下子理解那么多细节。 为了 + 设计和建立正确的系统,我们必须考虑所有细节。 设计软件的过程就是试图 + 分离各个关注点的过程。 我们在每个关注点上工作,因其信息量可管理。 + 然而,在我们达到可管理的信息量前,我们必然会犯错误。 + +4. 即使我们能够掌握所有需要的细节,稍大点的项目都会由于外部原因而发生 + 变化。 其中一些变化可能会使以前的设计决定失效。 |