您的位置:首页 > 运维架构 > 网站架构

软件分析 Vs. 架构设计

2008-02-05 07:35 519 查看
何谓软件分析(analyse)?它有没有一个成文的定义?如果你曾读过软件教科书或是著作,就会发现有多少个作者,就有多少种分析的定义。具有讽刺意味的是,我们知道软件分析是必不可缺的,但却没有其真正的定义。
  一个用来区分软件分析与设计(design)的普遍方法是认为分析指“做什么” ,而设计指“怎么做”。乍听起来很有信服力,很显然,如果能在一开始就知道想要系统“做什么”,那至于系统应该“怎么做”就会更容易。实际上,过去在尝试区分“做什么”与“怎么做”上花费了大量的人力。在一间会议室里,与会人员都在不停的争论着到底他们现在做的是分析还是设计。像上述情形其实屡见不鲜。

  这样的争论比比皆是的原因是,对于这样一个特定的情形来说,每一个“做什么”也是“怎么做”,而每一个“怎么做”也是“做什么”。讨论是不会有结果的,那是因为其实双方都是对的。如果用“做什么”和“怎么做”来定义分析和设计的话,那么任何一个分析的概念也是设计的概念,反之亦然。

  下面来示范一下任何一个“做什么”也是“怎么做”与反之的情况,仔细考虑一下我现在所做的。

  我现在在做什么呢?我在写一篇blog。

  我现在在怎么做呢?我在笔记本上打字;

  我现在在做什么呢?我在笔记本上打字。

  我现在在怎么做呢?我在移动手指去敲击键盘,随之,这些所敲击的字母就组成了单词;

  我现在在做什么呢?我在移动手指去敲击键盘,随之,这些所敲击的字母就组成了单词。

  我现在在怎么做呢?我大脑中的感知部分正把一些单词组织在一起,接着指导大脑的行动部分就发送信号到了肌肉,然后就控制了手指。

  我可以一直这样做下去。实际上,我可以一直做下去的意思是,“做什么”和“怎么做”是相辅相成的,它们共同引导着朝向细节的递归过程。任何一个“怎么做”都是下一个阶段递归里的“做什么”;任何一个“做什么”都是上一个阶段中的“怎么做”。递归的阶段数目非常巨大,甚至可能是无穷大。这就意味着,“做什么”与“怎么做”的区别仅仅相差一个无穷小,所以实质上是相同的。

  所以,对于所有的实际情况来说,如果我们视分析为“做什么”而设计为“怎么做”的话,它们就是互不分离的同等过程。所有的分析都是设计,所有的设计也都是分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: