欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件工程ppt04概要设计课件.ppt

    • 资源ID:1420265       资源大小:791KB        全文页数:173页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程ppt04概要设计课件.ppt

    授课教师:梁丽,软件工程,西华大学数学与计算机学院,第四章 总体设计,内容要点:本章介绍软件设计的基本原理,优化软件结构的准则以及结构化程序设计方法。 教学重点:软件设计的基本任务内聚性、耦合性的划分软件结构、模块的影响范围、模块的控制范围软件结构设计的优化准则表示软件结构的图形工具教学难点:将变换流或事务流类型的数据流图转化成软件结构将一个复杂型数据流图转化成软件结构图并优化,本章的知识结构图,总体目标根据DFD ,确定最恰当实现软件功能、性能要求集合的软件系统结构,实现算法和数据结构。(How to do?)过程从抽象的需求规格向具体的程序与数据集合进行变换的过程。结果各种软件设计说明书。设计方法结构化设计(SD)方法,面向数据结构的设计方法和面向对象的设计方法等。结构化软件设计可分为总体设计和详细设计两个阶段,总体设计确定系统的整体模块结构,但这时每个模块仍然处于“黑盒子”级,描述这些黑盒子里的具体内容是详细设计阶段的任务。,软件设计,根据用信息域表示的软件需求,以及功能和性能需求,进行 数据设计 系统结构设计 过程设计 界面设计,软件设计的目标,将分析模型转换为设计,数据词典,状态转换图,过程设计,接口设计,体系结构设计,数据设计,数据设计将实体 关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份转换成软件的过程性描述。,软件设计的两个阶段:,(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。将软件需求转化为数据结构和软件的系统结构。(2)详细设计 确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,软件设计过程,1. 制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:,阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序 根据目标确定最合适的设计方法 规定设计文档的编制标准 规定编码的信息形式,与硬件,操作系统的接口规约,命名规则,2. 软件系统结构的总体设计,基于功能层次结构建立系统。 采用某种设计方法,将系统按功能划分成模块的层次结构 确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量,数据结构和数据库设计:对于大型数据处理的软件系统是重要的。在概要设计阶段,数据结构设计宜采用抽象的数据类型,数据库设计对应于数据库的逻辑设计。,3. 处理方式设计,确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度确定外部信号的接收发送形式,4. 数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包),限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计 防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能,一致性设计: 保证软件运行过程中所使用的数据的类型和取值范围不变 在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。,5.可靠性设计,可靠性设计也叫做质量设计在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。,6.编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档: 概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划,7.概要设计评审,可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现,实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征,各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,在详细设计过程中,需要完成的工作是: 确定软件各个组成部分内的算法以及各部分的内部数据组织 选定某种过程的表达形式来描述各种算法。 进行详细设计的评审,详细设计,1. 软件结构 2. 软件过程 3. 模块化 4. 抽象 5. 信息隐蔽 6. 信息局部化,4.2 软件设计的概念和原理,4.2.1 软件体系结构,软件体系结构包括两部分:(1)过程构件(模块)的层次结构(2)数据构件,控制结构(程序结构),控制结构是软件模块间关系的表示,控制结构图示:,1. 控制结构的层次规则,只有一个顶层(0层)模块 0层外任一模块都会在它 的邻层存在一模块与它有关 同层模块间不发生联系,4.2.2 软件过程,软件过程用以描述各模块的处理细节(算法的详细描述),包括对下层模块控制的操作细节。,深度,(模块的 层数),(同一层最大模块数),(一个模块 直接调用 的模块数),2. 软件结构度量术语,软件设计的概念与原理,软件设计的基本原理是衡量软件设计的技术质量的标准,共有4条: 模块化:即自顶向下逐层将软件系统划分成若干模块。,模块化是好的软件设计的一个基本准则 高层模块 从整体上把握 问题,隐蔽细节 复杂问题 较小问题 分解 可减小解题所需的总的工作,该标准是软件解决复杂问题所具备的手段,其依据是适当分解软件系统可降低复杂性,减少开发工作量,降低开发成本、提高软件生产率。但是模块化时应注意接口代价,因为模块划分越多,模块内的工作量虽然减少,但模块间接口的工作量增加。,软件设计的概念与原理, 软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。 把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,例:将问题(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) 各个击破理论,软件设计的概念与原理, 抽象:即抽出事物本质的共同的特性而不考虑细节,不考虑其他因素。该标准与逐步求精、模块化密切相关,它是划分模块过程中的思维原则。软件设计的每一步都是对软件解决方法的抽象层次的一次细化。,软件设计的概念与原理, 软件系统进行模块设计时,可有不同的抽象层次。 在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。 在较低的抽象层次上,则采用过程化的方法。,抽象原则应用举例Windows NT一体化的I/O系统设计,文件管理网络管理设备管理高速缓冲存储器,对虚拟文件的字节流的管理。虚拟文件可为任何设备和实体,抽象, 信息隐蔽:即在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。该标准可以定义和实施对模块的过程细节和局部数据结构的存取限制。将自身实现细节与数据隐藏起来有利于提高模块的独立性,对软件系统的修改、测试以及维护都有利。,软件设计的概念与原理, 模块独立性:即每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。该标准有两个定性的衡量指标:内聚性(度量模块的内部特征)和耦合性(度量模块的外部特征)。这两个标准可判断设计方案的优劣(模块划分时应尽量做到高内聚、低耦合,提高模块独立性)。, 模块(Module)“模块”,又称“组件”。它一般具有如下三个基本属性: 功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条件,模块的独立性:, 在描述一个模块时,还必须按模块的外部特性与内部特性分别描述 模块的外部特性 模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响 模块的内部特性 完成其功能的程序代码和仅供该模块内部使用的数据,模块的独立性:, 模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的 例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚,模块的独立性:,耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。,模块的独立性:,模块间的耦合, 耦合性是根据模块的外部特征提出的,是对软件系统结构中各模块间相互联系紧密程度的一种度量。也称块间关系。耦合性越高,模块独立性越弱 影响模块间耦合程度的最主要因素是模块间信息传递的复杂性。 耦合程度由低到高分为7种:,无耦合没有依赖关系,松散耦合有少量依赖关系,紧密耦合有很多依赖关系,耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度,非直接耦合(Nondirect Coupling) 如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。,模块的独立性:,不传递任何消息,数据耦合 (Data Coupling) 如果一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的,则称这种耦合为数据耦合。属松散耦合。传递的是值。,模块的独立性:,数据耦合举例,开发票,计算水费,单价数量,金额,标记耦合 (Stamp Coupling) 如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。传递的是数据结构。,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月用水量,本月用电量,水费,电费,控制耦合 (Control Coupling) 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。传递的是控制变量,例如开关、标志等。,模块的独立性:,控制耦合举例,A,计算平均分或最高分,B,平均/最高(控制信号),成绩,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,B,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调 用模块中进行(2)被调用模块分解成若干单一功 能模块,改控制耦合为数据耦合举例,A,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,外部耦合(External Coupling) 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,或一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部耦合必不可少,但这种模块数目应尽量少。,模块的独立性:,公共耦合(Common Coupling) 若一组模块都访问同一个公共数据区(也称全局数据区、公共数据环境) ,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。传递的是在公共数据环境中的数据。,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题:, 公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,模块的独立性:,内容耦合 (Content Coupling) 如果发生下列情形,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中); (4) 一个模块有多个入口。,模块的独立性:,一模块直接访问另一模块的内部信息 (程序代码或数据),最不好的耦合形式 !,A,B,A,B,模块代码重叠,Entry1 Entry1 ,多入口模块,传递的是一个模块的内部数据,往往出现在汇编语言中。,模块间联系越紧密,其耦合性越强,模块的独立性越差。提高模块独立性,降低模块间耦合度的措施是:在耦合方式上降低模块间接口的复杂性:包括模块的接口方式、模块的接口信息和参数个数。在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制地使用公共耦合。,模块的独立性:,2. 模块独立性的度量之二:内聚性,一个模块内部元素在功能上相互 关联的强度 设计目标:高内聚 (模块在软件过程中 完成单一的任务), 内聚性是根据模块的内部特征提出的,是对模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量,也称块内联系。 影响内聚程度的最主要因素是模块内各成分之间相关于同一功能的紧密程度。 内聚程度由低到高分为7种:,模块内聚,功能内聚 (Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。共同完成同一功能,缺一不可。,模块的独立性:,信息内聚 (Informational Cohesion)这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。紧密相关于同一功能,且必须顺序执行。,模块的独立性:,信息内聚模块,符 号 表,查找,登录,删除,修改,几个加工同时引用一个共同的数据, 信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,模块的独立性:,通信内聚 (Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。都要在同一数据结构上操作,紧密相关于同一数据结构。,模块的独立性:,通信内聚模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,过程内聚(Procedural Cohesion)顺序性组合使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。模块内各处理成分相关,且必须以特定次序执行例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,模块的独立性:,过程内聚模块,读入成绩单,审查成绩单,统计成绩,打印成绩,读入并审查成绩单,统计并打印成绩单,时间内聚(Classical Cohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。都要在同一时间内完成,联系比较紧密。,模块的独立性:,逻辑内聚(Logical Cohesion) 这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。具有逻辑上相似,通过参数确定完成哪个功能。,模块的独立性:,逻辑内聚模块,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑功能相似,组成新模块EFG,缺点:增强了耦合程度(控制耦合) 不易修改,效率低,公用代码段,公用代码段,巧合内聚(Coincidental Cohesion) 巧合内聚又称为偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。没有任何联系。,模块的独立性:,偶然内聚(巧合内聚),模块内各部分间无联系,A,B,C,M,MOVE O TO RREAD FILE FMOVE S TO T,模块M中的三个语句没有任何联系缺点:可理解性差, 可修改性差,例:,内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合.设计目标:力争强内聚、弱耦合,3.耦合、内聚与模块独立性关系,耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。,改进软件结构设计的指导原则 (软件结构设计的启发式规则),(1)模块功能的完善化(2)消除重复功能(3)将模块的影响限制在模块的控制范围内(4)深度、宽度、扇出和扇入适中(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测(8)避免模块的病态连接(9)根据设计约束和可移植性要对软件打包,(1) 模块功能的完善化,完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时, 返回是否正确结束标志。,(2)消除重复功能,Q1,C,Q2,C,Q1,Q2,C,改进前Q1、Q2功能相似,X,Y,Q,X,Y,X,Y,重复部分,改进方法1:将Q1、Q2合并为Q不可取,改进方法2:将Q1、Q2的公共部分分离出来,C,H,D,E,G,X,F,(3)将模块的影响限制 在模块的控制范围内,A,I,L,J,K,B,模块C的控制范围: C、D、E、F、G、H,如果模块C 作出的决策影响了模块L,L超出了C 的控制范围,(4) 减少高扇出争取高扇入,高扇出的模块结构举例:,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,避免平铺结构,增加中间层降低扇出,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,计时工人实发工资,计薪工人实发工资,编外人员实发工资,(5) 模块大小适中,模块过大:可理解程度下降模块过小:开销大于有效操作 系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能一致。,(7) 模块功能可预测,模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。,防止模块功能过分局限,功能单一的模块具有高内聚。 但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。,(8)避免模块的病态连接,防止指向模块中间的分支或引用(针对内容耦合) (9)根据设计约束和可移植性 需求对软件打包 打包指用来为特定环境组装软件的技术,概要设计确定:软件系统的结构各模块功能及模块间联系(接口)表示软件结构的图形工具结构图层次图和HIPO图,图形工具:, 层次图层次图用来描述软件层次结构。层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系。,带编号的层次图(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,图形工具:, HIPO图 HIPO图为层次图(H图)+IPO图。HIPO图既可以描述软件总的模块层次结构(H图),又可以描述每个模块输入输出数据、处理功能及模块调用的详细情况(IPO图)。HIPO 图是以模块分解的层次性以及模块内部输入、处理、输出3部分为基础建立的。, 结构图 软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现。 软件结构图往往用网状或树状结构的图形来表示。 结构图的形态特征: 深度(模块的层数)。 宽度(一层中最大的模块个数)。 扇出(一个模块直接调用下属模块的个数)。 扇入(一个模块直接上属模块的个数)。 画结构图的注意事项: 同一名字的模块在结构图中只出现一次。 调用关系只能从上到下。 模块调用次序一般从左到右。,图形工具:,图形工具:, 结构图(SC)在图中一个方框代表一个模块,框内注明模块的名字或主要功能,方框之间的箭头(或直线)表示模块的调用关系。 在结构图中,通常用带注释的箭头表示模块调用过程中来回传递的信息。一般空心圆表示传递数据;实心圆表示传递控制信息。,SC中的四种模块,传入模块,(a),(b),A,A,传出模块,B,B,变换模块,(c),C,D,协调模块,E,(d),E,F,F, 传入模块 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。 传出模块 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。,变换模块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块 对所有下属模块进行协调和管理的模块。,SC中的选择调用,A,C,B,D,A根据内部判断决定是否调用B,A按另一判定结果选择调用C或D,SC中的循环调用,A,B,C,A根据内在的循环重复调用B、C等模块,结构图(SC)举例,医院管理系统,门诊管理,药房管理,药库管理,病房管理,财务管理,处,方,挂号处理,挂,号,费,总,计,挂号单,挂号费总计,出库处理,进药管理,病历管理,处方管理,常规处理,SD方法是一种典型的面向数据流的软件总体设计方法。 SD方法的基本思想模块化 系统设计的基本目标构造结构良好的程序系统 实施方法根据需求分析所得到的DFD“映射”出初始的软件结构,然后再根据模块设计的基本原则和启发式规则进行软件结构优化。,结构化设计方法,SD方法将数据流映射为软件结构时,数据流的类型决定了映射的方法。根据结构化分析的观点,数据流可以分为两种基本类型:变换型数据流和事务型数据流。因此映射出来的软件结构也有变换结构和事务结构两种标准类型。任何软件结构可以认为是变换结构和事务结构的混合.,结构化设计方法, 首先研究、分析和审查数据流图。 从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。 然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。,结构化设计方法, 由数据流图推导出系统的初始结构图。 利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。 修改和补充数据词典。 制定测试计划。,面向数据流方法的设计过程,精化数据流图,区分事务中心和数据接收路径,映射成变换结构,流类型,区分输入和输出分支,映射成事务结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,复查,详细设计,“事务”,“变换”,事务分析,变换分析,SD方法的两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,初始的SC,主模块,输入模块,主加工模块,输出模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,变换型系统结构图:, 变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。 相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。,变换中心,输入,输出,变换型数据流举例,输入信息,物理输入,格式检查,处理,显示,正确信息,结果,物理输出,数据,变换中心,逻辑输入,逻辑输出,传入部分,传出部分,特点:具有明确的传入、变换(或称主加 工) 和传出界面的DFD,变换流示意图,信息,时间,信息流,输入流,输出流,交换流,外部表示,内部表示,变换分析, 变换分析方法由以下四步组成: 重画数据流图; 区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;,进行一级分解,设计上层模块; 进行二级分解,设计输入、输出和中心变换部分的中、下层模块。,变换分析,确定DFD中的变换中心、逻辑输入和逻辑输出:从物理输入端开始,沿着数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看做是系统的输入,则它的前一个数据流是系统的逻辑输入。从物理输出端开始,逆数据流方向向中间移动,可以确定系统的逻辑输出。介于逻辑输入和逻辑输出之间的加工就是变换中心,即主加工。,B,C,A,D,E,Q,P,R,W,U,V,a,b,c,e,d,r,p,u,w,v,变换中心,传入部分,传出部分,变换分析,设计软件结构的顶层和第一层变换结构:顶层即主模块,主要完成所有模块的控制。 第一层至少有3个功能模块:输入、输出和变换模块,即为逻辑输入设计一个输入模块,其功能是为顶层模块提供相应数据,为逻辑输出设计一个输出模块,其功能是输出顶层模块的信息,为变换中心设计一个变换模块,其功能是将逻辑输入进行变换加工,然后逻辑输出。,第一级分解的方法,MC,MT,MA,ME,第一级分解后的SC,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变换模块,第一级分解后的SC(另一种画法),MC,MA1,c,e,u,w,c,p,Q,P,R,e,p,r,r,w,u,w,传入分支模块,中心加工分支模块,传出分支模块,MA2,ME1,ME2,变换分析,设计中、下层模块。对第一层的输入、变换、输出模块自顶向下逐层分解。输入模块下属模块的设计:可设计两个下属模块,一个接收,一个转换。输出模块下属模块的设计:可设计两个下属模块,一个转换,一个发送。变换模块下属模块的设计:按照模块独立性原则来组织其结构,一般对每个基本加工建立一个功能模块。,传入分支的分解(1),MA,C,B,A,b,a,c,E,D,d,e,c,e,传入分支的分解(2),MA,Get C,b,a,c,Read D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read D,传出分支的分解,ME,W,Write V,u,u,w,u,v,v,v,Put U,U to V,ME,U,Write W,w,w,u,w,u,V,(1),(2),中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,变换分析, 在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成之后,才能转向另一个模块的下层模块的设计。,变换分析, 在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。 使用“黑箱”技术: 在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。,变换分析, 在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过10个,可设立中间层次。 如果出现了以下情况,就停止模块的功能分解:当模块不能再细分为明显的子任务当分解成用户提供的模块或程序库的子程序时;当模块的界面是输入输出设备传送的信息时;当模块不宜再分解得过小时。,事务型系统结构图:, 它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。,事务中心,接受路径,动作路径,事务型 结构,具有在多种事务中选择执行某类事物的能力,在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。,事务型数据流 结构,事务分析, 在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。 与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。,适用于较低层数、有明显事务特征的数据流图向软件结构图的转换。事务分析步骤: 确定数据流图的事务中心和加工路径。当数据流图中每个加工将一个输入数据分解成多个发散的输出数据流时,该加工就是事务中心,从事务中心辐射出去的数据流为各个加工路径。,事务分析,事务分析,设计软件结构的顶层和第一层事务结构。顶层是一个全控模块,有两个部分:接收分支(与变换型DFD的输入部分设计方法相同)和发送分支(即调度模块,它控制管理所有下层的事务处理模块)。设计中、下层模块。与变换分析设计相同。设计优化,事务分析过程:, 识别事务源利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。,事务分析过程:, 规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。 识别各种事务和它们定义的操作从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。,事务分析过程:, 注意利用公用模块在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。 对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。,事务分析过程:, 对事务处理模块规定它们全部的下层操作模块 对操作模块规定它们的全部细节模块变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。,事务流设计举例,I,M,L,N,A,B,C,D,F,E,G,事务中心,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,(主模块),事务加工模块,动作分支的典型结构,P,T 2,T 1,T i,A 2,D 2,A 1,D 1,A 3,A j,D k,事务层,操作层,细节层,处理层,主模块,事务加工模块,操作模块,细节模块,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,动作1,动作n,.,细节模块1,细节模块2,.,(操作模块),(细节模块),事务型数据流图举例,I,M,L,N,O,A,B,C,D,F,E,G,H,事务流设计举例 (另一种画法),输入 A,XX系统,变换控制,A,L,M,A,G,D,B,C,F,E,输出 E、F、G,E、F、G,E、F、G,输出H,O,E、F、G,H,H,N,用户命令交互子系统,密码命令,密码,显示信息,系统参数数据,用户命令,读系统数据,配置信息,显示信息和状态,命令分析处理,命令类型,开/关命令,建立配置文件,原配置数据,格式化配置数据,配置命令,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置数据,格式化配置数据,初始的SC,主模块,输入模块,主加工模块,输出模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,事务分析的映射方法,总控,调度,B路径,C路径,接收路径,用户命令交互子系统初始的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户命令,读系统数据,配置信息,显示信息和状态,命令分析处理,命令类型,建立配置文件,原配置数据,格式化配置数据,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置数据,格式化配置数据,密码命令,开/关命令,配置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户命令,读系统数据,配置信息,显示信息和状态,命令分析处理,读密码,命令类型,建立配置文件,原配置数据,与文件中密码比较,格式化配置数据,检验信息过程,重试信息,四位数字,检验信息,检验信息,A/D信息,配置数据,格式化配置数据,密码命令,开/关命令,配置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,软件模块结构的改进, 模块功能的完善化一个完整的模块应当有以下几部分: 执行规定的功能的部分; 出错处理的部分。当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因。 如果需要返回一系列数据给它的调用者,在完成数据加工或结束时, 应当给它的调用者返回一个结束状态标志。,软件模块结构的改进, 消除重复功能,改善软件结构 完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。 局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。,软件模块结构的改进, 模块的作用范围应在控制范围之内模块的控制范围包括它本身及其所有的从属模块。 模块的作用范围是指模块内一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。是从功能特点考虑的。 如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构是简单的,否则,它的结构是不简单的。,如下图中的设计,判定的作用范围恰好在判定所在模块的下一层。,模块TOP 的控制范围是:TOP、X、T、B、A、B1、B2;模块B 的控制范围与作用范围相同,,模块A的控制范围: A、B、C、D、G、E、F则F的的作用范围:B、E、F,显然,图(a)不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。图(b)中模块TOP和图(c)中模块B虽然满足上述原则,但其作用范围所涉及到的模块不是直接的。图(d)的模块设计最合理。,应用范围与作用范围举例,软件模块结构的改进, 尽可能减少高扇出结构,随着深度增大扇入。 如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块。应当适当增加中间层次的控制模块。,软件模块结构的改进, 避免或减少使用病态联接应限制使用如下三种病态联接: 直接病态联接 即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部。,软件模块结构的改进, 公共数据域病态联接 模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级模块。这种方式将使得模块间的耦合程度剧增。它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块

    注意事项

    本文(软件工程ppt04概要设计课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开