第8章软件设计基础

上传人:枫** 文档编号:567952637 上传时间:2024-07-22 格式:PPT 页数:80 大小:1.18MB
返回 下载 相关 举报
第8章软件设计基础_第1页
第1页 / 共80页
第8章软件设计基础_第2页
第2页 / 共80页
第8章软件设计基础_第3页
第3页 / 共80页
第8章软件设计基础_第4页
第4页 / 共80页
第8章软件设计基础_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《第8章软件设计基础》由会员分享,可在线阅读,更多相关《第8章软件设计基础(80页珍藏版)》请在金锄头文库上搜索。

1、第八章软件设计基础l软件设计是软件需求分析的后续工作,是对软件的需求模型的进一步具体化,是软件工程的重要阶段。l简简单单地地讲讲,软软件件设设计计把把软软件件的的需需求求模模型型转转化化为为软软件件的的设设计计模模型型,向向目目标标软软件件更更前进一步。前进一步。l 本章讨论与软件设计有关的主要概念,介绍几个具体的软件设计方法。2024/7/221安徽工程大学计算机与信息学院8.1 软件设计过程l软软件件设设计计过过程程是是对对程程序序结结构构、数数据据结结构构和和过过程程细细节节逐逐步步求求精精、复复审审并并编编制制文文档档的过程的过程。l软软件件设设计计 将产生系统的总体结构设计(arch

2、itectural design)、系统的数据设计(data design)和系统的过程设计(procedural design)( 图81)。第八章第八章 软件设计基础软件设计基础2024/7/222安徽工程大学计算机与信息学院8.1软件设计过程软件设计过程2024/7/223安徽工程大学计算机与信息学院软件设计过程l数数据据设设计计把信息描述转换为实现软件所要求的数据结构。l总体结构设计总体结构设计旨在确定程序各主要部件之间的关系。 l过程设计过程设计要完成每一部件的过程化描述。l软件软件设计结果设计结果是是编制代码编制代码的依据的依据。l设计阶段设计阶段的重要性的重要性 影响软件质量,没

3、有良好的设计就没有稳定的、具备适应性的系统,也不会有易维护的软件。例如,房子的建筑、设计。统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用(不包括维护阶段)的75%以上。8.1软件设计过程软件设计过程2024/7/224安徽工程大学计算机与信息学院软件设计过程 从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。l概要设计是根据需求确定软件和数据的总体框架l详细设计是将其进一步精化成软件的算法表示和数据结构。l概要设计和详细设计由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。8.1软件设计过程软件设计过程2024/

4、7/225安徽工程大学计算机与信息学院8.2 软件设计基本概念l软件设计基本概念是过去三十年里陆续提出的。l软件设计者根据这组概念进行设计决策,如:划分子部件的标准;第八章第八章 软件设计基础软件设计基础2024/7/226安徽工程大学计算机与信息学院8.2.1 抽象与逐步求精抽抽象象是是管管理理、控控制制复复杂杂性性的的基基本本策策略略 。使使用用抽抽象象技技术术便便于于人人们们用用“问问题题域域”的的概概念念和和术术语语描描述述问问题题, ,而而无无须须过过早地转换为那些不熟悉的结构。早地转换为那些不熟悉的结构。软软件件设设计计过过程程是是,在在不不同同抽抽象象级级别别上上考考虑虑、处处理

5、理问问题题的的过程。过程。()在在最最高高抽抽象象级级别别上上, ,用用面面向向问问题题域域的的语语言言叙叙述述“问问题题”, ,概括概括“问题解问题解”的形式的形式。()()不断地具体化不断地具体化, ,不断地用面向过程的语言描述问题不断地用面向过程的语言描述问题。()在在最最低低的的抽抽象象级级别别上上给给出出可可直直接接实实现现的的“问问题题解解”,即程序。,即程序。8.2软件设计基本概念软件设计基本概念2024/7/227安徽工程大学计算机与信息学院抽象与逐步求精软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。l在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组

6、成部分;l在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;l从概要设计过渡到详细设计时,抽象级再一次降低;l编码完成后,达到了抽象的最低级。8.2软件设计基本概念软件设计基本概念2024/7/228安徽工程大学计算机与信息学院抽象与逐步求精在由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。过程抽象和数据抽象。l过过程程抽抽象象把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用此过程;l数数据据抽抽象象把一个数据对象的定义(或描述)抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。8.2软件设计基本概念软件设计基本概念

