软件工程概论总体设计q

上传人:人*** 文档编号:569452893 上传时间:2024-07-29 格式:PPT 页数:89 大小:1.47MB
返回 下载 相关 举报
软件工程概论总体设计q_第1页
第1页 / 共89页
软件工程概论总体设计q_第2页
第2页 / 共89页
软件工程概论总体设计q_第3页
第3页 / 共89页
软件工程概论总体设计q_第4页
第4页 / 共89页
软件工程概论总体设计q_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《软件工程概论总体设计q》由会员分享,可在线阅读,更多相关《软件工程概论总体设计q(89页珍藏版)》请在金锄头文库上搜索。

1、n教学目标教学目标 掌握概要设计过程、设计原理、模块化方法及掌握概要设计过程、设计原理、模块化方法及模块独立性原则、软件结构的确定。模块独立性原则、软件结构的确定。n教学重点教学重点 模块独立性原则。模块独立性原则。n教学难点教学难点 软件结构的确定。软件结构的确定。第第4章章 软件设计软件设计4.1总体设计总体设计4.1总体设计总体设计n4.1.1 设计过程设计过程n4.1.2 设计原理设计原理n4.1.3 启发规则启发规则n4.1.4 描绘软件结构的图形工具描绘软件结构的图形工具n4.1.5 面向数据流的设计方法面向数据流的设计方法n4.1.6 小结小结总总体体设设计计(概概要要设设计计或

2、或初初步步设设计计)的的基基本本目目的的就是回答就是回答“概括地说,系统应该如何实现概括地说,系统应该如何实现? ?” 工工作作内内容容:将将划划分分出出组组成成系系统统的的物物理理元元素素程程序序、文文件件、数数据据库库、人人工工过过程程和和文文档档等等黑黑盒盒子子级级“产产品品”。黑黑盒盒子子里里的的具具体体内内容容将将在在以以后后仔仔细细设计。设计。总总体体设设计计阶阶段段的的另另一一项项重重要要任任务务是是设设计计软软件件的的结构结构模块组成,以及这些模块相互间的关系。模块组成,以及这些模块相互间的关系。首首先先根根据据需需求求分分析析阶阶段段得得到到的的数数据据流流图图寻寻找找实实现

3、现目目标标系系统统的的各各种种不不同同的的方方案案,为为每每个个合合理理的的方方案案准准备备一一份份系系统统流流程程图图,列列出出组组成成系系统统的的所所有有物物理理元元素素,进进行行成成本本/ /效效益益分分析析,并并且且制制定定实实现现这个方案的进度计划。这个方案的进度计划。选出一个最佳方案向用户推荐。选出一个最佳方案向用户推荐。总总体体设设计计必必要要性性(详详细细设设计计之之前前):站站在在全全局局高高度度上上,花花较较少少成成本本,从从较较抽抽象象的的层层次次上上分分析析对对比比多多种种可可能能的的系系统统实实现现方方案案和和软软件件结结构构,从从中中选选出出最最佳佳方方案案和和最最

4、合合理理的的软软件件结结构构,降降低低成成本本、提提高质量。高质量。4.1.1 设计过程设计过程系统设计阶段:确定系统的具体实现方案;系统设计阶段:确定系统的具体实现方案;结构设计阶段:确定软件结构。结构设计阶段:确定软件结构。典型的总体设计过程包括下述典型的总体设计过程包括下述9个步骤:个步骤:1. 设想供选择的方案设想供选择的方案考虑各种可能的实现方案从中选出最佳。考虑各种可能的实现方案从中选出最佳。根根据据系系统统的的逻逻辑辑模模型型,分分析析比比较较不不同同的的物物理理实实现方案,选出最佳方案,提高系统的性现方案,选出最佳方案,提高系统的性/价比。价比。由由需需求求分分析析的的数数据据

5、流流图图作作为为出出发发点点,把把数数据据流流图图中中的的处处理理分分组组的的各各种种可可能能的的方方法法,抛抛弃弃在在技技术术上行不通的分组方法,提供可供选择的物理系统上行不通的分组方法,提供可供选择的物理系统。4.1.1 设计过程设计过程2. 选取合理的方案选取合理的方案选选取取低低成成本本、中中等等成成本本和和高高成成本本的的三三种种方方案案,对对每每个个合合理理的的方方案案分分析析员员都都应应该该准准备备下下列列4 4份份资资料:料:(1) (1) 系统流程图;系统流程图;(2) (2) 组成系统的物理元素清单;组成系统的物理元素清单;(3) (3) 成本成本/ /效益分析;效益分析;

6、(4) (4) 实现这个系统的进度计划。实现这个系统的进度计划。4.1.1 设计过程设计过程3. 推荐最佳方案推荐最佳方案推推荐荐一一个个最最佳佳的的方方案案,并并且且为为推推荐荐的的方方案案制制定定详细的实现计划。详细的实现计划。提提请请使使用用部部门门负负责责人人进进一一步步审审批批之之后后,将将进进入入总体设计过程的下一个重要阶段总体设计过程的下一个重要阶段结构设计。结构设计。4.1.1 设计过程设计过程4. 功能分解功能分解程程序序和和文文件件( (或或数数据据库库) )是是组组成成系系统统的的主主要要元元素素,需要设计决定。需要设计决定。对对程程序序的的设设计计通通常常分分为为两两个

7、个阶阶段段完完成成:结结构构设设计和过程设计。计和过程设计。结结构构设设计计确确定定程程序序由由哪哪些些模模块块组组成成,以以及及这这些些模块之间的关系(总体设计);模块之间的关系(总体设计);过过程程设设计计确确定定每每个个模模块块的的处处理理过过程程(详详细细设设计计)。4.1.1 设计过程设计过程为为确确定定软软件件结结构构,首首先先需需要要从从实实现现角角度度把把复复杂杂的功能进一步分解。的功能进一步分解。经经过过分分解解之之后后应应该该使使每每个个功功能能对对大大多多数数程程序序员员而言都是明显易懂的。而言都是明显易懂的。功功能能分分解解导导致致数数据据流流图图的的进进一一步步细细化

8、化,同同时时还还应应该该用用IPOIPO图图或或其其他他适适当当的的工工具具简简要要描描述述细细化化后后每个处理的算法。每个处理的算法。4. 功能分解功能分解通通常常程程序序中中的的一一个个模模块块完完成成一一个个适适当当的的子子功功能能,将将模模块块组组织织成成良良好好的的层层次次系系统统,顶顶层层模模块块调调用用下下层模块以实现程序的完整功能层模块以实现程序的完整功能软软件件结结构构( (即即由由模模块块组组成成的的层层次次系系统统) )可可以以用用层层次图或结构图来描绘。次图或结构图来描绘。若若数数据据流流图图细细化化到到适适当当的的层层次次,则则可可以以直直接接从从数据流图映射出软件结

9、构。数据流图映射出软件结构。5. 设计软件结构设计软件结构对对于于需需要要使使用用数数据据库库的的应应用用系系统统,软软件件工工程程师师应应该该在在需需求求分分析析阶阶段段所所确确定定的的系系统统数数据据需需求求的的基基础上,进一步设计数据库。础上,进一步设计数据库。在在数数据据库库课课中中已已经经详详细细讲讲述述了了设设计计数数据据库库的的方方法,本书不再赘述。法,本书不再赘述。6. 设计数据库设计数据库在在软软件件开开发发的的早早期期阶阶段段考考虑虑测测试试问问题题,能能促促使使软件设计人员在设计时注意提高软件的可测试性。软件设计人员在设计时注意提高软件的可测试性。本本书书第第5 5章章将

10、将仔仔细细讨讨论论软软件件测测试试的的目目的的和和设设计计测试方案的各种技术方法。测试方案的各种技术方法。7. 制定测试计划制定测试计划完成的文档通常有下述几种:完成的文档通常有下述几种:(1) (1) 用用系系统统流流程程图图描描绘绘的的系系统统构构成成方方案案,组组成成系系统统的的物物理理元元素素清清单单,成成本本/ /效效益益分分析析;对对最最佳佳方方案案的的概概括括描描述述,精精化化的的数数据据流流图图,用用层层次次图图或或结结构构图图描描绘绘的的软软件件结结构构,用用IPOIPO图图或或其其他他工工具具( (例例如如,PDLPDL语语言言) )简简要要描描述述的的各各个个模模块块的的

11、算算法法,模模块块间间的的接接口口关关系系,以以及及需需求求、功功能能和和模模块块三三者者之之间间的交叉参照关系等等。的交叉参照关系等等。(2) (2) 用用户户手手册册根根据据总总体体设设计计阶阶段段的的结结果果,修修改改更正在需求分析阶段产生的初步的用户手册。更正在需求分析阶段产生的初步的用户手册。8. 书写文档书写文档(3) (3) 测测试试计计划划包包括括测测试试策策略略,测测试试方方案案,预预期期的测试结果,测试进度计划等等。的测试结果,测试进度计划等等。(4) (4) 详细的实现计划详细的实现计划(5) (5) 数据库设计结果数据库设计结果8. 书写文档书写文档9. 审查和复审审查

12、和复审最最后后应应该该对对总总体体设设计计的的结结果果进进行行严严格格的的技技术术审审查查,在在技技术术审审查查通通过过之之后后再再由由使使用用部部门门的的负负责责人人从管理角度进行复审。从管理角度进行复审。 软件软件 设计设计功能与性功能与性能需求能需求编码编码 软件软件 测试测试程序模块程序模块已测试已测试软件软件系统结构系统结构设计设计过程设计过程设计数据结构设计数据结构设计信息域信息域需求需求开发阶段信息流开发阶段信息流总体总体设计设计需求需求 说明书说明书复审复审 软件结构软件结构修修 改改详细详细设计设计可接受可接受模块描述模块描述复审复审 修修 改改 设计设计说明书说明书软件设计

13、工作流程软件设计工作流程4.1.2 设计原理设计原理4.1.2 模块化模块化“模块模块”,又称,又称“构件构件” 。过过程程、函函数数、子子程程序序和和宏宏等等,都都可可作作为为模模块块;面面向向对对象象方方法法学学中中的的对对象象是是模模块块,对对象象内内的的方方法法(或或称称为为服服务务)也也是是模模块块。模模块块是是构构成成程程序序的的基基本构件。本构件。模模块块化化就就是是把把程程序序划划分分成成独独立立命命名名且且可可独独立立访访问问的的模模块块,每每个个模模块块完完成成一一个个子子功功能能,把把这这些些模模块块集集成成起起来来构构成成一一个个整整体体,可可以以完完成成指指定定的的功

14、功能能满足用户的需求。满足用户的需求。模模块块化化是是为为了了使使一一个个复复杂杂的的大大型型程程序序能能被被人人的的智智力所管理,化繁为简、化难为易、化整为零。力所管理,化繁为简、化难为易、化整为零。设设函函数数C(x)C(x)定定义义问问题题x x的的复复杂杂程程度度,函函数数E(x)E(x)确确定定解解决决问问题题x x需需要要的的工工作作量量( (时时间间) )。对对于于两两个个问问题题P1P1和和P2P2,如果,如果C(P1)C(P2)C(P1)C(P2),显然,显然E(P1)E(P2)E(P1)E(P2)。C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)

15、E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2)这就是模块化的根据。这就是模块化的根据。4.1.2.1 模块化ABCDEFGHIJKLM 软件结构图软件结构图4.1.2.1 模块化模块化和软件成本模块化和软件成本抽抽象象就就是是抽抽出出事事物物的的本本质质特特性性而而暂暂时时不不考考虑虑它它们的细节。们的细节。处处理理复复杂杂系系统统的的有有效效的的方方法法是是用用层层次次的的方方式式构构造造和和分分析析它它。一一个个复复杂杂的的动动态态系系统统首首先先可可以以用用一一些些高高级级的的抽抽象象概概念念构构造造和和理理解解,这这些些高高级级概概念念又又可可以以用用一一

16、些些较较低低级级的的概概念念构构造造和和理理解解,如如此此进进行行下去,直至最低层次的具体元素。下去,直至最低层次的具体元素。4.1.2.2 抽象任何问题的模块化时,可提出许多抽象的层次。任何问题的模块化时,可提出许多抽象的层次。在在抽抽象象的的最最高高层层次次使使用用问问题题环环境境的的语语言言,以以概概括的方式叙述问题的解法;括的方式叙述问题的解法;在在较较低低抽抽象象层层次次采采用用更更过过程程化化的的方方法法,把把面面向向问问题题的的术术语语和和面面向向实实现现的的术术语语结结合合起起来来叙叙述述问问题题的解法;的解法;最最后后在在最最低低的的抽抽象象层层次次用用可可直直接接实实现现的

17、的方方式式叙叙述问题的解法。述问题的解法。4.1.2.2 抽象软软件件工工程程过过程程的的每每一一步步都都是是对对软软件件解解法法的的抽抽象象层次的一次精化。层次的一次精化。在在可可行行性性研研究究阶阶段段,软软件件作作为为系系统统的的一一个个完完整整部件;部件;在在需需求求分分析析期期间间,软软件件解解法法是是使使用用在在问问题题环环境境内熟悉的方式描述的;内熟悉的方式描述的;当当由由总总体体设设计计向向详详细细设设计计过过渡渡时时,抽抽象象的的程程度度也就随之减少了;也就随之减少了;最最后后,当当源源程程序序写写出出来来以以后后,也也就就达达到到了了抽抽象象的最低层。的最低层。4.1.2.

18、2 抽象逐逐步步求求精精和和模模块块化化的的概概念念,与与抽抽象象是是紧紧密密相相关关的。的。软软件件结结构构顶顶层层的的模模块块,控控制制了了系系统统的的主主要要功功能能并且影响全局;并且影响全局;在在软软件件结结构构底底层层的的模模块块,完完成成对对数数据据的的一一个个具具体体处处理理,用用自自顶顶向向下下由由抽抽象象到到具具体体的的方方式式分分配配控控制制,简简化化了了软软件件的的设设计计和和实实现现,提提高高了了软软件件的的可可理解性和可测试性,并且使软件更容易维护。理解性和可测试性,并且使软件更容易维护。4.1.2.2 抽象逐逐步步求求精精是是人人类类解解决决复复杂杂问问题题时时采采

19、用用的的基基本本方方法法,逐逐步步求求精精可可定定义义为为:“为为了了能能集集中中精精力力解解决决主要问题而尽量推迟对问题细节的考虑。主要问题而尽量推迟对问题细节的考虑。”逐逐步步求求精精之之所所以以如如此此重重要要,是是因因为为人人类类的的认认知知过过程程遵遵守守MillerMiller法法则则:一一个个人人在在任任何何时时候候都都只只能能把注意力集中在(把注意力集中在(7 72 2)个知识块上。)个知识块上。MillerMiller法法则则是是人人类类智智力力的的基基本本局局限限,我我们们不不可可能能战战胜胜自自己己的的自自然然本本性性,只只能能接接受受这这个个事事实实,承承认认自自身身的

20、的局局限限性性,并并在在这这个个前前提提下下尽尽我我们们的的最最大大努力工作。努力工作。4.1.2.3 逐步求精逐逐步步求求精精最最初初是是由由Niklaus Niklaus WirthWirth提提出出的的一一种种自顶向下的设计策略,自顶向下的设计策略, WirthWirth曾说:曾说:“我我们们对对付付复复杂杂问问题题的的最最重重要要的的办办法法是是抽抽象象,因因此此,对对一一个个复复杂杂的的问问题题不不应应该该立立刻刻用用计计算算机机指指令令、数数字字和和逻逻辑辑符符号号来来表表示示,而而应应该该用用较较自自然然的的抽抽象象语语句句来来表表示示,从从而而得得出出抽抽象象程程序序。抽抽象象

21、程程序序对对抽抽象象的的数数据据进进行行某某些些特特定定的的运运算算并并用用某某些些合合适适的的记记号号(可可能能是是自自然然语语言言)来来表表示示。对对抽抽象象程程序序做做进进一一步步的的分分解解,并并进进入入下下一一个个抽抽象象层层次次,这这样样的的精精细细化化过过程程一一直直进进行行下下去去,直直到到程程序序能能被被计计算算机机接接受受为为止止。这这时时的的程程序序可可能能是是用用某某种种高高级级语语言言或机器指令书写的。或机器指令书写的。”4.1.2.3 逐步求精求求精精要要求求设设计计者者细细化化原原始始陈陈述述,随随着着每每个个后后续续求求精精(即即细细化化)步步骤骤的的完完成成而

22、而提提供供越越来来越越多多的的细细节。节。抽象与求精是一对互补的概念。抽象与求精是一对互补的概念。抽抽象象使使得得设设计计者者能能够够说说明明过过程程和和数数据据,同同时时却却忽略低层细节。忽略低层细节。求求精精则则帮帮助助设设计计者者在在设设计计过过程程中中逐逐步步揭揭示示出出低低层细节。层细节。这这两两个个概概念念都都有有助助于于设设计计者者在在设设计计演演化化过过程程中中创造出完整的设计模型。创造出完整的设计模型。4.1.2.3 逐步求精数据字典数据数据流图流图E-RE-R图图状态变迁图状态变迁图加加工工规规约约控制规约控制规约数据对描 述象数 据 设 计体系结构设计接口设计过程设计将分

