第1章概述-Welcometonginx!.ppt

上传人:ga****84 文档编号:328821 上传时间:2018-09-22 格式:PPT 页数:109 大小:1.04MB
下载 相关 举报
第1章概述-Welcometonginx!.ppt_第1页
第1页 / 共109页
第1章概述-Welcometonginx!.ppt_第2页
第2页 / 共109页
第1章概述-Welcometonginx!.ppt_第3页
第3页 / 共109页
第1章概述-Welcometonginx!.ppt_第4页
第4页 / 共109页
第1章概述-Welcometonginx!.ppt_第5页
第5页 / 共109页
点击查看更多>>
资源描述

1、2018年9月22日,第1页,第4章 软件总体设计,本章内容结构,本章引言学习目标教学内容本章小结思考和练习课堂讨论,本章引言,经过需求分析阶段的工作,建立了由数据流图、数据字典和一组算法描述所定义的系统逻辑模型,系统必须“做什么”已经清楚了,下一步将进入软件设计阶段,即着手实现系统需求,要把“做什么”的逻辑模型变换为“怎样做”的物理模型。同时要把设计结果反映在“软件设计规格说明书”文档中。因此软件设计是把软件需求转换为软件表的过程。总体设计是进入软件设计的第一个阶段,只描述软件的总的体系结构,第二个阶段是详细设计,即对结构进一步细化。本章主要介绍软件总体设计,第5 章介绍软件的详细设计。,2

2、018年9月22日,第2页,2018年9月22日,第3页,学习目标,理解软件总体设计的目标和任务理解软件结构设计的准则理解并掌握软件设计的概念和原理理解并掌握数据库设计方法熟悉软件设计的各类图形工具熟练掌握结构化设计方法熟悉总体设计说明书的主要内容及撰写方法,2018年9月22日,第4页,教学内容,4.1 软件总体设计的目标和任务 4.2 软件结构设计准则4.3 软件设计的概念和原理4.4 数据库设计4.5 软件结构设计的图形工具4.6 结构化设计方法4.7 总体设计说明书4.8 本章小结和习题,2018年9月22日,第5页,4.1 软件总体设计的目标和任务,总体设计阶段的基本目标就是回答“概

3、括地说,系统应该如何实现?”这个问题 。总体设计的另一项任务是设计软件的总体结构,即确定系统中的每个程序是由哪些模块组成的,每个模块的功能以及模块和模块之间的接口、调用关系等。,4.1 总体设计的过程:,系统设计:确定系统的具体实现方案。结构设计:确定软件结构。,设想供选择的方案,选 取 合理的方案,推荐最佳方案,功能分解,设计软件结构,数据库设 计,制订测试计划,书写文档,数据流图,系统流程图 组成系统的物理元素清单 成本/效益分析 实现系统的进度计划,系统说明 用户手册 测试计划 详细的实现计划 数据库设计结果,审查和复 审,概括为两个主要阶段,详细过程如下:,4.1 软件总体设计的目标和

4、任务,典型的总体设计过程包括以下9个步骤:1.设想供选择的方案根据需求分析阶段得出的数据流图,考虑各种可能的实现方案,力求从中选出最佳方案。2.选取合理的方案从前一步得到的一系列供选择的方案中选取若干个合理的方案。3.推荐最佳方案分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并且为推荐的方案制定详细的实现计划。,4.功能分解首先进行结构设计,然后进行过程设计。结构设计确定程序由哪些模块组成,以及这些模块之间的关系;过程设计确定每个模块的详细设计处理过程。结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。5.设计软件结构通常程序中的一个模块完成一个适当的子功能。应当把模

5、块组织成良好的层次系统。软件结构可以用层次图或结构图来描述。如果数据流图已经细化到适当的层次,则可以直接从数据流图映射出软件结构,这就是面向数据流的设计方法。,4.1 软件总体设计的目标和任务,6.设计数据库对于需要使用数据库的应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步涉及数据库。7.制定测试计划在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。8.书写文档应该用正式的文档记录总体设计的结果。9.审查和复审最后应该对总体设计的结果进行严格的技术审查和管理复审。,2018年9月22日,第10页,4.2 软件结构设计准则,软件总体设