7、2024/7/229安徽工程大学计算机与信息学院例8.1 不同级别的过程抽象例81考虑适用于低级CAD的图形软件包。抽象1l该CAD软件系统配有能与作图员进行可视化通讯的图形界面。l能用鼠标替代作图板和直尺画各种直线和曲线。l能完成所有几何计算及所有截面视图和辅助视图的设计。l图形设计的结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。在这一抽象级别上,问题的解用问题域本身的术语描述。8.2软件设计基本概念软件设计基本概念2024/7/2210安徽工程大学计算机与信息学院不同级别的过程抽象抽象2CAD软件任务;用户界面任务;创建二维图形任务;显示图形任务;管理图形文件任务

8、;end CAD.在这一抽象级别上,给出了组成CAD软件任务的所有子任务,术语与问题域有所不同,但仍然不是实现用的语言。8.2软件设计基本概念软件设计基本概念2024/7/2211安徽工程大学计算机与信息学院不同级别的过程抽象抽象3例“创建二维图形任务” PROCEDURE 创建二维图形REPEATUNTILDOWHILE数字仪接口任务;判断作图请求:线:画线任务;圆:画圆任务;END;8.2软件设计基本概念软件设计基本概念2024/7/2212安徽工程大学计算机与信息学院不同级别的过程抽象DOWHILE键盘接口任务;选择分析或计算:辅助视图:辅助视图任务;截面视图:截面视图任务;END;EN

9、D REPETITION;END PROCEDURE在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软件(比如采用do while结构)并且模块结构也开始明朗。求精过程还可继续下去,直至产生源代码。8.2软件设计基本概念软件设计基本概念2024/7/2213安徽工程大学计算机与信息学院不同级别的数据抽象数据抽象与过程抽象一样,能使设计者按不同的详细程度表示数据对象。例为为CAD软件定义软件定义drawing(图图) )的数据对象的数据对象: :TYPE drawing IS STRUCTURE DEFINEDnumber IS STRING LENGTH(12);geometry

10、 DEFINEDnotes IS STRING LENGTH(256);bom DEFINEDEND drawing TYPE;drawing被被表表示示为为一一种种结结构构, ,各各组组成成部部件件又又可可为为某某种种数数据抽象据抽象, ,如如geometry 和和bom。8.2软件设计基本概念软件设计基本概念2024/7/2214安徽工程大学计算机与信息学院不同级别的数据抽象抽象数据类型drawing定义完毕,即可用类型名直接说明数据对象,而不必涉及其内部构造的细节,如,可用语句blueprint IS INSTANCE OF drawing;或schematic IS INSTANCE

11、OF drawing;说明blueprint和schematic具有drawing的特性。8.2软件设计基本概念软件设计基本概念2024/7/2215安徽工程大学计算机与信息学院不同级别的数据抽象l在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操作。l以抽象数据类型drawing为例,可以定义擦除(erase)、存储(save)、分类(catalog)和拷贝(copy)等操作。l若干程序设计语言(如Ada,Modula,CLU)都提供了对抽象数据类型的支持,Ada的程序包机制是对数据抽象和过程抽象的双重支持。8.2软件设计基本概念软件设计基本概念2024/7/2

12、216安徽工程大学计算机与信息学院不同级别的数据抽象l由N.Wirth提出的“逐步求精”概念,与“抽象”密切相关,是早期的自顶向下设计策略。l“逐步求精” l求精的每一步都是用更为详细的描述替代上一层次的抽象描述。l层次结构的上一层是下一层的抽象,下一层是上一层的求精。l在过程求精的同时,伴随着数据求精,无论是过程还是数据,每个求精步都蕴含着某些设计决策,设计人员必须掌握一些基本的准则和各种可能的候选方法。8.2软件设计基本概念软件设计基本概念2024/7/2217安徽工程大学计算机与信息学院8.2.2模块化与信息隐藏l模块化的概念把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把

13、所有模块组装到一起时则获得满足问题需要的一个解。l软件总体结构体现了模块化思想。l“模块化是软件唯一能使程序获得智能化管理的一个属性”,没有模块的程序控制路径错综复杂,变量被远距离引用等难于被人掌握。l优优点点体体现现在在:1 1)可可以以降降低低问问题题的的复复杂杂性性;2 2)系系统方便修改;统方便修改;3 3)系统容易实现,即并发实现)系统容易实现,即并发实现。 8.2软件设计基本概念软件设计基本概念2024/7/2218安徽工程大学计算机与信息学院模块化与信息隐藏求解问题的过程假设函数C(X)定义了问题X已被觉察到的复杂性,函数E(X)定义了求解问题X所要求的工作量(按时间计),对于问

