6.1 设计指导
有个误区是只有一种正确的设计方法。事情绝不是这样。没有什么正确或错误的方式来创建设计。当今存在很多设计方法,各自都有支持者。然而,问题在于不是使用哪种设计方法,而是一直坚持使用一种方法。这点可以从设计扩展到整个软件开发过程。一些组织并没有遵循一个标准的软件开发过程,或者他们没有坚持使用。创建优秀设计最重要的因素是找到一个你和你的组织都感到舒服的方式并且坚持使用它,并且持续改善它。实现一个没人愿意遵循的设计没有任何意义。
与面向对象技术有关的大部分书籍都提供了相似的策略来设计系统。事实上,除了一些特定于面向对象技术的问题,大多数策略也同样适用于非面向对象的系统。
通常一个稳固的面向对象设计的过程包含以下步骤:
1.进行正确的分析。
2.编写工作陈述文档来描述该系统。
3.通过规格说明收集需求。
4.开发用户接口的原型。
5.识别类。
6.确定每个类的职责。
7.确定类与类之间如何交互。
8.创建一个高层次的模型来描述系统的构建。
在面向对象开发中,高层次的系统模型特别有趣。系统(或者对象模型)是由类和类之间的互动组成。该模型应该忠实地代表系统,而且容易理解和修改。我们也需要对该模型建立一种标记符号。这正是统一模型语言(UML)的由来。众所周知,UML并不是一种设计过程,而是一个建模工具。本书中仅使用UML中的类图。我喜欢使用类图作为可视化工具来帮助设计,也可以作为文档,即使我不使用其他的UML工具。
持续的设计过程
想法和规划再好,大多数情况下设计是一个持续的过程。甚至产品已经处于测试阶段,仍然会出现设计上的变更。这取决于项目经理决定何时停止更改产品和添加功能。我们通常称之为版本1。
了解存在很多可用的设计方法论是很重要的。有个较早的方法论称为瀑布模型,提倡在不同的阶段建立严格的边界。在该模型中,设计阶段先于实现阶段完成,而实现阶段先于测试阶段完成,以此类推。实践中我们发现瀑布模型是不切实际的。当前其他的设计模型(比如快速原型,极限编程,敏捷,Scrum等)倡导真正的迭代过程。在这些模型中,一些实现试图先完成设计阶段,作为一种概念验证。尽管最近厌恶瀑布模型,但该模型背后的目标是可以理解的。在开始编码之前彻底完成设计只是传说中的实践。你肯定不想当处于产品的发布阶段时,又决定从设计阶段开始迭代。跨阶段边界迭代是不可避免的。然而,你应当保持这些迭代最小化(请见图6.1)。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access