6、计的任务是软件体系结构设计和软件模块设计。4.2.1 软件体系结构设计准则4.2.2 软件模块设计准则,2018年9月22日,第11页,4.2.1 软件体系结构设计准则,软件体系结构是软件系统中最本质的东西。一个软件体系结构的设计准则如下。 体系结构是对复杂事物的一种抽象。良好的体系结构是普通适用的,它能够描述各种风格的软件系统结构,可以高效地处理多种多样的个体需求。 体系结构在一定的时间内保持稳定。确保接口一致,既能确保某一体系结构配置描述内相关接口描述的一致,又能确保建立关联的两个构件接口描述的一致性。 良好的体系结构意味着普通、高效和稳定。,2018年9月22日,第12页,4.2.2 软

7、件模块设计准则,1降低模块之间的耦合性,提高模块的内聚性;2模块结构的深度、宽度、扇出和扇入应适当;3模块的作用范围应该在控制范围内;4模块接口设计要简单,以便降低复杂程度和冗余度;5设计功能可预测并能得到验证的模块;6适当划分模块规模,以保持其独立性。以上介绍的软件结构设计准则是人们经过长期的软件开发实践总结出来的,但是这些准则不是设计的目标,也不是在设计时必须普遍遵循的原理。因此在实际应用时,应根据系统的大小、难易程度加以灵活应用。,4.2.2 软件模块设计准则,1.降低模块之间的耦合性,提高模块的内聚性 .通过模块分解或合并,降低耦合提高内聚。,图4.2 模块的分解和合并,4.2.2 软

8、件模块设计准则,2.模块结构的深度、宽度、扇出和扇入应适当。深度:软件结构中模块的层数,它表示控制的层数,在一定意义能粗略地反映系统的规模和复杂程度。 宽度:同一层次上模块的最大个数。扇出:是一个模块直接调用的模块数目。经验证明,好的系统结构的平均扇出数一般是3-4,不能超过5-9。 扇入:有多少个上级模块直接调用它。 一般设计的比较好的软件结构,顶层扇出高,中层扇出较少,底层模块有高扇入。,4.2.2 软件模块设计准则,深度=5,宽度=9,扇入=2扇出=1,4.2.2 软件模块设计准则,P,扇出过大,Q,扇入过大,4.2.2 软件模块设计准则,3.模块的作用范围应该在控制范围之内。模块的作用

9、范围:指受该模块内一个判断影响的所有模块的集合;模块的控制范围:指模块本身以及其所有直接或者间接从属于它的模块集合;在设计的好的软件结构中,所有受判断影响的模块都从属于作出判断的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块。,4.2.2 软件模块设计准则,M,A,G,B,C,D,E,F,A的作用范围,A的控制范围,4.2.2 软件模块设计准则,解决方案:把模块A中的判定移到模块M中。,A的判定上移,把模块G移到模块A下面,作为他的下级模块。,4.2.2 软件模块设计准则,4.模块接口设计要简单,以便降低复杂程度和冗余度。模块接口复杂是软件发生错误的一个主要原因,应该仔细设计模块

10、接口,使得信息传递简单并且和模块的功能一致。例:解一元二次方程的函数QUAD_ROOT(TBL,X)其中数组TBL传送方程的系数数组X返回求得的根QUAD_ROOT(A,B,C,ROOT1,ROOT2),4.2.2 软件模块设计准则,5.设计功能可预测并能得到验证的模块。模块的功能应该能够预测,但也要防止模块功能过分局限。功能可预测:如果一个模块可以当作一个黑盒子,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。,4.2.2 软件模块设计准则,6.适当划分模块规模,以保持其独立性。经验表明,一个模块的规模不应过大,最好能写在一页纸内。通常规定50-100行语句,最多不超过50

11、0行。过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,一般说来,分解后不应该降低模块独立性。过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。,2018年9月22日,第23页,4.3 软件设计的概念和原理,4.3.1 模块和模块化4.3.2 抽象4.3.3 信息隐蔽和局部化4.3.4 模块独立性及其度量,4.3.1 模块和模块化,模块是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合。 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。,模块数目和成本的关系,M,每个程序都对应地有一个最适当的模块数M,使得系统的开发