14、题P1和P2,如果C(P1)C(P2)(81a)则E(P1)E(P2)(81b)C(P1+P2)C(P1)+C(P2)(82)E(P1+P2)E(P1)+E(P2)(83)l解决一个复杂问题,比解决一个简单问题耗费多。l由P1、P2组合而成的问题复杂性,比单个问题复杂性的和更大。8.2软件设计基本概念软件设计基本概念2024/7/2219安徽工程大学计算机与信息学院模块化与信息隐藏“分治法”一个复杂问题分割成若干个可管理的小问题后更易于求解。l当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。l如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和

15、不足。这些问题涉及信息隐藏、内聚度与藕合度的概念。8.2软件设计基本概念软件设计基本概念2024/7/2220安徽工程大学计算机与信息学院模块化与信息隐藏l怎样保证模块数“在M附近”?l依据什么标准划分模块? 高内聚,底藕合8.2软件设计基本概念软件设计基本概念2024/7/2221安徽工程大学计算机与信息学院1信息隐藏模块独立的概念l模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;l每个模块只完成一个相对独立的特定功能;l模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。采用信息隐藏原理指导模块设计优点:l支持模块的并行开发l减少软件测试和软件维

16、护的工作量。8.2软件设计基本概念软件设计基本概念2024/7/2222安徽工程大学计算机与信息学院2内聚度内聚度模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为七级,内聚度越高越好。低级内聚度()偶然性内聚偶然性内聚(Coincidental Cohesion)。模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。()逻辑性内聚逻辑性内聚(Logical Cohesion)模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输出。()时间性内聚时间性内聚(Temporal Cohesion)模块包含的诸任务必须在同一时间段内执行,如一个初始化模块。8.

17、2软件设计基本概念软件设计基本概念2024/7/2223安徽工程大学计算机与信息学院模块化与信息隐藏中级内聚度()过程性内聚过程性内聚(Procedural Cohesion) 模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次序执行;( )通通 信信 性性 内内 聚聚(Communicational Cohesion) 模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。8.2软件设计基本概念软件设计基本概念2024/7/2224安徽工程大学计算机与信息学院模块化与信息隐藏高内聚度()顺序性内聚顺序性内聚(Sequential Cohesion) 模块内的各处理成份均

18、与同一功能相关,且这些处理必须顺序执行,则称顺序内聚。 ()功能性内聚功能性内聚(Functional Cohesion)模块内所有成分形成一个整体,完成单个功能。设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性8.2软件设计基本概念软件设计基本概念2024/7/2225安徽工程大学计算机与信息学院3耦合度耦合度软件结构中模块间关联程度的一种度量。l耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。l设计软件应追求尽可能松散耦合的系统。l松散耦合系统中,任一模块的设计、测试和维护都相对独立。l松散耦合系统模块

19、间联系较少,错误在模块间传播的可能性随之变小。l模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。8.2软件设计基本概念软件设计基本概念2024/7/2226安徽工程大学计算机与信息学院模块化与信息隐藏耦合度也分为七级:()非直接耦合非直接耦合(Nodirect Coupling)两模块中任一个都不依赖对方能独立工作,这类耦合度最低。()数据耦合数据耦合(Data Coupling)两模块通过参数交换信息,信息仅限于数据。()控制耦合控制耦合(Control Coupling)传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当分解模块可望消除控制耦合。()特征耦合特

20、征耦合(Stamp Coupling)。介于数据耦合与控制耦合之间8.2软件设计基本概念软件设计基本概念2024/7/2227安徽工程大学计算机与信息学院模块化与信息隐藏()外部耦合外部耦合(External Coupling)当若干模块均与同一个外部环境关联,如,I/O处理使所有I/O模块与特定的设备、格式和通信协议相关联。外部耦合尽管需要,但应限制在少数几个模块上。()公共耦合公共耦合(Common Coupling)若干模块通过全局的数据环境相互作用,全局数据环境中可能含有全局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等。()内容耦合内容耦合(Content Coupl

21、ing)一个模块使用另一模块内部的数据或控制信息;一个模块直接转移到另一模块内部等等。设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。8.2软件设计基本概念软件设计基本概念2024/7/2228安徽工程大学计算机与信息学院8.2.3软件总体结构设计软件总体结构(software architecture)应该包括两方面内容()由系统中所有过程性部件(即模块)构成的层次结构,亦称为程序结构;()输入输出数据结构。软件总体结构设计的目标是产生一个模块化的程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和

