结构化软件设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
详细设计是对模块实现细节的设计,采用结构化程序 设计(Structured Programming,简称SP)方法
SA、SD和SP构成完整的结构化方法体系
结构图(SC)
用结构图(Structure Chert)来描述软件系统 的体系结构
描述一个软件系统由哪些模块组成,以及模 块之间的调用关系
结构图的基本成分有:模块、调用和数据
模块
模块(module):指具有一定功能的可以用模 块名调用的一组程序语句,如函数、子程序 等
它们是组成程序的基本单元
一个模块具有其外部特征和内部特征
外部特征包括:模块的接口(模块名、输入/输出参数、返回 值等)和模块的功能
内部特征包括:模块的内部数据和完成其功能的程序代码
在SD中,我们只关注模块的外部特征,而忽 略其内部特征
调用和数据
调用(call):用从一个模块指向另一个模块的 箭头来表示,其含义是前者调用了后者
为了方便,有时常用直线替代箭头,此时,表示位于上方 的模块调用位于下方的模块
数据(data):模块调用时需传递的参数可通 过在调用箭头旁附加一个小箭头和数据名来 表示
结构图的几个概念
深度:程序结构图中控制的层数,例如图中所示的结构图的 深度是5
宽度:程序结构图中同一层次上模块总数的最大值,例如图 中所示的结构图的宽度为7
扇出(fan out):该模块直接调用的模块数目。例如,例如图 中模块M的扇出是4,模块A的是2,模块B的扇出是1
扇入(fan in):能直接调用该模块的模块数目。例如图中模块 G的扇入是1,模块I的扇入是2,模块R的扇入是4
软件工程过程的每一步都是对问题的软件解法 抽象层次的一次精化。
逐步求精与抽象是紧密相关的
模块独立性 模块独立性是软件系统中每个模块只涉
及软件要求的具体子功能,而和软件系统中 其他的模块接口是简单的。
模块独立的概念是模块化、抽象、信息隐蔽 和局部化概念的直接结果。
重要概念:耦合、内聚
模块独立性的度量
A
深度 D
E
F
GH
I
J
W 扇出
B
C
K
L
M
N OP Q
R 扇入
宽度
相关指标的含义
深度和宽度在一定程序上反映了程序的规模和 复杂程度
相对而言,如果程序结构图的深度和宽度较大,则说明程 序的规模和复杂程度都较大。
模块的扇入扇出会影响结构图的深度和宽度,例如减少模 块的扇出,可能导致宽度变小而深度增加
一个模块的扇出过大通常意味着该模块比较复 杂,然而扇出太少,可能导致深度的增加
一般情况,一个模块的扇出以3~9为宜
一个模块的扇入表示有多少模块可直接调用它, 它反映了该模块的复用(reuse)程度,因此模块 的扇入越大越好
软件设计中的概念
模块化 抽象信息局部化 模块独立性 耦合 内聚
面向对象设计
Coad,Yourdon
结构化设计方法(Structured Design ,SD)基于模块化、自 顶向下逐层细化、结构化程序 设计等程序设计技术上发展起 来的。
结构化设计
结构化设计(Structured Design,简称SD)是一 种将结构化分析得到的数据流图映射成软件体 系结构的设计方法
DFD
(问题结构)
Sc图
映射
软件系统的结构
(程序结构)
结构化设计
强调模块化、自顶向下逐步求精、信息隐蔽、 高内聚低耦合等设计准则
分为概要设计和详细设计两大步骤
概要设计是对软件系统的总体设计,采用结构化设计 方法,其任务是:将系统分解成模块,确定每个模块 的功能、接口(模块间传递的数据)及其调用关系,并 用模块及其对模块的调用来构建软件的体系结构
模块独立性取决于模块的内部和外部特征。
SD方法提出的定性的度量标准:
模块之间的耦合性 模块自身的内聚性
耦合
耦合是对一个软件结构内各个模块之间互连程 度的度量。
耦合强弱取决于模块间接口的复杂程度,调用 模块的方式,以及通过接口的信息。
根据模块间耦合程度的强弱的标准,划分耦合 类型,共有七种。
模块化
模块是数据说明、可执行语句等程序对象的集
合,模块可以单独被命名,可通过名字访问。 例如,过程、函数、子程序、宏等等都可作为 模块。
模块化就是把程序划分为若干个模块,每个模
块具有独立子功能,再把各个模块集成后,实 现指定功能,满足问题要求。
抽象化
抽象就是抽出事务的本质特性而暂不考虑细节 问题,是人类在认识复杂现象中使用的最强有 力工具。
现实世界

OOA
向 对


OOD 发

法 OOP
结构化
结 分析SA 构 化 结构化 开 设计SD 发 方 结构化 法 编程SP
计算机世界
软件设计任务
管理观点 技术观点
概要设计 详细设计
数据设计 系统结构设计 过程设计
软件设计方法分类
分类ห้องสมุดไป่ตู้
代表
面向数据流的设计或者 结构化设计方法 过程驱动的设计
面向数据结构的设计或 LCP,JSP,DSSD 者数据驱动设计
非直接耦合 模块间没有信息传递时,属于非直接耦
合。
内容耦合举例
AB
一模块直接访问 另一模块的内部 信息 (程序代码 或数据)
A B
模块代码重叠
Entry1 ……
Entry1 ……
多入口模块
最不好的耦合形式 !!!
公共耦合举例
AB C
公共数据区
模块A、B、C间存在错综复杂的联系
控制耦合举例
A
平均/最高 (控制信号)
成绩
B
计算平均分 或最高分
B 读入分数
平均/最高? 计算平均分 计算最高分
输出结果
数据耦合举例
开发票
单价 数量
金额
计算水费
标记耦合举例
图示
紧密耦合-有 很多依赖关系 松散耦合-有 少量依赖关系
无耦合-没有依赖关系
耦合类型(高→低)
内容耦合 当一个模块直接修改或操作另一个模块的数
据,或者直接转入另一个模块时,就发生了内容耦合。 此时,被修改的模块完全依赖于修改它的模块。
公共耦合两个以上的模块共同引用一个全局数据项就称
为公共耦合。
控制耦合一个模块在界面上传递一个信号(如开关值、
标志量等)控制另一个模块,接收信号的模块动作根据 信号值进行调整,称为控制耦合。
耦合类型
标记耦合 模块间通过参数传递复杂的内部数据结
构,称为标记耦合。此数据结构的变化将使相关的模 块发生变化。
数据耦合 模块间通过参数传递基本类型的数据,
称为数据耦合。
相关文档
最新文档