12、成本最小。,4.3.1 模块和模块化,为什么要模块化?模块化是为了使一个复杂的大型程序能被人的智力所管理;如果一个大型程序仅由一个模块组成,它将很难被人所理解。,模块化降低软件复杂度的简单证明:,令:C(X)表示问题 X 的复杂度函数; E(X)解决问题 X 所需工作量的复杂度函数;,4.3.1 模块和模块化,模块化的根据:如果C(P1)C(P2),显然E(P1)E(P2);根据人类解决一般问题的经验,C(P1+P2)C(P1)+C(P2)综上所述,得到下面的不等式E(P1+P2)E(P1)+E(P2),4.3.1 模块和模块化,模块化的作用:采用模块化原理可以使软件结构清晰,不仅容易设计也容

13、易阅读和理解;模块化使软件容易测试和调试,因而有助于提高软件的可靠性;模块化能够提高软件的可修改性;模块化也有助于软件开发工程的组织管理。,4.3.2 抽象,抽象是人类认识自然界中的复杂事物和复杂现象过程中使用的一种思维工具。 抽象:现实世界中一定事物、状态或过程之间总存在某些相似的或者共性的方面,把这些相似的方面集中或概括起来,暂时忽略它们之间的次要因素,这就是抽象。在模块化问题求解时,可以在不同层次上进行抽象 。,4.3.2 抽象,一般抽象过程:处理复杂系统的唯一有效的方法是用层次的方式构造和分析它。 一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级

14、的概念构造和理解,如此进行下去,指导最低层次的具体元素。例如:过程抽象、数据抽象和控制抽象。,4.3.2 抽象,软件工程的抽象过程:软件工程过程的每一步都是对软件解法的抽象层次的一次精化。 在可行性研究阶段,软件作为系统的一个完整部件。在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计过渡时,抽象的程度也随之减少了;最后,当源程序写出来以后,也就达到了抽象的最底层。,4.3.3 信息隐蔽和局部化,信息隐蔽:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化:和信息隐蔽的概念密切相关,它是指把一些关系密

15、切的软件元素物理地放的彼此靠近。显然,局部化有助于实现信息隐藏。,4.3.3 信息隐蔽和局部化,信息隐蔽和局部化的作用:“隐藏”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。使用信息隐蔽原理作为模块化系统设计的标准就会带来极大好处。因为绝大多数数据和过程对于软件的其他部分而言是隐蔽的,在修改期间由于疏忽而引入的错误就很少可能传播到软件的其他部分。,4.3.4 模块独立性及其度量,模块的独立性是一个好的软件设计的关键。 模块的独立性要求:每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。,4.3.4 模块

16、独立性及其度量,模块独立的重要性:有效模块化的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。,4.3.4 模块独立性及其度量,模块的独立性可以从两个方面来度量:耦合衡量不同模块彼此间相互依赖的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单。内聚衡量一个模块内部各个元素之间彼此结合的紧密程度的度量。 内聚要高,每个模块完成一个相对独立的特定子功能。,4.3.4 模块独立性及其度量,耦合:是对一

17、个软件结构内不同模块之间互联程度的度量。要求:在软件设计中应该追求尽可能松散耦合的系统。可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解;模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小;模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。,4.3.4 模块独立性及其度量,耦合程度的度量:(1)无直接耦合如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们完全独立。在一个软件系统中不可能所有模块之间都没有任何连接。(2)数据耦合如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。,通过变元传递

18、数据,4.3.4 模块独立性及其度量,评价:系统中至少必须存在这种耦合。一般说来,一个系统内可以只包含数据耦合。数据耦合是理想的目标。维护更容易,对一个模块的修改不会使另一个模块产生退化错误。,4.3.4 模块独立性及其度量,(3)标记耦合当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分元素时,就出现了特征耦合。评价:被调用的模块可使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制。无论何时把指针作为参数进行传递,都应该仔细检查该耦合。,4.3.4 模块独立性及其度量,(4)控制耦合如果两个模块彼此间传递的信息中有控制信息,这种耦合称为控制耦合。,评价:控制耦合往往是多