22、数据结构。8.2软件设计基本概念软件设计基本概念2024/7/2229安徽工程大学计算机与信息学院软件总体结构设计程序结构、数据结构是逐步求精、分而治之的结果。8.2软件设计基本概念软件设计基本概念2024/7/2230安徽工程大学计算机与信息学院软件总体结构设计l依据任何一种软件设计方法总能推导出一个软件结构。l模块内聚度和耦合度是判断结构好坏的主要标准。8.2软件设计基本概念软件设计基本概念2024/7/2231安徽工程大学计算机与信息学院软件总体结构设计表示程序结构的工具类树图(Treelike diagram)WarnierOrr图Jackson 图等8.2软件设计基本概念软件设计基本

23、概念2024/7/2232安徽工程大学计算机与信息学院程序结构的术语l软件的深度(Depth)和宽度(Width)分别说明控制的层数和跨度。l模 块 的 “扇 出 率”(Fanout)指,该模块直接控制的其他模块数。l模 块 的 “扇 入 率”(Fanin)指,能直接控制该模块的模块数。8.2软件设计基本概念软件设计基本概念2024/7/2233安徽工程大学计算机与信息学院程序结构的术语l如果一个模块控制另一模块,称前者为“主控”模块,后者为“从属”模块。l软件结构的可见域和连通域。模块的可见域指,该模块可可直直接接或或间间接接引引用用的一组模块;模块的连通域指,模块可直接引用直接引用的模块。

24、l软件的总体结构应该在考虑每个模块的细节前就确定下来。l软件设计方法鼓励人们首先致力于软件总体结构的设计,而后再进行详细设计。l每一种方法导出总体结构的具体方式不尽相同。8.2软件设计基本概念软件设计基本概念2024/7/2234安徽工程大学计算机与信息学院8.2.4数据结构设计l数据结构描述各数据分量之间的逻辑关系,数据结构一经确定,数据的组织形式、访问方法、组合程度及处理策略基本上随之确定。l数据结构与程序结构一样,也可以在不同的抽象级别上表示。8.2软件设计基本概念软件设计基本概念2024/7/2235安徽工程大学计算机与信息学院数据结构设计l数据结构对程序结构和过程复杂性有直接的影响,

25、数据结构设计很重要,在很大程度上决定软件的质量。l无论采用哪一种软件设计技术,没有良好的数据结构,不可能导出良好的程序结构。l数据设计是为在需求规格说明中定义的那些数据对象选择合适的逻辑表示。l数据设计方案不是唯一的,有时需进行算法复杂性分析后才能从多种候选中找出最佳者。8.2软件设计基本概念软件设计基本概念2024/7/2236安徽工程大学计算机与信息学院8.2.5软件过程设计l程序结构仅考虑软件总体结构中模块之间的控制分层关系,而不关心模块内各处理元素和判断元素的顺序。l过程设计紧跟在数据结构设计和程序结构设计之后,基本任务是描述这方面的信息。l过程设计,即模块算法的具体设计,包括有关处理

26、的精确说明,如事件的顺序、确切的判断位置、循环操作以及数据的组成等等。8.2软件设计基本概念软件设计基本概念2024/7/2237安徽工程大学计算机与信息学院图8.6模块A的内部结构8.2软件设计基本概念软件设计基本概念2024/7/2238安徽工程大学计算机与信息学院图8.7过程的层次结构8.2软件设计基本概念软件设计基本概念2024/7/2239安徽工程大学计算机与信息学院8.3过程设计技术和工具8.3.1结构化程序设计过程设计的任务是描述算法的细节,下面讨论过程设计的技术和工具。l结构化程序设计E.W.Dijkstra提出,理由是GOTO语句对程序的可读性、可测试性和可维护性带来极大的危

27、害,应该用更可维护的控制结构替代它。Bohm和Jacopini证明了仅用“顺序”、“分枝”和“循环”三种基本的控制构件即能构造任何单入口单出口程序,这个结论奠定了结构程序设计的理论基础。第八章第八章 软件设计基础软件设计基础2024/7/2240安徽工程大学计算机与信息学院过程设计技术和工具l结构化程序设计定义采用自顶向下逐步求精的设计方法采用自顶向下逐步求精的设计方法 和单入口单出口的控制构件。和单入口单出口的控制构件。l自自顶顶向向下下逐逐步步求求精精的方法是人类解决复杂问题时常用的方法,采用这种先整体后局部,先抽象后具体的步骤开发的软件具有较清晰的层次。l仅使使用用单单入入口口单单出出口

