软件工程中的结构化设计ppt课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程中的结构化设计ppt课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 中的 结构 设计 ppt 课件
- 资源描述:
-
1、第四章第四章 结构化设计结构化设计 对软件进行需求分析和建模后,便开始了软件设对软件进行需求分析和建模后,便开始了软件设计,需求规格说明是软件设计的重要输入,它为软件计,需求规格说明是软件设计的重要输入,它为软件设计提供了基础。设计提供了基础。 软件设计过程是将需求规格说明转化为软件实现软件设计过程是将需求规格说明转化为软件实现方案的过程方案的过程。软件设计包括。软件设计包括概要设计概要设计和和详细设计详细设计,本,本章则主要介绍软件概要设计和详细设计的过程。章则主要介绍软件概要设计和详细设计的过程。 结构化设计原理结构化设计原理 模块独立模块独立 启发规则启发规则 表示软件结构的图形工具表示
2、软件结构的图形工具 面向数据流的设计方法面向数据流的设计方法 人机界面设计人机界面设计 过程设计过程设计14.1 结构化设计概述结构化设计概述 任务任务:回答:回答How to do? 阶段划分阶段划分:概要设计、详细设计:概要设计、详细设计 主要内容主要内容: 体系结构设计体系结构设计 数据设计数据设计 接口设计接口设计 过程设计过程设计 结构化设计模型与结构化分析模型的结构化设计模型与结构化分析模型的关系关系: 软件设计必须依据对软件的需求分析来进行的,而软件设计必须依据对软件的需求分析来进行的,而结构化分析的结果为结构化设计提供了最基本的输结构化分析的结果为结构化设计提供了最基本的输入信
3、息。入信息。2软件开发阶段的信息流软件开发阶段的信息流编码编码测试测试设计设计信息描述信息描述功能描述功能描述行为描述行为描述其他需求其他需求总体结构设计总体结构设计数据设计数据设计过程设计过程设计 程序模块程序模块集成并确集成并确认的软件认的软件34.2 软件设计的概念和原理软件设计的概念和原理 模块化模块化 抽象抽象 逐步求精逐步求精 信息隐藏信息隐藏41. 模块化模块化 模块模块(Modular): 独立命名,可独立访问的具有一定功能的一段程序。独立命名,可独立访问的具有一定功能的一段程序。 模块化设计(模块化设计(Modular Design):): 按适当的原则把软件划分为一个个较小
4、的、相关而又按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。每个模块可独立开发、测试,最后相对独立的模块。每个模块可独立开发、测试,最后组装成完整的软件。组装成完整的软件。 在结构化方法中,过程、函数和子程序等都可作为模在结构化方法中,过程、函数和子程序等都可作为模块;在面向对象方法中,对象是模块,对象内的方法块;在面向对象方法中,对象是模块,对象内的方法也是模块。也是模块。 模块分解并不是越小越好。模块分解并不是越小越好。5理想模块理想模块 理想模块的特点:理想模块的特点: 只解决一个问题。只解决一个问题。 功能都应该明确,使人容易理解。功能都应该明确,使人容易理解。 理想模块
5、之间的连接关系简单,具有独立性。理想模块之间的连接关系简单,具有独立性。 由理想模块构成的系统,容易使人理解,易于编程,由理想模块构成的系统,容易使人理解,易于编程,易于测试,易于修改和维护。易于测试,易于修改和维护。 对用户来说,其感兴趣的是模块的功能,而不必对用户来说,其感兴趣的是模块的功能,而不必去理解模块内部的结构和原理。去理解模块内部的结构和原理。6模块分解(模块分解(Decomposition) E(P1+P2)E(P1)+E(P2)设:设: C(x) 为为复杂程度函数复杂程度函数 E(x) 为决定解决问题为决定解决问题x x所需的所需的工作量工作量( (时间时间) )函数函数 如
6、果:如果:C(P1)C(P2)则:则:E(P1)E(P2)C(P1+P2)C(P1)+C(P2) Magical Number Seven,Plus or Minus Two,Some Limits on Our Capacity for Processing Information The Psychological Review,1956 G.A. Miller奇妙的数字奇妙的数字 7+2,人类,人类信息处理能力的限度信息处理能力的限度7软件工程基本定理软件工程基本定理C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)软件工程基本定理软件工程基本定理最小成本区最小
7、成本区M模块成本模块成本接口成本接口成本总成本总成本软软件件开开发发工工作作量量 模块数模块数 8有关模块化有关模块化 模块化考虑因素:模块化考虑因素: 模块数目模块数目 怎样定义一个给定大小的模块怎样定义一个给定大小的模块 评价模块系统设计方法的标准评价模块系统设计方法的标准: 可分解性、可组装性、可理解性、连续性、保护性可分解性、可组装性、可理解性、连续性、保护性 模块化的优点模块化的优点: 易阅读和理解,可靠性,可修改性易阅读和理解,可靠性,可修改性92. 抽象(抽象(Abstraction) 抽象抽象即提取出本质而暂不考虑细节。是认识复杂现象即提取出本质而暂不考虑细节。是认识复杂现象过
8、程中使用的思维工具。过程中使用的思维工具。 在进行软件设计时,抽象与逐步求精、模块化密切相关,在进行软件设计时,抽象与逐步求精、模块化密切相关,可提高软件的可理解性。可提高软件的可理解性。 高层次抽象高层次抽象 使用问题环境的语言,以概括的方式叙述问题的解使用问题环境的语言,以概括的方式叙述问题的解决。决。 较低层次抽象较低层次抽象 更过程化的方法更过程化的方法 面向问题面向问题+面向实现术语结合面向实现术语结合 最低层次抽象最低层次抽象 直接实现的方式叙述问题的解法。直接实现的方式叙述问题的解法。103. 逐步求精逐步求精 细化细化 为了集中精力解决主要问题而尽量推迟对问题细节的考为了集中精
9、力解决主要问题而尽量推迟对问题细节的考虑。虑。 软件工程过程的每一步都是对软件解法的抽象层次的一软件工程过程的每一步都是对软件解法的抽象层次的一次精化。次精化。 求精求精是是帮助设计者在设计过程中提示出低层细节。帮助设计者在设计过程中提示出低层细节。114. 信息隐藏(信息隐藏(Information Hiding) 又称又称数据封装数据封装(Data Encapculation) 指在设计和确定模块时,使得一个模块内包含的信指在设计和确定模块时,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模息(过程和数据),对于不需要这些信息的其他模块来说,是不可访问的。块来说,是不可访
10、问的。 为软件系统的修改、测试及以后的维护都带来好处为软件系统的修改、测试及以后的维护都带来好处 目的目的 为了提高模块的独立性。为了提高模块的独立性。栈栈stack置空栈置空栈 makenull进栈进栈 push退栈退栈 pop124.3 模块独立性(模块独立性(Module Independence) 模块独立性模块独立性: 是指软件系统中每个模块只涉及软件要求的具体的是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块接口是简单的。子功能,而和软件系统中其他模块接口是简单的。 模块完成独立的功能模块完成独立的功能 符合信息隐蔽和信息局部化原理符合信息隐蔽和信息局部化
11、原理 模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小 两个定性的度量标准两个定性的度量标准: 耦合性:模块之间的依赖程度。取决于接口的复杂耦合性:模块之间的依赖程度。取决于接口的复杂性、调用的方式及传递的信息。性、调用的方式及传递的信息。 内聚性:模块内部各成分之间的关联程度。内聚性:模块内部各成分之间的关联程度。131. 耦合(耦合(Coupling) 耦合性耦合性: 是程序结构中各个模块之间相互关联的度量。是程序结构中各个模块之间相互关联的度量。 取决于各个模块之间接口的复杂程序、调用模块的取决于各个模块之间接口的复杂程序、调用模块的方式以及哪些信息通过接口。方式以及哪些信息通过接口
12、。 耦合性越高,模块独立性越弱。耦合性越高,模块独立性越弱。低低非直接非直接耦合耦合数据数据耦合耦合标记标记耦合耦合控制控制耦合耦合外部外部耦合耦合公共公共耦合耦合内容内容耦合耦合 高高弱弱 强强耦合性耦合性模块独立性模块独立性14非直接耦合非直接耦合(Nondirect Coupling) 非直接耦合非直接耦合: 模块之间没有直接关系,它们之间的联系完全是通模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。过主模块的控制和调用来实现的。 这种耦合的这种耦合的模块独立性最强模块独立性最强。 例如下图中,模块例如下图中,模块1和和2是非直接耦合是非直接耦合3412015数
13、据耦合(数据耦合(Data Coupling) 数据耦合数据耦合: 在两个模块间往返在两个模块间往返传递的只有数据传递的只有数据(或变量或记录(或变量或记录或文件),这种耦合称数据耦合。或文件),这种耦合称数据耦合。 在模块间只有数据传输,模块接口简单。在模块间只有数据传输,模块接口简单。 在不可避免的耦合中是耦合力最低的,也是在不可避免的耦合中是耦合力最低的,也是较理想较理想的耦合的耦合。 如:编程语言中的传值函数。如:编程语言中的传值函数。开发票开发票计算水费计算水费单价单价数量数量金额金额16标记耦合(标记耦合(Stamp Coupling) 标记耦合(又称特征耦合)标记耦合(又称特征耦
14、合): 指两个模块之间传递的是数据结构(如记录、数组指两个模块之间传递的是数据结构(如记录、数组等)。其实传递的是这个数据结构的地址。等)。其实传递的是这个数据结构的地址。 两个模块必须清楚这些数据结构,并按要求对其进两个模块必须清楚这些数据结构,并按要求对其进行操作,这样就降低了可理解性。行操作,这样就降低了可理解性。 如:如: 住户详情中包含了住户详情中包含了“本月用电量本月用电量”和和“本月用水量本月用水量”计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况17将标记耦合改为数据耦合将标记耦合改为数据耦合计算水电费计算水电费计算水费计算水
15、费计算电费计算电费本月用水量本月用水量水费水费电费电费本水用电量本水用电量18控制耦合(控制耦合(Control Coupling) 控制耦合控制耦合: 如果一个模块通过传送控制信息(开发、标志、名如果一个模块通过传送控制信息(开发、标志、名字等),明显地控制选择另一模块的功能就是控制字等),明显地控制选择另一模块的功能就是控制耦合。耦合。 病态耦合病态耦合19B控制耦合举例控制耦合举例AB计算平均分计算平均分或最高分或最高分平均平均/最高最高成绩成绩读入分数读入分数平均平均/最高?最高?计算平均分计算平均分计算最高分计算最高分输出结果输出结果20去除模块间控制耦合的方法去除模块间控制耦合的方
16、法 去除模块间控制耦合的方法:去除模块间控制耦合的方法: 将被调用模块内的判定上移到调用模块中进行;将被调用模块内的判定上移到调用模块中进行; 被调用模块分解成若干单一功能模块。被调用模块分解成若干单一功能模块。AB1计算平均分计算平均分B2计算最高分计算最高分平均成绩平均成绩最高成绩最高成绩21将控制耦合改为数据耦合又例将控制耦合改为数据耦合又例22外部耦合外部耦合 外部耦合外部耦合: 当模块受外部环境的约束时就会发生外部耦合。当模块受外部环境的约束时就会发生外部耦合。 例如:例如:I/O模块与特定设备,格式与通信协议相关联。模块与特定设备,格式与通信协议相关联。 外部耦合必不可少,但这种模
17、块数目应尽量少。外部耦合必不可少,但这种模块数目应尽量少。23公共耦合(公共耦合(Common Coupling) 公共耦合公共耦合: 允许两个以上模块引用或访问同一个公用数据区允许两个以上模块引用或访问同一个公用数据区(也称全局数据区、公共数据环境)。(也称全局数据区、公共数据环境)。 公共数据区指:公共数据区指: 全局数据结构全局数据结构 共享通讯区共享通讯区 内存公共覆盖区等内存公共覆盖区等全局全局数据区数据区ABCDEFB、C、E 为公共耦合为公共耦合24公共耦合存在的问题公共耦合存在的问题 公共耦合存在的问题:公共耦合存在的问题: 软件可理解性降低(模块间存在错综复杂的联系)软件可理
18、解性降低(模块间存在错综复杂的联系) 软件可维护性差(修改变量名或属性困难)软件可维护性差(修改变量名或属性困难) 软件可靠性差(公共数据区及全程变量无保护措施)软件可靠性差(公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!慎用公共数据区和全程变量!25内容耦合(内容耦合(Content Coupling) 内容耦合内容耦合: 当一个模块使用另一个模块内部的数据或信息时,当一个模块使用另一个模块内部的数据或信息时,或者转移进入另一个模块中时,产生模块间内容耦或者转移进入另一个模块中时,产生模块间内容耦合。合。 最不好的耦合形式!最不好的耦合形式! 发生内容耦合的情形:发生内容耦合的
19、情形: 模块直接访问另一模块的内部数据模块直接访问另一模块的内部数据 模块不通过正常入口转到另一模块内模块不通过正常入口转到另一模块内 两模块有一部分代码重叠(只可能出现在汇编语言两模块有一部分代码重叠(只可能出现在汇编语言中)中) 一模块有多个入口一模块有多个入口26如何降低模块间耦合度如何降低模块间耦合度 如模块必须存在耦合,应采取下述设计原则:如模块必须存在耦合,应采取下述设计原则: 尽量使用数据耦合,尽量使用数据耦合, 少用控制耦合,少用控制耦合, 限制公共环境耦合的范围,限制公共环境耦合的范围, 坚决避免使用内容耦合。坚决避免使用内容耦合。 降低模块间接口的复杂性降低模块间接口的复杂
20、性 实际上,开始时两个模块之间的耦合不只是一实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计种类型,而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。步加以改进,以提高模块的独立性。27接口复杂性与耦合类型的关系接口复杂性与耦合类型的关系28内聚(内聚(Cohesion) 内聚性内聚性: 衡量一个模块内各个元素彼此结合的紧密程度。衡量一个模块内各个元素彼此结合的紧密程度。 设计目标:高内聚(一个模块的所有成分都直接参设计目标:高内聚(一个模块的所有成分都直接参与并且对于
21、完成同一功能来说都是最基本的)与并且对于完成同一功能来说都是最基本的)低低功能功能内聚内聚顺序顺序内聚内聚通信通信内聚内聚过程过程内聚内聚时间时间内聚内聚逻辑逻辑内聚内聚偶然偶然内聚内聚 高高强强功能单一功能单一弱弱功能分散功能分散 内聚内聚性性模块独立性模块独立性29偶然内聚偶然内聚 偶然内聚偶然内聚: 一个模块完成一组任务,任务之间的关系很松散。一个模块完成一组任务,任务之间的关系很松散。 缺点:可理解性差,可修改性差。缺点:可理解性差,可修改性差。 例如下图中,例如下图中,M模块中的三个语句没有任何联系。模块中的三个语句没有任何联系。30逻辑内聚逻辑内聚 逻辑内聚逻辑内聚: 这种模块把几
22、种功能组合在一起,每次被调用时,这种模块把几种功能组合在一起,每次被调用时,则由传递给模块的判定参数来确定该模块应执行哪则由传递给模块的判定参数来确定该模块应执行哪一种功能。一种功能。调用模块调用模块判定判定读读一一个个记记录录写写一一个个记记录录被调用模块被调用模块31 缺点:缺点: 增强了耦合程度(控制耦合),不易修改,效率低。增强了耦合程度(控制耦合),不易修改,效率低。逻辑内聚逻辑内聚32时间内聚时间内聚 时间内聚时间内聚: 模块完成的功能必须在同一时间内执行,这些功能模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。只因时间因素关联在一起。 如:初始化系统模块、系统
23、结束模块、紧急故障处如:初始化系统模块、系统结束模块、紧急故障处理模块等理模块等33过程内聚过程内聚 过程内聚过程内聚: 一个模块内各处理成分的动作各不相同,但它们都一个模块内各处理成分的动作各不相同,但它们都受一个控制流的支配,且决定了它们的执行次序。受一个控制流的支配,且决定了它们的执行次序。读入读入成绩单成绩单审查审查成绩单成绩单读入并审查读入并审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩统计并打印统计并打印成绩单成绩单高斯消去法解题流程高斯消去法解题流程34通信内聚通信内聚 通信内聚通信内聚: 模块中的所有元素都使用相同输入数据,和模块中的所有元素都使用相同输入数据,和/或产生或产
24、生相同输出数据。相同输出数据。 通常,通信内聚模块是通过数据流图来定义的。通常,通信内聚模块是通过数据流图来定义的。 例如:例如:35通信内聚举例通信内聚举例职工工职工工资记录资记录产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资报表资报表平均工资平均工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块36顺序内聚顺序内聚 顺序内聚顺序内聚: 一个模块能完成多个操作,前一个操作处理的输出一个模块能完成多个操作,前一个操作处理的输出数据是下一个操作处理的输入数据,模块中各成份数据是下一个操作处理的输入数据,模块中各成份的工作是有次序的,各成份的关系也较紧密,则称
25、的工作是有次序的,各成份的关系也较紧密,则称为顺序内聚。为顺序内聚。37功能内聚功能内聚 功能内聚功能内聚: 一个模块内的所有成分的处理动作全部为完成某个一个模块内的所有成分的处理动作全部为完成某个功能,且只执行一个功能,缺一不可,称为功能内功能,且只执行一个功能,缺一不可,称为功能内聚。聚。 如:计算实发工资,打印发票等如:计算实发工资,打印发票等 是最高程度的内聚。是最高程度的内聚。 有利于实现软件的重用,从而提高软件开发的效率。有利于实现软件的重用,从而提高软件开发的效率。38耦合、内聚与模块独立性关系耦合、内聚与模块独立性关系 内聚和耦合密切相关,同其它模块强耦合的模内聚和耦合密切相关
展开阅读全文