19、余的,把模块适当分解之后通常可以用数据耦合代替它。被调用的模块需知道调用模块的内部结构和逻辑,降低了重用的可能性。,4.3.4 模块独立性及其度量,(5)公共环境耦合当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等。,4.3.4 模块独立性及其度量,公共环境耦合的类型:一个模块往公共环境送数据,另一个模块从公共环境取数据。数据耦合的一种形式,是比较松散的耦合。,(a)松散的公共环境耦合,(b)紧密的公共环境耦合,两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介

20、于数据耦合和控制耦合之间。,模块A,模块B,模块C,模块D,模块L,模块N,全局性数据结构公共耦合,全 局 性简单变量,如图假定模块C、D、N均可访问公用区中某一数据结构,模块C首先从中读出数据,然后启动模块D,对数据进行计算和更新,如果模块D有错误,计算和更新的数据也随之出错,则当模块N在以后的某个时候读取上述数据时,就会得出错误的结果。虽然在调用N时出错,但根源在D,这就给调试和错误的诊断带来困难。,4.3.4 模块独立性及其度量,评价:与结构化编程矛盾,生产的代码可读性差。如果在一个模块中对一个全局变量的声明进行修改,必须修改能够访问该全局变量的每一个模块。公共环境耦合的模块难于重用,必

21、须提供一个全局变量的清单。即使模块本身不改变,它和产品中其他模块之间公共环境耦合的实例数也会变化非常大。潜在危险很大。模块暴露出比需要更多的数据,难以控制数据存取。有些情况下公共环境耦合更好。,4.3.4 模块独立性及其度量,(6)内容耦合最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块之间就发生了内容耦合:一个模块访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。,(a)进入另一个模块内部,(b)模块代码重叠,(c)多个入口模块,4.3.4 模块独立性及其度量,耦合是影响软件复杂程度的一个重要因素。应该采用下述设计

22、原则:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共环境耦合的范围,完全不用内容耦合。,4.3.4 模块独立性及其度量,内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事。要求:设计时应该力求做到高内聚,通常中等成都的内聚也可以采用的,而且效果和高内聚相差不多;但是,低内聚不要使用。内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。,4.3.4 模块独立性及其度量,(1)偶然内聚如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的

23、,就叫偶然内聚。评价:模块内各元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,在另一种应用场合又不允许这种修改,从而陷入困境。可理解性差,可维护性产生退化。模块是不可重用的。解决方案:将模块分成更小的模块,每个小模块执行一个操作。,4.3.4 模块独立性及其度量,(2)逻辑内聚如果一个模块完成的任务在逻辑上属于相同或类似的一类,则称为逻辑内聚。评价:接口难以理解,造成整体上不易理解。完成多个操作的代码互相纠缠在一起,即使局部功能的修改有时也会影响全局,导致严重的维护问题。难以重用。解决方案:模块分解。,4.3.4 模块独立性及其度量,(3)时间内聚如果一个模块包含的任务必须在同一

24、段时间内执行,就叫时间内聚,如初始化模块。评价:时间关系在一定程度上反映了程序某些实质,所以时间内聚比逻辑内聚好一些。模块内操作之间的关系很弱,与其他模块的操作却有很强的关联时间内聚的模块不太可能重用。模块是不可重用的。,4.3.4 模块独立性及其度量,(4)通信内聚如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚,即在同一个数据结构上操作。评价:模块中各操作紧密相连,比过程内聚更好。不能重用。解决方案:将模块分成多个模块,每个模块执行一个操作。,4.3.4 模块独立性及其度量,(5)顺序内聚如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行

25、,则称为顺序内聚。评价:根据数据流图划分模块时,通常得到顺序内聚的模块,这种模块彼此间的连接往往比较简单。,4.3.4 模块独立性及其度量,(6)功能内聚如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。评价:模块可重用,应尽可能重用。可隔离错误,维护更容易。扩充产品功能时更容易。,4.3.4 模块独立性及其度量,结论:在设计软件时,尽可能做到高内聚。偶然内聚、逻辑内聚和时间内聚属于低内聚,通信内聚属于中内聚,顺序内聚和功能内聚属于高内聚。,2018年9月22日,第56页,4.4 数据库设计,全局E-R 模型是与数据模型和计算机软硬件环境无关的,