28、口的控制构件,程序有良好的结构特征,能降低程序的复杂性,增强程序的可读性、可维护性和可验证性,提高软件的生产率。8.3过程设计技术和工具过程设计技术和工具2024/7/2241安徽工程大学计算机与信息学院过程设计技术和工具l结构程序设计的思想,应该在软件设计中体现出来,但这并不排除为效率或其他原因,对结构程序设计作一点修正。l随着面向对象、软件重用等新的软件开发方法和技术的发展,更现实、更有效的开发途径可能是自顶向下和自底向上两种方法的有机结合。8.3过程设计技术和工具过程设计技术和工具2024/7/2242安徽工程大学计算机与信息学院8.3.2图形表示法流程图、盒图(N-S图)是描述过程细节

29、的工具。流程图(也称为程序框图)是最常用的一种表示法,它能直观地描述过程的控制流程,最便于初学者掌握。流程图中方框表示处理步,菱形框表示判断步,有向线段表示控制流。顺序、分枝、循环三个基本控制构件用流程图表达的形式如图88所示。8.3过程设计技术和工具过程设计技术和工具2024/7/2243安徽工程大学计算机与信息学院图形表示法Case结构是ifthenelse结构的推广,dowhile循环与repeat循环的区别仅在于测试循环条件与执行循环体的先后次序。嵌套使用这些控制结构能逐步形成更复杂的控制流程描述。如果对流程图中每一构件用“边框”圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出

30、口,称此程序为结构化程序(structured program)。8.3过程设计技术和工具过程设计技术和工具2024/7/2244安徽工程大学计算机与信息学院图8.8流程图构件8.3过程设计技术和工具过程设计技术和工具2024/7/2245安徽工程大学计算机与信息学院图8.9结构化程序的流程图8.3过程设计技术和工具过程设计技术和工具2024/7/2246安徽工程大学计算机与信息学院过程设计技术和工具由Nassi和Sheiderman提出的盒图,也称为NS图,它强迫程序员以结构化方式思考和解决问题,三种基本控制构件用盒图表达的形式如图810所示。图810盒图的构件图89表示的过程用盒图表示形如

31、图811。图811盒图盒图的功能域(指分枝和循环结构的边界)比流程图更清晰,控制不能随意转移,并且数据的作用域容易确定。8.3过程设计技术和工具过程设计技术和工具2024/7/2247安徽工程大学计算机与信息学院图8.10盒图的构件8.3过程设计技术和工具过程设计技术和工具2024/7/2248安徽工程大学计算机与信息学院图8.11盒图8.3过程设计技术和工具过程设计技术和工具2024/7/2249安徽工程大学计算机与信息学院8.3.3 判定表(自学)l当模块中包含复杂的条件组合,并要根据这些条件选择动作时,流程图、盒图及8.3.4节将介绍的过程设计语言(PDL)都有一定的缺陷,判定表能清晰地

32、表示出复杂的条件组合与各种动作之间的对应关系。l一张判定表由四部分组成,左上部列出所有条件,左下部列出所有可能的动作,右部为一矩阵,说明条件与动作之间的对应关系,其每列可解释为一条处理规则。8.3过程设计技术和工具过程设计技术和工具2024/7/2250安徽工程大学计算机与信息学院判定表例82简化的账单系统判定表问题描述:耗电记费系统可以采用固定价格收费和浮动价格收费两种方式。l若采用固定价格方式收费,对每月耗电100千瓦小时以下的用户只征收最低标准费,超过100千瓦小时的用户按价格表A收费;l若采用浮动价格方式收费,则每月耗电100千瓦小时以下的用户按价格表A收费,超过100千瓦小时的用户按

33、价格表B收费。8.3过程设计技术和工具过程设计技术和工具2024/7/2251安徽工程大学计算机与信息学院判定表采用下述步骤产生表8.1所示判定表:列出与该过程(或模块)有关的动作(共四项,分别为收取最低标准费、按价格表A收费、按价格表B收费,其他处理);列出所有独立条件(共四条,分别为固定价格方式、浮动价格方式、每月耗电少于100千瓦小时,每月耗电超过100千瓦小时);根据问题处理描述,把条件组合与特定的动作联系起来,删去无意义的条件组合;定义处理规则(共5条),即指明什么情况下做什么动作。8.3过程设计技术和工具过程设计技术和工具2024/7/2252安徽工程大学计算机与信息学院表8.1判

