第八章 软件设计基础_第1页
第八章 软件设计基础_第2页
第八章 软件设计基础_第3页
第八章 软件设计基础_第4页
第八章 软件设计基础_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/10/23国防科技大学计算机学院1第八章软件设计基础

软件设计是软件工程的重要阶段。软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程。经过软件工程师们多年的努力形成了一些软件设计技术、质量评估标准和设计表示法并用于软件工程实践。本章讨论与软件设计有关的主要概念,介绍几个具体的软件设计方法。2023/10/23国防科技大学计算机学院28.1软件设计过程软件开发阶段由设计、编码和测试三个基本活动组成,其中“设计活动”是获取高质量、低耗费、易维护软件最重要的一个环节。需求分析阶段获得的需求规格说明书包括对欲实现系统的信息、功能和行为方面的描述,这是软件设计的基础。对此采用任一种软件设计方法都将产生系统的总体结构设计(architecturaldesign)、系统的数据设计(datadesign)和系统的过程设计(proceduraldesign)(图8.1)。第八章软件设计基础2023/10/23国防科技大学计算机学院3软件设计过程不同的软件设计方法会产生不同的设计形式。数据设计把信息描述转换为实现软件所要求的数据结构。总体结构设计旨在确定程序各主要部件之间的关系。过程设计要完成每一部件的过程化描述。根据设计结果编制代码。设计阶段做的决策直接影响软件质量,没有良好的设计就没有稳定的系统,也不会有易维护的软件。统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用(不包括维护阶段)的75%以上。8.1软件设计过程2023/10/23国防科技大学计算机学院4图8.1开发阶段的信息流8.1软件设计过程2023/10/23国防科技大学计算机学院5软件设计过程软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。概要设计是根据需求确定软件和数据的总体框架详细设计是将其进一步精化成软件的算法表示和数据结构。概要设计和详细设计由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。8.1软件设计过程2023/10/23国防科技大学计算机学院68.2软件设计基本概念软件设计基本概念是过去三十年里陆续提出的。软件设计者根据这组概念进行设计决策,如:划分子部件的标准;从软件的概念表示中分离出功能和数据结构的细节;以统一的标准衡量软件设计质量等等。第八章软件设计基础2023/10/23国防科技大学计算机学院78.2.1抽象与逐步求精抽象是管理、控制复杂性的基本策略。“抽象”是心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。使用抽象技术便于人们用“问题域”的概念和术语描述问题,而无须过早地转换为那些不熟悉的结构。软件设计过程是,在不同抽象级别上考虑、处理问题的过程。(1)在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式。(2)不断地具体化,不断地用面向过程的语言描述问题。(3)在最低的抽象级别上给出可直接实现的“问题解”,即程序。8.2软件设计基本概念2023/10/23国防科技大学计算机学院8抽象与逐步求精软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分;在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;从概要设计过渡到详细设计时,抽象级再一次降低;编码完成后,达到了抽象的最低级。8.2软件设计基本概念2023/10/23国防科技大学计算机学院9抽象与逐步求精在由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用此过程;数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。8.2软件设计基本概念2023/10/23国防科技大学计算机学院10例8.1不同抽象级别的软件形式例8.1考虑适用于低级CAD的图形软件包。抽象1

该CAD软件系统配有能与作图员进行可视化通讯的图形界面。能用鼠标替代作图板和直尺画各种直线和曲线。能完成所有几何计算及所有截面视图和辅助视图的设计。图形设计的结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。在这一抽象级别上,问题的解用问题域本身的术语描述。8.2软件设计基本概念2023/10/23国防科技大学计算机学院11不同抽象级别软件的形式抽象2

CAD软件任务;用户界面任务;创建二维图形任务;显示图形任务;管理图形文件任务;endCAD.在这一抽象级别上,给出了组成CAD软件任务的所有子任务,术语与问题域有所不同,但仍然不是实现用的语言。8.2软件设计基本概念2023/10/23国防科技大学计算机学院12不同抽象级别软件的形式抽象3例“创建二维图形任务”

