结构化设计概念和原理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模块化
模块化和软件成本
如何确定地预测最小成本区?
最小成本区
成 本
软件总成本 接口成本
成本 / 模块 模块数目
模块化
如何确定模块的大小:
模块可分解性 模块可组装性 模块可理解性 模块的连续性 模块的可保护性
设计基本原理
2.抽象 Abstraction:
忽略细节,分层理解问题,自顶向下层层细化,包 括对过程、数据和控制的抽象。
过程抽象:一个命名的指令序列,具有特定和有限 的功能。
数据抽象是命名的数据集合,描述一个数据对象。 控制抽象隐含了不必说明的内部细节的程序控制机
制。 是实现模块化的手段之一。
过程抽象
在这个抽象层次上,给出了初步的过程 表示,所用的术语都已面向软件,而且 模块化的工作已经开始显露。 逐步细化和模块化的概念与抽象紧密相 连。
最终产品:设计规约,包括描述体系结构、数据、 过程和界面设计模型。
评审:清晰性、正确性、完整性。
软件设计与程序设计不同。
开发阶段的信息流
翻译需求模型到软件设计
数据对象 描述
E-R
处理规格说明
DFD DD
STD
控制规格说明
需求分析模型
过程设计 接口设计 体系结构设计 数据设计
设计模型
翻译分析模型到软件设计
软件被划分成独立命名和可独立访问的被称作 模块的构件,每个构件完成一个子功能,它们 集成到一起满足问题需求。
easier to build, easier to change, easier to fix ...
模块化
模块化论据: C(x)定义为问题x的复杂性 E(x)定义为解决问题x所需要的工作量 对p1和p2两个问题, 若 C(p1) > C(p2),则 E(p1) > E(p2) C(p1 + p2) > C(p1) + C(p2) E(p1 + p2) > E(p1) + E(p2) 不要过度模块化!每个模块的简单性将被集成 的复杂性所掩盖。
find correct key;insert n lock;endif
pull/push door
implemented with a "kmnoovwe loeudtgoef w" aoyf;the
implemented as a data structure object that is associateendd rwepitehatenter
设计基本原理
3.求精Refinement
自顶向下的设计策略。
door
open
manufacturer model number type swing direction inserts lights
type number weight opening mechanism
walk to door; readcehtafoilrs konfoebn;ter Swaitlcghortihthemknob; open doorre;peat until door opens walk throutifugkrnhno;kbnodboecslonc'tktwuirsne,;then close door.take key out;
第 7 讲 设计概念与原理
内容提要
软件设计的重要性、过程及其基本原则 设计的相关概念 模块化设计 模块设计的启发规则
概述
软件设计:应用各种技术和原理,对一个软件系 统做出足够详细的决策,使之有可能在物理上得 以实现的过程。软件设计是一个迭代的过程。
设计目标:将需求分析的结果(分析模型与需求 分析规约)转化为实际软件系统的一个模型或软 件表达式,即用于构造软件的“蓝图”。
软件设计的重要性可以用“质量”表达。
1.软件设计的重要性
软件设计是后续开发步骤及软件维护工 作的基础。如果没有设计,只能建立一 个不稳定的系统结构。
设计和软件质量
指导性原则 设计应该展示一种层次性结构。 设计应该模块化。
设计应该包括数据、体系结构、接口和模块 (构件)的清楚的表示。
设计应有性质不同的可区分的数据结构和过 程。
设计应该具有独立功能特征的模块。
设计应该降低模块和外部环境之间接口的复 杂性。
设计应该利用需求分析中获得的信息和可重 复的方法。
2.设计过程
从项目管理的角度来看,软件设计分两 步完成。
概要设计,将软件需求转化为数据结构和 软件体系结构。
详细设计,即过程设计。通过对体系结构 表示进行细化,得到软件的详细的数据结 构和算法。
数据设计将分析时创建的信息域模型变换为软 件所需的数据结构,侧重于数据结构的定义。
体系结构设计定义软件系统各主要结构构件之 间的关系。
过程设计则是把结构构件转换成软件的过程性 描述。在编码步骤,根据这种过程性描述,生 成源程序代码,然后通过测试最终得到完整有 效的软件。
接口设计是建立软件内部的关系以及软件人- 机之间的交互机制。
数据抽象
定义“绘图 drawing”数据对象作为一种抽象数据类型。
TYPE drawing IS STRUCTURE DEFINED number IS STRING LENGTH (12) geometry DEFINED … notes IS STRING LENGTH (256) …
ENF drawing TYPE; Blueprint IS INSTANCE OF drawing; Schematic IS INSTANCE OF drawing;
求精
设计的求精过程与需求分析的划分类似, 只是考虑的细节层次不同。 求精实际是一个详细描述的过程。 抽象与求精是互补的概念。
设计基本原理
4.信息隐藏 information hiding
信息隐藏:在设计和确定模块时,使得一个 模块内包含的信息(过程和数据)对于不需 要这些信息的模块来说,是不可访问的。
总体设计
从回答“做什么”到回答“怎样做” 划分出组成系统的物理元素——程序、 文件、数据库、过程和文档等等 每个元素还是黑盒子 ---“全局高度,抽象层次”
3.设计基本原理
1.模块化:Modularity
模块是数据说明、可执行语句等程序对象的集 合,是单独命名的并且可以通过名字来访问, 例如过程、函数、子程序、宏、modula等。