26、法在计算机中直接使用,需要转化为特定DBMS所支持的数据模型。目前的环境下,进入设计阶段后,一般需要将该E-R 模型进行转化为关系模型并进行优化,然后再继续转化为特定DBMS 的逻辑模式。本节讨论设计阶段数据库E-R 模型向关系模型特定逻辑模式的转化问题。 4.4.1 数据库系统的三级模式概念4.4.2 数据库逻辑设计原则4.4.3 关系数据库规范化,2018年9月22日,第57页,4.4.1 数据库系统的三级模式概念,数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式3 级构成,如图4.3 所示。,2018年9月22日,第58页,4.4.2 数据库逻辑设计原则,概念结构是独立于任

27、何一种数据模型的信息结构。从理论上讲,数据库逻辑设计应该选择最适合于相应概念结构的数据模型,然后对支持该数据模型的各种DBMS 进行比较后,选择最合适的DBMS,但是实际情况是设计人员选择的余地很小。目前DBMS 产品一般支持关系、网状、层次3 种模型中的一种,对于特定模型,各机器系统又有自己的一些限制,提供不同的环境与工具。因此逻辑结构的设计一般分3 步进行,如图4.4 所示。,2018年9月22日,第59页,4.4.2 数据库逻辑设计原则,因为目前的数据库应用系统大多采用关系数据模型的RDBMS产品,所以这里只介绍E-R模型向关系数据模型的转换方法。E-R 模型向关系模型的转换要解决的问题

28、是如何将实体型和实体之间的联系转换为关系模式,如何确定这些关系模式的属性和码。针对E-R 图中的实体、联系和属性,这种转换一般遵循如下原则。 每个实体转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。 对于实体之间的联系,则根据其联系类型,分别按照以下情况转换:a1:1 联系:将该联系可以转换并归并到任何一个实体端转换后的关系模式中,同时将另一个实体的码和联系的属性一并加入到联系所在的实体端所对应的关系模式;,2018年9月22日,第60页,4.4.2 数据库逻辑设计原则,E-R 模型向关系模型的转换一般遵循如下原则(续)。b1:n 联系:将1 端实体的码和联系的属性都转换归

29、并到多端实体转换后的关系模式中,转换以后关系模式的码为多端实体的码;cm:n 联系:将联系转换为一个单独的关系模式,与该联系相连的实体的码及联系本身的属性均转换为关系的属性,各实体的码组成该关系模式的码或关系码的一部分;d3 个或3 个以上实体之间的一个多元联系可以转换为一个关系模式,与该多元联系相连的各实体的码及联系本身的属性均转换为关系的属性,各实体的码组成该关系模式的码或关系码的一部分;e具有相同码的关系模式可合并。,2018年9月22日,第61页,4.4.3 关系数据库规范化,规范化方法是专门针对关系模型建立的一种数据库设计方法。关系数据库中的规范化问题是指关系数据库中的关系必须满足一

30、定的规范化要求,对于不同的规范化程度可用范式来衡量。关系数据库规范化理论主要解决的是如何构造合适的数据逻辑结构的问题。范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到标准的关系才是规范化的。目前主要有6 种范式:第一范式、第二范式、第三范式、BC 范式、第四范式和第五范式。满足最低要求的叫第一范式,简称为1NF。其余以此类推。显然各种范式之间存在关系:1NF2NF3NFBCNF4NF5NF。通常把某一关系模式R 满足第n 范式简记为RnNF。最重要的是3NF 和BCNF,它们是进行规范化的主要目标。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系

31、模式的集合,这个过程称为规范化。,2018年9月22日,第62页,4.4.3 关系数据库规范化,规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”。,4.5 软件结构设计的图形工具,在总体设计阶段可能会用到以下几种图形工具:软件结构图层次图HIPO图,4.5.1 软件结构图,软件结构图的主要内容有: 模块:用方框表示,方框中写上模块的名字,模块名最好能反映模块功能; 模块的调用关系:两个模块之间用单向箭头或直线连接起来表示它们的调用关系; 辅助符号:弧形箭头表示循环调用;菱形表示选择或者条件调用 ;,4.5.1 软件结构图,软件结构图是软件系统的模块层