PROCEDURE创建二维图形REPEATUNTIL<创建图形任务终止>DOWHILE<出现与数字仪的交互时>数字仪接口任务;判断作图请求:线:画线任务;圆:画圆任务;

END;8.2软件设计基本概念2023/10/23国防科技大学计算机学院13不同抽象级别软件的形式DOWHILE<出现与键盘的交互时>键盘接口任务;选择分析或计算:辅助视图:辅助视图任务;截面视图:截面视图任务;

END;ENDREPETITION;ENDPROCEDURE.在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软件(比如采用dowhile结构)并且模块结构也开始明朗。求精过程还可继续下去,直至产生源代码。8.2软件设计基本概念2023/10/23国防科技大学计算机学院14不同抽象级别软件的形式数据抽象与过程抽象一样,能使设计者按不同的详细程度表示数据对象。例为CAD软件定义drawing(图)的数据对象:TYPEdrawingISSTRUCTUREDEFINEDnumberISSTRINGLENGTH(12);geometryDEFINED…

notesISSTRINGLENGTH(256);bomDEFINED…

ENDdrawingTYPE;drawing被表示为一种结构,各组成部件又可为某种数据抽象,如geometry和bom。8.2软件设计基本概念2023/10/23国防科技大学计算机学院15不同抽象级别软件的形式抽象数据类型drawing定义完毕,即可用类型名直接说明数据对象,而不必涉及其内部构造的细节,如,可用语句blueprintISINSTANCEOFdrawing;或schematicISINSTANCEOFdrawing;说明blueprint和schematic具有drawing的特性。8.2软件设计基本概念2023/10/23国防科技大学计算机学院16不同抽象级别软件的形式在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操作。以抽象数据类型drawing为例,可以定义擦除(erase)、存储(save)、分类(catalog)和拷贝(copy)等操作。若干程序设计语言(如Ada,Modula,CLU)都提供了对抽象数据类型的支持,Ada的程序包机制是对数据抽象和过程抽象的双重支持。8.2软件设计基本概念2023/10/23国防科技大学计算机学院17不同抽象级别软件的形式由N.Wirth提出的“逐步求精”概念,与“抽象”密切相关,是早期的自顶向下设计策略。“逐步求精”的主要思想是,针对某个功能的宏观描述用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。求精的每一步都是用更为详细的描述替代上一层次的抽象描述,在整个设计过程中产生的,具有不同详细程度的各种描述组成系统的层次结构。层次结构的上一层是下一层的抽象,下一层是上一层的求精。在过程求精的同时,伴随着数据求精,无论是过程还是数据,每个求精步都蕴含着某些设计决策,设计人员必须掌握一些基本的准则和各种可能的候选方法。8.2软件设计基本概念2023/10/23国防科技大学计算机学院188.2.2模块化与信息隐藏模块化的概念把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。软件总体结构体现了模块化思想。“模块化是软件唯一能使程序获得智能化管理的一个属性”,

