7.1 软件设计引论
7.1.1 大型和小型项目设计
7.1.2 设计的层次
层次 1:划分成子系统 层次 2:划分成模块 层次3:划分成子程序 层次 4:子程序内部的设计
7.1.3 创建中的设计工作
内部子程序设计
划分成子程序
划分成模块
划分成子系统
7.2 结构化设计
7.2.1 选择需进行模块化的要素
自顶向下分解
把程序分解为子程序的一种流行方法是自顶向下分解,也称为自顶向下设计或逐步求精
· 设计高层次。 · 避免特定语言细节。从设计中,不应该看出打算在程序中使用什么语言,或者说当在设
计中更换要用的语言时,不会产生任何麻烦。 · 暂时不指出下一层次的设计细节(与信息隐含类似)。· 正规化每个层次。 · 检验每个层次。 · 转移到下一个层次,进行新的求精工作
自顶向下设计指导原则的依据是:人脑一次只能考虑有限数量的细节。如果你从一个较简
略的子程序开始,逐步把它分解成更加详细的子程序,就不必每次考虑过多的细节。这种方法 也常称之为“分而治之”战术。它对于分层结构往往是最有效的。
7.3 面向对象
识别对象中的子对象并识别出对于子对象的操作,然后再根据子对 象的操作开发出一个系统。面向对象设计是在程序中设计对象或模块的一种方法。在较低的程 度上说,它也是设计单个子程序的一种方法。
7.3.1 关键思想
抽象
7.4 对目前流行设计方法的评论
7.4.1 何时使用结构化设计
7.5 往返设计
7.5.2 设计是一个复杂的过程
J.P Morgon曾经说过人们在做事情时常常有两个原因:表面上冠冕堂皇的原因和真正的 原因。
7.5.3 设计是一个“险恶”的过程
7.5.4 设计是一个启发的过程 进行有效设计的关键是要认识到它是个启发的过程。
最重要的设计原则之一是不要死抱着一种方法不放
表 7-1怎样解决问题
l.理解问题,你必须理解要解决的问题
2.设计一个方案。找到已知数据和未知之间的联系。如果不能找出直接联系的话,你可能不得 不考虑一些辅助问题,但最后,你应该找到一个解决方案。
3.执行你的计划。
4.回顾,检查一下答案。
7.5.5 受迎的设计特点
智力上的可管理性 低复杂性。维护的方便性 最小的联系性 可扩充性可重复使用性高扇入低或中等程度扇出 低或中等扇出指的是对一个确定的子程序来说,它所调用的子程序应 该尽可能地少。Card认为 0~2个扇出是最优的
可移植性
简练性
成层设计
标准化技求