34、定表8.3过程设计技术和工具过程设计技术和工具2024/7/2253安徽工程大学计算机与信息学院判定表l尽管判定表能够简洁无歧义地描述处理规则,但却不能清晰地表示顺序和循环结构。l判定表常作为一种辅助设计工具与其他过程设计工具结合使用。8.3过程设计技术和工具过程设计技术和工具2024/7/2254安徽工程大学计算机与信息学院8.3.4过程设计语言(PDL)(自学)lPDL(Procedure Design Language)也称为结构英语或伪码,是所有正文形式的过程设计工具的统称,目前有多种PDL。lPDL经常表现为一种“混杂”的形式,允许自然语言(如英语)的词汇与某种结构化程序设计语言(如

35、Pascal、Ada等)的语法结构交织在一起,目前大多数PDL描述不能直接编译。8.3过程设计技术和工具过程设计技术和工具2024/7/2255安徽工程大学计算机与信息学院过程设计语言(PDL) 关键字采用固定语法并支持结构化构件、数据说明机制和模块化;处理部分采用自然语言描述;允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构;子程序的定义与调用规则不受具体接口方式的影响。现今大多数PDL都以某种流行的高级程序设计语言作为基础,例如AdaPDL是Ada团体中广为使用的设计工具。8.3过程设计技术和工具过程设计技术和工具2024/7/2256安徽工程大学计算机与信息学院过程设计语言(P

36、DL)l考察建立在通用结构化程序设计语言上的PDL原型。l基本成分子程序定义界面描述数据说明块结构分枝结构循环结构I/O结构8.3过程设计技术和工具过程设计技术和工具2024/7/2257安徽工程大学计算机与信息学院过程设计语言(PDL) 数据说明的常用形式TYPEIS此处既可为过程的某个局部变量,亦可为多个过程共用的全局变量;为 某 个 特 定 关 键 字 (例 如,SCALAR,ARRAY,LIST,STRING,STRUCTURE等);说明此处定义的变量在该过程或整个程序中应如何使用。8.3过程设计技术和工具过程设计技术和工具2024/7/2258安徽工程大学计算机与信息学院过程设计语言

37、(PDL) PDL允许定义面向具体问题的抽象数据类型。如,在某编译器的模块设计时可能使用下面的数据说明:TYPEtableISINSTANCEOFsymbolable假定symboltable是在另一处定义的抽象数据类型:TYPEsymboltableISSTRUCTUREDEFINED该PDL的块结构描述一个过程元素,即一个块内的所有语句将作为一个整体执行形式为BEGIN块名语句序列END8.3过程设计技术和工具过程设计技术和工具2024/7/2259安徽工程大学计算机与信息学院过程设计语言(PDL)该PDL的分枝结构有ifthenelse和case两种形式IF条件描述THEN块结构或语句E

38、LSE块结构或语句ENDIFCASEOFCASEOF情况变量名情况变量名WHENWHEN第第1 1种种情情况况SELECTSELECT块结构或语句块结构或语句; ;WHENWHEN第第2 2种种情情况况SELECTSELECT块结构或语句块结构或语句; ; WHENWHEN 最最 后后 一一 种种 情情 况况 SELECTSELECT块块结结构构或或语语句句; ;DEFAULT:DEFAULT:块块结结构构或或语语句句; ;ENDCASEENDCASE8.3过程设计技术和工具过程设计技术和工具2024/7/2260安徽工程大学计算机与信息学院过程设计语言(PDL)循环结构包括前测试循环、后测试

39、循环和固定循环三类,表达形式分别为DOWHILE条件描述块结构或语句ENDWHILEREPEATUNTIL条件描述块结构或语句ENDREPDOFOR循环变量=循环变量取值范围,表达式或序列块结构或语句ENDFOR除标准循环构件外,此PDL还提供了NEXT和EXIT两种语句,旨在支持受限方式退出循环。EXIT将控制转到其所在循环后的第一个语句,NEXT强迫本次循环结束,新一轮循环开始。若外层循环带标号,EXIT和NEXT能实现从多层嵌套的内循环中直接跳出,而不必逐层退出。在该PDL中,子程序说明为PROCEDURE子程序名属性表INTERFACE参数表块结构和/或语句序列END8.3过程设计技术

40、和工具过程设计技术和工具2024/7/2261安徽工程大学计算机与信息学院过程设计语言(PDL) l属性表指明子程序的引用特性如,INTERNAL、EXTERNAL模式l依赖于程序设计语言的实现l输入/输出说明部分的形式READ/WRITETO设备I/O表或ASK询问ANSWER响应选择项后一形式多用于人机交互的设计。8.3过程设计技术和工具过程设计技术和工具2024/7/2262安徽工程大学计算机与信息学院过程设计语言(PDL)PDL扩充多任务、并行处理、异常处理、进程同步等机制。使用某个PDL进行过程设计,应充分了解全部内容。8.3过程设计技术和工具过程设计技术和工具2024/7/2263

