(计算机)总体设计.ppt
《(计算机)总体设计.ppt》由会员分享,可在线阅读,更多相关《(计算机)总体设计.ppt(133页珍藏版)》请在三一办公上搜索。
1、第四章 总体设计,第四章 总体设计,4.1 总体设计的任务4.2 总体设计的概念和原理4.3 设计准则4.4 总体设计常用的方法和工具4.5 数据库设计,4.1 总体设计的任务,软件设计软件设计的任务是从软件需求规格说明书出发,形成软件的具体设计方案,即将需求模型转换为软件设计。软件设计是一个把软件需求变换成软件表示的过程,即根据需求分析的“做什么”,确定系统应该“怎么做”。软件设计的结果是软件设计规格说明书。软件设计是后续开发步骤及软件维护工作的基础。从技术观点来看,软件设计包括数据设计、体系结构设计、接口设计、过程设计。通常将软件设计分为总体设计(概要设计)和详细设计(过程设计)两个阶段。
2、,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。,4.1 总体设计的任务,4.1 总体设计的任务,总体设计阶段,具体任务如下:(1)制定规范为软件开发组制定设计时应共同遵守的标准。以便协调组内各成员工作。通常包括:阅读理解软件需求说明书,确认用户需求能否实现,进而确定设计目标及其优先级。根据目标确定最合适的方案。规定设计文档编制标准,包括文档体系、用纸及排版样式、记述的详细途径、图形画法等。规定编码的信息形式(代码体系)、与硬件/操作系统的接口规约等。制定编程规范,如命名规则、注释要求、质量保证要求、可读性要求、测试要求等。,4.1 总体设计的任务,(
3、2)软件系统结构设计软件系统结构设计即确定组成系统的程序及相互关系。具体内容为:采用某种方法,将复杂系统按功能划分成模块。确定每个模块的功能。确定模块之间的调用关系。确定模块之间的接口,即模块之间传递的信息。评价模块结构的质量。软件结构设计是以模块为基础的,需求分析阶段,已经把系统分解为层次结构,设计阶段要实现进一步的模块划分,并组成模块的层次结构。,4.1 总体设计的任务,(3)数据结构及数据库设计数据结构设计需求分析阶段,通过数据字典对数据的组成、操作约束、相互关系等方面进行描述,确定了数据的结构特征。数据结构设计主要对数据字典的组成、操作约束、数据之间的相互关系等方面进行描述,确定数据的
4、结构特征。,4.1 总体设计的任务,数据库设计概念结构设计:及数据库的概念模式设计,一般指构造实体关系模型(E-R,Entity-Relationship)模型。逻辑结构设计:将E-R模型转换为DBMS支持的关系模型。物理结构设计:设计数据库的物理细节,如存储形式、路径等。,4.1 总体设计的任务,(4)可靠性设计质量设计,设计时考虑软件可靠性及其他质量指标,确保软件质量,易于修改维护。(5)编写概要设计文档概要设计说明书:集中于软件结构描述。数据库设计说明书:主要内容为DBMS的选择、简介、数据库概念模型、逻辑设计结果等。用户手册:对需求阶段编写的用户手册进行补充完善。测试文档:修改需求分析
5、阶段编写的测试文档,对测试策略、方法、步骤提出明确说明。(6)设计审查和复审对总体设计结果进行严格的技术审查,通过后再从管理角度进行严格审查。,4.2 总体设计的基本原理,4.2.1 软件结构和过程,总体设计主要是结构设计,而详细设计是过程设计。理解结构和过程的差别和特点,是进行软件设计的前提。,结构软件结构是软件要求的各个元素及其相互关系的描述。一般软件元素就是一些功能模块,通过调用关系,组合到一起即得到软件结构。最普通的结构是树状结构和网状结构。,4.2 总体设计的基本原理,树状结构中,整个系统只有一个顶层模块,下层模块只有一个上层模块,同一层模块之间不发生联系。网状关系中,模块关系平等,
6、自由调用。网状关系模块之间联系的随意性使得系统结构复杂,难于处理,所以实际中一般采用树状结构。,4.2 总体设计的基本原理结构,软件求解问题软件结构由问题定义开始导出,当问题划分的各部分,分别由一个或多个软件模块解决的时候,也就得到了软件结构。这个过程代表了软件需求分析到设计的转换。,4.2 总体设计的基本原理结构,不同结构的解法,4.2 总体设计的基本原理,结构的度量和术语,4.2 总体设计的基本原理过程,过程软件结构隐含着控制层次的关系,但并不表示软件过程关系,不考虑处理和判断的顺序。,软件过程集中考虑每个模块各自的处理细节。过程必须提供一个精确的处理规格说明,包括事件顺序、精确的判定、重
7、复的操作、以及数据组织结构等。(详细设计阶段的工作),4.2 总体设计的基本原理模块化,4.2.2 模块化模块(Module),又称“构件”,一般指程序中的数据说明、可执行语句等程序对象的集合,还可以是单独命名和编址的元素,如高级语言中的过程、函数、子程序、类等。在软件的体系结构中,模块是可组合、分解和更换的单元,一般有如下基本属性:接口:指模块的输入与输出。功能:模块实现的功能,应注意这里的功能是模块本身的功能和它调用的所有子模块功能的集合。逻辑:描述内部如何实现要求的功能及所需数据。状态:该模块的运行环境,即该模块的调用与被调用关系。,模块化是将系统划分为若干个模块,每个模块完成一个子功能
8、。模块化的目的是将系统“分而治之”,因此能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。,4.2 总体设计的基本原理模块化,(1)模块化降低软件复杂度的简单证明,令: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 和 P2 后,其工作量和复杂度都降低。但并非模块分得越小越好。模块数越多,模块之间接口的复杂度和
9、工作量增加。所以模块化并非将系统划分为尽量多的模块,而是要求在模块化的过程中,同时考虑减少接口复杂性,提高模块独立性,有效降低软件的复杂度。,4.2 总体设计的基本原理模块化,(2)抽象与逐步求精抽象抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。共同特征是指那些能把一类事物与他类事物区分开来的特征,又称本质特征。抽取事物的本质特征,舍弃不同特征。软件工程过程中的每一步部可以看作是对软件解决方法的抽象层次的一次细化。系统定义阶段,将软件作为系统一个完整部件进行描述。需求分析期间,使用在问题环境中熟悉的方式几术语来描述。软件设计时,抽象与逐步求精、模块化密切相关,由抽象到具
10、体地分析和构造出软件的层次结构。编写出原程序后,达到了抽象的最底层。,4.2 总体设计的基本原理模块化,逐步求精逐步求精是人类解决复杂问题的又一基本方法。George Miller有项心理学法则(1956):“魔术数字7加减2”,指出人一次能处理或记忆的资讯大概只有七项,多了也记不住,反而模糊了焦点。将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。在搞抽象级别定义功能陈述,并不涉及功能内部实现及信息细节,设计者对陈述进行细化,逐步求精提供越来越多的细节,直至得到用
11、程序语言表达的程序。,4.2 总体设计的基本原理模块化,(3)信息隐蔽与局部化信息隐蔽指在设计模块时,应该使模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化指把一些关系密切的软件元素物理的放得彼此靠近。显然,局部化有助于实现信息隐蔽。,使用信息隐蔽原理作为模块化系统设计的标准使得独立模块之间仅仅交换为完成系统功能而必须交换的信息,而绝大多数数据和过程对于软件其他部分而言是隐蔽的,因此在修改期间由于疏忽而引入的错误传播到软件的其他部分的可能性就很小。,4.2 总体设计的基本原理模块化,(4)模块独立模块独立的概念是模块化、抽象、信息隐蔽的局部化概念的直接结果。模块
12、的独立程度可以用内聚和耦合这两标准来衡量。模块独立是优秀软件设计的关键,设计是决定软件质量的关键。,开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。这样做有两个好处:第一,有效的模块化(即具有独立的模块)的软件比较交易开发出来,这是由于能够将功能分割而且接口可以简化;第二,独立的模块比较容易测试和维护。这是因为相对来说,修改设计和程序所需要的工作量较小,错误传播范围小,而且需要扩充功能时能够“插入”模块。,4.2 总体设计的基本原理耦合,(5)耦合耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。方式块间联系方式有“直接引用”或“过程语句调用
13、”。显然直接引用方式块间联系紧密。作用块间传送的共用信息(参数),可为“数据型”、“控制型”或“混合型”(数据/控制型),控制型信息使块间联系增高。数量块间传送的共用信息的数量越大,块间联系越紧密。,4.2 总体设计的基本原理耦合,耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。一般模块之间可能的连接方式有七种,构成七种耦合:,4.2 总体设计的基本原理耦合,非直接耦合(Non-direct coupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。模块从属于不同的模块控制或调用;耦合程度最低,独立性最强。
14、,4.2 总体设计的基本原理耦合,数据耦合(Data Coupling)模块调用时,通过参数表(不是控制参数、公共数据结构或外部变量)来传递简单数据,则称这种耦合为数据耦合。界面简单、安全可靠,属松散耦合,模块之间独立性强。画直线的命令LINE:,p0(x0,y0)p1(x1,y1),数据耦合 LINE(x0,y0,x1,y1),4.2 总体设计的基本原理耦合,标记耦合(Stamp Coupling)模块调用时,传递记录是某一数据结构的子结构,而不是简单变量,为标记耦合。是数据耦合的变形,要求两个模块都要清楚数据结构,并按规定要求进行操作。设计中要尽量避免标记耦合,可将统一数据结构操作集中在同
15、一模块中。,4.2 总体设计的基本原理耦合,控制耦合(Control coupling)一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能。实质是在单一接口上选择多功能模块中的某项功能。所以对被控制模块的任何修改,都会影响控制模块。控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。,4.2 总体设计的基本原理耦合,外部耦合(External coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于
16、一个数据结构内部各项的物理安排。,4.2 总体设计的基本原理耦合,公共耦合(Common coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。这种耦合会引起下列问题若修改公共数据环境某个数据,会影响到所有公共耦合模块。无法控制各模块对公共数据的存取,严重影响软件模块的可靠性和适应性。公共数据名的使用,明显降低了程序的可读性。,4.2 总体设计的基本原理耦合,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据,则这种公
17、共耦合叫做松散公共耦合。若两个模块都从公共数据环境中读写数据,则这种公共耦合叫做紧密公共耦合。,4.2 总体设计的基本原理耦合,内容耦合(Content coupling)如果发生下列情形,两个模块之间就发生了内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重叠(只可能出现在汇编语言中);一个模块有多个入口,4.2 总体设计的基本原理耦合,在内容耦合的情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。大多数高级程序设计语言已经设计成不允许出现内容耦合。它一般出现在汇编语言程序中。这种耦合是模块独立性最弱的
18、耦合。,4.2 总体设计的基本原理耦合,影响耦合度的因素连接方式的类型直接的控制和调用(模块间关系明确,独立性最强);间接的通过参数传递;公共数据区(全局变量;公共数据环境);模块的直接引用,直接引用其他模块内部的数据或控制指令。(耦合度最强),4.2 总体设计的基本原理耦合,接口的复杂性接口间传递的信息数量、以及穿越接口次数和类型决定了接口的复杂性。例如,M个模块共享N个数据区,则可能产生M(M-1)N个联系,修改一处需要考虑许多模块。,几种耦合的比较,4.2 总体设计的基本原理聚合,(6)内聚(Cohesion)内聚性也称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧
19、密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越高。一般情况下,模块内元素的联系可能有7种情况,构成7种不同的内聚:,4.2 总体设计的基本原理聚合,偶然内聚(Coincidental Cohesion)指一个模块内的各处理元素之间没有有意义的联系。当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联系,或联系很松散。例如,为了节省存储,把一些无联系的处理序列抽出来组成一个新的模块,这个模块就属于偶然内聚。这样的模块不易理解也不易修改,这是最差的内聚情况。,4.2 总体设计的基本原理聚合,
20、逻辑内聚(Logical Cohesion)指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。调用时需要进行控制参数的传递,造成模块间的控制耦合,调用此模块时,不用的部分也占据了主存,降低了系统效率。如错误处理,将各种类型错误的信息输出放在一起,构成单入口多功能模块。,4.2 总体设计的基本原理聚合,时间内聚(Classical Cohesion)又称为经典内聚。把需要同时执行的动作组合在一起形成时间内聚模块。如初始化一组变量,同时打开若干文件,同时关闭文件等,都与特定时间有关。时间内聚模块往往与其他模块联系的比较紧密。如初始化模块对许多模块的运行有影响,因此和其他模块耦合的
21、程度较高。例如,初始化模块和终止模块就是时间内聚模块。,4.2 总体设计的基本原理聚合,过程内聚(Procedural Cohesion)如果一个模块内处理是相关的,且必须以特定次序执行,则称其为过程内聚模块。以过程为基础的结构设计可能导致结果的高度可变性,选择不当则不能完成独立任务,也无法在新系统中使用。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,4.2 总体设计的基本原理聚合,通信内聚(Communication Cohesion)若一个模块内部各功能部分都使用了相同的输入数据,或者产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块
22、是通过数据流图来定义的。模块内各个功能是紧密相连的。通信内聚模块内包含了很多独立的功能,但由于各部分功能使用相同的输入/输出缓冲区,效率下降。,4.2 总体设计的基本原理聚合,数据流图中的通信内聚,4.2 总体设计的基本原理聚合,信息内聚(Informational Cohesion)信息内聚模块完成多个功能,各个功能相互独立但都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。信息内聚将数据结构、资源或设备隐藏在一个模块内,达到信息隐蔽,独立性较强。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。,4.2 总体设计的基本原理
23、聚合,初始化,插入,删除,查找,修改,4.2 总体设计的基本原理聚合,功能内聚(Functional Cohesion)是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。因此,模块不能再分割。功能内聚的模块易理解、易修改,因为它的功能是明确的、单一的,因此与其他模块的耦合是弱的。功能内聚的模块有利于实现软件的重用,从而提高软件开发的效率。,4.2 总体设计的基本原理,耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。内聚和耦合性是相互关联的,一般情况下,程序结构中各模块内聚程度越高,模块间耦合性就越低
24、,但也不是绝对的。总体设计的目的是尽量实现模块的高内聚、低耦合,但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差,在这种情况下,建议给予耦合性以更高的重视。,4.3 设计准则,软件概要设计包括模块的划分和结构的定义。目标是产生一个模块化的程序结构,并明确模块之间的控制关系,以及定义界面、说明程序的数据,进一步调整程序结构和书数据结构。在进行软件结构设计时,应采用模块化、抽象和信息隐藏,并遵循模块独立性原则。下面介绍一些具体的改进软件设计、提高软件质量的准则。这些准则是今后软件结构设计、求精和复查的依据。,4.3 设计准则,1 模块划分时应保持模块独立性划分时,应保持模块的相
25、对独立性。相关部分划分在一起,不相关不要放在一起;设计出初始软件结构后,应对该结构进行审查分析,通过模块分解与合并,显著改进软件结构,提高内聚,降低耦合。,4.3 设计准则,2 模块大小要适中模块过大,说明分解不够,不易理解;模块过小。数目会增多,系统接口会变得复杂。一般来说,模块的大小以50行左右的高级语言程序量为宜。心理学研究表明,在人的智力跨度之内,此规模比较容易阅读和理解。如果一个独立的功能模块少于50行,不要硬性拼凑;如果一个独立功能模块多余50行,也不要硬性分解。如果出现以下情况,就停止模块分解:模块不能再细分为明显的子任务;分解成用户提供的模块或库函数;模块接口是输入输出设备传送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 总体 设计
链接地址:https://www.31ppt.com/p-2380556.html