32、次结构,用来表达软件的组成模块及其调用关系。Yourdon等人提出结构图(Structure Chart,SC)是进行软件结构设计的有力工具。基本符号:方框:代表一个模块;方框之间的直线:表示模块的调用关系。,4.5.1 软件结构图,软件结构图示例,4.5.1 软件结构图,循环调用和选择调用的表示,附加符号:循环调用:模块A循环调用模块B、C、D;选择调用:判定为真时调用模块T1,为假时调用模块T2。,4.5.2 层次图,层次图用来描绘软件的层次结构,很适合在自顶向下设计软件的过程中使用。层次图和层次方框图的区别:,4.5.2 层次图,文字处理系统的层次图,4.5.3 HIPO图,HIPO图是

33、美国IBM公司发明的层次图+输入/处理/输出图的英文缩写。为了能使HIPO图具有可追踪性,在H图(层次图)里除了最顶层的方框之外,每个方框都加上了编号。和H图中每个方框相对应,应该有一张IPO图,描绘这个方框代表的模块的处理过程。模块在H图中的编号便于追踪了解这个模块在软件结构中的位置。,4.5.3 HIPO图,带编号的文字处理系统层次图(H图),4.6 结构化设计方法,结构化设计方法是一种把在数据流图映射为软件结构图,信息流的类型 决定了映射的方法。信息流有两种类型:变换流事务流,4.6.1 数据流图及其类型,图4.10 变换型数据流图,变换型数据流图基本呈线性形状的结构,由输入、变换、输出

34、三部分组成,变换是系统地变换中心。,逻辑输入,4.6.1 数据流图及其类型,图4.11 事务型数据流图,在事务型数据流图,数据项沿着输入同路到达一个处理T,T根据输入数据的类型在若干动作序列中选出一个来执行。处理T称为事务中心。,4.6.2 结构化设计方法的步骤,1.复审数据流图,必要时可进行修改或精化;对需求分析阶段得出的数据流图认真复查,并且在必要时进行精化。不仅要确保数据流图给出了目标系统的正确的逻辑模型,而且应该使数据流图中每个处理都代表一个规模适中相对独立的子功能。,4.6.2 结构化设计方法的步骤,2.确定数据流图类型;如果是变换型,确定逻辑输入和逻辑输出的边界,找出变换中心,映射

35、为变换结构的顶层和第一层;如果是事务型,确定事务中心和活动路径,映射为事务结构的顶层和第一层,建立软件结构的基本框架;,4.6.2 结构化设计方法的步骤,3.分解上层模块,设计中下层模块结构;4.根据软件结构设计准则对软件结构求精并改进;5.导出接口描述和全程数据结构;6.复审。如果有错,转入修改完善,否则进入下一阶段详细设计。,4.6.3 变换型分析设计,1.确定逻辑输入和逻辑输出的边界,找出变换中心2.设计软件结构的顶层和第一层 位于软件结构最顶层的主模块协调下述从属的控制功能:输入模块:协调对所有输入数据的接受;变换中心:管理对内部形式的数据的所有操作;输出模块:协调输出信息的产生过程。

36、,4.6.3 变换型分析设计,4.6.3 变换型分析设计,3.设计中下层模块 处理映射成软件结构中一个适当的模块。完成中下层模块的设计:从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中“输入”模块下的一个低层模块;然后沿着输出通路向外移动,把输出通路中的每个处理映射成直接或者间接接受“输出”模块控制的一个低层模块;最后把变换中心内的每个处理映射成“变换”模块控制的一个模块。,4.6.3 变换型分析设计,4.6.3 变换型分析设计,具有边界的变换型数据流图,4.6.3 变换型分析设计,从上页图导出的初始结构图,4.6.3 变换型分析设计,4.对初始结构图优化为了产生