没有模块的程序控制路径错综复杂,变量被远距离引用等难于被人掌握。8.2软件设计基本概念2023/10/23国防科技大学计算机学院19模块化与信息隐藏求解问题的过程假设函数C(X)定义了问题X已被觉察到的复杂性,函数E(X)定义了求解问题X所要求的工作量(按时间计),对于问题P1和P2,如果C(P1)>C(P2)(8.1a)则E(P1)>E(P2)(8.1b)C(P1+P2)>C(P1)+C(P2)(8.2)E(P1+P2)>E(P1)+E(P2)(8.3)解决一个复杂问题,比解决一个简单问题耗费多。由P1、P2组合而成的问题复杂性,比单个问题复杂性的和更大。8.2软件设计基本概念2023/10/23国防科技大学计算机学院20模块化与信息隐藏“分治法”一个复杂问题分割成若干个可管理的小问题后更易于求解。当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和不足。这些问题涉及信息隐藏、内聚度与藕合度的概念。8.2软件设计基本概念2023/10/23国防科技大学计算机学院21模块化与信息隐藏怎样保证模块数“在M附近”?依据什么标准划分模块?8.2软件设计基本概念2023/10/23国防科技大学计算机学院221信息隐藏模块独立的概念模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。采用信息隐藏原理指导模块设计优点:支持模块的并行开发减少软件测试和软件维护的工作量。8.2软件设计基本概念2023/10/23国防科技大学计算机学院232内聚度内聚度模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为七级,内聚度越高越好。低级内聚度(1)偶然性内聚(CoincidentalCohesion)。模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。(2)逻辑性内聚(LogicalCohesion)模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输出。(3)时间性内聚(TemporalCohesion)模块包含的诸任务必须在同一时间段内执行,如一个初始化模块。8.2软件设计基本概念2023/10/23国防科技大学计算机学院24模块化与信息隐藏中级内聚度(1)过程性内聚(ProceduralCohesion)模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次序执行;(2)通信性内聚(CommunicationalCohesion)

模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。8.2软件设计基本概念2023/10/23国防科技大学计算机学院25模块化与信息隐藏高级内聚度(1)顺序性内聚(SequentialCohesion)模块内的各处理成份均与同一功能相关,且这些处理必须顺序执行,则称顺序内聚。(2)功能性内聚(FunctionalCohesion)模块内所有成分形成一个整体,完成单个功能。设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性8.2软件设计基本概念2023/10/23国防科技大学计算机学院263耦合度耦合度软件结构中模块间关联程度的一种度量。耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。设计软件应追求尽可能松散耦合的系统。松散耦合系统中,任一模块的设计、测试和维护都相对独立。松散耦合系统模块间联系较少,错误在模块间传播的可能性随之变小。模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。8.2软件设计基本概念2023/10/23国防科技大学计算机学院27模块化与信息隐藏耦合度也分为七级:(1)非直接耦合(NodirectCoupling)两模块中任一个都不依赖对方能独立工作,这类耦合度最低。(2)数据耦合(DataCoupling)两模块通过参数交换信息,信息仅限于数据。(3)控制耦合(ControlCoupling)传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当分解模块可望消除控制耦合。(4)特征耦合(StampCoupling)。介于数据耦合与控制耦合之间8.2软件设计基本概念2023/10/23国防科技大学计算机学院28模块化与信息隐藏(5)外部耦合(ExternalCoupling)当若干模块均与同一个外部环境关联,如,I/O处理使所有I/O模块与特定的设备、格式和通信协议相关联。外部耦合尽管需要,但应限制在少数几个模块上。(6)公共耦合(CommonCoupling)若干模块通过全局的数据环境相互作用,全局数据环境中可能含有全局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等。(7)内容耦合(ContentCoupling)一个模块使用另一模块内部的数据或控制信息;一个模块直接转移到另一模块内部等等。设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。8.2软件设计基本概念2023/10/23国防科技大学计算机学院29模块化与信息隐藏模块化设计的思想适用于任何软件系统的设计。当某些软件系统,如实时软件和部分微处理机软件,因不能容忍子程序调用引起的时间开销而必须以整块软件的形式出现时,软件设计仍然应该以模块化设计的思想为指导,直至编码时再改用代入式(in—line)方法。这样,源程序中虽不含明显的模块,但模块化设计所带来的大部分益处却已被系统获得。8.2软件设计基本概念2023/10/23国防科技大学计算机学院308.2.3软件总体结构设计软件总体结构(softwarearchitecture)应该包括两方面内容(1)由系统中所有过程性部件(即模块)构成的层次结构,亦称为程序结构;(2)输入输出数据结构。软件总体结构设计的目标是产生一个模块化的程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和数据结构。8.2软件设计基本概念2023/10/23国防科技大学计算机学院31软件总体结构设计程序结构、数据结构是逐步求精、分而治之的结果。软件设计从需求定义开始,逐步分层导出程序结构和数据结构,当需求定义中所述的每个部分最终都能由一个或几个软件元素实现时,整个求解过程即告结束。8.2软件设计基本概念2023/10/23国防科技大学计算机学院32

