软件设计的目标和任务
三. 逐 步 求 精
5.2 设计原理
• 逐步求精: 为了能集中精力解决主要问题而尽量推迟对问 题细节的考虑。
• 逐步求精的思想: 对一个事物的认识是一个从高层次抽象向低层 次抽象逐步转化和过渡的过程。
• Miller法则: 一个人在任何时候都只能把注意力集中在 (7+2)个知识块上。
5.2 设计原理
• 抽象的思想:处理复杂系统的惟一有效的方法是用 层次的方式构造和分析它。
• 抽象层次: ✓最高抽象级别——面向问题的语言
✓较低抽象级别——面向问题和实现的语言
• 软✓最件低设抽计象中级的别两—类—抽面象向:实现的语言 ✓ 过程抽象:功能-> 过程、函数 ✓ 数据抽象:数据对象定义、描述->数据类型名
一. 模 块 化
5.2 设计原理
结论:分而治之,各个击破 ?将模块无限分割下去?
– 单个模块的开发成本小,几乎可忽略不计; – 模块之间接口的开发成本呢?
一. 模 块 化
模块数目与软件成本的关系
5.2 设计原理
模块数目为M时,软件开发成本最小
二. 抽 象
5.2 设计原理
• 抽象:把一定事物、状态或过程中共性的方面集中 和概括起来,暂时忽略它们之间的差异。
总体设计的步骤
• 设想供选择的方案 • 选取合理的方案
– 系统流程图 – 组成系统的物理元素清单 – 成本/效益分析 – 实现这个系统的进度计划
• 推荐最佳方案 • 功能分解 • 设计软件结构(模块化思想)
总体设计的步骤 5测试计划 • 书写文档
– 系统说明 – 用户手册 – 测试计划 – 详细的实现计划 – 数据库设计结果
• 审查和复审
设计原理
• 模块化 • 抽象 • 逐步求精 • 信息隐藏和局部化 • 模块独立
5.2 设计原理
一. 模 块 化
5.2 设计原理
• 模块:模块是由边界元素限定的相邻程序元素(例如,数据说明, 可执行的语句)的序列,而且有一个总体标识符代表它。如: OO的对象、方法。
• 模块化思想:模块化就是把程序划分成独立命名且可独立访问的 模块,每个模块完成一个子功能,把这些模块集成起来构成一个 整体,可以完成指定的功能满足用户的需求。
二. 抽 象
5.2 设计原理
例子:讨论一个在不同抽象级别上的软件设计所具有
CAD图形的软形件式包。可以画 各种直线和曲线,能完成 所有几何图形的计算.图 形设计的结果存于图形文 件中,图形文件可包含几 何的、正文的和其它各种 设计信息。
抽象1.总体结构层次 的抽象
图形软件包 软件任务 图形用户界面 创建 二维图形任务 显示 图形任务 管理 图形文件任务
CLASS Line : PUBLIC Drawing { …… }; CLASS Curve : PUBLIC Line { …… }; CLASS StraightLine : PUBLIC Line { …… };
Curve objCurve1; //objCurve1 is a instance of Curve
软件设计的目标和任务
软件需求:解决“做什么” 软件设计:解决“怎么做” • 软件设计的任务:以软件需求规格说明书
为依据,进行
– 数据设计 – 系统结构设计 – 过程设计
软件设计的目标和任务
• 数据设计侧重于数据结构的定义 • 系统结构设计定义软件系统各主要成分之间的关
系 • 过程设计则是把结构成分转换成软件的过程性描
• “分而治之”是模块化思想的依据:把复杂的问题分解为若干个 易于处理的小问题。
一. 模 块 化
5.2 设计原理
令C(X):问题X的复杂程度,E(X):解决X问题所需 的工作量
• 规律1:若两个问题P1,P2 C(P1) > C(P2),则E(P1) > E(P2)
• 规律2:某问题P可以分成P1,P2,P=P1+P2 则: C(P1+P2) > C(P1)+C(P2) 所以: E(P1+P2) > E(P1)+E(P2)
述。在编码步骤,根据这种过程性描述,生成源 程序代码,然后通过测试最终得到完整有效的软 件。
• 软件设计的重要性:是软件开发时期的第一个步, 最终影响软件实现的成败和软件维护的难易程度。
软件设计的两个阶段
从工程管理的角度来看,软件设计分两 步完成。 • 总体设计:将软件需求转化为数据结构和 软件的系统结构。 • 详细设计:即过程设计。通过对结构表示 进行细化,得到软件的详细的数据结构和 算法。
软件设计的两个阶段
第5章 总体设计
第5章 总体设计
5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法
5.6 小结 习题
重点和难点
重点: 软件设计过程中应遵循的基本原理 面向数据流设计方法
难点: 变换分析、事务分析法过程和应用
5.51.1设设计计过过程程
END PROCEDURE. 抽象3.实现层次的抽象(程序设计语言描述)
二. 抽 象
5.2 设计原理
STRUCT coordinate { int x; int y };
CCALDAS软S件D中raw的in数g 据抽//p象ar举ent例cla:ss
{ PUBLIC : coordinate startpoint, endpoint; …… };
三. 逐 步 求 精
求精实际上是细化过程 求精要求设计者细化原始陈述,随着每个后续求 精(即细化)步骤的完成而提供越来越多的细节。
抽象与求精是一对互补的概念 抽象使得设计者能够说明过程和数据,同时却忽 略低层细节。事实上,可以把抽象看作是一种通 过忽略多余的细节同时强调有关的细节,而实现 逐步求精的方法。求精则帮助设计者在设计过程 中逐步揭示出低层细节。这两个概念都有助于设 计者在设计演化过程中创造出完整的设计模型。
End 图形软件包
二. 抽 象
5.2 设计原理
抽象2.过程层次的抽象(仅以管理图形文件任务为例) PROCEDURE drawing file management task IF OpenFile THEN input filename; open the file; display the file; ELSE IF SaveFile THEN input save filename; save the file; END IF