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

    结构化总体设计.ppt

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

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

    结构化总体设计.ppt

    *,曲阜师范大学计算机科学学院,1,第3篇 软件开发及维护,第7章 结构化总体设计,*,曲阜师范大学计算机科学学院,2,第7章 结构化总体设计,本章的主要目标是运用结构化方法,介绍软件总体设计的相关工作。读完本章,你将了解以下基本内容:软件设计的基本原理。软件设计的启发式规则。软件结构的描述工具。面向数据流的结构化设计过程。,*,曲阜师范大学计算机科学学院,3,Contents,7.1 软件设计的基本概念和原理7.2 软件结构的描绘工具7.3 面向数据流的设计过程7.4 启发式设计7.5 设计优化原则,*,曲阜师范大学计算机科学学院,4,7.1 软件设计的基本概念和原理,在完成了需求分析之后,项目开发人员对系统的需求有了完整准确的理解,即知道了“做什么”,接下来就是回答“怎么做”。第一个阶段为总体设计阶段,期间项目开发人员确定软件系统的基本框架;第二阶段为详细设计阶段,期间确定软件系统的内部实现细节。,*,曲阜师范大学计算机科学学院,5,7.1.1 抽象 抽象是人类在认识复杂世界时所使用的最有力的工具。抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、梨、葡萄、桃子等,它们共同的特征就是水果。7.1.2 信息隐蔽 信息隐蔽是指每个模块的内部实现细节对外部来说是看不见的,即模块内部的数据、代码等信息不允许其他不需要这些信息的模块使用。这样主要有两个好处,一是利于模块之间相互有效隔离,使每个模块更加具有独立性,二是可以使系统具有更好的健壮性,以及更好的可维护性。,*,曲阜师范大学计算机科学学院,6,7.1.3 模块化设计 人们不断创新的目的在于更加高效。从软件开发的角度来看,人们希望开发维护同样一个系统所使用的时间最短,所耗费的成本最低。软件系统模块化就是出于这样的目的,提出了一种提高开发效率的思想。在结构化分析方法中,模块的规模可大可小,是一个功能单位。模块可以是软件系统中的一个子系统,也可以是子系统内一个功能程序块(由边界元素限定的数据说明、可执行的语句等的序列,而且有一个总体标识符来代表它。,*,曲阜师范大学计算机科学学院,7,模块化可以简化软件问题,一个系统模块越多,模块与模块之间的通信或接口就越多,希望依靠模块化将系统不断被分解而使软件成本不断降低的愿望可能是不切实际的。随着系统的分解,系统中模块数目将会增加,模块接口也会增加,软件构造会由此变得复杂起来,模块连接的难度也会由此加大。,*,曲阜师范大学计算机科学学院,8,那么如何确定一个软件系统的模块数目?分别从模块可分解性、可组装性、可理解性、连续性和保护性五个方面来理解:如果一种设计方法提供了把问题分解为子问题的系统化机制,它就能降低整个问题的复杂性,从而可以实现一种有效的模块化解决方案。如果一种设计方法能把现有的(可重用的)设计构件组装成新系统,它就能提供一种并非一切从头开始的模块化解决方案。如果可以把一个模块作为一种独立单元(无段参考其他模块)来理解,那么,这样的模块是易于构造和易于修改的。如果对系统需求的微小修改只会针对个别模块,而不是对整个系统的修改,则修改所引起的副作用将最小。如果在一个模块内出现异常情况时,它的影响仅局限在该模块内部,则由错误引起的副作用最小。,*,曲阜师范大学计算机科学学院,9,7.1.4 模块独立 模块独立是模块化、抽象、信息隐蔽的直接结果,是指系统中的模块尽可能地只涉及自己特定的子功能,并且模块接口简单,与其他模块没有过多的通信。如果系统中每个模块都具有很好的独立性,系统实现起来就更加容易。因此,模块独立性是衡量软件中模块质量最重要的指标。一般来说,采用耦合和内聚这两个定性的技术指标来对这一模块的独立性进行衡量。内聚性可以衡量各模块内部功能的结合强度,模块内部各元素之间结合得越紧密,则它的内聚性就越高;耦合性显示了模块与模块之间相互的依赖关系,模块与模块之间联系越紧密,耦合性就越高。,*,曲阜师范大学计算机科学学院,10,7.1.5 耦合 耦合度量了各模块之间相互关联的程度,各个模块之间接口的复杂程度、接口数据对模块内部运算的影响程度、使用模块的方式都决定了耦合的强弱。以下是耦合的几种主要形式:非直接耦合。两个模块之间的联系,仅限于被共同模块控制和调用,它们之间没有直接的联系,那么这种耦合就成为非直接耦合,因为模块和模块之间没有数据通信,所以它的耦合形式是最弱的。数据耦合。模块与模块之间发生联系,彼此之间通过接口参数实现通信,传递的接口参数是用于计算的,它们不会影响内部程序执行的路径。我们提倡用数据耦合,它是一种较弱的耦合方式。,*,曲阜师范大学计算机科学学院,11,控制耦合。如果在数据耦合的基础上,模块间接口参数不仅传递数据,同时还传递标志、名字、开关等控制信息,从而影响模块的内部程序执行路径。显而易见,控制耦合比数据耦合的耦合性要强一些,它属于中等程度的耦合。如果需要通过接口传递模块内多项功能的选择时,就需要用到控制耦合。公共耦合。在软件系统中,可能有独立于模块而存在的数据文件、公共变量和公共数据环境。模块之间通过访问公共数据环境从而实现通信。内容耦合。内容耦合是一种耦合性很强的耦合,这种耦合严重影响了模块的独立性。它的表现形式主要有以下几种:i.模块直接访问另一模块的内部数据;ii.模块不通过正常的入口转到另一模块内部;iii.模块之间存在一部分代码重叠;iv.某个模块有多个入口。内容耦合致使模块的变动变得非常困难,程序维护和升级也极其困难,这要求在设计软件结构时,不允许出现内容耦合。,*,曲阜师范大学计算机科学学院,12,7.1.6 内聚 内聚性是信息隐蔽概念的自然扩展,它度量了模块内部各个元素彼此结合的紧密程度,元素之间联系越紧密,其内聚性越强。把模块内聚分为以下几种主要类型:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。,*,曲阜师范大学计算机科学学院,13,偶然内聚。偶然内聚即模块内部各元素之间的联系很少或者没有。逻辑内聚。逻辑内聚将几种相关的功能组合在一起形成一个模块。时间内聚。时间内聚是指模块内部各功能之间的执行与时间相关。过程内聚。如果模块内各元素的执行是按照一定次序来进行的,即各个元素的处理是相关的,则称其为过程内聚。通信内聚。一个模块内部可以有几个功能部分,如果这些功能部分都使用相同的数据输入,或者产生相同的数据输出,这不是通信内聚。顺序内聚。如果模块内某一功能元素的输出作为另一个功能元素的输入,模块内各功能元素顺序联结,它们之间关系紧密,那么称这个模块为顺序内聚模块。功能内聚。如果为了实现模块的具体功能,模块内各个元素都是必需的,这些元素要协同工作,它们无法单独执行,称这样的模块为功能内聚模块。功能内聚模块的内聚程度很高,在进行软件设计时,应尽可能地实现功能内聚。,*,曲阜师范大学计算机科学学院,14,7.2 软件结构的描绘工具,7.2.1 层次图和HIPO图 层次图是用来描绘软件的层次结构。层次图很适合在自顶向下设计软件的过程中使用。,*,曲阜师范大学计算机科学学院,15,HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。为了能使HIPO图具有可追踪性,在H图(层次图)里除了最底层的方框之外,每个方框都加了编号。编号规则与数据流图的级联编号方式相同,图7.2加了编号后演变为图7.3。,*,曲阜师范大学计算机科学学院,16,7.2.2 结构图 Yourdon提出的结构图是进行软件结构设计的另一个有利工具。结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。,*,曲阜师范大学计算机科学学院,17,图7.4是结构图的一个例子。,*,曲阜师范大学计算机科学学院,18,图7.5表示当模块M中某个判定为真时调用模块A,为假时调用模块B。图7.6表示模块M循环调用模块A、B和C。,注意,层次图和结构图并不严格表示模块的调用次序。事实上,层次图和结构图只表明一个模块调用那些模块,至于模块内还有没有其他成分则完全没有表示。通常用层次图作为描绘软件结构的文档。结构图作为文档并不很合适,因为图上包含的信息太多有时反而降低了清晰程度。,*,曲阜师范大学计算机科学学院,19,*,曲阜师范大学计算机科学学院,20,7.3 面向数据流的设计过程,面向数据流的设计过程,也就是结构化设计方法(简称为SD),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。,*,曲阜师范大学计算机科学学院,21,7.3.1 基本概念和设计过程 SD方法能方便地将数据流图转换为软件结构,需要5个步骤:确定信息流的类型;划清流程边界;将数据流图映射为软件结构;提取层次控制结构;通过设计复审和使用启发式方法优化所得到的结构。,*,曲阜师范大学计算机科学学院,22,第3步所用映射方法涉及到信息流的类型,信息流分为变换流和事务流两种类型:变换流 在基本系统模型(即顶层数据流图)中,信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。,输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式,如果数据流图所描述的信息流具有上述特征,则称为变换流。,*,曲阜师范大学计算机科学学院,23,事务流 由于基本系统模型一般均可呈现为变换流,故任意系统中的信息均可用变换流刻画。,*,曲阜师范大学计算机科学学院,24,值得注意的是,在大型系统的DFD中,变换流与事务流往往交织在一起。比如在基于事务流的系统中,当信息沿动作路径流动时可能呈现变换流的特征。,*,曲阜师范大学计算机科学学院,25,7.3.2 变换分析 变换分析由一系列步骤组成,经过这些步骤就能把具有变换流特点的数据流图按预先确定的模式映射成软件结构。下面以“家庭保安系统”的传感器监测子系统为例说明变换分析的各个步骤。,*,曲阜师范大学计算机科学学院,26,*,曲阜师范大学计算机科学学院,27,7.3.2 变换分析 图7.10和图7.11分别为“家庭保安系统”的顶级和第一级数据流图。,*,曲阜师范大学计算机科学学院,28,*,曲阜师范大学计算机科学学院,29,步骤一:复审基本系统模型。步骤二:复审和精化软件数据流图。这一步主要是对软件需求规格说明书中的分析模型进行精化,直至获得足够详细的DFD。步骤三:确定DFD的特性,判定它为变换流还是事务流。设计人员首先要判定DFD中占主导地位的信息流,确定其特性,然后孤立具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。,数据沿1个传入路径进来,沿3个传出路径离开,无明显的事务中心,因此,该信息流是变换流。,*,曲阜师范大学计算机科学学院,30,步骤四:划定输入流和输出流的边界,孤立变换中心。输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,不过这对最后的软件结构影响不大。,*,曲阜师范大学计算机科学学院,31,步骤五:执行“一级分解”(First Level Factoring)。一级分解的目标是导出具有3个层次的程序结构,顶层为主控模块;底层模块执行输入、计算和输出功能;中层模块控制、协调底层的工作。程序结构可用Yourdon结构图(SC图)表示。图7.14所示的结构图对应于一级分解的上两层模块,即主控模块和下面几个中层控制模块:输入流控制模块(Ca),接收所有输入数据;变换流控制模块(Ct),对内部形式数据进行加工、处理,也称为中心变换。输出流控制模块(Ce),产生输出数据。主控模块(Cm)代表整个系统。,*,曲阜师范大学计算机科学学院,32,“传感器监测子系统”一级分解如图7.15所示,其中控制模块的名字概括了所有下属模块的功能。,*,曲阜师范大学计算机科学学院,33,步骤六:执行“二级分解”。二级分解过程是从中心变换的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块。,*,曲阜师范大学计算机科学学院,34,图7.13的输出流部分导出的程序结构如图7.17所示:,*,曲阜师范大学计算机科学学院,35,*,曲阜师范大学计算机科学学院,36,*,曲阜师范大学计算机科学学院,37,有必要为每个模块写一个简要的处理说明,应包括:进出模块的信息(接口描述);模块的局部信息;处理过程陈述,包括主要的判断点和任务;对有关限制和一些专门特性的简要说明(例如文件I/O、独立于硬件的特性、特殊的实时要求等)。,*,曲阜师范大学计算机科学学院,38,步骤七:采用启发式设计策略,精化所得到的结构雏形,改良软件质量,以“模块独立”为指导思想,对模块或合或拆,旨在追求高内聚、低耦合、易实现、易测试、易维护的软件结构。“传感器监测子系统”的结构雏形可修改如下:因只存在惟一一条传入路径,故输入控制模块可删除;由变换中心产生的整个子结构可归并为“建立警报条件”一个模块(选择电话号码的功能纳入其中),变换控制模块不再需要;(3)“格式化显示”和“生成显示”两个模块归并为“产生显示”一个模块。,*,曲阜师范大学计算机科学学院,39,“传感器监测子系统”精化后的程序结构如图7.19:,40,举例:人事信息更新,*,曲阜师范大学计算机科学学院,41,7.3.3 事务分析当数据流具有明显的事务特征时,如果能找到一个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。,*,曲阜师范大学计算机科学学院,42,*,曲阜师范大学计算机科学学院,43,事务流的映射方法,*,曲阜师范大学计算机科学学院,44,*,曲阜师范大学计算机科学学院,45,7.3.3 事务分析当数据流具有明显的事务特征时,如果能找到一个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。在“家庭保安系统”中“用户交互子系统”是一个事务分析过程。,*,曲阜师范大学计算机科学学院,46,事务分析法的步骤与变换分析方法基本相似,主要差别在于从数据流图到程序结构的映射。事务分析法可概括为7个步骤:步骤一:复审基本系统模型。步骤二:复审并精化软件数据流图。步骤三:确定数据流图的特征。显然,前三步与变换分析法相同。,*,曲阜师范大学计算机科学学院,47,步骤四:找出事务中心,确定由事务中心发出的每一动作路径的数据流特征。数条路径的公共源头即为事务中心,事务中心定位为“启动命令处理”框。事务中心一经确定,即可划定接受路径与所有动作路径的界限。,*,曲阜师范大学计算机科学学院,48,步骤五:把数据流图映射为事务处理型的程序结构。事务处理型的程序结构由“输入”和“散转”两部分组成。,*,曲阜师范大学计算机科学学院,49,“用户交互子系统”一级分解的结构如图7.23所示,*,曲阜师范大学计算机科学学院,50,步骤六:分解并精化事务结构以及每条动作路径所对应的结构。,步骤七:使用启发式设计策略,精化所得程序结构雏形,改良软件质量。这一步骤与变换分析法相同。,混合流,*,曲阜师范大学计算机科学学院,51,*,曲阜师范大学计算机科学学院,52,7.4 启发式设计,改造程序结构,降低耦合度,提高内聚度。改造程序结构,减少扇出,在增加程序深度的前提下追求高扇入。,*,曲阜师范大学计算机科学学院,53,深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。宽度是软件结构内同一层次上的模块总数的最大值。扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总是1)也不好。扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。,*,曲阜师范大学计算机科学学院,54,通过观察大量软件实例后发现,设计良好的软件结构通常顶层扇出较高,中层扇出较低,底层又高扇入到公共的实用模块中去。,*,曲阜师范大学计算机科学学院,55,改造程序结构,使任一模块的作用域在其控制域之内。模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。,*,曲阜师范大学计算机科学学院,56,改造程序结构,降低界面的复杂性和冗余程度,提高协调性。界面复杂是引起软件错误的一个基本要素。模块功能应该是可预言的,避免对模块施加过多限制。改造程序结构,追求单入口单出口的模块。为满足设计或可移植性的要求,把某些软件用包(Package)的形式封装起来。无论是采用变换分析法还是事务分析法,获得程序结构后,必须开发一系列辅助文档作为软件总体设计的组成部分。主要工作包括:陈述每个模块的处理过程;描述每个模块的界面;根据数据字典定义数据结构;综述设计中的所有限制和约束;对概要设计进行复审;对设计进行优化。,*,曲阜师范大学计算机科学学院,57,力争降低模块接口的复杂程度。例如,求一元二次方程的根的模块QUAD_ROOT(TBL,X),其中用数组TBL传送方程的系数,用数组X回送求得的根。这种传递信息的方法不利于对这个模块的理解,不仅在维护期间容易引起混淆,在开发期间也可以发生错误。下面这种接口可能是比较简单的:QUAD_ROOT(A,B,C,ROOT1,ROOT2)其中,A、B、C是方程的系数,ROOT1和ROOT2是算出的两个根。接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。,*,曲阜师范大学计算机科学学院,58,7.5 设计优化原则,软件设计人员在考虑设计优化问题时应牢牢记住,一个不能工作的“最佳设计”没有任何实际意义。对软件结构的修改越早越好。简洁的程序结构容易调试,容易维护。对时间复杂性有特殊要求的应用,优化过程一直要延续到详细设计乃至编码阶段。对这类软件的优化应该根据软件中普遍存在的“80-20原则”采用下述对策:在先不考虑时间复杂性的情况下设计并精化软件结构;借用CASE工具模拟分析运行时的性能,定位出低效的部分;详细设计时对最耗时的模块仔细推敲,以便减少时间开销;用高级语言编程;对大量占用CPU资源的模块必要时用低级语言重新编码,以提高效率。设计优化所遵守的格言是“先让它工作起来,再使它快起来”。,*,曲阜师范大学计算机科学学院,59,习题7,用面向数据流的方法设计下列系统的软件结构:(1)储蓄系统(参见习题3第2题)。(2)机票预订系统(参见习题3第3题)。(3)患者监护系统(参见习题3第4题)。,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开