版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
授课教师:梁丽软件工程西华大学数学与计算机学院授课教师:梁丽软件工程西华大学数学与计算机学院1第四章 总体设计内容要点:
本章介绍软件设计的基本原理,优化软件结构的准则以及结构化程序设计方法。教学重点:软件设计的基本任务内聚性、耦合性的划分软件结构、模块的影响范围、模块的控制范围软件结构设计的优化准则表示软件结构的图形工具教学难点:将变换流或事务流类型的数据流图转化成软件结构将一个复杂型数据流图转化成软件结构图并优化第四章 总体设计内容要点:2本章的知识结构图本章的知识结构图3 总体目标——根据DFD
,确定最恰当实现软件功能、性能要求集合的软件系统结构,实现算法和数据结构。(Howtodo?) 过程——从抽象的需求规格向具体的程序与数据集合进行变换的过程。 结果——各种软件设计说明书。 设计方法——结构化设计(SD)方法,面向数据结构的 设计方法和面向对象的设计方法等。 结构化软件设计可分为总体设计和详细设计两个阶段,总体设计确定系统的整体模块结构,但这时每个模块仍然处于“黑盒子”级,描述这些黑盒子里的具体内容是详细设计阶段的任务。软件设计 总体目标——根据DFD,确定最恰当实现软件功能、性能要求4根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计系统结构设计过程设计界面设计软件设计的目标根据用信息域表示的软件需求,以及功能和性能需求,进行软件设计5将分析模型转换为设计数据词典数据流图实体关系图状态转换图加工规格说明控制规格说明数据对象描述过程设计接口设计体系结构设计数据设计将分析模型转换为设计数据词典数据流图实体关系图状态转换图加工6数据设计将实体–关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份转换成软件的过程性描述。数据设计将实体–关系图中描述的对象和关系,以及数据词典中7软件设计的两个阶段:(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。将软件需求转化为数据结构和软件的系统结构。(2)详细设计
确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。软件设计的两个阶段:(1)概要设计(总体设计)8软件设计过程1.制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:
软件设计过程1.制定规范9阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序根据目标确定最合适的设计方法规定设计文档的编制标准规定编码的信息形式,与硬件,操作系统的接口规约,命名规则阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的102.软件系统结构的总体设计基于功能层次结构建立系统。采用某种设计方法,将系统按功能划分成模块的层次结构确定每个模块的功能建立与已确定的软件需求的对应关系确定模块间的调用关系确定模块间的接口评估模块划分的质量2.软件系统结构的总体设计基于功能层次结构建立系统。11数据结构和数据库设计:对于大型数据处理的软件系统是重要的。在概要设计阶段,数据结构设计宜采用抽象的数据类型,数据库设计对应于数据库的逻辑设计。数据结构和数据库设计:对于大型数据处理的软件系统是重要的。在123.处理方式设计确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式
周转时间响应时间吞吐量精度确定外部信号的接收发送形式3.处理方式设计确定为实现系统的功能需求所必需的算法,评估134.数据结构设计确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包)4.数据结构设计确定软件涉及的文件系统的结构以及数据库的模14限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计
防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能限制和确定各个数据设计决策的影响范围15
一致性设计:保证软件运行过程中所使用的数据的类型和取值范围不变在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。
一致性设计:165.可靠性设计可靠性设计也叫做质量设计在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。5.可靠性设计可靠性设计也叫做质量设计176.编写概要设计阶段的文档概要设计阶段完成时应编写以下文档:
概要设计说明书数据库设计说明书用户手册制定初步的测试计划6.编写概要设计阶段的文档概要设计阶段完成时应编写以下文档:187.概要设计评审可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现
7.概要设计评审可追溯性:确认该设计是否复盖了所有已确定的软19实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征实用性:确认该设计对于需求的解决方案是否实用20各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程..等进行评估各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是21在详细设计过程中,需要完成的工作是:确定软件各个组成部分内的算法以及各部分的内部数据组织选定某种过程的表达形式来描述各种算法。进行详细设计的评审详细设计在详细设计过程中,需要完成的工作是:详细设计22
1.软件结构2.软件过程3.模块化4.抽象5.信息隐蔽6.信息局部化§4.2软件设计的概念和原理§4.2软件设计的概念和原理234.2.1软件体系结构软件体系结构包括两部分:(1)过程构件(模块)的层次结构(2)数据构件4.2.1软件体系结构软件体系结构包括两部分:24控制结构(程序结构)控制结构是软件模块间关系的表示控制结构(程序结构)控制结构是软件模块间25控制结构图示:控制结构图示:261.控制结构的层次规则
只有一个顶层(0层)模块0层外任一模块都会在它的邻层存在一模块与它有关同层模块间不发生联系1.控制结构的层次规则只有一个顶层(0层)模块274.2.2软件过程软件过程用以描述各模块的处理细节(算法的详细描述),包括对下层模块控制的操作细节。4.2.2软件过程软件过程用以描述各模28宽度扇出扇入(调用一个给定模块的模块个数)深度(模块的层数)(同一层最大模块数)(一个模块直接调用的模块数)2.软件结构度量术语宽度扇出扇入(调用一个给定模深(模块的(同一层最大模块数)29软件设计的概念与原理
软件设计的基本原理是衡量软件设计的技术质量的标准,共有4条:①模块化:即自顶向下逐层将软件系统划分成若干模块。
软件设计的概念与原理 软件设计的基本原理是衡量软件设计的技术30模块化是好的软件设计的一个基本准则
高层模块从整体上把握问题,隐蔽细节复杂问题较小问题
分解可减小解题所需的总的工作模块化是好的软件设计的一个基本准则31
该标准是软件解决复杂问题所具备的手段,其依据是适当分解软件系统可降低复杂性,减少开发工作量,降低开发成本、提高软件生产率。但是模块化时应注意接口代价,因为模块划分越多,模块内的工作量虽然减少,但模块间接口的工作量增加。该标准是软件解决复杂问题所具备的手段,其依据是适32软件设计的概念与原理软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。
把问题/子问题的分解与软件开发中的系统/子系统或系统/模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。软件设计的概念与原理软件系统的模块化是指整个软件被划分成33例:将问题(P1+P2)分解为P1,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)
"各个击破"理论例:将问题(P1+P2)分解为P1,P234软件设计的概念与原理②抽象:即抽出事物本质的共同的特性而不考虑细节,不考虑其他因素。 该标准与逐步求精、模块化密切相关,它是划分模块过程中的思维原则。软件设计的每一步都是对软件解决方法的抽象层次的一次细化。软件设计的概念与原理②抽象:即抽出事物本质的共同的特性而不35软件设计的概念与原理软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。软件设计的概念与原理软件系统进行模块设计时,可有不同的抽36抽象原则应用举例WindowsNT一体化的I/O系统设计文件管理网络管理设备管理高速缓冲存储器OS对虚拟文件的字节流的管理。虚拟文件可为任何设备和实体抽象抽象原则应用举例文件管理O对虚拟文件的字节流的管理。抽象37③信息隐蔽:即在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。 该标准可以定义和实施对模块的过程细节和局部数据结构的存取限制。将自身实现细节与数据隐藏起来有利于提高模块的独立性,对软件系统的修改、测试以及维护都有利。③信息隐蔽:即在设计和确定模块时,使得一个模块内包含的信息38软件设计的概念与原理④模块独立性:即每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。 该标准有两个定性的衡量指标:内聚性(度量模块的内部特征)和耦合性(度量模块的外部特征)。这两个标准可判断设计方案的优劣(模块划分时应尽量做到高内聚、低耦合,提高模块独立性)。软件设计的概念与原理④模块独立性:即每个模块只完成系统要求39模块(Module) “模块”,又称“组件”。它一般具有如下三个基本属性:功能:描述该模块实现什么功能逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件模块的独立性:模块(Module)模块的独立性:40在描述一个模块时,还必须按模块的外部特性与内部特性分别描述模块的外部特性模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响模块的内部特性完成其功能的程序代码和仅供该模块内部使用的数据模块的独立性:在描述一个模块时,还必须按模块的外部特性与内部特性分别描41模块独立性模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的例如,若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性一般采用两个准则度量模块独立性。即模块间耦合和模块内聚模块的独立性:模块独立性模块的独立性:42耦合是模块之间的互相连接的紧密程度的度量。
内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。模块的独立性:耦合是模块之间的互相连接的紧密程度的度量。模块的独立性:43模块间的耦合①耦合性是根据模块的外部特征提出的,是对软件系统结构中各模块间相互联系紧密程度的一种度量。也称块间关系。耦合性越高,模块独立性越弱②影响模块间耦合程度的最主要因素是模块间信息传递的复杂性。③耦合程度由低到高分为7种:模块间的耦合①耦合性是根据模块的外部特征提出的,是对软件系44无耦合-没有依赖关系松散耦合-有少量依赖关系紧密耦合-有很多依赖关系无耦合-没有依赖关系松散耦合-有紧密耦合-有45耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度耦合强度依赖的因素:46非直接耦合(NondirectCoupling)
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。模块的独立性:不传递任何消息
非直接耦合(NondirectCoupling)模块的独立47数据耦合(DataCoupling)
如果一个模块访问另一个模块时,彼此之间是通过简单数据参数
(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。属松散耦合。传递的是值。模块的独立性:数据耦合(DataCoupling)
如果一个模块访48数据耦合举例开发票计算水费单价数量金额数据耦合举例开发票计算水费单价金额49标记耦合(StampCoupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。传递的是数据结构。
标记耦合(StampCoupling)
如果一组模块50标记耦合举例计算水电费计算水费计算电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.标记耦合举例计算水电费计算水费计算电费住户情况水费电费住户情51将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月用水量本月用电量水费电费将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月本52控制耦合(ControlCoupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。传递的是控制变量,例如开关、标志等。
模块的独立性:控制耦合(ControlCoupling)53控制耦合举例A计算平均分或最高分B平均/最高(控制信号)成绩读入分数输出结果计算平均分计算最高分平均/最高?B控制耦合举例A计算平均分B平均/最高成绩读入分数输出结果计算54控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块控制耦合增加了理解和编程的复55改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算最高分B2改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算56外部耦合(ExternalCoupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,或一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部耦合必不可少,但这种模块数目应尽量少。模块的独立性:外部耦合(ExternalCoupling)
一组模块57公共耦合(CommonCoupling)
若一组模块都访问同一个公共数据区(也称全局数据区、公共数据环境)
,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。传递的是在公共数据环境中的数据。
公共耦合(CommonCoupling)
若一组模块都58公共耦合举例A公共数据区CB模块A、B、C间存在错综复杂的联系公共耦合举例A公共数据区CB模块A、B、C间存在错综复杂的联59(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!!!公共耦合存在的问题:(1)软件可理解性降低公共耦合存在的问题:60公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。模块的独立性:公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是61内容耦合(ContentCoupling)
如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);
(4)一个模块有多个入口。模块的独立性:内容耦合(ContentCoupling)
如果发生62一模块直接访问另一模块的内部信息(程序代码或数据)最不好的耦合形式
!!!ABAB模块代码重叠Entry1……Entry1……多入口模块传递的是一个模块的内部数据,往往出现在汇编语言中。
一模块直接访问最不好的耦合形式!!!ABAB模块代码重叠E63
模块间联系越紧密,其耦合性越强,模块的独立性越差。 提高模块独立性,降低模块间耦合度的措施是:
在耦合方式上降低模块间接口的复杂性:包括模块的接口方式、模块的接口信息和参数个数。
在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制地使用公共耦合。模块的独立性: 模块间联系越紧密,其耦合性越强,模块的独立性越差。模块的独642.模块独立性的度量之二:内聚性
一个模块内部元素在功能上相互关联的强度设计目标:高内聚
(模块在软件过程中完成单一的任务)2.模块独立性的度量之二:内聚性一个模块内部元素在功能65①内聚性是根据模块的内部特征提出的,是对模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量,也称块内联系。②影响内聚程度的最主要因素是模块内各成分之间相关于同一功能的紧密程度。③内聚程度由低到高分为7种:模块内聚①内聚性是根据模块的内部特征提出的,是对模块的功能强度的度66功能内聚(FunctionalCohesion)
一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。共同完成同一功能,缺一不可。
模块的独立性:功能内聚(FunctionalCohesion)
一个67信息内聚(InformationalCohesion)
这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。紧密相关于同一功能,且必须顺序执行。模块的独立性:信息内聚(InformationalCohesion)模68信息内聚模块符号
表查找登录删除修改几个加工同时引用一个共同的数据信息内聚模块符号表查找登录删除修改几个加工同时引用一69信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。模块的独立性:信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信70通信内聚(CommunicationCohesion)
如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。都要在同一数据结构上操作,紧密相关于同一数据结构。
模块的独立性:通信内聚(CommunicationCohesion)
71通信内聚模块例产生工资报表计算平均工资职工工资记录职工工资报表平均工资产生职工工资报表并计算平均工资模块通信内聚模块例产生工资报表计算平均工资职工工资记录职工工资报72软件工程ppt04概要设计课件73过程内聚(ProceduralCohesion)顺序性组合
使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。模块内各处理成分相关,且必须以特定次序执行例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。模块的独立性:过程内聚(ProceduralCohesion)顺序性组合74过程内聚模块读入成绩单审查成绩单统计成绩打印成绩读入并审查成绩单统计并打印成绩单过程内聚模块读入审查统计打印读入并审查成绩单统计并打印成绩单75时间内聚(ClassicalCohesion)
时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。都要在同一时间内完成,联系比较紧密。
模块的独立性:时间内聚(ClassicalCohesion)
时间内聚76逻辑内聚(LogicalCohesion)
这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。具有逻辑上相似,通过参数确定完成哪个功能。模块的独立性:逻辑内聚(LogicalCohesion)
这种模77逻辑内聚模块ABCEFGABCEFGA1B1C1EFG模块内部逻辑E、F、G逻辑功能相似,组成新模块EFG缺点:增强了耦合程度(控制耦合)不易修改,效率低公用代码段公用代码段逻辑内聚模块ABCEFGABCEFGA1B1C1EFG模块内78巧合内聚(CoincidentalCohesion)
巧合内聚又称为偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。没有任何联系。
模块的独立性:巧合内聚(CoincidentalCohesion)79偶然内聚(巧合内聚)
模块内各部分间无联系ABCMMOVEOTORREADFILEFMOVESTOT模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差例:偶然内聚(巧合内聚)模块内各部分间无联系ABCMMOVE80软件工程ppt04概要设计课件81内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合.设计目标:力争强内聚、弱耦合内聚与耦合密切相关,同其823.耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。3.耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的83改进软件结构设计的指导原则
(软件结构设计的启发式规则)(1)模块功能的完善化(2)消除重复功能(3)将模块的影响限制在模块的控制范围内(4)深度、宽度、扇出和扇入适中(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测(8)避免模块的病态连接(9)根据设计约束和可移植性要对软件打包改进软件结构设计的指导原则
(软件结构设计的启发式规则)(84(1)模块功能的完善化完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。(1)模块功能的完善化完整的模块应包括三部分:85(2)消除重复功能Q1CQ2CQ1Q2C改进前Q1、Q2功能相似XYQ’XYXY重复部分改进方法1:将Q1、Q2合并为Q’不可取改进方法2:将Q1、Q2的公共部分分离出来(2)消除重复功能Q1CQ2CQ1Q2C改进前XYQ’XYX86CHDEGXF(3)将模块的影响限制在模块的控制范围内AILJKB模块C的控制范围:
C、D、E、F、G、H如果模块C
作出的决策影响了模块L,L超出了C
的控制范围CHDEGXF(3)将模块的影响限制AILJKB模块C的控制87(4)减少高扇出争取高扇入高扇出的模块结构举例:编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构(4)减少高扇出争取高扇入高扇出的模块结构举例:编外取得计88增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资增加中间层降低扇出编外取得工资数据计时薪金编外编外常规税收89(5)模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂(6)降低模块接口的复杂性
接口传递信息应简单且和模块功能一致。(5)模块大小适中模块过大:可理解程度下降90(7)模块功能可预测模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。(7)模块功能可预测模块看成黑盒子,相同输入产生91防止模块功能过分局限功能单一的模块具有高内聚。但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。
防止模块功能过分局限功能单一的模块具有高内聚。92(8)避免模块的病态连接
防止指向模块中间的分支或引用(针对内容耦合)(9)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组装软件的技术(8)避免模块的病态连接防止指向模块中间的分支或引用93概要设计确定:软件系统的结构各模块功能及模块间联系(接口)表示软件结构的图形工具结构图层次图和HIPO图概要设计确定:94图形工具:层次图层次图用来描述软件层次结构。层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系。正文加工系统编辑加标题存储检索输入添加删除插入合并图形工具:层次图正文加工系统编辑加标题存储检索输入添加删95带编号的层次图(H图)
正文加工系统输入1.0输出2.0编辑3.0加标题4.0存储5.0检索6.0编目录7.0添加3.1删除3.2插入3.3修改3.4合并3.5列表3.6带编号的层次图(H图)正文加工系统输入输出编辑加标题96图形工具:HIPO图①
HIPO图为层次图(H图)+IPO图。HIPO图既可以描述软件总的模块层次结构(H图),又可以描述每个模块输入输出数据、处理功能及模块调用的详细情况(IPO图)。②HIPO图是以模块分解的层次性以及模块内部输入、处理、输出3部分为基础建立的。
图形工具:HIPO图97结构图①软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现。②软件结构图往往用网状或树状结构的图形来表示。③结构图的形态特征:·
深度(模块的层数)。·
宽度(一层中最大的模块个数)。·
扇出(一个模块直接调用下属模块的个数)。·
扇入(一个模块直接上属模块的个数)。④画结构图的注意事项:·
同一名字的模块在结构图中只出现一次。·
调用关系只能从上到下。·
模块调用次序一般从左到右。图形工具:结构图图形工具:98图形工具:结构图(SC)
在图中一个方框代表一个模块,框内注明模块的名字或主要功能,方框之间的箭头(或直线)表示模块的调用关系。在结构图中,通常用带注释的箭头表示模块调用过程中来回传递的信息。一般空心圆表示传递数据;实心圆表示传递控制信息。编辑学生记录读学生记录数据信息控制信息学号不加区分的数据图形工具:结构图(SC)编辑学生记录读学生记录数据信息控99产生最佳解得到好输入计算最佳解输出结果解解好输入好输入产生最佳解得到好输入计算最佳解输出结果解解好输入好100SC中的四种模块传入模块(a)(b)AA传出模块BB变换模块(c)CD协调模块E(d)EFFSC中的四种模块传入模块(a)(b)AA传出模块BB变换模块101传入模块─从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块─从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。传入模块─从下属模块取得数据,经过某些处理,再将其传102变换模块─它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块─对所有下属模块进行协调和管理的模块。变换模块─它从上级模块取得数据,进行特定的处理,转换成其103SC中的选择调用ACBDA根据内部判断决定是否调用BA按另一判定结果选择调用C或DSC中的选择调用ACBDA根据内A按另一判104SC中的循环调用ABCA根据内在的循环重复调用B、C等模块SC中的循环调用ABCA根据内在的循环重105结构图(SC)举例
医院管理系统门诊管理药房管理药库管理病房管理财务管理处方挂号处理挂号费总计挂号单挂号费总计出库处理进药管理病历管理处方管理常规处理结构图(SC)举例医院管理系统门诊药房药库病房财务处106SD方法是一种典型的面向数据流的软件总体设计方法。
SD方法的基本思想——模块化
系统设计的基本目标——构造结构良好的程序系统
实施方法——根据需求分析所得到的DFD“映射”出初始的软件结构,然后再根据模块设计的基本原则和启发式规则进行软件结构优化。结构化设计方法SD方法是一种典型的面向数据流的软件总体设计方法。结107SD方法将数据流映射为软件结构时,数据流的类型决定了映射的方法。根据结构化分析的观点,数据流可以分为两种基本类型:变换型数据流和事务型数据流。因此映射出来的软件结构也有变换结构和事务结构两种标准类型。任何软件结构可以认为是变换结构和事务结构的混合.SD方法将数据流映射为软件结构时,数据流的类型决定了映射的方108结构化设计方法首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。
结构化设计方法首先研究、分析和审查数据流图。从软件的需109结构化设计方法由数据流图推导出系统的初始结构图。利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。修改和补充数据词典。制定测试计划。结构化设计方法由数据流图推导出系统的初始结构图。110面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“事务”“变换”事务分析变换分析面向数据流方法的设计过程精化数据流图区分事务中心映射成变换结111SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初始SC变换分析事务分析SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初112初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模113变换型系统结构图:变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。变换中心输入输出变换型系统结构图:变换型数据处理问题的工作过程大致分为三114变换型数据流举例输入信息物理输入格式检查处理显示正确信息结果物理输出数据变换中心逻辑输入逻辑输出传入部分传出部分特点:具有明确的传入、变换(或称主加工)和传出界面的DFD变换型数据流举例输入物理格式处理显示正确结果物理数据变换中心115变换流示意图信息时间信息流输入流输出流交换流外部表示内部表示变换流示意图信息时间信息流输入流输出流交换流外部内部116变换分析变换分析方法由以下四步组成:重画数据流图;区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;进行一级分解,设计上层模块;进行二级分解,设计输入、输出和中心变换部分的中、下层模块。变换分析变换分析方法由以下四步组成:进行一级分解,设计上117变换分析
确定DFD中的变换中心、逻辑输入和逻辑输出: 从物理输入端开始,沿着数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看做是系统的输入,则它的前一个数据流是系统的逻辑输入。 从物理输出端开始,逆数据流方向向中间移动,可以确定系统的逻辑输出。 介于逻辑输入和逻辑输出之间的加工就是变换中心,即主加工。变换分析确定DFD中的变换中心、逻辑输入和逻辑输出:118BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分BCADEQPRWUVabcedrpuwv变换中心传入部分传119变换分析设计软件结构的顶层和第一层——变换结构: 顶层即主模块,主要完成所有模块的控制。
第一层至少有3个功能模块:输入、输出和变换模块,即为逻辑输入设计一个输入模块,其功能是为顶层模块提供相应数据,为逻辑输出设计一个输出模块,其功能是输出顶层模块的信息,为变换中心设计一个变换模块,其功能是将逻辑输入进行变换加工,然后逻辑输出。变换分析设计软件结构的顶层和第一层——变换结构:120第一级分解的方法MCMTMAME第一级分解的方法MCMTMAME121第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,122第一级分解后的SC(另一种画法)MCMA1ceu,wc,pQPReprrw,uw传入分支模块中心加工分支模块传出分支模块MA2ME1ME2第一级分解后的SC(另一种画法)MCMA1ceu,wc,pQ123变换分析设计中、下层模块。对第一层的输入、变换、输出模块自顶向下逐层分解。 输入模块下属模块的设计:可设计两个下属模块,一个接收,一个转换。 输出模块下属模块的设计:可设计两个下属模块,一个转换,一个发送。 变换模块下属模块的设计:按照模块独立性原则来组织其结构,一般对每个基本加工建立一个功能模块。变换分析设计中、下层模块。对第一层的输入、变换、输出模块自124传入分支的分解
(1)MACBAbacEDdec,e传入分支的分解
(1)MACBAbacEDdec,e125传入分支的分解
(2)MAGetCbacRead
Ddec,eB
to
CbcdeabGetEGetBD
to
EAtoBReadD传入分支的分解
(2)MAGetCbacReadDdec126传出分支的分解
MEWWriteVuuw,uvvvPutUUtoVMEUWriteWwwuw,uV(1)(2)传出分支的分解
MEWWriteVuuw,uvvvPut127中心加工分支的分解MTPQRec,pru,wpr中心加工分支的分解MTPQRec,pru,wpr128软件工程ppt04概要设计课件129变换分析①
在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成之后,才能转向另一个模块的下层模块的设计。变换分析①在选择模块设计的次序时,必须对一个模块的130变换分析②
在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。③使用“黑箱”技术:在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。变换分析②在设计下层模块时,应考虑模块的耦合和内聚问题,以131变换分析④在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过10个,可设立中间层次。⑤如果出现了以下情况,就停止模块的功能分解:
当模块不能再细分为明显的子任务当分解成用户提供的模块或程序库的子程序时;
当模块的界面是输入/输出设备传送的信息时;
当模块不宜再分解得过小时。变换分析④在模块划分时,一个模块的直接下属模块一般在5个左132事务型系统结构图:它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。事务中心接受路径动作路径事务型结构具有在多种事务中选择执行某类事物的能力事务型系统结构图:它接受一项事务,根据事务处理的特点和性133在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。事务型数据流结构事务分析事务中心动作1动作2接受接受部分动作3在事务型系统结构图中,事务中心模块按所接受的事务134软件工程ppt04概要设计课件135事务分析在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。事务分析在很多软件应用中,存在某种作业数据流,它可以引发136
适用于较低层数、有明显事务特征的数据流图向软件结构图的转换。
事务分析步骤:·
确定数据流图的事务中心和加工路径。
当数据流图中每个加工将一个输入数据分解成多个发散的输出数据流时,该加工就是事务中心,从事务中心辐射出去的数据流为各个加工路径。事务分析 适用于较低层数、有明显事务特征的数据流图向软件结构图的转137事务分析·
设计软件结构的顶层和第一层——事务结构。
顶层是一个全控模块,有两个部分:接收分支(与变换型DFD的输入部分设计方法相同)和发送分支(即调度模块,它控制管理所有下层的事务处理模块)。·
设计中、下层模块。与变换分析设计相同。·
设计优化事务分析·
设计软件结构的顶层和第一层——事务结构。138软件工程ppt04概要设计课件139事务分析过程:①识别事务源
利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。事务分析过程:①识别事务源
利用数据流图和数据词典,从问题140事务分析过程:②规定适当的事务型结构
在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。③识别各种事务和它们定义的操作
从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。事务分析过程:②规定适当的事务型结构
在确定了该数据流图具141事务分析过程:④注意利用公用模块
在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。⑤对每一事务,或对联系密切的一组事务,建立一个事务处理模块;
如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。事务分析过程:④注意利用公用模块
在事务分析的过程中,如果142事务分析过程:⑥对事务处理模块规定它们全部的下层操作模块⑦对操作模块规定它们的全部细节模块
变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。事务分析过程:⑥对事务处理模块规定它们全部的下层操作模块143软件工程ppt04概要设计课件144事务流设计举例IMLNABCDFEG事务中心事务流设计举例IMLNABCDFEG事务中心145事务流设计举例取A
总控ALMNGDBCFE(主模块)事务加工模块事务流设计举例取A总控ALMNGDBCFE(主模块146动作分支的典型结构PT
2T
1T
iA
2D2A
1D
1A
3A
jD
k事务层操作层细节层处理层主模块事务加工模块操作模块细节模块动作分支的典型结构PT2T1TiA2D2A1D147事务流设计举例取A
总控ALMNGDBCFE动作1动作n….细节模块1细节模块2….(操作模块)(细节模块)事务流设计举例取A总控ALMNGDBCFE动作1动148事务型数据流图举例IMLNOABCDFEGH事务型数据流图举例IMLNOABCDFEGH149事务流设计举例
(另一种画法)输入AXX系统变换控制ALMAGDBCFE输出E、F、GE、F、GE、F、G输出HOE、F、GHHN事务流设计举例(另一种画法)输入AXX系统变换控制A150用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据用户命令交互子系统DFD读用户密码命令密码显示信息系统参数数151初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模152事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路153用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密154用户命令交互子系统DFD读用户命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据密码命令开/关命令配置命令用户命令交互子系统DFD读用户密码显示信息系统参数数据用户读155用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处156用户命令交互子系统DFD读用户命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字检验信息检验信息A/D信息配置数据格式化配置数据密码命令开/关命令配置命令用户命令交互子系统DFD读用户密码显示信息系统参数数据用户读157用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器产生无效信息用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处158软件模块结构的改进模块
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第19课 科学技术的重大成果课件
- 2024年专业电工施工协议典范
- 中国特色社会主义基本原理(上)
- 2024年度层电梯厅装潢协议模板
- 2024年无薪实习劳动协议
- 2024年仓库租赁法律协议细则
- 2024年型车辆采购协议
- 2024届安徽省合肥高升学校高三八校第一次适应性考试数学试题试卷
- 2024建筑业劳务施工协议文本
- 2023-2024学年浙江省温州市九校下期第二次质量考评(3月)高三数学试题
- 海南海药:江苏普健药业有限公司拟转让资产涉及的固定资产、在建工程和土地使用权资产价值项目资产评估报告
- 第01讲 代数式(5个知识点+5类热点题型讲练+习题巩固)2024-2025学年七年级数学上册同步学与练(人教版2024)
- 化学丨四川省南充市高2025届高考适应性考试(南充一诊)高三10月联考化学试卷及答案
- 2024安徽马鞍山市兴望投资限责任公司招聘5人高频难、易错点500题模拟试题附带答案详解
- 部编版二年级语文上册第四单元备课教材分析
- 【课件】“珍惜粮食从我做起”课件-2024-2025学年高中上学期世界粮食日主题班会
- 蒲城清洁能源化工有限责任公司70万吨年煤制烯烃项目脱盐水
- 职业技能大赛-食品安全管理师竞赛理论知识题及答案
- 膀胱过度活动综合征
- 销售心态 培训课件
- 垃圾渗滤液处理站运维及渗滤液处理投标方案(技术方案)
评论
0/150
提交评论