软件总体结构设计依据任何一种软件设计方法总能推导出一个软件结构。模块内聚度和耦合度是判断结构好坏的主要标准。8.2软件设计基本概念2023/10/23国防科技大学计算机学院33软件总体结构设计表示程序结构的工具类树图(Tree-likediagram)Warnier—Orr图Jackson图等8.2软件设计基本概念2023/10/23国防科技大学计算机学院34程序结构的术语软件的深度(Depth)和宽度(Width)分别说明控制的层数和跨度。模块的“扇出率”(Fan—out)指,该模块直接控制的其他模块数。模块的“扇入率”(Fan—in)指,能直接控制该模块的模块数。8.2软件设计基本概念2023/10/23国防科技大学计算机学院35程序结构的术语如果一个模块控制另一模块,称前者为“主控”模块,后者为“从属”模块。

软件结构的可见域和连通域。模块的可见域指,该模块可直接或间接引用的一组模块;模块的连通域指,模块可直接引用的模块。软件的总体结构应该在考虑每个模块的细节前就确定下来。软件设计方法鼓励人们首先致力于软件总体结构的设计,而后再进行详细设计。每一种方法导出总体结构的具体方式不尽相同。8.2软件设计基本概念2023/10/23国防科技大学计算机学院368.2.4数据结构设计数据结构描述各数据分量之间的逻辑关系,数据结构一经确定,数据的组织形式、访问方法、组合程度及处理策略基本上随之确定,所以数据结构是影响软件总体结构的重要因素,对数据结构的完整讨论超出本书的范围,但掌握标量、数组、链表和树等典型的数据表示方法,并能根据实际需要灵活应用十分必要。数据结构与程序结构一样,也可以在不同的抽象级别上表示。以栈为例,作为一个抽象数据类型,在概念级上只关心“先进后出”特性,而在实现级上则要考虑物理表示及内部工作的细节,比如,用向量实现,或用链表实现等等。8.2软件设计基本概念2023/10/23国防科技大学计算机学院37数据结构设计数据结构对程序结构和过程复杂性有直接的影响,数据结构设计很重要,在很大程度上决定软件的质量。无论采用哪一种软件设计技术,没有良好的数据结构,不可能导出良好的程序结构。数据设计是为在需求规格说明中定义的那些数据对象选择合适的逻辑表示,并确定可能作用在这些逻辑结构上的所有操作(包括选用已存在的程序包)。数据抽象和信息隐藏两个概念是数据设计的基础。数据设计方案不是唯一的,有时需进行算法复杂性分析后才能从多种候选中找出最佳者。8.2软件设计基本概念2023/10/23国防科技大学计算机学院388.2.5软件过程设计程序结构仅考虑软件总体结构中模块之间的控制分层关系,而不关心模块内各处理元素和判断元素的顺序。过程设计紧跟在数据结构设计和程序结构设计之后,基本任务是描述这方面的信息。过程包括有关处理的精确说明,如事件的顺序、确切的判断位置、循环操作以及数据的组成等等。程序结构与软件过程相互关联,程序结构中任个模块的所有从属模块必将被引用出现在该模块的过程说明中。8.2软件设计基本概念2023/10/23国防科技大学计算机学院39图8.6模块A的内部结构8.2软件设计基本概念2023/10/23国防科技大学计算机学院40图8.7过程的层次结构8.2软件设计基本概念2023/10/23国防科技大学计算机学院418.3过程设计技术和工具8.3.1结构化程序设计过程设计的任务是描述算法的细节,下面讨论过程设计的技术和工具。结构化程序设计

