“分析”与“设计”的区别?——读《分析模式》有感(1)

by - 2006/1/9 15:40:00

这两天在读Martin Fowler的《Analysis Patterns -- Reusable Object Models》,现在还没有读完,但是好在这本书属于“手册”的性质,不需要读完就可以弄明白作者的思路和书籍的结构。在读的过程中有很多想法,有些还比较模糊,有些需要讨论,在这里列出的问题,都是我希望引起大家讨论的,尤其希望有高手赐教。

今天先谈第一个问题,“分析”与“设计”到底应该如何分开?

Martin说,“由于软件分析和设计形成的架构都反应了实际问题,从而导致分析与设计的结果很类似,因此很多人认为分析与设计是没有区别的”,但是Martin本人坚持相信“分析与设计之间的区别还是仍然存在着的”。由此,Martin引出了概念模型(Conceptual Models),并认为分析的目的应该是要建立这样一种概念模型,这种模型与软件开发的相关技术关系很小,而和领域知识关系密切,且更适合由领域专家们来建立。

Martin在书中没有谈到太多的“设计”问题,但是从书中文字的表达可以看出,作者认为的设计应该就是我们常说的“架构设计”和“详细设计”。

按照RUP过程来看,在业务建模后,是有一个系统分析模型的,并且已经给出了一个基本的“分析模式”,就是“边界类”、“控制类”和“实体类”,在这个最基本的“分析模式”下,我们可以给出自己的分析模型。

但是,就我所见到的国内的软件开发,很少把分析与设计分解得这么清楚的,更多的是直接进入到了设计阶段,而把分析也含在了里面。就目前网上的热点来看,设计模式也要比分析模式“火”得多。

我个人认为,在很多情况下,“分析”与“设计”是很难截然分开的,特别是一些相对简单的需求的情况下,分析与设计的结果很类似,分析设计的过程也很难分离。但是对一些复杂需求的软件系统,先建立好分析模型,再来依据分析模型进行详细设计似乎是应该的,可是目前我还很少看到这样的过程。从人员职责上来看,也很难分离出一个“系统分析人员”和一个“系统设计人员”,并使前者的工作成果作为后者的输入。

例如书中的“Party”模式,如下图:

其实这种模式更多的情况下是直接应用到设计中了,因为设计人员很容易把“Person”和“Organization”抽象成一种“Party”来看待,并直接体现到了设计中。既然分析与设计的思路是紧密衔接的,在这种情况下如何分得开“分析”与“设计”呢?

希望大家讨论并赐教,帮我更好的提高认识。

 

阅读全文 | 回复(0) | 引用通告 | 编辑 | 收藏该日志

发表评论:

    昵称:
    密码:
    主页:
    标题: