课件软件工程SoftwareEngineering

上传人:无*** 文档编号:241770675 上传时间:2024-07-22 格式:PPT 页数:81 大小:1.14MB
返回 下载 相关 举报
课件软件工程SoftwareEngineering_第1页
第1页 / 共81页
课件软件工程SoftwareEngineering_第2页
第2页 / 共81页
课件软件工程SoftwareEngineering_第3页
第3页 / 共81页
点击查看更多>>
资源描述
课件软件工程SoftwareEngineering第八章第八章 软件设计基础软件设计基础o软件设计是软件工程的重要阶段。软件设计是软件工程的重要阶段。o软软件件设设计计过过程程是是对对程程序序结结构构、数数据据结结构构和和过过程程细细节节逐步求精、复审并编制文档的过程。逐步求精、复审并编制文档的过程。o经经过过软软件件工工程程师师们们多多年年的的努努力力形形成成了了一一些些软软件件设设计计技技术术、质质量量评评估估标标准准和和设设计计表表示示法法并并用用于于软软件件工工程程实实践。践。o本本章章讨讨论论与与软软件件设设计计有有关关的的主主要要概概念念,介介绍绍几几个个具具体的软件设计方法。体的软件设计方法。2024/7/222国防科技大学计算机学院软件设计过程软件设计过程软软件件开开发发阶阶段段由由设设计计、编编码码和和测测试试三三个个基基本本活活动动组组成成,其其中中“设设计计活活动动”是是 获获取取高高质质量量、低低耗耗费费、易易维维护护软软件最重要的一个环节。件最重要的一个环节。需需求求分分析析阶阶段段获获得得的的需需求求规规格格说说明明书书包包括括对对欲欲实实现现系系统统的的信信息息、功功能能和和行行为为方方面面的的描描述述,这这是是软软件件设设计计的的基基础础。对对此此采采用用任任一一种种软软件件设设计计方方法法都都将将产产生生系系统统的的总总体体结结构构设设计计(archite archite ctural ctural design)design)、系系统统的的数数据据设设计计(data data design)design)和和系系统统的的过过程程设设计计(procedural procedural design)design)(图图8 81)1)。第八章第八章 软件设计基础软件设计基础2024/7/223国防科技大学计算机学院软件设计过程软件设计过程o不同的软件设计方法会产生不同的设计形式。不同的软件设计方法会产生不同的设计形式。o数数据据设设计计把把信信息息描描述述转转换换为为实实现现软软件件所所要要求求的的数数据据结构。结构。o总体结构设计旨在确定程序各主要部件之间的关系。总体结构设计旨在确定程序各主要部件之间的关系。o过程设计要完成每一部件的过程化描述。过程设计要完成每一部件的过程化描述。o根据设计结果编制代码。根据设计结果编制代码。o设设计计阶阶段段做做的的决决策策直直接接影影响响软软件件质质量量,没没有有良良好好的的设设计就没有稳定的系统计就没有稳定的系统,也不会有易维护的软件。也不会有易维护的软件。o统统计计表表明明:设设计计、编编码码和和测测试试这这三三个个活活动动一一般般占占用用整个软件开发费用整个软件开发费用(不包括维护阶段不包括维护阶段)的的75%75%以上。以上。2024/7/224国防科技大学计算机学院图图8.1 8.1 开发阶段的信息流开发阶段的信息流2024/7/225国防科技大学计算机学院软件设计过程软件设计过程o软软件件设设计计也也可可看看作作将将需需求求规规格格说说明明逐逐步步转转换换为为软软件件源代码的过程。源代码的过程。o从从工工程程管管理理的的角角度度看看,软软件件设设计计可可分分为为概概要要设设计计和和详细设计两大步骤。详细设计两大步骤。o概要设计是根据需求确定软件和数据的总体框架概要设计是根据需求确定软件和数据的总体框架o详详细细设设计计是是将将其其进进一一步步精精化化成成软软件件的的算算法法表表示示和和数数据结构。据结构。o概概要要设设计计和和详详细细设设计计由由若若干干活活动动组组成成,除除总总体体结结构构设设计计、数数据据结结构构设设计计和和过过程程设设计计外外,许许多多现现代代应应用用软软件,还包括一个独立的界面设计活动。件,还包括一个独立的界面设计活动。2024/7/226国防科技大学计算机学院软件设计基本概念软件设计基本概念o软件设计基本概念是过去三十年里陆续提出的。软件设计基本概念是过去三十年里陆续提出的。o软件设计者根据这组概念进行设计决策软件设计者根据这组概念进行设计决策,如如:划分子部件的标准划分子部件的标准;从软件的概念表示中分离出功能和数据结构的细节从软件的概念表示中分离出功能和数据结构的细节;以统一的标准衡量软件设计质量等等。以统一的标准衡量软件设计质量等等。第八章第八章 软件设计基础软件设计基础2024/7/227国防科技大学计算机学院抽象与逐步求精抽象与逐步求精抽象是管理、控制复杂性的基本策略抽象是管理、控制复杂性的基本策略 。“抽抽象象”是是心心理理学学概概念念,它它要要求求人人们们将将注注意意力力集集中中在在某某一一层层次次上上考虑问题考虑问题,而忽略那些低层次的细节。而忽略那些低层次的细节。使使用用抽抽象象技技术术便便于于人人们们用用“问问题题域域”的的概概念念和和术术语语描描述述问问题题,而而无须过早地转换为那些不熟悉的结构。无须过早地转换为那些不熟悉的结构。软件设计过程是,在不同抽象级别上考虑、处理问题的过程。软件设计过程是,在不同抽象级别上考虑、处理问题的过程。()在在最最高高抽抽象象级级别别上上,用用面面向向问问题题域域的的语语言言叙叙述述“问问题题”,”,概括概括“问题解问题解”的形式。的形式。()不断地具体化()不断地具体化,不断地用面向过程的语言描述问题。不断地用面向过程的语言描述问题。()在在最最低低的的抽抽象象级级别别上上给给出出可可直直接接实实现现的的“问问题题解解”,即即程序。程序。2024/7/228国防科技大学计算机学院抽象与逐步求精抽象与逐步求精软软件件工工程程过过程程的的每每一一步步都都是是对对较较高高一一级级抽抽象象的的解解作作一一次较具体化的描述。次较具体化的描述。o在在系系统统定定义义阶阶段段,软软件件系系统统被被描描述述为为基基于于计计算算机机的的大系统的一个组成部分大系统的一个组成部分;o在在软软件件规规划划和和需需求求分分析析阶阶段段,软软件件用用问问题题域域约约定定的的习习惯用语表达惯用语表达;o从概要设计过渡到详细设计时从概要设计过渡到详细设计时,抽象级再一次降低抽象级再一次降低;o编码完成后,达到了抽象的最低级。编码完成后,达到了抽象的最低级。2024/7/229国防科技大学计算机学院抽象与逐步求精抽象与逐步求精在在由由高高级级抽抽象象到到低低级级抽抽象象的的转转换换过过程程中中,伴伴随随着着一一连连串串的过程抽象和数据抽象。的过程抽象和数据抽象。o过过程程抽抽象象把把完完成成一一个个特特定定功功能能的的动动作作序序列列抽抽象象为为一一个个过过程程名名和和参参数数表表,通通过过指指定定过过程程名名和和实实际际参参数数调调用用此过程此过程;o数数据据抽抽象象把把一一个个数数据据对对象象的的定定义义(或或描描述述 )抽抽象象为为一一个个数数据据类类型型名名,用用此此类类型型名名可可定定义义多多个个具具有有相相同同性性质质的数据对象。的数据对象。2024/7/2210国防科技大学计算机学院例例8.1 8.1 不同抽象级别的软件形式不同抽象级别的软件形式例例8 81 1考虑适用于低级考虑适用于低级CADCAD的图形软件包。的图形软件包。抽象抽象1 1该该CADCAD软件系统配有能与作图员进行可视化通讯的图形界面。软件系统配有能与作图员进行可视化通讯的图形界面。能用鼠标替代作图板和直尺画各种直线和曲线。能用鼠标替代作图板和直尺画各种直线和曲线。能完成所有几何计算及所有截面视图和辅助视图的设计。能完成所有几何计算及所有截面视图和辅助视图的设计。图形设计的结果存在图形文件中图形设计的结果存在图形文件中,图形文件可包含几何的、正文图形文件可包含几何的、正文的和其他各种补充设计信息。的和其他各种补充设计信息。在这一抽象级别上在这一抽象级别上,问题的解用问题域本身的术语描述。问题的解用问题域本身的术语描述。2024/7/2211国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式抽象抽象2 2CADCAD软件任务软件任务;用户界面任务用户界面任务;创建二维图形任务创建二维图形任务;显示图形任务显示图形任务;管理图形文件任务管理图形文件任务;end CAD.end CAD.在在这这一一抽抽象象级级别别上上,给给出出了了组组成成CADCAD软软件件任任务务的的所所有有子子任任务务,术语与问题域有所不同术语与问题域有所不同,但仍然不是实现用的语言。但仍然不是实现用的语言。2024/7/2212国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式抽象抽象3 3例例“创建二维图形任务创建二维图形任务”PROCEDURE PROCEDURE 创建二维图形创建二维图形REPEATREPEATUNTILUNTIL DODOWHILEWHILE 数字仪接口任务数字仪接口任务;判断作图请求判断作图请求:线线:画线任务画线任务;圆圆:画圆任务画圆任务;END;END;2024/7/2213国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式DODOWHILEWHILE 键盘接口任务;键盘接口任务;选择分析或计算选择分析或计算:辅助视图辅助视图:辅助视图任务;辅助视图任务;截面视图截面视图:截面视图任务;截面视图任务;ENDEND;END REPETITIONEND REPETITION;END PROCEDUREEND PROCEDURE在在这这一一抽抽象象级级别别上上,给给出出了了初初步步的的过过程程性性表表示示,此此时时所所有有术术语语都都是是面面向向软软件件(比比如如采采用用do do whilewhile结结构构)并并且且模模块块结结构构也也开开始始明明朗。求精过程还可继续下去朗。求精过程还可继续下去,直至产生源代码。直至产生源代码。2024/7/2214国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式数数据据抽抽象象与与过过程程抽抽象象一一样样,能能使使设设计计者者按按不不同同的的详详细细程程度度表表示数据对象。示数据对象。例例为为CADCAD软件定义软件定义drawing(drawing(图图)的数据对象的数据对象:TYPE TYPE drawing drawing IS STRUCTURE DEFINEDIS STRUCTURE DEFINEDnumber number IS STRING LENGTH(12);IS STRING LENGTH(12);geometry geometry DEFINEDDEFINEDnotes notes IS STRING LENGTH(256);IS STRING LENGTH(256);bom bom DEFINEDDEFINEDEND drawing TYPE;END drawing TYPE;drawingdrawing被被表表示示为为一一种种结结构构,各各组组成成部部件件又又可可为为某某种种数数据据抽象抽象,如如geometry geometry 和和bombom。2024/7/2215国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式抽抽象象数数据据类类型型drawingdrawing定定义义完完毕毕,即即可可用用类类型型名名直直接接说说明明数数据据对对象象,而而不不必必涉涉及及其其内内部部构构造造的的细细节节,如如,可可用用语句语句blueprint blueprint IS INSTANCE OF drawing;IS INSTANCE OF drawing;或或schematic schematic IS INSTANCE OF drawing;IS INSTANCE OF drawing;说明说明blueprintblueprint和和schematicschematic具有具有drawingdrawing的特性。的特性。2024/7/2216国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式o在在抽抽象象数数据据类类型型的的定定义义中中可可以以附附加加一一组组操操作作的的定定义义,用以确定在此类数据对象上可进行的操作。用以确定在此类数据对象上可进行的操作。o以以抽抽象象数数据据类类型型drawingdrawing为为例例,可可以以定定义义擦擦除除(erase)erase)、存存储储(save)save)、分分类类(catalog)catalog)和和拷拷贝贝(copy)copy)等等操操作作。o若若干干程程序序设设计计语语言言(如如Ada,Modula,CLU)Ada,Modula,CLU)都都提提供供了了对对抽抽象象数数据据类类型型的的支支持持,AdaAda的的程程序序包包机机制制是是对对数数据据抽抽象象和过程抽象的双重支持。和过程抽象的双重支持。2024/7/2217国防科技大学计算机学院不同抽象级别软件的形式不同抽象级别软件的形式o由由提提出出的的“逐逐步步求求精精”概概念念,与与“抽抽象象”密密切切相相关关,是是早早期期的的自顶向下设计策略。自顶向下设计策略。o“逐逐步步求求精精”的的主主要要思思想想是是,针针对对某某个个功功能能的的宏宏观观描描述述用用逐逐步步求求精精的的方方法法不不断断地地分分解解,逐逐步步确确立立过过程程细细节节,直直至至该该功功能能用用程程序序语言描述的算法实现为止。语言描述的算法实现为止。o求求精精的的每每一一步步都都是是用用更更为为详详细细的的描描述述替替代代上上一一层层次次的的抽抽象象描描述述,在在整整个个设设计计过过程程中中产产生生的的,具具有有不不同同详详细细程程度度的的各各种种描描述述组成系统的层次结构。组成系统的层次结构。o层次结构的上一层是下一层的抽象层次结构的上一层是下一层的抽象,下一层是上一层的求精。下一层是上一层的求精。o在在过过程程求求精精的的同同时时,伴伴随随着着数数据据求求精精,无无论论是是过过程程还还是是数数据据,每每个个求求精精步步都都蕴蕴含含着着某某些些设设计计决决策策,设设计计人人员员必必须须掌掌握握一一些些基基本的准则和各种可能的候选方法。本的准则和各种可能的候选方法。2024/7/2218国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏o模块化的概念模块化的概念把把软软件件划划分分为为可可独独立立命命名名和和编编址址的的部部件件,每每个个部部件件称称为为一一个个模模块块,当当把把所所有有模模块块组组装装到到一一起起时时则则获获得得满满足足问问题题需需要要的的一一个解。个解。o软件总体结构体现了模块化思想。软件总体结构体现了模块化思想。o“模模块块化化是是软软件件唯唯一一能能使使程程序序获获得得智智能能化化管管理理的的一一个个属属性性”,没没有有模模块块的的程程序序控控制制路路径径错错综综复复杂杂,变变量量被被远远距距离离引引用用等等难难于被人掌握。于被人掌握。2024/7/2219国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏求解问题的过程求解问题的过程假设函数假设函数C(X)C(X)定义了问题定义了问题X X已被觉察到的复杂性已被觉察到的复杂性,函函数数E(X)E(X)定定义义了了求求解解问问题题X X所所要要求求的的工工作作量量(按按时时间间计计),对于问题对于问题P1P1和和P2,P2,如果如果C(P1)C(P1)C(P2)C(P2)(8(81a)1a)则则E(P1)E(P1)E(P2)E(P2)(8(81b)1b)C(P1+P2)C(P1+P2)C(P1)+C(P2)C(P1)+C(P2)(8(82)2)E(P1+P2)E(P1+P2)E(P1)+E(P2)E(P1)+E(P2)(8(83)3)o解决一个复杂问题,比解决一个简单问题耗费多。解决一个复杂问题,比解决一个简单问题耗费多。o由由P1P1、P2P2组组合合而而成成的的问问题题复复杂杂性性,比比单单个个问问题题复复杂杂性性的的和和更更大。大。2024/7/2220国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏“分治法分治法”一一个个复复杂杂问问题题分分割割成成若若干干个个可可管管理理的的小小问问题题后后更更易易于求解。于求解。o当当模模块块总总数数增增加加时时,每每个个模模块块的的成成本本减减少少了了,但但模模块块接口所需代价随之增加。接口所需代价随之增加。o如如果果模模块块数数为为M M时时将将获获得得最最小小开开发发成成本本,那那么么模模块块数数在在M M附近选择附近选择,就能避免模块分割过度和不足。就能避免模块分割过度和不足。这些问题涉及信息隐藏、内聚度与藕合度的概念。这些问题涉及信息隐藏、内聚度与藕合度的概念。2024/7/2221国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏o怎样保证模块数怎样保证模块数“在在M M附近附近”?”?o依据什么标准划分模块依据什么标准划分模块?2024/7/2222国防科技大学计算机学院1 1信息隐藏信息隐藏模块独立的概念模块独立的概念o模模块块应应该该设设计计得得使使其其所所含含信信息息(过过程程和和数数据据)对对于于那那些不需要这些信息的模块不可访问些不需要这些信息的模块不可访问;o每个模块只完成一个相对独立的特定功能每个模块只完成一个相对独立的特定功能;o模模块块之之间间仅仅仅仅交交换换那那些些为为完完成成系系统统功功能能必必须须交交换换的的信息,即模块应该独立。信息,即模块应该独立。采用信息隐藏原理指导模块设计优点:采用信息隐藏原理指导模块设计优点:o支持模块的并行开发支持模块的并行开发o减少软件测试和软件维护的工作量。减少软件测试和软件维护的工作量。2024/7/2223国防科技大学计算机学院2 2内聚度内聚度内聚度内聚度模块内部各成分彼此结合的紧密程度。模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为七级内聚度按其高低程度可分为七级,内聚度越高越好。内聚度越高越好。低级内聚度低级内聚度()偶然性内聚()偶然性内聚(Coincidental Cohesion)Coincidental Cohesion)。模模块块内内各各成成分分为为完完成成一一组组功功能能而而组组合合在在一一起起,它它们们相相互互之之间即使有关系间即使有关系,也很松散。也很松散。()逻辑性内聚()逻辑性内聚(Logical Cohesion)Logical Cohesion)模模块块完完成成的的诸诸任任务务逻逻辑辑上上相相关关,如如,一一个个模模块块产产生生所所有有与与类型无关的输出类型无关的输出。()时间性内聚()时间性内聚(Temporal Cohesion)Temporal Cohesion)模模块块包包含含的的诸诸任任务务必必须须在在同同一一时时间间段段内内执执行行,如如一一个个初初始化模块始化模块。2024/7/2224国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏中级内聚度中级内聚度()过程性内聚()过程性内聚(Procedural Cohesion)Procedural Cohesion)模模块块具具有有过过程程性性内内聚聚度度指指,模模块块内内成成分分彼彼此此相相关关,并且必须按特定的次序执行并且必须按特定的次序执行;()()通信性内聚通信性内聚(Communicational Cohesion)Communicational Cohesion)模模块块中中各各成成份份都都将将对对数数据据结结构构的的同同一一区区域域进进行行操操作作,以达到通信的目的。以达到通信的目的。2024/7/2225国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏高级内聚度高级内聚度()顺序性内聚()顺序性内聚(Sequential Cohesion)Sequential Cohesion)模模块块内内的的各各处处理理成成份份均均与与同同一一功功能能相相关关,且且这这些些处理必须顺序执行处理必须顺序执行,则称顺序内聚。则称顺序内聚。()()功能性内聚功能性内聚(Functional Cohesion)Functional Cohesion)模模块块内内所所有有成成分分形形成成一一个个整整体体,完完成成单单个个功功能能。设设计计软软件件时时,应应该该能能够够识识别别内内聚聚度度的的高高低低,并并通通过过修修改改设设计计尽尽可可能能提提高高模模块块内内聚聚度度,从从而而获获得得较较高高的的模模块块独立性独立性2024/7/2226国防科技大学计算机学院3 3耦合度耦合度耦合度耦合度软件结构中模块间关联程度的一种度量。软件结构中模块间关联程度的一种度量。o耦耦合合的的强强弱弱取取决决于于模模块块间间接接口口的的复复杂杂性性、进进入入或或调调用用模模块块的的位置以及通过界面传送数据的多少等。位置以及通过界面传送数据的多少等。o设计软件应追求尽可能松散耦合的系统。设计软件应追求尽可能松散耦合的系统。o松散耦合系统中,任一模块的设计、测试和维护都相对独立。松散耦合系统中,任一模块的设计、测试和维护都相对独立。o松松散散耦耦合合系系统统模模块块间间联联系系较较少少,错错误误在在模模块块间间传传播播的的可可能能性性随随之变小。之变小。o模模块块间间的的耦耦合合程程度度直直接接影影响响系系统统的的可可理理解解性性、可可测测试试性性、可可靠性和可维护性。靠性和可维护性。2024/7/2227国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏耦合度也分为七级耦合度也分为七级:()非直接耦合()非直接耦合(Nodirect Coupling)Nodirect Coupling)两两模模块块中中任任一一个个都都不不依依赖赖对对方方能能独独立立工工作作,这这类类耦耦合合度度最最低。低。()数据耦合()数据耦合(Data Coupling)Data Coupling)两模块通过参数交换信息两模块通过参数交换信息,信息仅限于数据。信息仅限于数据。()控制耦合()控制耦合(Control Coupling)Control Coupling)传传递递的的信信息息含含有有控控制制信信息息。控控制制耦耦合合通通常常会会增增加加系系统统的的复复杂性杂性,适当分解模块可望消除控制耦合。适当分解模块可望消除控制耦合。()特征耦合()特征耦合(Stamp Coupling)Stamp Coupling)。介于数据耦合与控制耦合之间介于数据耦合与控制耦合之间2024/7/2228国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏()外部耦合()外部耦合(External Coupling)External Coupling)当当若若干干模模块块均均与与同同一一个个外外部部环环境境关关联联,如如,I/OI/O处处理理使使所所有有I/OI/O模块与特定的设备、格式和通信协议相关联。模块与特定的设备、格式和通信协议相关联。外部耦合尽管需要外部耦合尽管需要,但应限制在少数几个模块上。但应限制在少数几个模块上。()公共耦合()公共耦合(Common Coupling)Common Coupling)若若干干模模块块通通过过全全局局的的数数据据环环境境相相互互作作用用,全全局局数数据据环环境境中中可可能能含含有有全全局局变变量量、公公用用区区、内内存存公公共共复复盖盖区区、任任何何存存储储介介质质上的文件、物理设备等。上的文件、物理设备等。()内容耦合()内容耦合(Content Coupling)Content Coupling)一一个个模模块块使使用用另另 一一模模块块内内部部的的数数据据或或控控制制信信息息;一一个个模模块块直接转移到另一模块内部等等。直接转移到另一模块内部等等。设设计计软软件件时时应应尽尽量量使使用用数数据据耦耦合合,减减少少控控制制耦耦合合,限限制制外外部部环境耦合和公共数据耦合环境耦合和公共数据耦合,杜绝内容耦合。杜绝内容耦合。2024/7/2229国防科技大学计算机学院模块化与信息隐藏模块化与信息隐藏模模块块化化设设计计的的思思想想适适用用于于任任何何软软件件系系统统的的设设计计。当当某某些些软软件件系系统统,如如实实时时软软件件和和部部分分微微处处理理机机软软件件,因因不不能能容容忍忍子子程程序序调调用用引引起起的的时时间间开开销销而而必必须须以以整整块块软软件件的的形形式式出出现现时时,软软件件设设计计仍仍然然应应该该以以模模块块化化设设计计的的思思想想为为指指导导,直直至至编编码码时时再再改改用用代代入入式式(inline)inline)方方法法。这这样样,源源程程序序中中虽虽不不含含明明显显的的模模块块,但但模模块块化化设设计所带来的大部分益处却已被系统获得。计所带来的大部分益处却已被系统获得。2024/7/2230国防科技大学计算机学院软件总体结构设计软件总体结构设计软软件件总总体体结结构构(software software architecture)architecture)应应该该包包括括两两方方面内容面内容()由由系系统统中中所所有有过过程程性性部部件件(即即模模块块)构构成成的的层层次次结构结构,亦称为程序结构亦称为程序结构;()输入输出数据结构。()输入输出数据结构。软软件件总总体体结结构构设设计计的的目目标标是是产产生生一一个个模模块块化化的的程程序序结结构构并并明明确确各各模模块块之之间间的的控控制制关关系系,此此外外还还要要通通过过定定义义界界面面,说说明明程程序序的的输输入入输输出出数数据据流流,进进一一步步协协调调程程序结构和数据结构。序结构和数据结构。2024/7/2231国防科技大学计算机学院软件总体结构设计软件总体结构设计程序结构、数据结构是逐步求精、分而治之的结果。程序结构、数据结构是逐步求精、分而治之的结果。软软件件设设计计从从需需求求定定义义开开始始,逐逐步步分分层层导导出出程程序序结结构构和和数数据据结结构构,当当需需求求定定义义中中所所述述的的每每个个部部分分最最终终都都能能由由一一个个或或几几个个软软件元素实现时件元素实现时,整个求解过程即告结束。整个求解过程即告结束。2024/7/2232国防科技大学计算机学院软件总体结构设计软件总体结构设计o依据任何一种软件设计方法总能推导出一个软件结构。依据任何一种软件设计方法总能推导出一个软件结构。o模块内聚度和耦合度是判断结构好坏的主要标准模块内聚度和耦合度是判断结构好坏的主要标准 。2024/7/2233国防科技大学计算机学院软件总体结构设计软件总体结构设计表示程序结构的工具表示程序结构的工具类树图类树图(TreeTreelike diagram)like diagram)WarnierOrrWarnierOrr图图Jackson Jackson 图等图等2024/7/2234国防科技大学计算机学院程序结构的术语程序结构的术语o软软件件的的深深度度(Depth)Depth)和和宽宽度度(Width)Width)分分别别说说明明控控制制的的层层数和跨度。数和跨度。o模模块块的的“扇扇出出率率”(”(FanFanout)out)指指,该该模模块块直直接接控控制制的的其他模块数。其他模块数。o模模块块的的“扇扇入入 率率”(”(FanFanin)in)指指,能能直直接接控控制制该该模模块块的模块数。的模块数。2024/7/2235国防科技大学计算机学院程序结构的术语程序结构的术语o如如果果一一个个模模块块控控制制另另一一模模块块,称称前前者者为为“主主控控”模模块块,后后者者为为“从属从属”模块。模块。o软件结构的可见域和连通域。软件结构的可见域和连通域。模块的可见域指,该模块可直接或间接引用的一组模块模块的可见域指,该模块可直接或间接引用的一组模块;模块的连通域指,模块可直接引用的模块。模块的连通域指,模块可直接引用的模块。o软件的总体结构应该在考虑每个模块的细节前就确定下来。软件的总体结构应该在考虑每个模块的细节前就确定下来。o软软件件设设计计方方法法鼓鼓励励人人们们首首先先致致力力于于软软件件总总体体结结构构的的设设计计,而而后后再进行详细设计。再进行详细设计。o每一种方法导出总体结构的具体方式不尽相同。每一种方法导出总体结构的具体方式不尽相同。2024/7/2236国防科技大学计算机学院数据结构设计数据结构设计数数据据结结构构描描述述各各数数据据分分量量之之间间的的逻逻辑辑关关系系,数数据据结结构构一一经经确确定定,数数据据的的组组织织形形式式、访访问问方方法法、组组合合程程度度及及处处理理策策略略基基本本上上随随之之确确定定,所所以以数数据据结结构构是是影影响响软软件件总总体体结结构构的的重重要要因因素素,对对数数据据结结构构的的完完整整讨讨论论超超出出本本书书的的范范围围,但但掌掌握握标标量量、数数组组、链链表表和和树树等等典典型型的的数数据据表表示示方方法法,并并能能根根据据实实际际需需要要灵灵活活应应用用十十分分必要。必要。数数据据结结构构与与程程序序结结构构一一样样,也也可可以以在在不不同同的的抽抽象象级级别别上上表表示示。以以栈栈为为例例,作作为为一一个个抽抽象象数数据据类类型型,在在概概念念级级上上只只关关心心“先先进进后后出出”特特性性,而而在在实实现现级级上上则则要要考考虑虑物物理理表表示示及及内内部部工工作作的的细细节节,比如比如,用向量实现用向量实现,或用链表实现等等。或用链表实现等等。2024/7/2237国防科技大学计算机学院数据结构设计数据结构设计o数数据据结结构构对对程程序序结结构构和和过过程程复复杂杂性性有有直直接接的的影影响响,数数据结构设计很重要据结构设计很重要,在很大程度上决定软件的质量。在很大程度上决定软件的质量。o无无论论采采用用哪哪一一种种软软件件设设计计技技术术,没没有有良良好好的的数数据据结结构构,不可能导出良好的程序结构。不可能导出良好的程序结构。o数数据据设设计计是是为为在在需需求求规规格格说说明明中中定定义义的的那那些些数数据据对对象象选选择择合合适适的的逻逻辑辑表表示示,并并确确定定可可能能作作用用在在这这些些逻逻辑辑结构上的所有操作结构上的所有操作(包括选用已存在的程序包包括选用已存在的程序包)。o数据抽象和信息隐藏两个概念是数据设计的基础。数据抽象和信息隐藏两个概念是数据设计的基础。o数数据据设设计计方方案案不不是是唯唯一一的的,有有时时需需进进行行算算法法复复杂杂性性分分析后才能从多种候选中找出最佳者。析后才能从多种候选中找出最佳者。2024/7/2238国防科技大学计算机学院软件过程设计软件过程设计o程程序序结结构构仅仅考考虑虑软软件件总总体体结结构构中中模模块块之之间间的的控控制制分分层关系层关系,而不关心模块内各处理元素和判断元素的顺序。而不关心模块内各处理元素和判断元素的顺序。o过过程程设设计计紧紧跟跟在在数数据据结结构构设设计计和和程程序序结结构构设设计计之之后后,基本任务是描述这方面的信息。基本任务是描述这方面的信息。o过过程程包包括括有有关关处处理理的的精精确确说说明明,如如事事件件的的顺顺序序、确确切切的判断位置、循环操作以及数据的组成等等。的判断位置、循环操作以及数据的组成等等。o程程序序结结构构与与软软件件过过程程相相互互关关联联,程程序序结结构构中中任任个个模模块块的的所所有有从从属属模模块块必必将将被被引引用用出出现现在在该该模模块块的的过过程程说说明中。明中。2024/7/2239国防科技大学计算机学院图图8.6 8.6 模块模块A A的内部结构的内部结构2024/7/2240国防科技大学计算机学院图图8.7 8.7 过程的层次结构过程的层次结构2024/7/2241国防科技大学计算机学院过程设计技术和工具过程设计技术和工具结构化程序设计结构化程序设计过过程程设设计计的的任任务务是是描描述述算算法法的的细细节节,下下面面讨讨论论过过程程设设计计的的技术和工具。技术和工具。o结构化程序设计结构化程序设计提出提出,理由是理由是GOTOGOTO语句对程序的可读性、可测试性和可维护性语句对程序的可读性、可测试性和可维护性带来极大的危害带来极大的危害,应该用更可维护的控制结构替代它。应该用更可维护的控制结构替代它。BohmBohm和和JacopiniJacopini证证明明了了仅仅用用“顺顺序序”、“分分枝枝”和和“循循环环”三三种种基基本本的的控控制制构构件件即即能能构构造造任任何何单单入入口口单单出出口口程程序序,这这个个结结论奠定了结构程序设计的理论基础。论奠定了结构程序设计的理论基础。第八章第八章 软件设计基础软件设计基础2024/7/2242国防科技大学计算机学院过程设计技术和工具过程设计技术和工具o结构结构化化程序设计定义程序设计定义采采用用自自顶顶向向下下逐逐步步求求精精的的设设计计方方法法和和单单入入口口单单出出口口的控制构件。的控制构件。o自自顶顶向向下下逐逐步步求求精精的的方方法法是是人人类类解解决决复复杂杂问问题题时时常常用用的的方方法法,采采用用这这种种先先整整体体后后局局部部,先先抽抽象象后后具具体体的的步步骤开发的软件具有较清晰的层次。骤开发的软件具有较清晰的层次。o仅仅使使用用单单入入口口单单出出口口的的控控制制构构件件,程程序序有有良良好好的的结结构构特特征征,能能降降低低程程序序的的复复杂杂性性,增增强强程程序序的的可可读读性性、可可维护性和可验证性维护性和可验证性,提高软件的生产率。提高软件的生产率。2024/7/2243国防科技大学计算机学院过程设计技术和工具过程设计技术和工具o结结构构程程序序设设计计的的思思想想,应应该该在在软软件件设设计计中中体体现现出出来来,但但这这并并不不排排除除为为效效率率或或其其他他原原因因,对对结结构构程程序序设设计计作作一点修正。一点修正。o随随着着面面向向对对象象、软软件件重重用用等等新新的的软软件件开开发发方方法法和和技技术术的的发发展展,更更现现实实、更更有有效效的的开开发发途途径径可可能能是是自自顶顶向向下和自底向上两种方法的有机结合。下和自底向上两种方法的有机结合。2024/7/2244国防科技大学计算机学院图形表示法图形表示法流程图、盒图是描述过程细节的工具。流程图、盒图是描述过程细节的工具。流流程程图图(也也称称为为程程序序框框图图)是是最最常常用用的的一一种种表表示示法法,它它能能直直观观地地描描述述过过程程的的控控制制流流程程,最最便便于于初初 学学者者掌掌握握。流流程程图图中中方方框框表表示示处处理理步步,菱菱形形框框表表示示判判断断步步,有有向向线线段段表示控制流。表示控制流。顺顺序序、分分枝枝、循循环环三三个个基基本本控控制制构构件件用用流流程程图图表达的形式如图表达的形式如图8 88 8所示。所示。2024/7/2245国防科技大学计算机学院图形表示法图形表示法CaseCase结构是结构是ifthenelseifthenelse结构的推广结构的推广,dowhiledowhile循循环环与与repeatrepeat循循环环的的区区别别仅仅在在于于测测试试循循环环条条件与执行循环体的先后次序。件与执行循环体的先后次序。嵌嵌套套使使用用这这些些控控制制结结构构能能逐逐步步形形成成更更复复杂杂的的控控制制流流程程描述。描述。如如果果对对流流程程图图中中每每一一构构件件用用“边边框框”圈圈起起来来,边边界界之之间间不不出出现现交交叉叉,则则说说明明所所有有构构件件都都为为单单入入口口单单出出口口,称称此此程序为结构化程序程序为结构化程序(structured program)structured program)。图图8 89 9为一个结构化程序的流程图。为一个结构化程序的流程图。2024/7/2246国防科技大学计算机学院图图8.8 8.8 流程图构件流程图构件2024/7/2247国防科技大学计算机学院图图8.9 8.9 结构化程序的流程图结构化程序的流程图2024/7/2248国防科技大学计算机学院过程设计技术和工具过程设计技术和工具由由NassiNassi和和SheidermanSheiderman提提出出的的盒盒图图,也也称称为为NSNS图图,它它强强迫迫程程序序员员以以结结构构化化方方式式思思考考和和解解决决问问题题,三三种种基基本本控控制构件用盒图表达的形式如图制构件用盒图表达的形式如图8 81010所示。所示。图图8 81010盒图的构件盒图的构件图图8 89 9表示的过程用盒图表示形如图表示的过程用盒图表示形如图8 81111。图图8 81111盒图盒图盒盒图图的的功功能能域域(指指分分枝枝和和循循环环结结构构的的边边界界)比比流流程程图图更更清清晰晰,控控制制不不能能随随意意转转移移,并并且且数数据据的的作作用用域域容容易易确定。确定。2024/7/2249国防科技大学计算机学院图图8.10 8.10 盒图的构件盒图的构件2024/7/2250国防科技大学计算机学院图图8.11 8.11 盒图盒图2024/7/2251国防科技大学计算机学院8.3.3 8.3.3 判定表判定表o当当模模块块中中包包含含复复杂杂的的条条件件组组合合,并并要要根根据据这这些些条条件件选选择择动动作作时时,流流程程图图、盒盒图图及及8.3.48.3.4节节将将介介绍绍的的过过程程设设计计语语言言(PDL)PDL)都都有有一一定定的的缺缺陷陷,判判定定表表能能清清晰晰地地表表示示出出复杂的条件组合与各种动作之间的对应关系。复杂的条件组合与各种动作之间的对应关系。o一一张张判判定定表表由由四四部部分分组组成成,左左上上部部列列出出所所有有条条件件,左左下下部部列列出出所所有有可可能能的的动动作作,右右部部为为一一矩矩阵阵,说说明明条条件件与与动动作作之之间间的的对对应应关关系系,其其每每列列可可解解释释为为一一条条处处理理规规则则。2024/7/2252国防科技大学计算机学院判定表判定表例例8 82 2简化的账单系统判定表简化的账单系统判定表问题描述:问题描述:耗耗电电记记费费系系统统可可以以采采用用固固定定价价格格收收费费和和浮浮动动价价格格收收费费两种方式。两种方式。o若若采采用用固固定定价价格格方方式式收收费费,对对每每月月耗耗电电100100千千瓦瓦小小时时以以下下的的用用户户只只征征收收最最低低标标准准费费,超超过过100100千千瓦瓦小小时时的的用用户按价格表户按价格表A A收费收费;o若若采采用用浮浮动动价价格格方方式式收收费费,则则每每月月耗耗电电100100千千瓦瓦小小时时以以下下的的用用户户按按价价格格表表A A收收费费,超超过过100100千千瓦瓦小小时时的的用用户户按价格表按价格表B B收费。收费。2024/7/2253国防科技大学计算机学院判定表判定表采用下述步骤产生表采用下述步骤产生表8.18.1所示判定表所示判定表:列列出出与与该该过过程程(或或模模块块)有有关关的的动动作作(共共四四项项,分分别别为为收收取取最最低低标标准准费费、按按价价格格表表A A收收费费、按按 价价格格表表B B收收费费,其他处理其他处理););列列出出所所有有独独立立条条件件(共共四四条条,分分别别为为固固定定价价格格方方式式、浮浮动动价价格格方方式式、每每月月耗耗电电少少于于100100千千瓦瓦 小小时时,每每月月耗耗电电超过超过100100千瓦小时千瓦小时););根根据据问问题题处处理理描描述述,把把条条件件组组合合与与特特定定的的动动作作联联系系起起来来,删去无意义的条件组合删去无意义的条件组合;定定义义处处理理规规则则(共共5 5条条),即即指指明明什什么么情情况况下下做做什什么么动动作。作。2024/7/2254国防科技大学计算机学院表表8.1 8.1 判定表判定表2024/7/2255国防科技大学计算机学院判定表判定表o尽尽管管判判定定表表能能够够简简洁洁无无歧歧义义地地描描述述处处理理规规则则,但但却却不不能清晰地表示顺序和循环结构。能清晰地表示顺序和循环结构。o判判定定表表常常作作为为一一种种辅辅助助设设计计工工具具与与其其他他过过程程设设计计工工具结合使用。具结合使用。2024/7/2256国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)oPDL(Procedure PDL(Procedure Design Design Language)Language)也也称称为为结结构构英英语语或或伪伪码码,是是所所有有正正文文形形式式的的过过程程设设计计工工具具的的统统称称,目目前前有多种有多种PDLPDL。oPDLPDL经经常常表表现现为为一一种种“混混杂杂”的的形形式式,允允许许自自然然语语言言(如如英英语语)的的词词汇汇与与某某种种结结构构化化程程序序设设计计语语言言(如如PascalPascal、AdaAda等等)的的语语法法结结构构交交织织在在一一起起,目目前前大大多多数数PDLPDL描述不能直接编译。描述不能直接编译。2024/7/2257国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)关关键键字字采采用用固固定定语语法法并并支支持持结结构构化化构构件件、数数据据说说明明机制和模块化机制和模块化;处理部分采用自然语言描述处理部分采用自然语言描述;允允许许说说明明简简单单(标标量量、数数组组等等)和和复复杂杂(链链表表、树树等等)的数据结构的数据结构;子子程程序序的的定定义义与与调调用用规规则则不不受受具具体体接接口口方方式式的的影影响响。现现今今大大多多数数PDLPDL都都以以某某种种流流行行的的高高级级程程序序设设计计语语言言作作为为基基础础,例例如如AdaAdaPDLPDL是是AdaAda团团体体中中广广为为使使用用的的设设计计工工具。具。2024/7/2258国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)o考察建立在通用结构化程序设计语言上的考察建立在通用结构化程序设计语言上的PDLPDL原型。原型。o基本成分基本成分子程序定义界面描述子程序定义界面描述数据说明块结构数据说明块结构分枝结构循环结构分枝结构循环结构I/OI/O结构结构2024/7/2259国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)数据说明的常用形式数据说明的常用形式TYPETYPE ISIS 1 2此此处处 既既可可为为过过程程的的某某个个局局部部变变量量,亦亦可可为为多多个个过程共过程共用的全局变量用的全局变量;1为为 某某 个个 特特 定定 关关 键键 字字(例例 如如,SCALAR,ARRAY,LIST,SCALAR,ARRAY,LIST,STRING,STRUCTURESTRING,STRUCTURE等等););2说说明明此此处处定定义义的的变变量量在在该该过过程程或或整整个个程程序序中中应如何使用。应如何使用。2024/7/2260国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)PDLPDL允许定义面向具体问题的抽象数据类型。允许定义面向具体问题的抽象数据类型。如如,在某编译器的模块设计时可能使用下面的数据说明在某编译器的模块设计时可能使用下面的数据说明:TYPETYPEtabletableISISINSTANCEINSTANCEOFOFsymbolablesymbolable假定假定symboltablesymboltable是在另一处定义的抽象数据类型是在另一处定义的抽象数据类型:TYPETYPEsymboltablesymboltableISISSTRUCTURESTRUCTUREDEFINEDDEFINED该该PDLPDL的的块块结结构构描描述述一一个个过过程程元元素素,即即一一个个块块内内的的所所有有语语句句将作为一个整体执行将作为一个整体执行形式为形式为BEGINBEGIN块名块名语句序列语句序列ENDEND2024/7/2261国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)该该PDLPDL的分枝结构有的分枝结构有ifthenelseifthenelse和和casecase两两种种形形式式IFIF条件描述条件描述THENTHEN块结构或语句块结构或语句ELSEELSE块结构或语句块结构或语句ENDIFENDIFCASEOFCASEOF情况变量名情况变量名WHENWHEN第第1 1种种情情况况SELECTSELECT块结构或语句块结构或语句;WHENWHEN第第2 2种种情情况况SELECTSELECT块结构或语句块结构或语句;WHENWHEN最最后后一一种种情情况况SELECTSELECT块结构或语句块结构或语句;DEFAULT:DEFAULT:块块结结构构或或语语句句;ENDCASEENDCASE2024/7/2262国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)循循环环结结构构包包括括前前测测试试循循环环、后后测测试试循循环环和和固固定定循循环环三三类类,表表达达形形式式分分别为别为DOWHILEDOWHILE条件描述条件描述块结构或语句块结构或语句ENDWHILEENDWHILEREPEATUNTILREPEATUNTIL条件描述条件描述块结构或语句块结构或语句ENDREPENDREPDOFORDOFOR循循环环变变量量=循循环环变变量量取取值范围值范围,表达式或序列表达式或序列块结构或语句块结构或语句ENDFORENDFOR除除标标准准循循环环构构件件外外,此此PDLPDL还还提提供供了了NEXTNEXT和和EXITEXIT两种语句两种语句,旨在支持旨在支持受受限限方方式式退退出出循循环环。EXITEXIT将将控控制制转转到到其其所所在在循循环环后后的的第第一一个个语语句句,NEXTNEXT强迫本强迫本次次循循环环结结束束,新新一一轮轮循循环环开开始始。若若外外层层循循环环带带标标号号,EXITEXIT和和NEXTNEXT能能实实现现从多层从多层嵌嵌套套的的内内循循环环中中直直接接跳跳出出,而而不不必必逐逐层退出。层退出。在该在该PDLPDL中中,子程序说明为子程序说明为PROCEDUREPROCEDURE子子程程序序名名属属性性表表INTERFACEINTERFACE参数表参数表块结构和块结构和/或语句序列或语句序列ENDEND2024/7/2263国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)o属性表指明属性表指明子程序的引用特性子程序的引用特性如如,INTERNALINTERNAL、EXTERNALEXTERNAL模式模式o依赖于程序设计语言的实现依赖于程序设计语言的实现o输入输入/输出说明部分的形式输出说明部分的形式READ/WRITETOREAD/WRITETO设备设备I/OI/O表表或或ASKASK询问询问ANSWERANSWER响应选择项响应选择项后一形式多用于人机交互的设计。后一形式多用于人机交互的设计。2024/7/2264国防科技大学计算机学院过程设计语言过程设计语言(PDL)PDL)PDLPDL扩充扩充多任务、并行处理、异常处理、进程同步等机制。多任务、并行处理、异常处理、进程同步等机制。使用某个使用某个PDLPDL进行过程设计进行过程设计,应充分了解全部内容。应充分了解全部内容。2024/7/2265国防科技大学计算机学院过程设计工具之比较过程设计工具之比较比比较较前前述述种种种种设设计计工工具具之之优优劣劣须须基基于于这这样样一一个个前前提提,即即如如果果使使用用得得当当,任任一一种种工工具具都都将将对对过过程程设设计计提提供供宝宝贵贵的的支支持持,反反之之即即使使是是最最好好的的工工具具亦亦可可能能产产生生难难于于理理解解的设计。的设计。衡衡量量一一个个设设计计工工具具好好坏坏的的一一般般准准则则是是看看其其所所产产生生的的过过程程描描述述是是否否易易于于理理解解、复复审审和和维维护护,进进而而过过程程描描述述能能否自然地转换为代码并保证设计与代码完全一致。否自然地转换为代码并保证设计与代码完全一致。2024/7/2266国防科技大学计算机学院设计工具属性设计工具属性(1)(1)模模块块化化(Modularity):Modularity):支支持持模模块块化化软软件件的的开开发发并并提提供描述接口的机制供描述接口的机制(例如直接表例如直接表
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!