1
面向对象软件工程实践指南
1.2.7 第7章 设计阶段

第7章 设计阶段

设计是运用专业知识针对确定的目标、提出具体解决方法的阶段。在设计阶段,需要在各种解决办法中进行权衡,以确定最为合理的方案。因此,设计是一个决策过程。在许多工程领域,如机械设计、电子设计、建筑设计行业,有着许多设计规范、设计指南和计算公式,然而,在软件设计领域,目前似乎依然主要依靠个人的经验和技艺进行决策,这就使得不同的人完成的软件设计有很大差别,从而造成软件设计结果很难重用,软件的质量也很难保证。我们希望软件设计也能够有系统化的、科学的方法,目的是遵照这一套方法,不同的人可以设计出差别不大的系统,只有这样,设计的质量才能得到保证。

面向对象提供了一套从分析、设计、实现到测试的方法学。通过面向对象分析已经建立了功能模型、对象模型和动态模型,在设计阶段,我们依然运用面向对象方法,对类的定义进行细化,并将类组织成组件、子系统。由于分析阶段和设计阶段都采用了对象模型,设计阶段的对象模型受到了分析阶段的对象模型的直接启发,因此开展起来相对自然。然而,在设计阶段依然有许多决策是必须在这个阶段做出的,例如整个系统需要分解成哪些子系统,整个软件的控制结构是怎样的。本章将围绕设计中的内容、方法、涉及的模型和文档模板展开介绍。

值得指出的是,以面向对象的方式设计软件,与现实中创办一个企业、管理一个企业有类似之处。作为软件设计者,要安排每一个软件对象的职责,确定它们的交互方式,使得软件世界井然有序,运转高效;而作为企业的管理者,要安排每一个人员的工作,确定他们之间的合作方式,使整个企业内责任分明。保持一个机构(无论是软件对象组成的机构,还是人组成的机构)高效运转的诀窍有许多相似的原则,比如说,一个企业中要使每一个人的职责比较明晰,不能把过杂的责任分给一个人,在软件对象上,也是如此。因此,用管理好一个企业的思维去考虑软件设计,是一个值得借鉴的思路。