E.W.Dijkstra提出,理由是GOTO语句对程序的可读性、可测试性和可维护性带来极大的危害,应该用更可维护的控制结构替代它。Bohm和Jacopini证明了仅用“顺序”、“分枝”和“循环”三种基本的控制构件即能构造任何单入口单出口程序,这个结论奠定了结构程序设计的理论基础。第八章软件设计基础2023/10/23国防科技大学计算机学院42过程设计技术和工具结构化程序设计定义采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。自顶向下逐步求精的方法是人类解决复杂问题时常用的方法,采用这种先整体后局部,先抽象后具体的步骤开发的软件具有较清晰的层次。仅使用单入口单出口的控制构件,程序有良好的结构特征,能降低程序的复杂性,增强程序的可读性、可维护性和可验证性,提高软件的生产率。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院43过程设计技术和工具结构程序设计的思想,应该在软件设计中体现出来,但这并不排除为效率或其他原因,对结构程序设计作一点修正。随着面向对象、软件重用等新的软件开发方法和技术的发展,更现实、更有效的开发途径可能是自顶向下和自底向上两种方法的有机结合。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院448.3.2图形表示法流程图、盒图是描述过程细节的工具。流程图(也称为程序框图)是最常用的一种表示法,它能直观地描述过程的控制流程,最便于初学者掌握。流程图中方框表示处理步,菱形框表示判断步,有向线段表示控制流。顺序、分枝、循环三个基本控制构件用流程图表达的形式如图8.8所示。

8.3过程设计技术和工具2023/10/23国防科技大学计算机学院45图形表示法Case结构是if—then—else结构的推广,do—while循环与repeat循环的区别仅在于测试循环条件与执行循环体的先后次序。嵌套使用这些控制结构能逐步形成更复杂的控制流程描述。如果对流程图中每一构件用“边框”圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出口,称此程序为结构化程序(structuredprogram)。图8.9为一个结构化程序的流程图。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院46图8.8流程图构件8.3过程设计技术和工具2023/10/23国防科技大学计算机学院47图8.9结构化程序的流程图8.3过程设计技术和工具2023/10/23国防科技大学计算机学院48过程设计技术和工具由Nassi和Sheiderman提出的盒图,也称为N—S图,它强迫程序员以结构化方式思考和解决问题,三种基本控制构件用盒图表达的形式如图8.10所示。图8.10盒图的构件图8.9表示的过程用盒图表示形如图8.11。图8.11盒图盒图的功能域(指分枝和循环结构的边界)比流程图更清晰,控制不能随意转移,并且数据的作用域容易确定。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院49图8.10盒图的构件8.3过程设计技术和工具2023/10/23国防科技大学计算机学院50图8.11盒图8.3过程设计技术和工具2023/10/23国防科技大学计算机学院518.3.3判定表当模块中包含复杂的条件组合,并要根据这些条件选择动作时,流程图、盒图及8.3.4节将介绍的过程设计语言(PDL)都有一定的缺陷,判定表能清晰地表示出复杂的条件组合与各种动作之间的对应关系。

一张判定表由四部分组成,左上部列出所有条件,左下部列出所有可能的动作,右部为一矩阵,说明条件与动作之间的对应关系,其每列可解释为一条处理规则。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院52判定表例8.2简化的账单系统判定表问题描述:耗电记费系统可以采用固定价格收费和浮动价格收费两种方式。若采用固定价格方式收费,对每月耗电100千瓦小时以下的用户只征收最低标准费,超过100千瓦小时的用户按价格表A收费;若采用浮动价格方式收费,则每月耗电100千瓦小时以下的用户按价格表A收费,超过100千瓦小时的用户按价格表B收费。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院53判定表采用下述步骤产生表8.1所示判定表:①列出与该过程(或模块)有关的动作(共四项,分别为收取最低标准费、按价格表A收费、按价格表B收费,其他处理);②列出所有独立条件(共四条,分别为固定价格方式、浮动价格方式、每月耗电少于100千瓦小时,每月耗电超过100千瓦小时);③根据问题处理描述,把条件组合与特定的动作联系起来,删去无意义的条件组合;④定义处理规则(共5条),即指明什么情况下做什么动作。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院54表8.1判定表8.3过程设计技术和工具2023/10/23国防科技大学计算机学院55判定表尽管判定表能够简洁无歧义地描述处理规则,但却不能清晰地表示顺序和循环结构。判定表常作为一种辅助设计工具与其他过程设计工具结合使用。

