第四章-软件总体设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四章-软件总体设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 软件 总体 设计 课件
- 资源描述:
-
1、2022-3-271概述概述(P66)(P66) 需求分析解决系统需求分析解决系统“做什么做什么”的问的问题,软件设计解决系统题,软件设计解决系统“怎么做怎么做”的问题,分为总体设计的问题,分为总体设计( (概要设计概要设计) )和详细设计和详细设计. .软件设计是把软件需求软件设计是把软件需求变换成为软件的具体解决方案变换成为软件的具体解决方案. .2022-3-272剩下的阶段剩下的阶段 总体设计总体设计 详细设计详细设计 编码编码 调试调试 维护维护2022-3-273软件设计分为两个阶段:软件设计分为两个阶段:(1)(1)总体设计总体设计( (概要设计概要设计) )确定软件的结构确定软
2、件的结构以以及各组成成分及各组成成分( (子系统或模块子系统或模块) )之间的相互关系。之间的相互关系。(2)(2)详细设计详细设计 确定模块内部的算法和数据结构,产生描确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。述各模块程序过程的详细文档。2022-3-274总体设计的任务总体设计的任务n将系统划分成模块将系统划分成模块n决定每个模块的功能决定每个模块的功能n决定模块的调用关系决定模块的调用关系n决定模块的界面,即模块间传递的数据决定模块的界面,即模块间传递的数据2022-3-275软件总体设计基础软件总体设计基础(P67P67) 模块模块 模块就是程序对象的有名字的集合
3、或者说是一模块就是程序对象的有名字的集合或者说是一系列过程的总称系列过程的总称. . 软件结构软件结构 软件的结构就是软件内部各模块之间的关系表软件的结构就是软件内部各模块之间的关系表示示. . 总体设计总体设计 总体设计是软件总体结构的设计总体设计是软件总体结构的设计. . 详细设计详细设计 详细设计是软件模块内部的过程设计详细设计是软件模块内部的过程设计. .2022-3-276控制结构控制结构( (程序结构程序结构) )控制结构是软件模块间控制结构是软件模块间关系的表示关系的表示2022-3-277控制结构图示控制结构图示(P68)(P68)2022-3-278控制结构的层次规则控制结构
4、的层次规则v只有一个顶层只有一个顶层(0(0层层) )模块模块v 0 0层外任一模块都会在它的邻层存在一模块与层外任一模块都会在它的邻层存在一模块与它有关它有关v同层模块间不发生联系同层模块间不发生联系2022-3-279软件结构度量术语软件结构度量术语深深度度宽度宽度扇出扇出扇入扇入( (模块的模块的 层数层数) )( (同一层最大模块数同一层最大模块数) )( (一个模块一个模块 直接调用直接调用 的模块数的模块数) )( (调用一个给定模调用一个给定模 块的模块个数块的模块个数) )2022-3-2710结构图结构图(SC Structure Chart)(SC Structure Ch
5、art)结构图主要成分结构图主要成分(page 69page 69)模块模块用方框表示,方框中写有模块的名字,一个模用方框表示,方框中写有模块的名字,一个模块的名字应适当地反映这个模块的功能,这就在某种块的名字应适当地反映这个模块的功能,这就在某种程度上反映了块内联系;程度上反映了块内联系;调用调用从一个模块指向另一个模块的箭头表示前一模从一个模块指向另一个模块的箭头表示前一模块中含有对后一模块的调用;块中含有对后一模块的调用;数据数据调用箭头旁边的小箭头表示调用时从一个模块调用箭头旁边的小箭头表示调用时从一个模块传入送给另一个模块的数据,小箭头也指出了传送的传入送给另一个模块的数据,小箭头也
6、指出了传送的方向。方向。2022-3-2711结构图结构图(SC Structure Chart)(SC Structure Chart)SDSD方法在概要设计中的主要表达工具方法在概要设计中的主要表达工具约定:约定:编辑学生记录编辑学生记录读学生记录读学生记录学生数据学生数据无此学生无此学生学号学号不加区分的数据不加区分的数据数据信息数据信息控制信息控制信息2022-3-2712SC中的四种模块传入模块传入模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD协调模块协调模块E(d)EFF2022-3-2713SC中的选择调用ACBDA根据内根据内部判断决定部判断决定是否调用是否
7、调用B BA按另一判按另一判定结果选择调定结果选择调用用C或或D2022-3-2714SC中的循环调用ABCA根据内在的循环重根据内在的循环重复调用复调用B、C等模块等模块2022-3-2715结构图(SC)举例医院管理系统医院管理系统门诊门诊管理管理药房药房管理管理药库药库管理管理病房病房管理管理财务财务管理管理处处方方挂号挂号处理处理挂挂号号费费总总计计挂挂号号单单挂挂号号费费总总计计出库出库处理处理进药进药管理管理病历病历管理管理处方处方管理管理常规常规处理处理2022-3-2716结构图的优点的优点n结构图具有很高的可读性,容易使人理解,也结构图具有很高的可读性,容易使人理解,也容易和
8、用户讨论容易和用户讨论n结构图是自顶向下逐层扩展,能够表达总体一结构图是自顶向下逐层扩展,能够表达总体一级的软件结构级的软件结构n结构图既有严密性,又有灵活性结构图既有严密性,又有灵活性n结构图易于维护和修改结构图易于维护和修改2022-3-2717模块模块n模块是具有一定功能的可以用名词调用的程序模块是具有一定功能的可以用名词调用的程序语句集合,如:语句集合,如:n独立的汇编程序独立的汇编程序nCOBOL的段和节的段和节nPascal过程过程nFORTRAN的子程序的子程序n汇编的宏汇编的宏2022-3-2718模块化模块化(Modularity)(Modularity)模块化是好的软件设计
9、的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握从整体上把握 问题问题, ,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解题所需的总的工作分解分解2022-3-2719例例: :将问题将问题(P1+P2)(P1+P2)分解为分解为P1,P2P1,P2设函数设函数C(x)定义问题定义问题 x 的复杂程度的复杂程度函数函数E(x)确定解决问题确定解决问题 x 需要的工作量需要的工作量对问题对问题P1和和P2,如如: C(P1) C(P2)显然显然: E(P1) E(P2)有规律有规律:C(P1+P2) C(P1)+C
10、(P2) E(P1+P2) E(P1)+E(P2) 各个击破各个击破理论理论2022-3-2720模块度模块度成成本本或或工工作作量量模块模块数量数量软件总成本软件总成本集成成本集成成本成本成本/ /模块模块M最小成本区域最小成本区域2022-3-2721模块的特征模块的特征(P72P72) 抽象抽象 抽象是抽出事物的本质特性而暂时不考抽象是抽出事物的本质特性而暂时不考虑他们的细节虑他们的细节. . 信息隐蔽信息隐蔽 模块所包含的信息,不允许其它不需要模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信仅交换为
11、完成系统功能而必须交换的信息息。2022-3-2722模块独立性度量模块独立性度量(P73P73) 模块独立的概念模块独立的概念 模块独立是指该模块能完成一个相对独立的特模块独立是指该模块能完成一个相对独立的特定子功能定子功能, ,并且与其他模块之间的接口很简单并且与其他模块之间的接口很简单. .模块独立是软件设计模块化、抽象和信息隐蔽模块独立是软件设计模块化、抽象和信息隐蔽的直接结果的直接结果. . 独立的优势独立的优势 1.具有独立模块的软件比较容易开发具有独立模块的软件比较容易开发,接口简接口简化,有利于团队合作化,有利于团队合作. 2.独立的模块比较容易测试和维护独立的模块比较容易测试
12、和维护.2022-3-2723衡量独立性标准衡量独立性标准(P73P73) 聚合聚合 聚合是衡量一个模块内部各个元素之间聚合是衡量一个模块内部各个元素之间的彼此结合的紧密程度的彼此结合的紧密程度. . 耦合耦合 耦合是衡量不同模块之间相互依赖的紧耦合是衡量不同模块之间相互依赖的紧密程度密程度. . 2022-3-2724独立性理想目标独立性理想目标理想目标理想目标:低耦合、高聚合低耦合、高聚合2022-3-2725块内联系块内联系(聚合聚合)n偶然聚合偶然聚合n逻辑聚合逻辑聚合n时间聚合时间聚合n通信聚合通信聚合n顺序聚合顺序聚合n功能聚合功能聚合2022-3-2726偶然偶然聚合聚合( (巧
13、合巧合聚合聚合) )P PQ QS ST TMOVE A TO BMOVE A TO BREAD CARD FILEREAD CARD FILEMOVE C TO DMOVE C TO D模块模块T T中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差可理解性差, 可修改性差可修改性差例例: :2022-3-2727逻辑逻辑聚合聚合n把几种相关功能把几种相关功能(逻辑上相似的功能逻辑上相似的功能)组合在一模块内组合在一模块内,每次调用由传给模块每次调用由传给模块的参数确定执行哪种功能。的参数确定执行哪种功能。2022-3-2728逻辑逻辑聚合聚合模块模块ABCEFGABCE
14、FGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段2022-3-2729时间时间聚合聚合( (经典经典聚合聚合) )模块完成的功能必须在同一时间模块完成的功能必须在同一时间内执行,这些功能只因时间因素内执行,这些功能只因时间因素关联在一起。关联在一起。例如例如: :初始化系统模块、初始化系统模块、 系统结束模块、系统结束模块、 紧急故障处理模块等均是时间性聚合紧急故障处理模
15、块等均是时间性聚合 模块模块. .2022-3-2730通信聚合通信聚合一个模块内各个组成部分的处理动作一个模块内各个组成部分的处理动作都使用相同的输入数据或产生相同都使用相同的输入数据或产生相同的输出数据的输出数据. .2022-3-2731通信通信聚合聚合模块例模块例产生工资产生工资报表报表计算平均计算平均工资工资职工工资职工工资记录记录职工工资报职工工资报表表平均工资平均工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块2022-3-2732顺序聚合顺序聚合模块内各处理成分相关,模块内各处理成分相关,且必须以特定次序执行且必须以特定次序执行2022-3-2733顺序
16、聚合顺序聚合模块模块读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查成绩读入并审查成绩单单统计并打印成绩统计并打印成绩单单2022-3-2734功能功能聚合聚合n模块仅包括为完成某个功能所必须的所模块仅包括为完成某个功能所必须的所有成分。有成分。n模块所有成分共同完成一个功模块所有成分共同完成一个功 能,缺一不可能,缺一不可聚聚合合性最强性最强2022-3-2735模块间联系模块间联系(耦合耦合)(P73)n非直接耦合非直接耦合n数据耦合数据耦合n特征耦合特征耦合n控制耦合控制耦合n公共耦合公共耦合n内容耦合内容耦合2022-3-2736非非直接耦合直接耦合
17、两个模块没有直接关系两个模块没有直接关系( (模块模块1 1和模和模块块2)2),模块独立性最强。,模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 437数据耦合数据耦合 一模块调用另一模块时,被调用模一模块调用另一模块时,被调用模块的输入、输出都是简单的数据块的输入、输出都是简单的数据( (若干若干参数参数) )。 属松散耦合。属松散耦合。38数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额39特征特征耦合耦合 两个模块与同一个数据结构(包括两个模块与同一个数据结构(包括若干个数据项)有关。若干个数据项)有关。 40控制耦合控制耦合 一模块一
18、模块向下属模块传递的信息向下属模块传递的信息 ( (开开关量、标志等控制关量、标志等控制被调用模块决策的变被调用模块决策的变量量) ) 控制控制了被调用了被调用模块的模块的内部逻辑内部逻辑。41控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分 计算最高计算最高分分平均平均/ /最高最高? ?B B42控制耦合增加了理解和编程的复杂性,调控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加用模块必须知道被调模块的内部逻辑,增加了相互依赖了相互依赖(1)(
19、1)将被调用模块内的判定上移到调用模块中进将被调用模块内的判定上移到调用模块中进行行(2)(2)被调用模块分解成若干单一功能模块被调用模块分解成若干单一功能模块去除模块间控制耦合的方法去除模块间控制耦合的方法43改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩平均成绩最高成绩最高成绩计算最高分计算最高分B2B244 公共耦合公共耦合( (公共数据区耦合公共数据区耦合) )一组模块引用同一个公用数据区一组模块引用同一个公用数据区( (也称全也称全局数据区、公共数据环境局数据区、公共数据环境) )。公共数据区公共数据区指:指:n 全局数据结构全局数据结构n
20、 共享通讯区共享通讯区n 内存公共覆盖区等内存公共覆盖区等45公共耦合举例公共耦合举例公共数据区公共数据区C CC CB B模块模块A A、B B、C C间存在错综复杂的间存在错综复杂的联联系系46(1)(1)软件可理解性降低软件可理解性降低(2)(2)诊断错误困难诊断错误困难(3)(3)软件可维护性差软件可维护性差,(4)(4)软件可靠性差软件可靠性差( (公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施) )慎用公共数据区和全程变量慎用公共数据区和全程变量!公共耦合存在的问题公共耦合存在的问题47内容耦合内容耦合一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息
21、( (程序代码程序代码或数据或数据)最不好的耦合形式最不好的耦合形式 !ABAB模块模块代码重代码重叠叠Entry1 Entry1 多入口多入口模块模块2022-3-2748无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系图形表示耦合关系图形表示耦合关系2022-3-2749耦合强度依赖的因素:耦合强度依赖的因素:一模块对另一模块的引用一模块对另一模块的引用一模块向另一模块传递的数据量一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量一模块施加到另一模块的控制的数量模块间接口的复杂程度模块间接口的复杂程度20
22、22-3-2750模块间耦合的类型模块间耦合的类型 低低 无无直接耦合直接耦合耦耦 数据耦合数据耦合合合 标记耦合标记耦合性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱( (低耦合低耦合) )强强( (中耦合中耦合) )( (较强耦合较强耦合) )( (强耦合强耦合) )2022-3-2751耦合、聚耦合、聚合合与模块独立性关系与模块独立性关系n耦合与聚耦合与聚合合都是模块独立性的定性标准,都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合都反映模块独立性的良好程度。但耦合是直接的主导因素,聚是直接的主导因素,聚合合则辅助耦
23、合共则辅助耦合共同对模块独立性进行衡量。同对模块独立性进行衡量。2022-3-2752改进软件结构设计的指导原则改进软件结构设计的指导原则 (软件结构设计的启发式规则)(1)(1)评价软件初始结构评价软件初始结构, ,通过模块的分解与合并减通过模块的分解与合并减少模块之间的耦合度少模块之间的耦合度, ,增加聚合度增加聚合度(2)(2)模块功能的完善化模块功能的完善化(3)(3)将模块的作用限制在模块的将模块的作用限制在模块的控制范围内控制范围内(4)(4)深度、宽度、扇出和扇入适中深度、宽度、扇出和扇入适中(5)(5)模块大小适中模块大小适中(6)(6)降低模块接口的复杂性降低模块接口的复杂性
24、(7)(7)模块功能可预测模块功能可预测(8)(8)避免避免模块模块的病态连接,力争单入口,单出口的病态连接,力争单入口,单出口2022-3-2753(1)模块分解、合并,消除重复功能Q1Q1C CQ2Q2C CQ1Q1Q2Q2C C改进前改进前Q1Q1、Q2Q2功功能相似能相似X XY YQQX XY YX XY Y重复部分重复部分改进方法改进方法1 1:将将Q1Q1、Q2Q2合并为合并为QQ不可取不可取改进方法改进方法2 2:将将Q1Q1、Q2Q2的公共的公共部分分离出来部分分离出来2022-3-2754(2) (2) 模块功能的完善化模块功能的完善化完整的模块应包括三部分:完整的模块应包
展开阅读全文