41、安徽工程大学计算机与信息学院8.3.5过程设计工具之比较(自学)比较前述种种设计工具之优劣须基于这样一个前提,即如果使用得当,任一种工具都将对过程设计提供宝贵的支持,反之即使是最好的工具亦可能产生难于理解的设计。衡量一个设计工具好坏的一般准则是看其所产生的过程描述是否易于理解、复审和维护,进而过程描述能否自然地转换为代码并保证设计与代码完全一致。8.3过程设计技术和工具过程设计技术和工具2024/7/2264安徽工程大学计算机与信息学院设计工具属性(1)模块化(Modularity):支持模块化软件的开发并提供描述接口的机制(例如直接表 示子程序和块结构);(2)整体简洁性(Overall S

42、implicity):设计表示相对易学、易用、易读;(3)便于编辑(Ease of Editing):支持后续设计、测试乃至维护阶段对过程设计进 行的修改;(4)机器可读性(Machine Readability):计算机辅助软件工程(CASE)环境已被广泛接受, 一种设计表示法若能直接输入并被CASE工具识别将带来极大便利;8.3过程设计技术和工具过程设计技术和工具2024/7/2265安徽工程大学计算机与信息学院过程设计工具之比较(5)可维护性(Maintainability):过程设计表示应支持各种软件配置项的维护;(6)强制结构化(Structure Enforcement):过程设计

43、工具应能强制设计人员采用 结构化构件,有助于产生好的设计;(7)自动产生报告(Automatic Processing):设计人员通过分析详细设计的结果往往能突 发灵感,改进设计。若存在自动处理器,能产生有关设计的分析报告必将增强设计人员在这 方面的能力;8.3过程设计技术和工具过程设计技术和工具2024/7/2266安徽工程大学计算机与信息学院过程设计工具之比较(8)数据表示(Data Representation):详细设计应具备表示局部与全局数据的能力;(9)逻辑验证(Logic Verification):能自动验证设计逻辑的正确性是软件测试 追求的最高目标,设计表示愈易于逻辑验证其可

44、测试性愈强;(10)可编码能力(“Code to” Ability):一种设计表示若能自然地转换为代码则能减少开发 费用,降低出错率。8.3过程设计技术和工具过程设计技术和工具2024/7/2267安徽工程大学计算机与信息学院过程设计工具之比较对照上述属性,到底哪一种过程设计工具最好呢?回答将因人而异。一般认为,PDL较好地组合了这组特性。PDL还可直接嵌在源代码中作为设计文档和注释,减少维护的困难;PDL描述可用一般正文编译器或字处理软件编辑;PDL自动处理器已经面世,并有可能开发出“代码自动产生器”。然而,这并不意味着其他的设计工具一定弱于PDL,例如,流程图和盒图能直观地表示控制流程 ;

45、判定表因能精确地描述组合条件与动作之间的对应关系,特别适用于表格驱动一类软件的开发;其他一些设计工具也自有独到之处。经验表明,具体选择过程设计工具时,人的因素可能比技术因素更具有影响力。8.3过程设计技术和工具过程设计技术和工具2024/7/2268安徽工程大学计算机与信息学院8.4设计规格说明与评审(自学) 软件设计阶段的输出主要是设计规格说明书,结构如表82所示,各条款的内容是在设计求精过程中逐步确定的。第八章第八章 软件设计基础软件设计基础2024/7/2269安徽工程大学计算机与信息学院设计规格说明与评审设计说明书第一节描述与设计活动有关的各个方面,该节中许多信息取自系统规格说明书和系

46、统定义阶段产生的其他文档。第二节具体指明引用信息的出处。第三节设计描述是概要设计的产物,设计由信息驱动,即软件总体结构主要受数据流程、数据结构的影响,需求分析时产生的DFD或其他某种形式的数据表示将在这一节中进一步精化,用于确定软件结构。8.4设计规格说明与评审设计规格说明与评审2024/7/2270安徽工程大学计算机与信息学院设计规格说明与评审第四节的模块指软件中可单独编址的部件,如函数和过程,最初用自然语言描述它们的功能,随后采用某种过程设计工具将这些自然语言描述转换为结构化描述,第五节主要描述数据组织结构,包括辅存的文件结构、全局数据(例如FORTRAN公共区)的赋值以及这些文件与全局数