37、合理的分解,得到尽可能高的内聚、尽可能松散的耦合,为了得到一个易于实现、易于测试和易于维护的软件结构,应该对初步分割得到的模块进行再分解或合并。,4.6.4 事务型分析设计,步骤如下:1.在数据流图上确定事务中心、输入流和活动路径2.设计事务结构的顶层和第一层由事务流映射成的软件结构包括一个接收分支和一个发送分支。,4.6.4 事务型分析设计,3.设计事务结构的中下层 从事务中心的边界开始,把沿着接收流通路的处理映射成模块;发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流图中的每个活动流通路映射成与它的流特征相对应的结构。4.对初始的事务结构优化工作同变换结构,4.6.4

38、 事务型分析设计,4.6.5 综合分析设计,实际中,一些大型软件系统数据流图往往既不是单纯的变换型,也不是单纯的事务型,而是变换型结构和事务型结构的混合结构。对于这种既有变换型又有事务型,两种类型混合在一起的综合型数据流图的转换,通常采用变换分析为主、事务分析为辅的方式进行软件结构设计。 首先确定数据流图整体上的类型。 然后利用变换型数据流图的分析方法,先找出主加工,把软件系统分为输入、变换、输出三部分,由此设计出软件系统的顶层和第一层。 最后根据数据流图各个部分的结构特点,适当地运用“变换分析”或“事务分析”就可得出初始软件结构图的某个方案。,4.6.5 综合分析设计,例. 开发一个带有微处