23、析模型转换为软件设计将分析模型转换为软件设计分析模型分析模型设计模型如何得到最好的一组模块?如何得到最好的一组模块?信信息息隐隐藏藏原原理理指指出出:设设计计一一个个模模块块, ,使使得得包包含含的的信信息息( (过过程程和和数数据据) ) 对对于于不不需需要要这这些些信信息息的的模模块来说,是不能访问的。块来说,是不能访问的。局局部部化化是是指指把把一一些些关关系系密密切切的的软软件件元元素素,物物理理地放得彼此靠近。地放得彼此靠近。在在模模块块中中使使用用局局部部数数据据元元素素是是局局部部化化的的一一个个例例子。局部化有助于实现信息隐藏。子。局部化有助于实现信息隐藏。4.1.2.4 信息

24、隐藏和局部化模模块块独独立立是是模模块块化化、抽抽象象、信信息息隐隐藏藏和和局局部部化化概念的直接结果。概念的直接结果。希希望望这这样样设设计计软软件件结结构构,使使得得每每个个模模块块完完成成一一个个相相对对独独立立的的特特定定子子功功能能,并并且且和和其其他他模模块块之之间间的关系很简单。的关系很简单。模块独立的两条理由模块独立的两条理由:第第一一,有有效效的的模模块块化化( (即即具具有有独独立立的的模模块块) )的的软软件比较容易开发。件比较容易开发。因因为为功功能能简简单单而而且且接接口口可可简简化化,当当许许多多人人分分工工合作时这个优点尤其重要。合作时这个优点尤其重要。第二,独立

25、的模块比较容易测试和维护。第二,独立的模块比较容易测试和维护。4.1.2.5 模块独立模模块块独独立立是是设设计计的的关关键键,而而设设计计又又是是决决定定软软件件质量的关键环节。质量的关键环节。模模块块的的独独立立程程度度可可以以由由两两个个定定性性标标准准度度量量,分分别称为别称为内聚和耦合内聚和耦合。耦耦合合用用于于衡衡量量不不同同模模块块彼彼此此间间互互相相依依赖赖( (连连接接) )的紧密程度;的紧密程度;内内聚聚衡衡量量一一个个模模块块内内部部各各个个元元素素彼彼此此结结合合的的紧紧密程度。密程度。模块独立要求:模块独立要求:高内聚、低耦合高内聚、低耦合;4.1.2.5 模块独立1

26、. 耦合耦合耦耦合合是是对对一一个个软软件件结结构构内内不不同同模模块块之之间间互互连连程程度的度量。度的度量。耦耦合合强强弱弱取取决决于于模模块块间间接接口口的的复复杂杂程程度度,进进入入或访问一个模块的点,以及通过接口的数据。或访问一个模块的点,以及通过接口的数据。模模块块间间的的耦耦合合程程度度强强烈烈影影响响系系统统的的可可理理解解性性、可测试性、可靠性和可维护性。可测试性、可靠性和可维护性。在软件设计中应该追求尽可能松散耦合的系统。在软件设计中应该追求尽可能松散耦合的系统。4.1.2.5 模块独立模模块块分分解解的的一一个个目目标标是是使使块块间间联联系系尽尽可可能能小小,块间联系的

27、大小可从三个方面衡量:块间联系的大小可从三个方面衡量:4.1.2.5 模块独立 方方方方式式式式 块块间间联联系系方方式式有有“直直接接引引用用”或或“用过程语句调用用过程语句调用”。 作作作作用用用用 块块间间传传送送的的共共用用信信息息(参参数数)类类型型,可可为为“数数据据型型”、“控控制制型型”或或“混合型混合型”(数据(数据/ /控制型)。控制型)。 数量数量数量数量 块间传送的共用信息的数量块间传送的共用信息的数量。数据数据方式方式作用作用少少多多数据数据控制控制混合混合直接直接调用调用过程过程调用调用内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合

28、高高高高低低低低耦合性的几种类型耦合性的几种类型耦合性耦合性内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合高高高高低低低低(1 1)内容耦合)内容耦合(content coupling)一个模块直接访问另一模块的内部数据。一个模块直接访问另一模块的内部数据。一个模块不通过正常入口转到另一模块的内部。一个模块不通过正常入口转到另一模块的内部。一个模块有多个入口。一个模块有多个入口。两个模块有部分代码重迭。两个模块有部分代码重迭。AB进入另一模块内进入另一模块内AB部分代码重迭部分代码重迭Entry1 .Entry2 . 多重入口多重入口耦合性的几种类型耦合性的几