47、据的交叉访问关系。第六节是与需求规格说明书的交叉访问表,根据交叉访问表可断定设计是否满足所有需求,这对于完成某个具体需求的模块来说十分重要。8.4设计规格说明与评审设计规格说明与评审2024/7/2271安徽工程大学计算机与信息学院设计规格说明与评审第七节测试的初步计划。第七节测试的初步计划。一一旦旦软软件件结结构构和和模模块块间间界界面面确确定定下下来来之之后后, ,即即可可制制定定模模块块单单元元测测试试和和联联调调计计划划。某某些些场场合合, ,要要求求同同时时开开发发测测试试规规格格说说明明书书与与设设计计规规格格说说明明书书, , 此此时时第第七七节节之之内内容容可可从从设设计计规规

48、格格说说明明书书中中删删去去。软软件件设设计计常常常常受受各各种种限限制制的的影影响响, ,例例如如物物理理存存储储器器容容量量、特特殊殊外外部部接接口口对对装装配配的的要要求求、必必要要的的程程序序复复盖盖、虚虚存存管管理理和和高高速速处处理理等等诸诸多多因素都可能导致设计的修改。因素都可能导致设计的修改。第八节将逐条说明这种限制和造成的影响。第八节将逐条说明这种限制和造成的影响。第第九九、十十两两节节包包括括若若干干辅辅助助数数据据, ,如如从从其其他他文文档档中中节节选选的的算法描述、候选的过程、表格化数据和其他相关信息。算法描述、候选的过程、表格化数据和其他相关信息。8.4设计规格说明

49、与评审设计规格说明与评审2024/7/2272安徽工程大学计算机与信息学院设计规格说明与评审l 这些信息是对设计的一种特殊注释,最后可开发一个基本操作规格说明书或安装手册作为附录。l为了确保文档的质量,还必须对设计文档进行复审。l复审的目的在于及早发现设计中的缺陷和错误。l在大型软件的开发过程中某些错误从一个阶段传到另一个阶段呈扩大趋势,尽早发现、纠正错误所需的代价较小。 8.4设计规格说明与评审设计规格说明与评审2024/7/2273安徽工程大学计算机与信息学院设计规格说明与评审l复审包括软件总体结构、数据结构、结构的界面、模块过程细节。l复审的重点内容软件结构能否满足需求?结构的形态是否合

50、理?层次是否清晰?模块的划分是否遵循模型化和信息隐藏的思想?系统的人机界面,各模块的接口,以及出错处理是否恰当?模块的设计能否满足功能与性能要求?选择的算法与数据结构是否合理,能否适应编程语言?等等。8.4设计规格说明与评审设计规格说明与评审2024/7/2274安徽工程大学计算机与信息学院设计规格说明与评审复审正式复审软件开发人员、用户代表和领域专家参加采用答辩形式,与会者提前审阅了文档,设计人员在对设计方案详细说明后,答复与会者的问题并记下各种重要的评审意见。非正式复审同行切磋、不拘时间、不拘形式。采用 “走查”法,一 名设计人员到会,与同事逐行审阅文档,记录发现的问题。 8.4设计规格说

51、明与评审设计规格说明与评审2024/7/2275安徽工程大学计算机与信息学院设计规格说明与评审l复审应对事不对人。l软件设计人员应真诚欢迎他人提意见和建议,尽早揭露错误。l参加复审的其他人员应坦诚、友好,防止把复审变为质询或辩论。l对复审中提出的问题应详细记录,不要奢望所有问题都能当场解决。l复审结束前,还应对本次复审作出结论。8.4设计规格说明与评审设计规格说明与评审2024/7/2276安徽工程大学计算机与信息学院2024/7/2277安徽工程大学计算机与信息学院小结和重点l 软件设计的主要任务是根据需求规格说明导出系统的实现方案。l 软件设计在技术上可分为总体结构设计、数据设计、过程设计

52、和界面设计四个活动;在工程上可区分为概要设计和详细设计两个阶段。l 软件设计中用到基本概念包括:抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。l 软件过程设计中最常用的技术和工具主要为结构化程序设计、流程图、盒图、判定表和PDL语言。l 软件设计阶段的输出结果为设计规格说明书,此文档经严格复审后将作为编码阶段的输入文档。 第八章第八章 软件设计基础软件设计基础2024/7/2278安徽工程大学计算机与信息学院作业l8.2l8.16l设计阶段的任务是什么?l模块的划分标准是什么?解释模块的藕合和内聚度?l什么是结构化程序设计?2024/7/2279安徽工程大学计算机与信息学院 谢谢2024/7/2280安徽工程大学计算机与信息学院

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

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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