39、理器的汽车数字仪表板控制系统, 1.功能描述:(1) 通过模数转换实现传感器和微处理机接口;(2) 在发光二极管面板上显示数据;(3) 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4) 指示加速或减速;(5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。,2.设计步骤,第1步 复查基本系统模型。第2步 复查并精化数据流图。第3步 确定数据流图的类型。输入有两条通路进入系统,然后沿着5条通路离开,没有明显的事务中心。因此它属于变换型结构的数据流图。第四步 确定输入、变换和输出边界。输入流、输出流的边界的确定具有一定的任意性,因为不同的人对系统的理解

40、不同。,读旋转信号,收集和求平均,转换成转/分( rpm),计算里程,确定加速 / 减速,产生加速/减速显示,产生里程显示,计算mph和超速值,计算燃料消耗,发出铃声,产生mph显示,产生 mpg显示,读和校核,计算gph,旋转信号,信号/秒 SPS,SPS,SPS,rpm,rpm,箭头指示,上箭头,水平线,下箭头,英里,超速值,显示,铃声,mph,mph,mpg,gph,燃料流,燃料流传感器信号,Mpg 显示,读旋转信号,收集和求平均,转换成转/分( rpm),计算里程,确定加速 / 减速,产生加速/减速显示,产生里程显示,计算mph和超速值,计算燃料消耗,发出铃声,产生mph显示,产生 m

41、pg显示,读和校核,计算gph,旋转信号,信号/秒 SPS,SPS,SPS,rpm,rpm,箭头指示,上箭头,水平线,下箭头,英里,超速值,显示,铃声,mph,mph,mpg,gph,燃料流,燃料流传感器信号,Mpg 显示,第5步 设计系统的上层模块结构。,上层的模块结构有两层,顶层是系统模块,第一层由输入模块、变换模块和输出模块三个模块组成。,图 数字仪表板系统的第一级分解,第6步 分解上层模块,设计下层模块。,输入部分下层模块的设计,从变换中心的输入流边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中输入模块控制下的一个低层模块。,输出部分的下层模块设计从变换中心输出流边界

42、开始然后沿输出通路向外移动,把输出通路中每个处理映射成系统结构中输出模块控制的一个低层模块;,图 未经精化的输入结构,读旋转信号,收集和求平均,转换成转/分( rpm),读和校核,计算gph,旋转信号,信号/秒 SPS,SPS,SPS,rpm,燃料流,燃料流传感器信号,图 未经精化的输出结构,变换部分的映射是把变换中心内的每个处理,映射成系统结构中变换模块控制下的若干个模块。,图 未经精化的变换结构,第七步 精化模块结构,在二级分解后,得到系统的初步结构图,根据模块独立性原理和启发规则进行精化,通过分析对本例中的一些模块做如下修改:在输入结构中,模块“转换成rpm”和“收集sps”可以合并;在

43、输出结构中,模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;在变换结构中,模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。,图 精化后的数字仪表板系统的软件结构,变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统数据流图往往是变换型结构和事务型结构的混合结构。此时一般以“变换分析”为主,“事务分析”为辅进行软件结构设计:先找出主加工,设计出结构图的上层,然后根据数据流图各部分的结构特点适当地运用“变换分析”或“事务分析”就可得出初始结构图的某个方案。,总结:,4.6.6 设计优化,设计优化应在满足信息要求的情况下,力求做到在有效结构之下,使模块最少,

44、接口最简单,一般设计优化应考虑以下几个方面:(1) 在不考虑时间因素的前提下开发并精化软件结构;(2) 在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们的处理过程(算法),以求提高效率;,(3) 使用高级程序设计语言编写程序;(4) 在软件中孤立出那些大量占用处理机资源的模块;(5) 必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以求提高效率。上述优化方法遵守了一句格言:“先使它能工作,然后再使它快起来。”,2018年9月22日,第103页,4.7 总体设计说明书,总体设计说明书主要包括以下内容。1引言:编写目的、项目背景、定义、参考资料;2任务概述:目标、运行环境

45、、需求概述、条件与限制;3总体设计: 处理流程、总体结构和模块外部设计(给出软件系统的结构图)、功能分配(表明各项功能与程序的关系)4接口设计:外部接口(用户界面、软件与硬件接口)、内部接口(模块之间的接口);5数据结构设计:逻辑结构设计、物理结构设计、数据结构与程序的关系;,2018年9月22日,第104页,4.7 总体设计说明书(续),总体设计说明书主要包括以下内容。6运行设计:运行模块的组合、运行控制、运行时间;7出错处理设计:出错输出信息、出错处理对策(如设置后备、性能降级、恢复及再启动等);8安全保密设计9维护设计:说明为方便维护工作的设施,如维护模块等。,2018年9月22日,第1

46、05页,本章小结,软件总体设计的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务。总体设计阶段主要由两个小阶段组成,首先进行系统设计,从数据流图出发设想完成系统功能的若干种推荐方案,然后比较分析这些方案,最后和用户共同选定一个最佳方案;然后进行软件结构设计,结构化设计方法把软件结构主要划分为变换型和事务型两大类,并且提出与之相应的变换型设计和事务型设计两种方法,以及综合型数据流图的设计方法。系统流程图用来表达分析员对现有系统的认识和描绘他对未来物理系统的设想。,2018年9月22日,第106页,本章小结(续),软件结构的模块化设计遵循抽象、信息隐蔽、分解、逐步求精和模块独立性等一系列指

47、导准则。模块独立性是一个良好设计的关键,评价标准主要是模块的耦合和内聚。数据库设计是指在一个给定的应用环境下,确定一个最优数据模型和处理模式,主要包括数据库逻辑结构设计、物理结构设计和数据规范化。总体设计阶段产生的文档是总体设计说明书,它既是详细设计、编码的基础,也是进行测试的依据之一。,习题,总体设计阶段的主要目的和任务是什么?为每种类型的模块耦合和模块内聚各举一个具体例子。模块的耦合性和软件的可移植性有什么关系?说明理由。如果区分数据流图的类型?试述“变换型数据流图”和“事务型数据流图”的设计步骤。画出习题3中的第8题的软件结构图。 试将下面的变换型数据流图转换成软件结构图。,习题,工资管理系统中的一个子系统有如下功能:由基本工资计算应扣除(例如水电气费等)的部分;根据职工的出勤情况计算奖金部分;根据输入的扣除额及奖金计算工资总额部分;由工资总额计算应扣除税金部分;根据计算总额部分和计算税金部分传递来的有关职工工资详细信息生成工资表。试根据需求画出该问题的数据流图,并将其转换为软件结构图。8.比较软件结构图和层次图的异同。,课堂讨论,根据前面章节选择的软件开发项目,根据本章内容继续完成总体设计的相关内容;,2018年9月22日,第109页,Question?,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。