29、种类型耦合性耦合性内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合高高高高低低低低(2 2)公共耦合(公共耦合(common coupling)若若干干模模块块访访问问一一个个公公共共的的数数据据环环境境,则则它它们们之之间间的的耦耦合合称称为为公公共共耦耦合合。公公共共环环境境可可为为全全局局数数据据结结构构、共共享享的的通通信信区区、内内存存的的公公共共覆覆盖盖区区等等。显显然然,公公共共数数据据区区的的变变化化,将将影影响响所所有有公公共共耦耦合合模模块块,严严重重影影响响模模块块的的可可靠靠性性和和可适应性,降低软件的可读性。可适应性,降低软件的可读性。

30、耦合性的几种类型耦合性的几种类型耦合性耦合性内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合高高高高低低低低(3 3)控制耦合(控制耦合(control coupling)一一个个模模块块传传递递给给另另一一模模块块的的信信息息是是用用于于控控制制该该模模块块内内部部逻逻辑辑的的控制信号。控制信号。显显然然,对对被被控控制制模模块块的的任任何何修修改,都会影响控制模块。改,都会影响控制模块。耦合性的几种类型耦合性的几种类型耦合性耦合性内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合高高高高低低低低(4 4)复合耦合(复合耦合(Da

31、ta Coupling) 一一个个模模块块传传送送给给另另一一个个模模块块的的参参数数是是一一个个复复合合的的数数据据结结构构,例例如如,包包含含几几个个数数据据单单项项的的记录。记录。耦合性的几种类型耦合性的几种类型耦合性耦合性内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合高高高高低低低低(5 5)数据耦合(数据耦合(Data Coupling)若若两两个个模模块块间间通通过过参参数数交交换换信信息息,而而且且交交换换的的信信息息仅仅仅仅是是数数据据。数数据据耦耦合合是是松松散散的的耦耦合,模块之间的独立性比较强。合,模块之间的独立性比较强。耦合性的几种类型

32、耦合性的几种类型耦合性耦合性2. 内聚内聚内内聚聚标标志志一一个个模模块块内内各各个个元元素素彼彼此此结结合合的的紧紧密密程度,它是信息隐藏和局部化概念的自然扩展。程度,它是信息隐藏和局部化概念的自然扩展。理想内聚的模块只做一件事情。理想内聚的模块只做一件事情。设设计计时时应应该该力力求求做做到到高高内内聚聚,通通常常中中等等程程度度的的内内聚聚也也是是可可以以采采用用的的,而而且且效效果果和和高高内内聚聚相相差差不不多;但是,低内聚很坏,不要使用。多;但是,低内聚很坏,不要使用。内聚性愈强内聚性愈强, ,模块独立性愈好。模块独立性愈好。4.1.2.5 模块独立2. 内聚内聚5.2.5 模块独

33、立偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强强强强功能型功能型内聚性内聚性偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强强强强功能型功能型内聚性内聚性偶然内聚:偶然内聚: 模块内部各部件之间没有任何关系,仅仅模块内部各部件之间没有任何关系,仅仅为了满足模块尺寸要求而将一些程序合入一为了满足模块尺寸要求而将一些程序合入一可模块,出现错误时,难以确定位置;可模块,出现错误时,难以确定位置;12偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强强强强功能型功能型内聚性内聚性逻辑内聚:逻辑内聚: 这种模块把几种相关的功这种模块把几

34、种相关的功能组合在一起,每次调用时,能组合在一起,每次调用时,由传送给模块的判断参数来由传送给模块的判断参数来确定该模块应执行那种功能。确定该模块应执行那种功能。偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强强强强功能型功能型内聚性内聚性瞬时内聚:瞬时内聚: 模块包含的任务必须在同一段时间内执行,模块包含的任务必须在同一段时间内执行,由于不使用选择参数,逻辑简单,但结合了许由于不使用选择参数,逻辑简单,但结合了许多无关任务,错误难以定位。多无关任务,错误难以定位。 例如:各种初始化。例如:各种初始化。偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强

35、强强强功能型功能型内聚性内聚性通信内聚:通信内聚: 模块中所有的部件都访模块中所有的部件都访问同一组数据,几个部件问同一组数据,几个部件之间有数据关系而无控制之间有数据关系而无控制关系。关系。 优点:可通过参数选择优点:可通过参数选择不同的作用,是一种较理不同的作用,是一种较理想的内聚。想的内聚。12偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强强强强功能型功能型内聚性内聚性顺序内聚:顺序内聚: 模块完成多个功能,各模块完成多个功能,各个功能都在同一数据结构个功能都在同一数据结构上操作,每项功能有唯一上操作,每项功能有唯一的入口点。的入口点。 较好的内聚。较好的内聚。2

36、1偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型弱弱弱弱强强强强功能型功能型内聚性内聚性功能内聚:功能内聚: 模块内所有部件处理同模块内所有部件处理同一组数据,共同完成单一一组数据,共同完成单一的功能,是最理想的内聚的功能,是最理想的内聚之一。之一。1按按照照他他们们的的观观点点,如如果果给给上上述述七七种种内内聚聚的的优优劣劣评分,将得到如下结果:评分,将得到如下结果:功能内聚功能内聚10分分时间内聚时间内聚3分分顺序内聚顺序内聚9分分逻辑内聚逻辑内聚1分分通信内聚通信内聚7分分偶然内聚偶然内聚0分分过程内聚过程内聚5分分4.1.2.5 模块独立4.1.3 启发规则启发规则在在

37、长长期期的的软软件件开开发发实实践践中中,总总结结经经验验, ,得得出出了了一一些启发式规则。些启发式规则。没没有有基基本本原原理理和和概概念念那那样样普普遍遍适适用用,在在改改进进软软件设计,提高软件质量有积极意义。件设计,提高软件质量有积极意义。下面介绍几条启发式规则。下面介绍几条启发式规则。设设计计出出软软件件的的初初步步结结构构以以后后,应应该该审审查查分分析析这这个个结结构构,通通过过模模块块分分解解或或合合并并,力力求求降降低低耦耦合合提提高内聚。高内聚。例例如如,多多个个模模块块公公有有的的一一个个子子功功能能可可以以独独立立成成一一个个模模块块,由由这这些些模模块块调调用用;有

38、有时时可可以以通通过过分分解解或或合合并并模模块块以以减减少少控控制制信信息息的的传传递递及及对对全全程程数数据据的引用,并且降低接口的复杂程度。的引用,并且降低接口的复杂程度。1. 改进软件结构提高模块独立性改进软件结构提高模块独立性经经验验表表明明,一一个个模模块块的的规规模模不不应应过过大大,最最好好能能写写在在一一页页纸纸内内( (通通常常不不超超过过6060行行语语句句) )。有有人人从从心心理理学学角角度度研研究究得得知知,当当一一个个模模块块包包含含的的语语句句数数超超过过3030以后,模块的可理解程度迅速下降。以后,模块的可理解程度迅速下降。过过小小的的模模块块开开销销大大于于

39、有有效效操操作作,而而且且模模块块数数目目过多将使系统接口复杂。过多将使系统接口复杂。2. 模块规模应该适中模块规模应该适中3. 深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当顶层顶层1层层2层层ABCDEFGHIJKLMN深度深度扇入为扇入为2扇出为扇出为3扇入为扇入为33层层4层层宽度宽度宽度宽度宽度宽度 软件结构示意图软件结构示意图有关指标有关指标有关指标有关指标:深深度度:表表示示软软件件结结构构中中从从顶顶层层模模块块到到最最底底层层模模块块的层数。的层数。宽宽度度:表表示示控控制制的的总总分分布。布。扇扇出出数数:指指一一个个模模块块直直接控制下属的模块个数。接控制下

40、属的模块个数。扇扇入入数数:指指一一个个模模块块的的直接上属模块个数。直接上属模块个数。一一个个好好的的软软件件结结构构的的形形态态准准则则是是:顶顶部部宽宽度度小小,中中部部宽宽度度大大,底底部部宽宽度度次次之之;在在结结构构顶顶部部有有较较高高的的扇扇出出数数,在在底底部部有较高的扇入数。有较高的扇入数。软件的层次结构软件的层次结构模模块块的的作作用用域域定定义义为为受受该该模模块块内内一一个个判判定定影影响响的所有模块的集合。的所有模块的集合。模模块块的的控控制制域域是是这这个个模模块块本本身身以以及及所所有有直直接接或或间接从属于它的模块的集合。间接从属于它的模块的集合。如如图图所所示

41、示,模模块块A A的的控控制制域域是是A A、B B、C C、D D、E E、F F等模块的集合,它的控制域应在其中。等模块的集合,它的控制域应在其中。4. 模块的作用域应该在控制域之内模块的作用域应该在控制域之内模块接口复杂是软件发生错误的一个主要原因。模块接口复杂是软件发生错误的一个主要原因。接接口口复复杂杂或或不不一一致致( (即即看看起起来来传传递递的的数数据据之之间间没没有有联联系系) ),是是紧紧耦耦合合或或低低内内聚聚的的征征兆兆,应应该该重重新新分分析这个模块的独立性。析这个模块的独立性。5. 力争降低模块接口的复杂程度力争降低模块接口的复杂程度这这条条启启发发式式规规则则警警

42、告告不不要要使使模模块块间间出出现现内内容容耦耦合。合。6. 设计单入口单出口的模块设计单入口单出口的模块7. 模块功能应该可以预测模块功能应该可以预测如如果果模模块块输输入入的的数数据据相相同同,就就产产生生同同样样的的输输出出,这个模块的功能就是可以预测的。这个模块的功能就是可以预测的。同同时时要要控控制制模模块块的的功功能能过过分分局局限限,使使用用范范围围过过分狭窄。分狭窄。7. 模块功能应该可以预测模块功能应该可以预测模模块块的的功功能能应应该该能能够够预预测测,但但也也要要防防止止模模块块功功能过分局限。能过分局限。如如果果一一个个模模块块可可以以当当做做一一个个黑黑盒盒子子,也也

43、就就是是说说,只只要要输输入入的的数数据据相相同同就就产产生生同同样样的的输输出出,这这个个模模块块的的功功能能就就是是可可以以预预测测的的。带带有有内内部部“存存储储器器”的的模模块块的的功功能能可可能能是是不不可可预预测测的的,因因为为它它的的输输出出可可能能取取决决于于内内部部存存储储器器( (例例如如某某个个标标记记) )的的状状态态。由由于于内内部部存存储储器器对对于于上上级级模模块块而而言言是是不不可可见见的的,所以这样的模块既不易理解又难于测试和维护。所以这样的模块既不易理解又难于测试和维护。4.1.4.1 层次图和层次图和HIPO图图层次图用来描绘软件的层次结构。层次图用来描绘

44、软件的层次结构。4.1.4 描绘软件结构的图形工具描绘软件结构的图形工具层层次次图图中中的的一一个个矩矩形形框框代代表表一一个个模模块块,方方框框间间的的连连线线表表示示调调用用关关系系而而不不像像层层次次方方框框图图那那样样表示组成关系。表示组成关系。正文加工系统的层次图正文加工系统的层次图 HIPOHIPO图图是是“层层次次图图加加输输入入/ /处处理理/ /输输出出图图”的的英英文文缩缩写写。为为了了能能使使HIPOHIPO图图具具有有可可追追踪踪性性,在在H H图图( (层层次次图图) )里里除除了了最最顶顶层层的的方方框框之之外外,每每个个方方框框都都加了编号。加了编号。结构图也是描

45、绘软件结构的图形工具。结构图也是描绘软件结构的图形工具。一一个个方方框框代代表表一一个个模模块块,框框内内注注明明模模块块的的名名字字或或主主要要功功能能;方方框框之之间间的的箭箭头头( (或或直直线线) )表表示示模模块块的调用关系。的调用关系。4.1.4.2 结构图结构图尾尾部部是是空空心心圆圆表表示示传传递递的的是是数数据据,实实心心圆圆表表示示传传递递的的是是控控制制信信息。息。4.1.4.2 结构图结构图有有一一些些附附加加的的符符号号,可可以以表表示示模模块块的的选选择择调调用或循环调用。用或循环调用。如如左左图图表表示示当当模模块块M M中中某某个个判判定定为为真真时时调调用用模

46、模块块A A,为为假假时时调调用用模模块块B B。如如右右图图表表示示模模块块M M循循环环调用模块调用模块A A、B B和和C C。4.1.5 面向数据流的设计方法面向数据流的设计方法面面向向数数据据流流的的设设计计方方法法的的目目标标是是给给出出设设计计软软件件结构的一个系统化的途径。结构的一个系统化的途径。因因为为任任何何软软件件系系统统都都可可以以用用数数据据流流图图表表示示,所所以以面面向向数数据据流流的的设设计计方方法法理理论论上上可可以以设设计计任任何何软软件的结构。件的结构。通通常常所所说说的的结结构构化化设设计计方方法法( (简简称称SDSD方方法法) ),也也就是基于数据流

47、的设计方法。就是基于数据流的设计方法。面面向向数数据据流流的的设设计计方方法法把把信信息息流流映映射射成成软软件件结结构构,信信息息流流的的类类型型决决定定了了映映射射的的方方法法。信信息息流流有有下述两种类型。下述两种类型。1. 变换流变换流4.1.4.1 概念概念2. 事务流事务流如如图图所所示示,数数据据流流是是“以以事事务务为为中中心心的的”,即即数数据据沿沿输输入入通通路路到到达达一一个个处处理理T T,根根据据输输入入数数据据的的类类型型选选出出一一个个来来执执行行。这这类类数数据据流流应应该该划划为为一一类类特殊的数据流,称为事务流。特殊的数据流,称为事务流。4.1.4.1 概念

48、概念如图处理如图处理T T称为事务中心,它完成下述任务:称为事务中心,它完成下述任务:(1) (1) 接收输入数据接收输入数据( (输入数据又称为事务输入数据又称为事务) );(2) (2) 分析每个事务以确定它的类型;分析每个事务以确定它的类型;(3) (3) 根据事务类型选取一条活动通路。根据事务类型选取一条活动通路。4.1.4.1 概念概念变变换换分分析析把把具具有有变变换换流流特特点点的的数数据据流流图图按按预预先先确定的模式映射成软件结构。确定的模式映射成软件结构。4.1.5.2 变换分析变换分析中心变换型中心变换型(transform center(transform center

49、) 变换分析变换分析变换分析变换分析其其特特点点是是:DFDDFD图图可可以以明明显显分分为为“输输入入- -处处理理- -输输出出”三三部分。部分。检查检查顺序顺序(物物理理输输入入)检查检查合理性合理性扩充扩充代码代码核对核对检查和检查和修改修改压缩压缩代码代码检查检查(逻逻辑辑输输入入)(逻逻辑辑输输出出)输输 入入主加工主加工输输 出出卡卡 片片 旧文件旧文件(物理输出)(物理输出)新文件新文件分类分类报名报名付款付款注销注销查询查询复审复审事务处理型事务处理型(transaction)(transaction) 事务分析事务分析事务分析事务分析这这类类数数据据流流图图可可看看成成是是

50、对对一一个个数数据据经经过过某某种种加加工工后后,按加工的结果选择一个输出数据流继续执行的处理。按加工的结果选择一个输出数据流继续执行的处理。4.1.5.2 变换分析变换分析BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分第一级分解的方法MCMTMAME第一级分解后的SCMCMTMAME第一层顶层c,ec,e u,wu,w传入模块传出模块中心变换模块典型的系统结构典型的系统结构典型的系统结构典型的系统结构变换型系统结构图变换型系统结构图变换型系统结构图变换型系统结构图通通过过变变换换分分析析技技术术,将将中中心心变变换换型型的的DFDDFD图图转转换换而得的而得的SCSC图,

51、称为变换型系统结构图。图,称为变换型系统结构图。事务型系统结构图事务型系统结构图事务型系统结构图事务型系统结构图通通过过事事务务分分析析技技术术,将将事事务务处处理理型型的的DFDDFD图图转转换换为的为的SCSC图,称为事务型的系统结构图。图,称为事务型的系统结构图。 确定主加工及逻辑输入确定主加工及逻辑输入确定主加工及逻辑输入确定主加工及逻辑输入/ / / /输出输出输出输出 主主加加工工 描描述述了了系系统统的的主主要要功功能能、特特征征。其其特特点点是是:输入输入/ /输出数据流较多,往往主加工不止一个。输出数据流较多,往往主加工不止一个。 逻辑输入逻辑输入/ /输出输出 是指输入是指

52、输入/ /输出主加工的数据流。输出主加工的数据流。 输入流输入流 是把物理输入转换为逻辑输入的数据流。是把物理输入转换为逻辑输入的数据流。 输出流输出流 是将逻辑输出转换为物理输出的数据流。是将逻辑输出转换为物理输出的数据流。FDC中心中心加工加工2号号加工加工3号号加工加工1号号加工加工4号号加工加工ABE 输输 入入流流转换流转换流输输 出出 流流 输输 入入流流转换流转换流输输 出出 流流 进行一级分解进行一级分解, ,设计上层模块设计上层模块 为为每每个个输输入入设设计计一一个个输输入入模模块块,为为每每个个输输出出设设计计一一个个输输出出模块,同时为每个主加工设计一个处理模块。模块,

53、同时为每个主加工设计一个处理模块。MCICTCOCCDDCICTCO 变换分析技术变换分析技术DDCC 进行二级分解,设计中下层模块进行二级分解,设计中下层模块进行二级分解,设计中下层模块进行二级分解,设计中下层模块 这这一一步步的的工工作作是是自自顶顶向向下下,逐逐步步细细化化,为为第第一一层层的的每每一一个个输输入入模模块块、输输出出模模块块、处处理理模模块块设设计计它它们们的的从从属属模模块块,设设计计下层模块的顺序一般从设计输入模块的下层开始。下层模块的顺序一般从设计输入模块的下层开始。MCICTCO处理C取B转换B转换D送ECCDDDCCDBBEEDC中心中心加工加工2号号加工加工3

54、号号加工加工1号号加工加工4号号加工加工AB E 输输 入入流流转换流转换流输输 出出 流流转换流转换流 进一步细化进一步细化进一步细化进一步细化取A转换A转换E送FAABFFE 变换分析技术变换分析技术F 确确定定流流界界:首首先先从从数数据据流流图图中中找找出出事事务务流流、事事务务处理中心和事务路径。处理中心和事务路径。 进进行行一一级级分分析析,设设计计上上层层模模块块:对对事事务务中中心心应应设设计计“事事物物控控制制”模模块块;对对事事物物流流应应设设计计“接接受受事事物物”模块;对事务路径,应设计模块;对事务路径,应设计“发送控制发送控制”模块。模块。 进进行行二二级级分分解解,

55、设设计计中中下下层层模模块块:接接受受分分支支,用用类类似似于于转转换换处处理理型型数数据据流流图图中中对对输输入入数数据据流流的的方方法法设设计计中中下下层层。对对于于发发送送分分支支,在在发发送送控控制制模模块块下下为为每每条条事事务务路路径径设设计计一一个个事事务务处处理理模模块块,这这一一层层称称为为事务层。事务层。4.1.5.3 事务分析技术事务分析技术对对 应应 模模 块块 图图原原 始始 的的 数数 据据 流流 图图I IP1P1P2P2P3P3事物流事物流事务中心事务中心事务处理事务处理事务控制事务控制接受事务接受事务发送事务发送事务P1P2P3 事务分析技术事务分析技术4.1

56、.5.3 事务分析技术事务分析技术我我们们已已经经开开始始进进入入“智智能能”产产品品时时代代。在在这这类类产产品品中中把把软软件件做做在在只只读读存存储储器器中中,成成为为设设备备的的一一部部分分,从从而而使使设设备备具具有有某某些些“智智能能”。因因此此,这这类类产产品品的的设设计计都都包包含含软软件件开开发发的的任任务务。作作为为面面向向数数据据流流的的设设计计方方法法中中变变换换分分析析的的例例子子,考考虑虑汽汽车车数字仪表板的设计。数字仪表板的设计。4.1.5.4 例子例子假设的仪表板将完成下述功能:假设的仪表板将完成下述功能:(1) (1) 通过模数转换实现传感器和微处理机接口;通

57、过模数转换实现传感器和微处理机接口;(2) (2) 在发光二极管面板上显示数据;在发光二极管面板上显示数据;(3) (3) 指指示示每每小小时时英英里里数数(mph)(mph),行行驶驶的的里里程程,每每加仑油行驶的英里数加仑油行驶的英里数(mpg)(mpg)等等;等等;(4) (4) 指示加速或减速;指示加速或减速;(5) (5) 超超速速警警告告:如如果果车车速速超超过过5555英英里里/ /小小时时,则则发出超速警告铃声。发出超速警告铃声。4.1.5.4 例子例子第一级分解的方法第一级分解的方法数字仪表板系统的第一级分解数字仪表板系统的第一级分解第二级分解的方法第二级分解的方法 未经精化

58、的输入结构未经精化的输入结构未经精化的变换结构未经精化的变换结构未经精化的输出结构未经精化的输出结构精化后的数字仪表板系统的软件结构精化后的数字仪表板系统的软件结构“一一个个不不能能工工作作的的最最佳佳设设计计的的价价值值是是值值得得怀怀疑疑的的”开开发发能能够够满满足足所所有有功功能能和和性性能能要要求求,并并按按设设计计原原理理和和启启发发式式设设计计规规则则衡衡量量是是值值得得接接收收的的软件。软件。可可以以导导出出不不同同的的软软件件结结构构,然然后后对对它它们们进进行行评评价价和和比比较较,力力求求得得到到“最最好好”的的结结果果。应应在在设设计计的早期阶段尽量对软件结构进行精化。的

59、早期阶段尽量对软件结构进行精化。4.1.5.5 设计优化设计优化设设计计优优化化应应力力求求做做到到在在有有效效的的模模块块化化的的前前提提下下使使用用最最少少量量的的模模块块,以以及及在在能能够够满满足足信信息息要要求求的的前提下使用最简单的数据结构。前提下使用最简单的数据结构。对对于于时时间间是是决决定定性性因因素素的的场场合合,下下述述方方法法对对软软件进行优化是合理的:件进行优化是合理的:(1)(1)在在不不考考虑虑时时间间因因素素的的前前提提下下开开发发并并精精化化软软件件结构;结构;(2)(2)在在详详细细设设计计阶阶段段选选出出最最耗耗费费时时间间的的那那些些模模块块,仔仔细细地

60、地设设计计它它们们的的处处理理过过程程( (算算法法) ),以以求求提提高高效效率;率;4.1.5.5 设计优化设计优化(3) (3) 使用高级程序设计语言编写程序;使用高级程序设计语言编写程序;(4) (4) 在在软软件件中中孤孤立立出出那那些些大大量量占占用用处处理理机机资资源源的模块;的模块;(5) (5) 必必要要时时重重新新设设计计或或用用依依赖赖于于机机器器的的语语言言重重写写上上述述大大量量占占用用资资源源的的模模块块的的代代码码,以以求求提提高高效效率。率。上上述述优优化化方方法法遵遵守守了了一一句句格格言言:“先先使使它它能能工工作,然后再使它快起来。作,然后再使它快起来。”

61、4.1.5.5 设计优化设计优化总体设计阶段主要由两个小阶段组成。总体设计阶段主要由两个小阶段组成。首首先先需需要要进进行行系系统统设设计计,从从数数据据流流图图出出发发设设想想完完成成系系统统功功能能的的若若干干种种合合理理的的物物理理方方案案,分分析析员员应应该该仔仔细细分分析析比比较较这这些些方方案案,并并且且和和用用户户共共同同选选定一个最佳方案。定一个最佳方案。然然后后进进行行软软件件结结构构设设计计,确确定定软软件件由由哪哪些些模模块块组成以及这些模块之间的动态调用关系。组成以及这些模块之间的动态调用关系。层次图和结构图是描绘软件结构的常用工具。层次图和结构图是描绘软件结构的常用工具。4.1.6 小结小结

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号