8.3过程设计技术和工具2023/10/23国防科技大学计算机学院568.3.4过程设计语言(PDL)PDL(ProcedureDesignLanguage)也称为结构英语或伪码,是所有正文形式的过程设计工具的统称,目前有多种PDL。

PDL经常表现为一种“混杂”的形式,允许自然语言(如英语)的词汇与某种结构化程序设计语言(如Pascal、Ada等)的语法结构交织在一起,目前大多数PDL描述不能直接编译。

8.3过程设计技术和工具2023/10/23国防科技大学计算机学院57过程设计语言(PDL)①关键字采用固定语法并支持结构化构件、数据说明机制和模块化;②处理部分采用自然语言描述;③允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构;④子程序的定义与调用规则不受具体接口方式的影响。现今大多数PDL都以某种流行的高级程序设计语言作为基础,例如Ada—PDL是Ada团体中广为使用的设计工具。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院58过程设计语言(PDL)考察建立在通用结构化程序设计语言上的PDL原型。基本成分子程序定义界面描述数据说明块结构分枝结构循环结构I/O结构8.3过程设计技术和工具2023/10/23国防科技大学计算机学院59过程设计语言(PDL)数据说明的常用形式TYPE<变量名>IS<限定词1><限定词2>此处<变量名>既可为过程的某个局部变量,亦可为多个过程共用的全局变量;<限定词1>为某个特定关键字(例如,SCALAR,ARRAY,LIST,STRING,STRUCTURE等);<限定词2>说明此处定义的变量在该过程或整个程序中应如何使用。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院60过程设计语言(PDL)PDL允许定义面向具体问题的抽象数据类型。如,在某编译器的模块设计时可能使用下面的数据说明:TYPEtable—1ISINSTANCEOFsymbol—able假定symbol—table是在另一处定义的抽象数据类型:TYPEsymbol—tableISSTRUCTUREDEFINED

该PDL的块结构描述一个过程元素,即一个块内的所有语句将作为一个整体执行形式为BEGIN[<块名>]<语句序列>END

8.3过程设计技术和工具2023/10/23国防科技大学计算机学院61过程设计语言(PDL)该PDL的分枝结构有if—then—else和case两种形式IF<条件描述>THEN<块结构或语句>ELSE<块结构或语句>ENDIFCASEOF<情况变量名>WHEN<第1种情况>SELECT<块结构或语句>;WHEN<第2种情况>SELECT<块结构或语句>;

