软件结构设计课件

上传人:vc****3p 文档编号:240926703 上传时间:2024-05-18 格式:PPTX 页数:223 大小:1.51MB
返回 下载 相关 举报
软件结构设计课件_第1页
第1页 / 共223页
软件结构设计课件_第2页
第2页 / 共223页
软件结构设计课件_第3页
第3页 / 共223页
点击查看更多>>
资源描述
1软件工程软件工程贵州大学软贵州大学软 件件 学学 院院20192019年年5 5月月主讲人:主讲人:xxxx感谢你的观看2019年5月20日1软件工程贵州大学软 件 学 院2019年5月主讲人:xx2 第三章第三章 软件结构设计软件结构设计感谢你的观看2019年5月20日2 第三章 软件结构设计感谢你的观看20193承上启下q需求工程q需求建模方法感谢你的观看2019年5月20日3承上启下需求工程感谢你的观看2019年5月20日4RoadMap 维维护护 产产品品 提提交交 测测试试 编编码码 详详细细 设设计计 概概要要 设设计计 需需求求分分析析感谢你的观看2019年5月20日4RoadMap 感谢你的5本章要点q一、软件设计基础一、软件设计基础 q二、概要设计方法q三、设计模型q四、体系结构q五、概要设计过程q六、案例分析感谢你的观看2019年5月20日5本章要点一、软件设计基础 感谢你的观看2019年5月20日6设计的定义 软件设计解决的是软件设计解决的是“怎么做怎么做”的的问题。软件设计是将需求描述的问题。软件设计是将需求描述的“做什么做什么”问题变为一个实施方问题变为一个实施方案的创造性的过程。案的创造性的过程。感谢你的观看2019年5月20日6设计的定义 软件设计解决的是“怎么做”的问题。软件设计是7设计的分解过程图:设计的分解过程感谢你的观看2019年5月20日7设计的分解过程图:设计的分解过程感谢你的观看201984.1 4.1 软件设计的目标和目的软件设计的目标和目的 软件需求:解决软件需求:解决“做什么做什么”软件设计:解决软件设计:解决“怎么做怎么做”4.1.1 4.1.1 软件设计的任务软件设计的任务 问题结构问题结构(软件需求软件需求)软件结构软件结构 从软件需求规格说明书出发,形成软件从软件需求规格说明书出发,形成软件的具体设计方案。的具体设计方案。映射映射映射映射感谢你的观看2019年5月20日84.1 软件设计的目标和目的 软件需求:解决“做什么”将分析模型转换为软件设计将分析模型转换为软件设计将分析模型转换为软件设计将分析模型转换为软件设计数据数据字典字典数据数据流图流图E-RE-R图图状态变迁图状态变迁图加加加加工工工工规规规规约约约约控制规约控制规约控制规约控制规约数数据据对对描描 述述象象数数 据据 设设 计计体系结构设计体系结构设计接口设计接口设计过程设计过程设计分析模型分析模型设计模型设计模型9感谢你的观看2019年5月20日将分析模型转换为软件设计数据数据E-R图状态变迁图加工规约控101.1.软件的总体结构主要回答的问题软件的总体结构主要回答的问题u软件的组成部分软件的组成部分u软件的层次关系软件的层次关系u模块的内部处理逻辑模块的内部处理逻辑u模块之间的界面模块之间的界面感谢你的观看2019年5月20日101.软件的总体结构主要回答的问题软件的组成部分感谢你的观112.2.软件设计的问题软件设计的问题 FF工具工具工具工具 如何描述软件的总体结构如何描述软件的总体结构如何描述软件的总体结构如何描述软件的总体结构FF方法方法方法方法 用什么方法有问题结构导出用什么方法有问题结构导出用什么方法有问题结构导出用什么方法有问题结构导出 软件结构软件结构软件结构软件结构FF评估准则评估准则评估准则评估准则 什么样的软件结构是什么样的软件结构是什么样的软件结构是什么样的软件结构是 “最优的最优的最优的最优的”感谢你的观看2019年5月20日112.软件设计的问题 工具 如何描述软件的总体结构123.3.软件设计方法软件设计方法F结构化设计方法结构化设计方法(SD)(SD)F面向数据结构的设计方法面向数据结构的设计方法(JSD(JSD方法方法)F面向对象的设计方法面向对象的设计方法(OOD)(OOD)感谢你的观看2019年5月20日123.软件设计方法结构化设计方法(SD)感谢你的观看20134.4.软件设计分为两个阶段:软件设计分为两个阶段:(1)(1)概要设计概要设计(总体设计总体设计)确定软件的结构以及各组成成分确定软件的结构以及各组成成分(子系统或模块子系统或模块)之间的相互关系。之间的相互关系。(2)(2)详细设计详细设计 确定模块内部的算法和数据结构,确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文产生描述各模块程序过程的详细文档。档。感谢你的观看2019年5月20日134.软件设计分为两个阶段:(1)概要设计(总体设计)感14 总体设计的两项任务:总体设计的两项任务:总体设计的两项任务:总体设计的两项任务:划分出组成系统的物理元素划分出组成系统的物理元素划分出组成系统的物理元素划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档程序、文件、数据库、人工过程和文档程序、文件、数据库、人工过程和文档程序、文件、数据库、人工过程和文档 设计软件的结构设计软件的结构设计软件的结构设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。确定每个程序的模块组成及模块之间的相互关系。确定每个程序的模块组成及模块之间的相互关系。确定每个程序的模块组成及模块之间的相互关系。总体设计的过程(两个主要阶段):总体设计的过程(两个主要阶段):总体设计的过程(两个主要阶段):总体设计的过程(两个主要阶段):系统设计:确定系统的具体实现方案。系统设计:确定系统的具体实现方案。系统设计:确定系统的具体实现方案。系统设计:确定系统的具体实现方案。结构设计:确定软件结构。结构设计:确定软件结构。结构设计:确定软件结构。结构设计:确定软件结构。设想供选设想供选设想供选设想供选择的方案择的方案择的方案择的方案选选选选 取取取取 合合合合理的方案理的方案理的方案理的方案推荐最推荐最推荐最推荐最佳方案佳方案佳方案佳方案功能功能功能功能分解分解分解分解设计软设计软设计软设计软件结构件结构件结构件结构数据库数据库数据库数据库设设设设 计计计计制订测制订测制订测制订测试计划试计划试计划试计划书写书写书写书写文档文档文档文档数据流图数据流图数据流图数据流图 系统流程图系统流程图系统流程图系统流程图 组成系统的物理元素清单组成系统的物理元素清单组成系统的物理元素清单组成系统的物理元素清单 成本成本成本成本/效益分析效益分析效益分析效益分析 实现系统的进度计划实现系统的进度计划实现系统的进度计划实现系统的进度计划 系统说明系统说明系统说明系统说明 用户手册用户手册用户手册用户手册 测试计划测试计划测试计划测试计划 详细的实现计划详细的实现计划详细的实现计划详细的实现计划 数据库设计结果数据库设计结果数据库设计结果数据库设计结果 审查和审查和审查和审查和复复复复 审审审审感谢你的观看2019年5月20日14 总体设计的两项任务:划分出组成系统的物理元素-154.1 4.1 软件设计的原则软件设计的原则DavisDavis提出的软件设计原则:提出的软件设计原则:The design process should not suffer from“tunnel vision.”The design should be traceable to the analysis model.The design should not reinvent the wheel.The design should“minimize the intellectual distance”between the software and the problem at it exists in the real world.The design should exhibit uniformity and integration.感谢你的观看2019年5月20日154.1 软件设计的原则Davis提出的软件设计原则:感16The design should be structured to accommodate change.The design should be structured to degrade gentle,even when aberrant data,evens,or operating conditions are encountered.Design is not coding,coding is not design.The design should be assessed for quality as it is being created,not after the fact.The design should be reviewed to minimize conceptual(semantic)errors.感谢你的观看2019年5月20日16The design should be structu174.2 4.2 软件设计基础原理软件设计基础原理 1.1.软件结构软件结构 2.2.软件过程软件过程 3.3.模块化模块化 4.4.抽象抽象 5.5.信息隐蔽信息隐蔽 6.6.信息局部化信息局部化感谢你的观看2019年5月20日174.2 软件设计基础原理感谢你的观看2019年5月2018软件设计的概念和原理软件设计的概念和原理软件设计的概念和原理软件设计的概念和原理模块模块模块模块是数据说明、可执行语句等程序对象的说明。是数据说明、可执行语句等程序对象的说明。是数据说明、可执行语句等程序对象的说明。是数据说明、可执行语句等程序对象的说明。模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集 总起来组成一个整体,可以完成指定的功能,满足问题的功能。总起来组成一个整体,可以完成指定的功能,满足问题的功能。总起来组成一个整体,可以完成指定的功能,满足问题的功能。总起来组成一个整体,可以完成指定的功能,满足问题的功能。C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2)成本成本成本成本模块数目模块数目模块数目模块数目成本成本成本成本/模块模块模块模块接口成本接口成本接口成本接口成本最小成本区最小成本区最小成本区最小成本区 抽象抽象抽象抽象 信息隐蔽和局部化信息隐蔽和局部化信息隐蔽和局部化信息隐蔽和局部化 模块独立模块独立模块独立模块独立-每个模块完成一个相对独立的子每个模块完成一个相对独立的子每个模块完成一个相对独立的子每个模块完成一个相对独立的子 功能,并且和其他模块之间的关功能,并且和其他模块之间的关功能,并且和其他模块之间的关功能,并且和其他模块之间的关 系很简单。系很简单。系很简单。系很简单。耦合:耦合:耦合:耦合:一个软件结构内不同模块之间互连程度的度量。一个软件结构内不同模块之间互连程度的度量。一个软件结构内不同模块之间互连程度的度量。一个软件结构内不同模块之间互连程度的度量。数据耦合:数据耦合:数据耦合:数据耦合:模块之间通过参数交换数据信息。模块之间通过参数交换数据信息。模块之间通过参数交换数据信息。模块之间通过参数交换数据信息。控制耦合:控制耦合:控制耦合:控制耦合:模块之间传递的参数含有控制信息。模块之间传递的参数含有控制信息。模块之间传递的参数含有控制信息。模块之间传递的参数含有控制信息。公共环境耦合:公共环境耦合:公共环境耦合:公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。两个或多个模块通过一个公共数据环境相互作用。两个或多个模块通过一个公共数据环境相互作用。两个或多个模块通过一个公共数据环境相互作用。内容耦合:内容耦合:内容耦合:内容耦合:。设计原则:尽量使用数设计原则:尽量使用数设计原则:尽量使用数设计原则:尽量使用数据耦合,少用控制耦合,限据耦合,少用控制耦合,限据耦合,少用控制耦合,限据耦合,少用控制耦合,限制公共环境耦合,完全不用制公共环境耦合,完全不用制公共环境耦合,完全不用制公共环境耦合,完全不用内容耦合。内容耦合。内容耦合。内容耦合。模块化和软件成本模块化和软件成本模块化和软件成本模块化和软件成本数据耦合数据耦合数据耦合数据耦合 控制耦合控制耦合控制耦合控制耦合 公共环境耦合公共环境耦合公共环境耦合公共环境耦合 内容耦合内容耦合内容耦合内容耦合低低低低高高高高感谢你的观看2019年5月20日18软件设计的概念和原理模块是数据说明、可执行语句等程序对象19软件设计的概念和原理软件设计的概念和原理软件设计的概念和原理软件设计的概念和原理 -耦合耦合耦合耦合1.1.非直接耦合非直接耦合非直接耦合非直接耦合2.2.数据耦合数据耦合数据耦合数据耦合3.3.特征耦合特征耦合特征耦合特征耦合4.4.控制耦合控制耦合控制耦合控制耦合5.5.外部耦合外部耦合外部耦合外部耦合6.6.公共耦合公共耦合公共耦合公共耦合7.7.内容耦合内容耦合内容耦合内容耦合弱耦合弱耦合弱耦合弱耦合中耦合中耦合中耦合中耦合较强耦合较强耦合较强耦合较强耦合强耦合强耦合强耦合强耦合模块模块模块模块1 1模块模块模块模块2 2模块模块模块模块3 3模块模块模块模块4 4数据耦合数据耦合数据耦合数据耦合通过简单变量通过简单变量通过简单变量通过简单变量交换数据交换数据交换数据交换数据特征耦合特征耦合特征耦合特征耦合通过数据结通过数据结通过数据结通过数据结构交换数据构交换数据构交换数据构交换数据非直接耦合非直接耦合非直接耦合非直接耦合模块之间没有信息传递模块之间没有信息传递模块之间没有信息传递模块之间没有信息传递模块模块模块模块A A模块模块模块模块B B模块模块模块模块C C模块模块模块模块D D模块模块模块模块L L模块模块模块模块N N全局性数据结构全局性数据结构全局性数据结构全局性数据结构公共耦合公共耦合公共耦合公共耦合Flag=1?Flag=1?S1S1S2S2模块模块模块模块1 1控制耦合控制耦合控制耦合控制耦合模块之间传递模块之间传递模块之间传递模块之间传递的是控制信息的是控制信息的是控制信息的是控制信息T TF F全全全全 局局局局 性简单变量性简单变量性简单变量性简单变量外部耦合外部耦合外部耦合外部耦合模块模块模块模块A A 模块模块模块模块B B内容耦合内容耦合内容耦合内容耦合 访问其它模块的内部数据访问其它模块的内部数据访问其它模块的内部数据访问其它模块的内部数据 直接跳到其他模块内部执行直接跳到其他模块内部执行直接跳到其他模块内部执行直接跳到其他模块内部执行感谢你的观看2019年5月20日19软件设计的概念和原理-耦合非直接耦合弱耦合中耦20软件设计的概念和原理软件设计的概念和原理软件设计的概念和原理软件设计的概念和原理内聚:一个模块内各个元素彼此结合的紧密程度。内聚:一个模块内各个元素彼此结合的紧密程度。内聚:一个模块内各个元素彼此结合的紧密程度。内聚:一个模块内各个元素彼此结合的紧密程度。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。低内聚低内聚低内聚低内聚中内聚中内聚中内聚中内聚高内聚高内聚高内聚高内聚过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。通信内聚:模块中所有元素都使用同一个输入数据,和通信内聚:模块中所有元素都使用同一个输入数据,和通信内聚:模块中所有元素都使用同一个输入数据,和通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个或产生同一个或产生同一个或产生同一个 输出数据。输出数据。输出数据。输出数据。顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必 须顺序执行。须顺序执行。须顺序执行。须顺序执行。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。模块模块模块模块A A模块模块模块模块B B模块模块模块模块C CS1;S1;S2;S2;模块模块模块模块A A模块模块模块模块B B模块模块模块模块C C模块模块模块模块A A模块模块模块模块B B模块模块模块模块C C模块模块模块模块D D感谢你的观看2019年5月20日20软件设计的概念和原理内聚:一个模块内各个元素彼此结合的紧4.2.1 4.2.1 软件体系结构软件体系结构软件体系结构包括两部分软件体系结构包括两部分:(1)(1)过程构件过程构件(模块模块)的层次结构的层次结构(2)(2)数据构件数据构件21感谢你的观看2019年5月20日4.2.1 软件体系结构软件体系结构包括两部分:21感谢你控制结构控制结构(程序结构程序结构)控制结构是软件模块间控制结构是软件模块间关系的表示关系的表示22感谢你的观看2019年5月20日控制结构(程序结构)控制结构是软件模块间22感谢你的观看20控制结构图示:控制结构图示:23感谢你的观看2019年5月20日控制结构图示:23感谢你的观看2019年5月20日1.1.控制结构的层次规则控制结构的层次规则 只有一个顶层只有一个顶层(0(0层层)模块模块 0 0层外任一模块都会在它层外任一模块都会在它 的邻层存在一模块与它有关的邻层存在一模块与它有关 同层模块间不发生联系同层模块间不发生联系24感谢你的观看2019年5月20日1.控制结构的层次规则 只有一个顶层(0层)模块24感谢你252.2.软件结构度量术语软件结构度量术语深深度度宽度宽度扇出扇出扇入扇入(模块的模块的模块的模块的 层数层数层数层数)(同一层最大模块数同一层最大模块数)(一个模块一个模块 直接调用直接调用 的模块数的模块数)(调用一个给定模调用一个给定模调用一个给定模调用一个给定模 块的模块个数块的模块个数块的模块个数块的模块个数)感谢你的观看2019年5月20日252.软件结构度量术语深宽度扇出扇入(模块的(同一层最大264.2.2 4.2.2 软件过程软件过程软件过程用以描述各模软件过程用以描述各模块的处理细节块的处理细节(算法的详算法的详细描述细描述),包括对下层模,包括对下层模块控制的操作细节。块控制的操作细节。感谢你的观看2019年5月20日264.2.2 软件过程软件过程用以描述各模感谢你的观看2274.2.3 4.2.3 模块化模块化 (Modularity)模块化是好的软件设计的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握从整体上把握 问题问题,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解题所需的总的工作分解分解感谢你的观看2019年5月20日274.2.3 模块化 (Modularity)模块化是28例例:将问题将问题(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(P2)E(P1+P2)E(P1)+E(P2)各个击破各个击破理论理论感谢你的观看2019年5月20日28例:将问题(P1+P2)分解为P1,P2感谢你的观看2029模块化和软件成本模块化和软件成本成成本本或或工工作作量量模块数量模块数量软件总成本软件总成本集成成本集成成本成本成本/模块模块MM最小成本区域最小成本区域最小成本区域最小成本区域感谢你的观看2019年5月20日29模块化和软件成本成本或工作量模块数量软件总成本集成成本成304.2.4 4.2.4 抽象抽象(Abstraction)nnn软件系统进行模块设计时,可有不同的软件系统进行模块设计时,可有不同的软件系统进行模块设计时,可有不同的软件系统进行模块设计时,可有不同的抽象层次。抽象层次。抽象层次。抽象层次。nnn在最高的抽象层次上,可以使用问题所在最高的抽象层次上,可以使用问题所在最高的抽象层次上,可以使用问题所在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。处环境的语言概括地描述问题的解法。处环境的语言概括地描述问题的解法。处环境的语言概括地描述问题的解法。nnn在较低的抽象层次上,则采用过程化的在较低的抽象层次上,则采用过程化的在较低的抽象层次上,则采用过程化的在较低的抽象层次上,则采用过程化的方法方法方法方法感谢你的观看2019年5月20日304.2.4 抽象(Abstraction)软件系统进行模314.2.4 4.2.4 抽象抽象(Abstraction)(1)(1)过程的抽象过程的抽象过程的抽象过程的抽象在软件工程中,从系统定义到实现,每进展一在软件工程中,从系统定义到实现,每进展一在软件工程中,从系统定义到实现,每进展一在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程步都可以看做是对软件解决方法的抽象化过程步都可以看做是对软件解决方法的抽象化过程步都可以看做是对软件解决方法的抽象化过程的一次细化。的一次细化。的一次细化。的一次细化。在软件需求分析阶段,用在软件需求分析阶段,用在软件需求分析阶段,用在软件需求分析阶段,用“问题所处环境问题所处环境问题所处环境问题所处环境的为大家所熟悉的术语的为大家所熟悉的术语的为大家所熟悉的术语的为大家所熟悉的术语”来描述软件的解决方来描述软件的解决方来描述软件的解决方来描述软件的解决方法。法。法。法。在从概要设计到详细设计的过程中,抽象在从概要设计到详细设计的过程中,抽象在从概要设计到详细设计的过程中,抽象在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低化的层次逐次降低。当产生源程序时到达最低化的层次逐次降低。当产生源程序时到达最低化的层次逐次降低。当产生源程序时到达最低抽象层次。抽象层次。抽象层次。抽象层次。感谢你的观看2019年5月20日314.2.4 抽象(Abstraction)(1)过程的324.2.4 4.2.4 抽象抽象(Abstraction)(2)(2)数据抽象数据抽象数据抽象数据抽象在不同层次上描述数据对象的细节,定在不同层次上描述数据对象的细节,定在不同层次上描述数据对象的细节,定在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。义与该数据对象相关的操作。义与该数据对象相关的操作。义与该数据对象相关的操作。感谢你的观看2019年5月20日324.2.4 抽象(Abstraction)(2)数据抽象334.2.5 4.2.5 信息隐蔽信息隐蔽(Information Hiding)由由 parnas 方法提倡的方法提倡的信息隐蔽信息隐蔽是指,是指,每个模块的实现细节对于其它模块来每个模块的实现细节对于其它模块来说是隐蔽的。说是隐蔽的。也就是说,模块中所包也就是说,模块中所包含的信息(包括数据和过程)不允许含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。其它不需要这些信息的模块使用。感谢你的观看2019年5月20日334.2.5 信息隐蔽(Information Hidi344.2.5 4.2.5 信息隐蔽信息隐蔽(Information Hiding)即模块所包含的信息,不允即模块所包含的信息,不允许其它不需要这些信息的模块访许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完问,独立的模块间仅仅交换为完成系统功能而必须交换的信息成系统功能而必须交换的信息。感谢你的观看2019年5月20日344.2.5 信息隐蔽(Information Hidi35软件质量因素:软件质量因素:可维护性可维护性 可靠性可靠性 可理解性可理解性 效率效率信息隐蔽的目的:信息隐蔽的目的:提高模块的独立性,减少修提高模块的独立性,减少修改或维护时的影响面。改或维护时的影响面。感谢你的观看2019年5月20日35软件质量因素:可维护性感谢你的观看2019年5月20日364.2.6 4.2.6 信息局部化信息局部化 把关系密切的软件元素物理地放得把关系密切的软件元素物理地放得彼此靠近。彼此靠近。优点:可维护性好优点:可维护性好 可靠性好可靠性好 可理解性好可理解性好感谢你的观看2019年5月20日364.2.6 信息局部化 把关系密切的软件元素物理地放得374.3 4.3 模块的独立性模块的独立性4.3.1 4.3.1 模块独立性的概念模块独立性的概念模块独立的含义:模块独立的含义:模块完成独立的功能模块完成独立的功能符合信息隐蔽和信息局部化原则符合信息隐蔽和信息局部化原则模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小感谢你的观看2019年5月20日374.3 模块的独立性4.3.1 模块独立性的概念感谢你384.3.2 4.3.2 模块独立性的度量模块独立性的度量 模块独立性取决于模块的模块独立性取决于模块的 内部和外部特征。内部和外部特征。SD方法提出的定性的度量标准:方法提出的定性的度量标准:模块之间的模块之间的耦合性耦合性 模块自身的模块自身的内聚性内聚性感谢你的观看2019年5月20日384.3.2 模块独立性的度量 模块独立性取决于模39用三个封装级别表示的软件结构用三个封装级别表示的软件结构原始原始原始原始代码行代码行代码行代码行0 00 0级级级级程序模型程序模型程序模型程序模型(子程序子程序子程序子程序或过程或过程或过程或过程)1 11 1级级级级2 22 2级级级级类类类类/对象结构对象结构对象结构对象结构感谢你的观看2019年5月20日39用三个封装级别表示的软件结构原始0级程序模型1级2级类/40结构设计(或结构设计(或1 1级)标准,用以管理每一对级)标准,用以管理每一对封装级别的元素之间的相互关系封装级别的元素之间的相互关系内聚内聚内聚内聚结构化设计结构化设计结构化设计结构化设计0 00 0级结构体级结构体级结构体级结构体(代码行)(代码行)(代码行)(代码行)1 11 1级结构体级结构体级结构体级结构体(程序)(程序)(程序)(程序)TOTO:FROMFROM:0 00 0级结构体级结构体级结构体级结构体(代码行)(代码行)(代码行)(代码行)1 11 1级结构体级结构体级结构体级结构体(程序)(程序)(程序)(程序)输出端输出端输出端输出端耦合性耦合性耦合性耦合性内聚内聚内聚内聚是指度量一个给定的程序内的多行代码的单一是指度量一个给定的程序内的多行代码的单一是指度量一个给定的程序内的多行代码的单一是指度量一个给定的程序内的多行代码的单一功能性,以确定是否达到该程序所要实现的目的。功能性,以确定是否达到该程序所要实现的目的。功能性,以确定是否达到该程序所要实现的目的。功能性,以确定是否达到该程序所要实现的目的。耦合性耦合性耦合性耦合性用来度量程序之间联系的次数和强度用来度量程序之间联系的次数和强度用来度量程序之间联系的次数和强度用来度量程序之间联系的次数和强度感谢你的观看2019年5月20日40结构设计(或1级)标准,用以管理每一对封装级别的元素之41上表的扩展:包括上表的扩展:包括2 2级封装(所有的类)级封装(所有的类)内聚内聚内聚内聚结构化设计结构化设计结构化设计结构化设计0 00 0级结构体级结构体级结构体级结构体(代码行)(代码行)(代码行)(代码行)1 11 1级结构体级结构体级结构体级结构体(程序)(程序)(程序)(程序)TOTO:FROMFROM:0 00 0级结构体级结构体级结构体级结构体(代码行)(代码行)(代码行)(代码行)1 11 1级结构体级结构体级结构体级结构体(程序)(程序)(程序)(程序)输出端输出端输出端输出端耦合性耦合性耦合性耦合性2 22 2级结构体级结构体级结构体级结构体 (类)(类)(类)(类)类的耦合类的耦合类的耦合类的耦合2 22 2级结构体级结构体级结构体级结构体 (类)(类)(类)(类)类的内聚类的内聚类的内聚类的内聚类的内聚类的内聚类的内聚类的内聚是模仿了一个程序的内聚。是模仿了一个程序的内聚。是模仿了一个程序的内聚。是模仿了一个程序的内聚。类的耦合性类的耦合性类的耦合性类的耦合性是一种度量类之间联系的次数和强度是一种度量类之间联系的次数和强度是一种度量类之间联系的次数和强度是一种度量类之间联系的次数和强度的方法。的方法。的方法。的方法。感谢你的观看2019年5月20日41上表的扩展:包括2级封装(所有的类)内聚结构化设计0级结421.1.模块独立性的度量之一模块独立性的度量之一:耦合性耦合性 模块间相对独立性(相互依模块间相对独立性(相互依赖程度)的度量赖程度)的度量 耦合性越高,模块独立性越弱耦合性越高,模块独立性越弱感谢你的观看2019年5月20日421.模块独立性的度量之一:耦合性 模块间相对独立43无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系感谢你的观看2019年5月20日43无耦合没有依赖关系松散耦合有紧密耦合有感谢你的观看44 耦合强度依赖的因素:耦合强度依赖的因素:一模块对另一模块的引用一模块对另一模块的引用一模块向另一模块传递的数据量一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量一模块施加到另一模块的控制的数量模块间接口的复杂程度模块间接口的复杂程度感谢你的观看2019年5月20日44 耦合强度依赖的因素:感谢你的观看2019年5月20日45模块间耦合的类型模块间耦合的类型 低低 无直接耦合无直接耦合耦耦 数据耦合数据耦合合合 标记耦合标记耦合性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱(低耦合低耦合)强强(中耦合中耦合)(较强耦合较强耦合)(强耦合强耦合)感谢你的观看2019年5月20日45模块间耦合的类型 低 无直接耦合模46(1)(1)无直接耦合无直接耦合 两个模块没有直接关系两个模块没有直接关系(模块模块1 1和和模块模块2)2),模块独立性最强。,模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 4感谢你的观看2019年5月20日46(1)无直接耦合 两个模块没有直接关系(模块1和模块(2)(2)数据耦合数据耦合 一模块调用另一模块一模块调用另一模块时,被调用模块的输入、时,被调用模块的输入、输出都是简单的数据输出都是简单的数据(若干若干参数参数)。属松散耦合。属松散耦合。47感谢你的观看2019年5月20日(2)数据耦合 一模块调用另一模块时,被调用模块的数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额48感谢你的观看2019年5月20日数据耦合举例开发票计算水费单价金额48感谢你的观看2019年(3)3)标记耦合标记耦合(特征耦合特征耦合)如两个模块通过传递如两个模块通过传递数据结构数据结构(不是简单数据,而是记录、数组不是简单数据,而是记录、数组等等)加以联系,或都与一个加以联系,或都与一个数据数据结构结构有关系有关系,则称这两个模块则称这两个模块间存在标记偶合。间存在标记偶合。49感谢你的观看2019年5月20日(3)标记耦合(特征耦合)如两个模块通过传递数据结构49感标记耦合举例标记耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况“住户情况住户情况”是一个是一个数据结构数据结构,图中模块都图中模块都与此数据结构有关与此数据结构有关.“计算水费计算水费”和和“计算电费计算电费”本无关本无关,由于由于引用了此数据结构产生依赖关系引用了此数据结构产生依赖关系,它们之间它们之间也是标记偶合也是标记偶合.50感谢你的观看2019年5月20日标记耦合举例计算水电费计算水费计算电费住户情况水费电费住户情将标记耦合修改为数据耦合举例将标记耦合修改为数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费51感谢你的观看2019年5月20日将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月本(4)(4)控制耦合控制耦合 一模块向下属模块传递的信一模块向下属模块传递的信息息 (开关量、标志等控制被开关量、标志等控制被调用模块决策的变量调用模块决策的变量)控制控制了被调用模块的内部逻辑。了被调用模块的内部逻辑。52感谢你的观看2019年5月20日(4)控制耦合 一模块向下属模块传递的信息(开关量、标志控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/最高最高(控制信号控制信号)成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/最高最高?B B53感谢你的观看2019年5月20日控制耦合举例A计算平均分B平均/最高成绩读入分数输出结果计算控制耦合增加了理解和编程的复控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:去除模块间控制耦合的方法:(1)(1)将被调用模块内的判定上移到调将被调用模块内的判定上移到调 用模块中进行用模块中进行(2)(2)被调用模块分解成若干单一功被调用模块分解成若干单一功 能模块能模块54感谢你的观看2019年5月20日控制耦合增加了理解和编程的复54感谢你的观看2019年5月2改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B255感谢你的观看2019年5月20日改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算(5)(5)外部耦合外部耦合一组模块均与同一外部环境关联一组模块均与同一外部环境关联(例如例如,I/O,I/O模块与特定的设备、模块与特定的设备、格式和通信协议相关联格式和通信协议相关联),),它们之它们之间便存在外部耦合。间便存在外部耦合。外部偶合必不可少外部偶合必不可少,但这种模块但这种模块数目应尽量少。数目应尽量少。56感谢你的观看2019年5月20日(5)外部耦合一组模块均与同一外部环境关联56感谢你的观看(6)(6)公共耦合公共耦合(公共数据区耦合公共数据区耦合)一组模块引用同一个公用数据区一组模块引用同一个公用数据区(也称全局数据区、公共数据环境也称全局数据区、公共数据环境)。公共数据区公共数据区指:指:全局数据结构全局数据结构 共享通讯区共享通讯区 内存公共覆盖区等内存公共覆盖区等57感谢你的观看2019年5月20日(6)公共耦合(公共数据区耦合)一组模块引用同一个公用数据公共耦合举例公共耦合举例公共数据区公共数据区C CB B模块模块模块模块A AA A、B BB B、C CC C间存在错综复杂的联系间存在错综复杂的联系间存在错综复杂的联系间存在错综复杂的联系58感谢你的观看2019年5月20日公共耦合举例公共数据区CB模块A、B、C间存在错综复杂的联(1)(1)软件可理解性降低软件可理解性降低(2)(2)诊断错误困难诊断错误困难(3)(3)软件可维护性差,软件可维护性差,(4)(4)软件可靠性差软件可靠性差(公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施)慎用公共数据区和全程变量慎用公共数据区和全程变量!公共耦合存在的问题:公共耦合存在的问题:59感谢你的观看2019年5月20日(1)软件可理解性降低公共耦合存在的问题:59感谢你的观看2(7)(7)内容耦合内容耦合一模块直接访问一模块直接访问一模块直接访问一模块直接访问另一模块的内部另一模块的内部另一模块的内部另一模块的内部信息信息信息信息 (程序代码程序代码程序代码程序代码或数据)或数据)或数据)或数据)最不好的耦合形式最不好的耦合形式最不好的耦合形式最不好的耦合形式 !AABBAABB模块代码重叠模块代码重叠模块代码重叠模块代码重叠Entry1Entry1 Entry1Entry1 多入口模块多入口模块多入口模块多入口模块60感谢你的观看2019年5月20日(7)内容耦合一模块直接访问最不好的耦合形式!ABA模块化设计的原则和目标耦合是影响软件复杂程度和设计耦合是影响软件复杂程度和设计质量的重要因素质量的重要因素目标目标:建立模块间耦合度尽可能:建立模块间耦合度尽可能松散的系统松散的系统61感谢你的观看2019年5月20日模块化设计的原则和目标耦合是影响软件复杂程度和设计61感谢你如何降低模块间耦合度如何降低模块间耦合度:(1)(1)尽量使用数据耦合尽量使用数据耦合少用控制耦合少用控制耦合限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合坚决避免使用内容耦合(2)(2)降低接口的复杂性降低接口的复杂性62感谢你的观看2019年5月20日如何降低模块间耦合度:(1)尽量使用数据耦合62感谢你的观2.2.模块独立性的度量之二:内聚性模块独立性的度量之二:内聚性 一个模块内部元素在功能上相互一个模块内部元素在功能上相互 关联的强度关联的强度 设计目标:高内聚设计目标:高内聚 (模块在软件过程中模块在软件过程中 完成单一的任务完成单一的任务)63感谢你的观看2019年5月20日2.模块独立性的度量之二:内聚性 一个模块内部元素在功能模块的内聚性类型模块的内聚性类型低低 偶然内聚偶然内聚 0 0分分 逻辑内聚逻辑内聚 1 1分分 内内 时间内聚时间内聚 3 3分分 聚聚 过程内聚过程内聚 5 5分分 性性 通信内聚通信内聚 7 7分分 信息内聚信息内聚 9 9分分 高高 功能内聚功能内聚1010分分模模块块独独立立性性弱弱(功能分散功能分散)强强(功能单一功能单一)64感谢你的观看2019年5月20日模块的内聚性类型低 偶然内聚 0分模弱(功能分散)强(低内聚模块低内聚模块举例举例 为工程分析包执行错误处理的模块,当计算为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成的数据超出预定义的边界时调用该模块,它完成下列任务:下列任务:(1 1)根据初始计算的数据计算补充数据;)根据初始计算的数据计算补充数据;(2 2)在用户的工作站上生成错误报告;)在用户的工作站上生成错误报告;(3 3)执行用户要求的跟踪计算;)执行用户要求的跟踪计算;(4 4)更新数据库;)更新数据库;(5 5)使选择后续处理的菜单有效。)使选择后续处理的菜单有效。虽然上述任务是松散相关的,但每一项虽然上述任务是松散相关的,但每一项都是独立的功能实体,最好作为独立的模都是独立的功能实体,最好作为独立的模块完成块完成。65感谢你的观看2019年5月20日低内聚模块举例 为工程分析包执行错误处理的模块,当计(1)(1)偶然内聚偶然内聚(巧合内聚巧合内聚)模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差,可理解性差,可修改性差可修改性差例例:66感谢你的观看2019年5月20日(1)偶然内聚(巧合内聚)模块内各部分间无联系ABCMM(2)(2)逻辑内聚逻辑内聚 把几种相关功能(逻辑上相似把几种相关功能(逻辑上相似 的功能)组合在一模块内,每的功能)组合在一模块内,每次调用由传给模块的参数确定次调用由传给模块的参数确定执行哪种功能。执行哪种功能。67感谢你的观看2019年5月20日(2)逻辑内聚 把几种相关功能(逻辑上相似67感谢你的观看逻辑内聚模块ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点缺点缺点:增强了耦合程度增强了耦合程度增强了耦合程度增强了耦合程度(控制耦合控制耦合控制耦合控制耦合)不易修改,效率低不易修改,效率低不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段68感谢你的观看2019年5月20日逻辑内聚模块ABCEFGABCEFGA1B1C1EFG模块内(3)(3)时间内聚时间内聚(经典内聚经典内聚)模块完成的功能必须在同一时间模块完成的功能必须在同一时间内执行,这些功能只因时间因素内执行,这些功能只因时间因素关联在一起。关联在一起。例如例如:初始化系统模块、初始化系统模块、系统结束模块、系统结束模块、紧急故障处理模块等均是时间性聚合紧急故障处理模块等均是时间性聚合 模块模块.69感谢你的观看2019年5月20日(3)时间内聚(经典内聚)模块完成的功能必须在同一时间69(4)过程内聚(顺序性组合)模块内各处理成分相关,模块内各处理成分相关,且必须以特定次序执行且必须以特定次序执行70感谢你的观看2019年5月20日(4)过程内聚(顺序性组合)模块内各处理成分相关,70感谢过程内聚模块读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查读入并审查读入并审查读入并审查成绩单成绩单成绩单成绩单统计并打印统计并打印统计并打印统计并打印成绩单成绩单成绩单成绩单71感谢你的观看2019年5月20日过程内聚模块读入审查统计打印读入并审查成绩单统计并打印成绩单(5)通信内聚 模块内各部分使用相同的输模块内各部分使用相同的输入数据,或产生相同的输出入数据,或产生相同的输出结果结果72感谢你的观看2019年5月20日(5)通信内聚 模块内各部分使用相同的输入数据,或产生相同通信内聚模块例产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均平均平均工资工资工资工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块73感谢你的观看2019年5月20日通信内聚模块例产生工资报表计算平均工资职工工资记录职工工资报(6)(6)信息内聚信息内聚模块完成多个功能,各功能模块完成多个功能,各功能都在同一数据结构上操作,都在同一数据结构上操作,每一功能有唯一入口。每一功能有唯一入口。74感谢你的观看2019年5月20日(6)信息内聚模块完成多个功能,各功能74感谢你的观看20信息内聚模块符符 号号 表表查找查找 登录登录 删除删除修改修改几个加工同时引用一个共同的数据几个加工同时引用一个共同的数据75感谢你的观看2019年5月20日信息内聚模块符 号 表查找登录删除修改几个加工同时引用一(7)(7)功能内聚功能内聚 模块仅包括为完成某个功能所必模块仅包括为完成某个功能所必须的所有成分。须的所有成分。(模块所有成分共同完成一个功模块所有成分共同完成一个功 能,缺一不可能,缺一不可 )内聚性最强内聚性最强76感谢你的观看2019年5月20日(7)功能内聚 模块仅包括为完成某个功能所必须的所有成分。内聚与耦合密切相关,同其内聚与耦合密切相关,同其它模块强耦合的模块意味者它模块强耦合的模块意味者弱内聚,强内聚模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合与其它模块间松散耦合.设计目标:设计目标:力争强内聚、弱耦合力争强内聚、弱耦合77感谢你的观看2019年5月20日内聚与耦合密切相关,同其77感谢你的观看2019年5月20日783.3.耦合、内聚与模块独立性关系耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的耦合与内聚都是模块独立性的定性标准,都反映模块独立性定性标准,都反映模块独立性的良好程度。但耦合是直接的的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共主导因素,内聚则辅助耦合共同对模块独立性进行衡量。同对模块独立性进行衡量。感谢你的观看2019年5月20日783.耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的79本章要点q一、软件设计基础 q二、概要设计方法二、概要设计方法q三、设计模型q四、体系结构q五、概要设计过程q六、案例分析感谢你的观看2019年5月20日79本章要点一、软件设计基础 感谢你的观看2019年5月2080设计方法q结构化的设计方法结构化的设计方法q面向对象的设计方法面向对象的设计方法感谢你的观看2019年5月20日80设计方法结构化的设计方法感谢你的观看2019年5月20日81结构化的设计方法p功能模块划分设计功能模块划分设计p面向数据流设计面向数据流设计p面向事务设计面向事务设计p输入输入/输出设计输出设计 感谢你的观看2019年5月20日81结构化的设计方法功能模块划分设计感谢你的观看2019年582功能模块划分设计功能模块划分设计 这个设计方法是根据功能进行分解,这个设计方法是根据功能进行分解,分解出一些模块,设计者从高层到分解出一些模块,设计者从高层到低层一层一层进行分解,每层都有低层一层一层进行分解,每层都有一定的关联关系,每个模块具有特一定的关联关系,每个模块具有特定、明确的功能,每个模块的功能定、明确的功能,每个模块的功能是相对独立的,同时是可以集成的是相对独立的,同时是可以集成的 感谢你的观看2019年5月20日82功能模块划分设计感谢你的观看2019年5月20日83功能模块划分设计例子功能模块划分设计例子感谢你的观看2019年5月20日83功能模块划分设计例子感谢你的观看2019年5月20日84面向数据流设计面向数据流设计 面向数据流的设计是基于外部的数据面向数据流的设计是基于外部的数据结构进行设计的一种方法。结构进行设计的一种方法。感谢你的观看2019年5月20日84面向数据流设计 面向数据流的设计是基于外部的数据结构进853.2 概要设计(总体设计)概要设计确定:软件系统的结构软件系统的结构各模块功能及模块间联系各模块功能及模块间联系(接口接口)表示软件结构的图形工具表示软件结构的图形工具结构图结构图层次图和层次图和HIPO图图感谢你的观看2019年5月20日853.2 概要设计(总体设计)概要设计确定:感谢你的观看86概要设计的任务与步骤概要设计的任务与步骤概要设计的过程概要设计的过程 :(1)(1)设想可能的方案设想可能的方案(2)(2)选取合理的方案选取合理的方案(3)(3)推荐最佳方案推荐最佳方案(4)(4)功能分解功能分解(5)(5)设计软件结构设计软件结构(6)(6)数据库设计数据库设计(7)(7)制定测试计划制定测试计划(8)(8)编写文档编写文档(9)(9)审查与复审审查与复审感谢你的观看2019年5月20日86概要设计的任务与步骤概要设计的过程:感谢你的观看201873.2.1 结构图(SC Structure Chart)SDSD方法在概要设计中的主要表达工具方法在概要设计中的主要表达
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!