WHEN<最后一种情况>SELECT<块结构或语句>;DEFAULT:<块结构或语句>;ENDCASE8.3过程设计技术和工具2023/10/23国防科技大学计算机学院62过程设计语言(PDL)循环结构包括前测试循环、后测试循环和固定循环三类,表达形式分别为DOWHILE<条件描述><块结构或语句>ENDWHILEREPEATUNTIL<条件描述><块结构或语句>ENDREPDOFOR<循环变量>=<循环变量取值范围,表达式或序列><块结构或语句>ENDFOR除标准循环构件外,此PDL还提供了NEXT和EXIT两种语句,旨在支持受限方式退出循环。EXIT将控制转到其所在循环后的第一个语句,NEXT强迫本次循环结束,新一轮循环开始。若外层循环带标号,EXIT和NEXT能实现从多层嵌套的内循环中直接跳出,而不必逐层退出。在该PDL中,子程序说明为PROCEDURE<子程序名><属性表>INTERFACE<参数表><块结构和/或语句序列>END8.3过程设计技术和工具2023/10/23国防科技大学计算机学院63过程设计语言(PDL)属性表指明子程序的引用特性如,INTERNAL、EXTERNAL模式依赖于程序设计语言的实现输入/输出说明部分的形式READ/WRITETO<设备><I/O表>或ASK<询问>ANSWER<响应选择项>后一形式多用于人机交互的设计。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院64过程设计语言(PDL)PDL扩充多任务、并行处理、异常处理、进程同步等机制。使用某个PDL进行过程设计,应充分了解全部内容。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院658.3.5过程设计工具之比较比较前述种种设计工具之优劣须基于这样一个前提,即如果使用得当,任一种工具都将对过程设计提供宝贵的支持,反之即使是最好的工具亦可能产生难于理解的设计。衡量一个设计工具好坏的一般准则是看其所产生的过程描述是否易于理解、复审和维护,进而过程描述能否自然地转换为代码并保证设计与代码完全一致。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院66设计工具属性(1)模块化(Modularity):支持模块化软件的开发并提供描述接口的机制(例如直接表示子程序和块结构);(2)整体简洁性(OverallSimplicity):设计表示相对易学、易用、易读;(3)便于编辑(EaseofEditing):支持后续设计、测试乃至维护阶段对过程设计进行的修改;(4)机器可读性(MachineReadability):计算机辅助软件工程(CASE)环境已被广泛接受,一种设计表示法若能直接输入并被CASE工具识别将带来极大便利;8.3过程设计技术和工具2023/10/23国防科技大学计算机学院67过程设计工具之比较(5)可维护性(Maintainability):过程设计表示应支持各种软件配置项的维护;(6)强制结构化(StructureEnforcement):过程设计工具应能强制设计人员采用结构化构件,有助于产生好的设计;(7)自动产生报告(AutomaticProcessing):设计人员通过分析详细设计的结果往往能突发灵感,改进设计。若存在自动处理器,能产生有关设计的分析报告必将增强设计人员在这方面的能力;8.3过程设计技术和工具2023/10/23国防科技大学计算机学院68过程设计工具之比较(8)数据表示(DataRepresentation):详细设计应具备表示局部与全局数据的能力;(9)逻辑验证(LogicVerification):能自动验证设计逻辑的正确性是软件测试追求的最高目标,设计表示愈易于逻辑验证其可测试性愈强;(10)可编码能力(“Codeto”Ability):一种设计表示若能自然地转换为代码则能减少开发费用,降低出错率。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院69过程设计工具之比较对照上述属性,到底哪一种过程设计工具最好呢?回答将因人而异。一般认为,PDL较好地组合了这组特性。PDL还可直接嵌在源代码中作为设计文档和注释,减少维护的困难;PDL描述可用一般正文编译器或字处理软件编辑;PDL自动处理器已经面世,并有可能开发出“代码自动产生器”。然而,这并不意味着其他的设计工具一定弱于PDL,例如,流程图和盒图能直观地表示控制流程;判定表因能精确地描述组合条件与动作之间的对应关系,特别适用于表格驱动一类软件的开发;其他一些设计工具也自有独到之处。经验表明,具体选择过程设计工具时,人的因素可能比技术因素更具有影响力。8.3过程设计技术和工具2023/10/23国防科技大学计算机学院708.4设计规格说明与评审软件设计阶段的输出主要是设计规格说明书,结构如表8.2所示,各条款的内容是在设计求精过程中逐步确定的。第八章软件设计基础2023/10/23国防科技大学计算机学院71设计规格说明与评审设计说明书第一节描述与设计活动有关的各个方面,该节中许多信息取自系统规格说明书和系统定义阶段产生的其他文档。第二节具体指明引用信息的出处。第三节设计描述是概要设计的产物,设计由信息驱动,即软件总体结构主要受数据流程、数据结构的影响,需求分析时产生的DFD或其他某种形式的数据表示将在这一节中进一步精化,用于确定软件结构。8.4设计规格说明与评审2023/10/23国防科技大学计算机学院72设计规格说明与评审第四节的模块指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论