《软件工程》课件-第5章 详细设计_第1页
《软件工程》课件-第5章 详细设计_第2页
《软件工程》课件-第5章 详细设计_第3页
《软件工程》课件-第5章 详细设计_第4页
《软件工程》课件-第5章 详细设计_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

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

文档简介

第5章

详细设计XX大学XX系XXX软件工程教程电子科技大学出版社学习目标l

理解详细设计的目标;l

理解常用的几种详细设计的工具;l

掌握系统详细设计的任务、原则和过程;l

掌握程序流程图的画法;l

掌握并熟悉N-S图、PAD图、判定表、判定树和PDL图等常用的几种详细设计的工具;l

掌握典型面向数据结构的分析设计方法Jackson方法;l

掌握人-机界面设计和实现原则;l

了解程序结构复杂性的定量度量方法;l

了解详细设计说明书的编写。目录010203详细设计的目标和任务详细设计的原则用户界面的设计04050607详细设计的工具面向数据结构的设计方法程序结构复杂性的定量度量本章小结详细设计的目标和任务01详细设计的目标和任务详细设计要回答的关键问题是怎样具体地实现这个系统。详细设计的主要任务不是具体地编写程序,而是设计出程序的蓝图,程序员根据这个蓝图编写出实际的程序代码。因此,详细设计的结果基本上决定了最终程序代码的质量。详细设计不只是在逻辑上正确地实现每个模块的功能,更重要的是处理过程应该尽可能简明易懂。详细设计的目标详细设计的根本目标是确定应该怎样具体地实现所要求的系统,即经过这个阶段的设计工作,应该得出对系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计的目标详细设计以概要设计阶段的工作为基础,概要设计阶段,以比较抽象的方式描述数据项和数据结构,而详细设计则应在此基础上给出足够详细的描述,详细设计要提供关于算法的更多细节。概要设计可以声明一个模块的作用是对一个表进行排序,详细设计的模块包含实现对应的概要设计模块所需要的处理逻辑,主要有详细的算法、数据表示和数据结构,以及实现的功能和使用数据之间的关系。详细设计的任务详细设计主要确定每个模块的具体执行过程,其主要任务有以下六个方面。(1)为每个模块进行详细的算法设计,确定算法,选择适当的工具表达算法的过程,例如图形、表格、语言等工具将每个模块处理过程的详细算法描述出来,写出模块的详细过程描述。详细设计的任务(2)对模块内的数据结构进行设计,对需求分析、概要设计确定的概念性的数据类型进行确切的定义,为以后编写程序做好充分的准备。(3)对数据库进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这都依赖于具体使用的数据库系统。详细设计的任务(4)根据软件系统的类型,还可能要进行代码设计、网络系统设计、输入/输出格式设计、系统配置的设计和人机对话设计等其他设计。(5)编写详细设计说明书。(6)评审,对处理过程的算法和数据库的物理结构都要评审。详细设计的原则02详细设计的原则在详细设计过程中应遵循以下原则:(1)由于详细设计的蓝图是给其他人看的,所以模块的逻辑描述要清晰易读、正确可靠。”详细设计的原则(2)采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性,基本内容归纳如下。①

在程序中,应尽量少使用GOTO语句,以确保”程序结构的独立性。②

使用单入口单出口的控制结构,确保程序的静态结构与动态执行情况相一致,保证程序易理解。详细设计的原则③

程序的控制结构一般采用顺序、选择、循环三种结构,确保结构简单。④

用自顶向下、逐步求精的方法完成程序设”计。结构化程序设计的缺点是存储容量和运行时间要会有相应的增加,但易读,易维护。详细设计的原则(3)选择用恰当的工具来描述各模块的算法。”用户界面的设计03设计驱动开发当新用户开始使用一个应用程序时,他们通常是对其有所期待的,而这种期待往往来自他们以往使用类似的应用程序及操作系统的经验。用户会在潜意识中对应用程序每个按钮的作用、使用方式、工作逻辑及快捷键等做出一系列的猜测,并期待他们所使用的应用程序满足这些预期。一旦用户的期待得不到满足,就会大大影响用户的使用体验。设计驱动开发软件界面设计的好坏通常不仅仅是美观与否的问题,一个精良的设计往往能让应用程序本身变得更加高效和易于使用,相反,一个糟糕的设计完全可能让开发者在应用上的其它努力付诸东流。因此,在现代应用程序的开发过程中,用户界面设计的地位越来越重要。对于开发者来说,用户界面设计并不仅仅是“图像”或“美学”设计,而是应用一系列简单而实用的准则或策略来改善软件易用性的一个步骤。目标用户群体在对一个新的软件产品做需求分析和功能设计之前,必须要明确软件所针对的用户群体以及用户群的具体特征,只有这样才能设计并开发出对用户有价值的功能。其实,在用户界面的设计中,“明确目标用户”同样也是非常重要的一个环节。目标用户群体用户本身的技能、个性、性别、年龄、所受教育及文化背景上的差异,用户的基础计算机操作水平,用户在相关领域的专业知识,都可能导致用户对界面的需求的不同。例如,一个专业的软件工程师和对计算机只有有限了解的普通用户,所能够接受的界面可能就完全不同。来自不同国家如中国和法国的用户,对于同一种配色或图案的理解也可能大相径庭。目标用户群体用户界面作为应用程序和用户交互的核心途径,必须将不同用户对界面的不同需求考虑在其中,这样才能给用户提供最好的使用体验。否则,即使软件内部的功能十分强大,如果界面使用起来体验非常糟糕,用户也不会选择使用它。简洁与清晰早期的软件界面往往只是一系列功能和按钮的堆砌,功能复杂的软件往往伴随着无数的菜单项和按钮,让人望而生畏;而如今,越来越多的软件都在强调其“设计感”,软件的功能层次感越来越清晰,功能分区越来越合理,而这其中最直观的一点就是整体界面的设计越发显得简洁、清晰、美观。在不影响功能的前提下,很多不常用的按钮和菜单项被隐藏,用户的实际内容得到强调。简洁与清晰在界面设计中,应当仔细斟酌每个界面元素的作用、重要性和交互方式,将重要的界面元素放置在显著位置,不太重要的界面元素则降级到相对次要的位置,凸显界面元素之间的层次感和逻辑感,避免对空间进行罗列和堆叠。简洁与清晰此外,对于展示实际用户内容的界面(如图片浏览应用、文档编辑应用等),不应使得软件工具栏和其他辅助控件过多地占用用户实际内容的屏幕空间,或干扰用户正常浏览应用所展示的内容。实现模型与心智模型从程序开发人员的角度出发,把开发一个应用程序所需要用到的技术解决方案,称为这个程序的“实现模型”。例如,开发一个在线的物品交易平台,使用Python作为后端语言,HTML、CSS和JavaScript等作为前端语言,MySQL作为数据库引擎,这些都属于实现模型。实现模型与心智模型实现模型往往包含了复杂艰深的理论、技术和算法等内容,这些内容在开发过程中对开发者来说是至关重要的,但是却不会被大多数用户所了解。实现模型与心智模型与实现模型不同,软件的真实用户对该软件用法和运作方式的个人理解(或期望),则称为“心智模型”。这类心智模型有助于用户理解自己使用软件的过程,预测某个操作的结果,并应对出乎意料的情况。换句话说,心智模型能够帮助用户“自然地”使用一个程序。用户拥有什么样的心智模型取决于用户个人的生活经历和知识结构(如对计算机软件技术的理解)。实现模型与心智模型心智模型可能是精巧的,也可能是简陋的;可能是真实的,也可能是想象中的。不过通常来说,大部分用户的心智模型都是由一系列零碎的事实所构建起来的,因此心智模型所反映的通常是一种肤浅的、不完善的理解,但这并不会妨碍用户对软件的学习和掌握。实现模型与心智模型例如,用户敲击键盘,屏幕上就会出现对应的文字。用户只需要明白“敲击键盘”和“输入字符”之间的对应关系即可正常打字,完全无须理解这一操作背后的原理。设计的规范性在设计和开发中,“可用性”是衡量一个应用程序用户体验好坏的重要标准之一。具有良好的可用性,要求应用具有以下三个特性。设计的规范性(1)容易学习和掌握。第一次使用该应用程序时,用户是否可以轻易学会使用应用程序的基本功能?如果一个程序的界面看起来十分复杂,或用户需要花费很长时间才能掌握一个应用程序的主要用法,他们很可能会放弃使用该应用程序。设计的规范性(2)高效。用户掌握了应用程序的使用方式后,能否快速地利用该应用程序完成相应的任务?如果用户使用一个应用程序需要花费相当长的时间,他们很可能会放弃使用该应用程序。设计的规范性(3)令人愉悦。总体来说,使用一个应用程序的体验是否愉快?如果用户在使用一个应用程序的过程中的体验不佳(例如,过小的文字、复杂的操作流程、不合理的交互方式或难看的用户界面或图标,都可能是用户抱怨的原因),他们很可能会放弃使用该应用程序。设计的规范性没人喜欢使用复杂、难以掌握的应用程序。为获得良好的可用性,在设计和开发的每个步骤和每一轮迭代中,开发人员都应该将软件的目标用户作为核心,在实际使用环境中,以真实用户的需求、偏好和习惯为导向,对产品的设计进行不断优化。在这一过程中,应该重点关注以下七个问题。设计的规范性①软件的目标用户是怎样一个群体?②用户的实际需求有哪些?③用户希望软件具有哪些功能?④用户在相关领域有哪些背景知识?设计的规范性⑤

为了使用软件完成某项任务,用户需要得到哪些信息?这些信息应该用什么方式呈现给用户?⑥

根据现有设计,用户认为的软件使用方式和其真实使用方式是否一致?⑦

是否有特殊的用户群体、需求、运行环境需要额外考虑?设计的一致性在界面及交互设计中,追求一致性是非常重要的。它允许用户将先前已经建立的使用习惯和知识带入到一个全新的应用程序中。如果应用程序的界面和交互设计不满足一致性要求,用户可能会感到困感,从而增加应用程序的学习成本,增加误操作的机会,最终影响用户的使用体验。根据一致性的范围,可将其大致分为两类:外部一致性和内部一致性。设计的一致性每个操作系统都有其固有的操作模式及标准的用户界面元素,一个设计良好的应用程序应当遵循这些惯例,这就是“外部一致性”;一个软件应当和其他软件,乃至其所运行的操作系统保持一致。有时,某些设计决策在操作系统层面没有固定的规范或惯例可供遵循,但在一个应用程序内部却应该保持统一,不应产生歧义或自相矛盾,这就是“内部一致性”。设计的一致性此外,在界面的样式设计上,一个应用程序也应当具有一个统一的风格,包括颜色搭配和使用、控件样式,字体、动画、阴影等各种设计元素的运用。例如,如果软件的一部分使用红色表达“错误”或“警告”的含义,那么一般来说就不应当同时在其他地方使用红色来表达“正确”或“成功”的含义。设计的容错性良好的“容错性”允许用户大胆地探索一个应用程序的所有功能,因为绝大部分操作都是可逆的、非破坏性的。如果用户确信他们可以大胆的尝试每个按钮的用途而不用担心他们的操作系统或数据被破坏,应用程序的用户体验会大大提高。设计的容错性此外,良好的“容错性”也会让应用程序显得更加稳定、可靠。如果用户发现在一个应用程序中并不会因为无意中的操作就产生严重错误(如数据丢失或损毁),他们自然会更加信任这一应用程序。详细设计的工具04详细设计的工具算法过程描述应采用自然语言来表达,这样不熟悉软件的人比较容易理解,但自然语言在方法和语义上往往具有多义性,因此,需要使用一些详细设计的工具来进行算法描述。详细设计的工具详细设计描述工具可以分为以下三类。(1)图形工具。把过程的细节表示成一个图的组成部分,逻辑构造用具体的图形来表示。包括程序流程图、N-S图和PAD图;(2)列表工具。用一个表来表示过程的细节,其中列出了各种操作及相应的条件。包括判定表和判定树;详细设计的工具(3)语言工具。用类语言来表示过程的细节,这种类语言很接近于编程语言。包括PDL语言。一种设计工具应当表现出控制的流程、处理功能、数据的组织以及其他方面的实现细节,从而在编码阶段能把对设计的描述直接翻译成程序代码。程序流程图程序流程图又称为程序框图,它是软件开发者最熟悉的一种算法表达工具,它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握,因此,程序流程图至今仍是软件开发者最普遍采用的一种工具。程序流程图中使用的基本符号如图5.1所示。(a)选择(分支);(b)

注释;(c)

预先定义的处理;(d)

多分支;(e)

开始或停止;(f

)

准备;(g)循

环上界限;(h)循环下界限;(i)

虚线;(

j)

省略符;(k)并行方式;(l)

处理;(m)输入输出;(n)连接;(o)换页连接;(p)控制流程序流程图使用三种基本控制结构如图5.2所示。图5.2程序的三种基本控制结构例5.1:

将下列用PDL伪代码表示的某种模块的过程性描述改用程序流程图表示。execute

process

aENDREPREPEAT

UNTILconditionX6execute

process

bIF

conditionX1THENBEGINELSE

BEGINexecute

process

hexecute

process

gENDexecute

process

fIF

conditionX4THENENDIFELSE

CASE

OF

X2WHENcondition

2

SELECTDOWHILEconditionX3execute

process

cREPEAT

UNTILconditionX5execute

process

i程序流程图ENDDOWHENcondition

3

SELECT

processdWHENcondition

4

SELECT

processeENDCASEENDIFENDREPexecute

process

jEND程序流程图解:图5.3例5.1中PDL伪代码对应的程序流程图程序流程图程序流程图的主要优点是对控制流程的描绘很直观,便于初学者掌握。程序流程图流程图也存在一些严重的不足,主要表现在利用流程图使用的符号不够规范,人们常常使用一些习惯性用法。特别是表示程序控制流程的箭头,使用的灵活性极大,程序员可以不受任何约束,随意转移控制,这些问题常常很大程度地影响了程序质量。程序流程图为了消除这些不足,应严格地定义流程图所使用的符号,不允许随心所欲地画出各种不规范的流程图。盒图Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图(以两个人的名字的第一个字母组成)。在N-S图中,全部算法写在一个大框图内,这个大框图由若干个小的基本框图构成,可以表示顺序、选择和循环三种基本控制结构,如图5.4所示三种图形结构。(a)顺序;(b)选择;(c)CASE多分支;(d)循环;(e)调用子程序A图5.4盒图的基本符号盒图(1)顺序型:在顺序型结构中先执行A,后执行B。(2)选择型:在选择型结构中,如果条件P成立,可执行T下面的内容,当条件P不成立时,则执行F下面的内容;另一种选择型结构中,给出了多出口的判断图形表示,P为控制条件,根据P的取值相应地执行其值下面的各框内容。盒图(3)WHILE重复型:在WHILE重复型循环结构中先判断P的值,再执行S,其中,P是循环条件,S是循环体;UNTIL重复型循环结构中,先执行S,然后判断P的值。盒图盒图没有箭头,因此不允许随意转移控制。坚持使用盒图作为详细设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。例5.2:将例5.1中用PDL伪代码表示的某种模块的过程性描述改用N-S图表示。解:图5.5例5.1中PDL伪代码对应的盒图(N-S图)PAD图PAD图(Problem

Analysis

Diagram),由日本日立公司1973年发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。它既克服了传统的流程图不能清晰表现程序结构的缺点,又不像N-S图那样受到把全部程序约束在一个方框内的限制,这就是其优势所在。PAD图的基本符号如图5.6所示。PAD图(a)

顺序;(b)选择;(c)CASE多分支;(d)WHILE型循环;(e)

UNTIL型循环;(f

)

语句标号;(g)定义图5.6盒图(N-S图)PAD图PAD图的优点表现在如下六个方面。(1)使用PAD符号所设计出来的程序必然是结构化程序。(2)PAD图所描绘的程序结构十分清晰。图5.6中最左面的竖线是程序的主线,即第一层结构。PAD图(3)随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。PAD图(4)用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。PAD图(5)既可用于表示程序逻辑,也可用于描绘数据结构。PAD图(6)PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。如图5.7所示是一个使用def符号逐步细化的示例。PAD图(a)初始的PAD图;(b)

使用def符号细化处理框P2图5.7使用def符号逐步细化PAD图PAD图是面向高级程序设计语言的,为常用的高级程序设计语言提供了整套相应的图形符号。由于每种控制语句都有一个图形符号与之对应,显然将PAD图转换成与之对应的高级语言程序比较容易。PAD图PAD图的执行顺序从最左主干线的上端的结点开始,自上而下依次执行。每遇到判断或循环,就自左向右进入下一层,从表示下一层的竖线上端开始执行,直到该竖线下端,再返回上一层的竖线的转入处。如此继续,直到执行到主干线的下端为止。PAD图例5.3:将例5.1中用PDL伪代码表示的某种模块的过程性描述改用PAD图表示。解:图5.8例5.1中PDL伪代码对应的PAD图判定表与判定树判定表与判定树是一种列表设计工具,常用于条件嵌套的复杂判定情况的分析与设计,以及多分支结构代码的设计与实现。判定表与判定树(1)判定表判定用来描述一些不易用语言表达清楚或需要很大篇幅才能用语言表达清楚的加工逻辑。在某些数据处理问题中,其数据流程图的处理需要依赖于多个逻辑条件的取值,这些取值的组合可能构成多种不同情况,相应地需要执行不同的动作。这种问题用结构化语言来叙述很不方便,使用判定表或判定树作为表示加工说明的工具是最合适的。一个判定表由四个部分组成,如表5.1所示。表5.1判定表的组成条件所指对象各种条件的组合所有的操作

在对应的条件组合下,某个操作是否要执行当某个判定结构依赖于较多的条件且有较多的取值时,用判定表能够把所有的条件组合一个不漏地表达出来,相应地可以分析不同的条件组合应该采取什么操作。可以避免出现在某种条件和取值下可能无相应的操作,或有动作却不依赖某个条件和取值而存在的现象,从而帮助分析人员澄清问题,甚至可以发现用户可能遗漏的、尚未提出的逻辑要求。判定表与判定树例5.4:细化学生成绩的奖励条件:学生每学期已修课程成绩的比率。优秀比率占70%以上,并且中以下所占比率小于15%,而且表现优良的学生可以获得一等奖学金,表现一般的学生可以获得二等奖学金;优秀比率占70%以上,中以下所占比率小于20%,表现优良的学生可以获得二等奖学金,表现一般的学生可以获得三等奖学金;中以下所占比率小于20%,表现优良的学生可以获得三等奖学金,表现一般的学生可以获得四等奖学金。解:表5.2用判定表给出学生成绩的奖励的加工逻辑成绩比率优≥70%

Y

Y

Y

Y

N

N

N

N成绩比率优≥50%

Y

Y

Y

Y条

成绩比率中≤15%

Y

Y

N

N

Y

Y

N

N件

成绩比率中≤20%

Y

Y

Y

Y表现

优良表现

一般一等奖学金Y

N

Y

N

Y

N

Y

NN

Y

N

Y

N

Y

N

Y√操

二等奖学金作

三等奖学金四等奖学金√

√√√√

√√判定表与判定树例5.5:某校的课酬计算方案如下:(l)基本课酬为每节课10元;(2)如果班级人数超过40人,课酬增加:基本课酬×0.1;(3)如果班级人数超过60人,课酬增加:基本课酬×0.2;(4)如果教师是副教授,课酬增加:基本课酬×0.1;(5)如果教师是教授,课酬增加:基本课酬×0.2;(6)讲师,课酬不增加;(7)助教,课酬减少:基本课酬×0.1。请用判定树表达上述计算方案。解:表5.3用判定表给出课酬的加工逻辑1

2

3

4

5

6

7

8

9

10

11

12人数≤40

T

T

T

T40<人数≤60人数>60T

T

T

TT

T

T

T助教TTTTTTTTT讲师T副教授教授TT表5.3用判定表给出课酬的加工逻辑课酬:9元/节

√课酬:10元/节

√课酬:11元/节课酬:12元/节课酬:13元/节课酬:14元/节√√√√√√√√√√判定表与判定树综合上述例子给出判定表的构造步骤如下。①

列出所有基本条件,填写判定表的左上限。在本例中,奖学金的发放依据三个条件,分别是成绩优秀比率、成绩中下比率、表现情况。②

列出所有的基本操作,填写判定表的左下限。在本例中,奖学金的发放分为4个等级,分别为一、二、三、四等奖学金。③

计算所有可能的、有意义条件组合,确定组合规则个数,填写判定表的右上限。在本例中3个条件均有2种取值,但因条件1与条件2只有其中一个条件的取值为Y时,条件组合才有意义,所以规则个数应该是2+2=4。判定表与判定树综合上述例子给出判定表的构造步骤如下。①

列出所有基本条件,填写判定表的左上限。在本例中,奖学金的发放依据三个条件,分别是成绩优秀比率、成绩中下比率、表现情况。②

列出所有的基本操作,填写判定表的左下限。在本例中,奖学金的发放分为4个等级,分别为一、二、三、四等奖学金。判定表与判定树③

计算所有可能的、有意义条件组合,确定组合规则个数,填写判定表的右上限。在本例中3个条件均有2种取值,但因条件1与条件2只有其中一个条件的取值为Y时,条件组合才有意义,所以规则个数应该是2+2=4。判定表与判定树④

将每一种组合指定的操作添加到右下限相应的位置。⑤

简化规则,合并及删除等价的操作。合并原则是:找出操作在同一行的,检查上面的每一个条件是否影响该操作的执行,如果条件不起作用,则可以合并等价操作,否则不能简化。判定表与判定树例如,在本例中,获得二等奖学金的组合有3个,经过分析,我们发现优秀率70%以上,中下比率小于15%,表现一般的获得二等奖学金;优秀率70%以上,中下比率小于20%,表现优良的获得二等奖学金;优秀率50%以上,中下比率小于15%,表现优良的获得二等奖学金。3个组合中每个条件都起作用所以不能化简。判定表与判定树⑥

如果对判定表进行了化简,就需要将化简后的结果重新排列。判定表的优点在于它能把复杂的情况按各种可能的情况逐一列举出来,简明而且易于理解,也可以避免遗漏。它的不足在于无法表达重复执行的动作,如循环结构等。判定表与判定树(2)判定树判定树是用一种树图形方式来表示多个条件、多个取值所应采取的动作。判定树分支表示各种不同的条件,随着分支层次结构的扩充,各条件完成自身的取值。判定树的叶子给出应完成的动作。例5.6:将例5.4的学生成绩的奖励用判定树表示出来。解:学生成绩的奖励的判定树如图5.9所示。判定表与判定树判定树是判定表的变种,本质完全一样,所有用判定表能表达的问题都能用判定树来表达。判定树比判定表更直观,用判定树来描述具有多个条件的数据处理,更容易被用户接受。过程设计语言过程设计语言(

Program

Design

Language,PDL)

也称为伪码,是一个笼统的名称,现在有许多种不同的过程设计语言在使用。它是用正文形式表示数据和处理过程的设计工具。是一种结构化的语言,是非形式化比较灵活的语言,用于描述模块内部过程的具体算法,以便在开发人员之间比较精确的进行交流。过程设计语言PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。因此,般说来PDL是一种“混杂”语言,它使用种语言(通常是某种自然语言)的词汇,同时却使用另-种语言(某种结构化的程序设计语言)的语法。过程设计语言PDL应该具有下述特点。(1)关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,如if(或endif)等。(2)自然语言的自由语法,它描述处理特点。过程设计语言(3)数据说明的手段。应该既包括简单的数据结构(例如变量和数组),又包括复杂的数据结构(如链表或层次的数据结构)。(4)模块定义和调用的技术,应该提供各种接口描述模式。过程设计语言PDL作为一种设计工具有如下优点。(1)可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此,有助于保持文档和程序的致性,提高了文档的质量。过程设计语言(2)可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。(3)已经有自动处理程序存在,而且可以自动由PDL生成程序代码。过程设计语言PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。过程设计语言过程描述语言是介于自然语言和形式语言之间的一种半形式化的语言,它在自然语言基础上加了一些限定,使用有限的词汇和语句来描述加工逻辑,其结构可分成外层和内层两层。外层用来描述控制结构,采用顺序、选择、重复三种基本结构。过程设计语言PDL的语法是开放式的,其外层语法是确定的,而内层语法则不确定。外层语法描述控制结构,它用类似于一般程序设计语言控制结构的关键字:例如:IF-THEN-ELSE

WHILE-

DO

REPEAT-UNTILDOCASE

DOWHILE

等表示。下面是PDL语言的三种形式。(2)选择结构过程设计语言

A

select

cond1Block1(1)顺序结构A

seqA

or

cond2B1ock2Block1A

or

cond3B1ock2Block3A

end其中,seq和end是关键字。Block3A

end其中,select、or和end是关键字,cond1、cond2和cood3是分别执行Block1、Block2和Block3的条件。过程设计语言(3)重复结构A

iter

until

condBlock1A

endA

iter

while

condBlock1A

end其中,iter、until、while和end是关键字,cond是条件。过程设计语言例5.7:下面是一个用PDL语言描述的统计单词数目的例子。解:统计空格seq打开文件程序体end打印总数seq打印出空格总数打印总数end关闭文件读入字符串Totalsum=0程序体iter

unti1文件结束……停止统计空格end过程设计语言程序首先是顺序结构,共7条语句,其中程序体是循环结构。PDL可以很好地表示嵌套结构。过程设计语言结构化语言、判定树、判定表3种工具的适用范围可概括如下。判定树适用于10~15种行动的一般复杂的决策,有时可将判定表转换成判定树,便于用户检查。判定表适合于多个条件的复杂组合。虽然判定表也适用于很多数目的行动或条件组合,但数目庞大时使用也不方便。如果一个判定包含了一般顺序执行的动作或循环执行的动作,则最好用结构化语言表达。面向数据结构的设计方法05面向数据结构的设计方法Jackson开发方法是一种典型的面向数据结构的分析与设计方法。由英国的Jackson提出,该方法特别适合于数据处理类的问题,如信息管理一类的软件系统。面向数据结构的设计方法由于程序加工的是数据结构,程序表述的算法在很大程度上也依赖于作为基础的数据结构。例如记录、表等类型的数据,分量之间是一种顺序结构,程序处理必然是顺序控制结构;数组、文件每个分量占据内存相同且连续存放,程序处理必然是循环结构。所以数据构分层次,程序结构也必然分层,数据结构既影响程序结构又影响程序的处理过程,面向数据结构的设计方法最终目标是得出对程序处理过程的描述。Jackson方法简介Jackson开发方法是一种典型的面向数据结构的分析与设计方法。由英国的Jackson提出,该方法特别适合于数据处理类的问题,如信息管理一类的软件系统。由于程序加工的是数据结构,程序表述的算法在很大程度上也依赖于作为基础的数据结构。例如记录、表等类型的数据,分量之间是一种顺序结构,程序处理必然是顺序控制结构;数组、文件每个分量占据内存相同且连续存放,程序处理必然是循环结构。所以数据构分层次,程序结构也必然分层,数据结构既影响程序结构又影响程序的处理过程,面向数据结构的设计方法最终目标是得出对程序处理过程的描述。Jackson方法简介(1)Jackson图Jackson方法面向数据结构设计,提供了自己的描述工具,这种用图形描述数据结构和程序结构的图形,称为Jackson图。Jackson图既可以用来描述问题的数据结构,也可以描述每个实体执行的动作及其时序,产生一组描述实体进程的Jackson结构图。数据结构图中的方框表示数据,程序结构图中的方框表示模块(过程或函数等)。图5.10为Jackson结构图的三种基本结构表示。Jackson方法简介(a)顺序结构(b)选择结构

(c)循环结构Jackson方法简介①

顺序结构顺序结构的数据是由一个或多个数据元素组成,每个元素按确定次序出现一次,图5.10(a)所示为顺序结构Jackson图的一个例子,图中,A由基本成分B、C、D这3个元素顺序组成(每个元素只出现一次,出现的次序是B、C和D)。Jackson方法简介②

选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个,图5.10(b

)所示为3个条件中选择一个结构的Jackson图。图中,根据条件A是由B或C或D中的某一个。Jackson方法简介③

重复结构重复结构的数据,根据使用时的条件由一个元素出现零次或多次构成。图5.10(c)所示为重复结构的Jackson图。图中,A是由B出现N次(N≥0)组成(注意在B的右上角有星号做标记)。Jackson方法简介Jackson图的优点如下。①

便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;②形象直观可读性好;③

既能表示数据结构也能表示程序结构(因为结构程序设计也只使用上述三种基本结构)。Jackson方法简介(2)改进的Jackson图前面介绍的Jackson

图存在一定的缺点:用这种图形工具表示选择或重复结构时,选择条件或循环结束条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序。此外,框之间连线为斜线,不易在行式打印机上输出。为了解决上述问题,建议使用如图5.11中给出的改进的Jackson图。Jackson方法简介图5.11

改进的Jackson图Jackson方法简介图5.11(a)所示为顺序结构,B、C、D中任一个都不能是选择出现或重复出现的数据元素(即不能是右上角有小圆或星号标记的)。图5.11(b)所示为选择结构,S右面括号中的数字i是分支条件的编号。图5.11(c)所示为可选结构,A或者是元素B或者不出现(可选结构是选择结构的一种常见的特殊形式)。图5.11(d)所示为重复结构,循环结束条件的编号为i。Jackson方法简介请注意,虽然Jackson图和描绘软件结构的层次图形式相当类似,但是含义却不相同:层次图中的一个方框通常代表一个模块;Jackson

图即使在描绘程序结构时,一个方框也并不代表个模块,通常一个方框只代表几个语句。层次图表现的是调用关系,通常一个模块除了调用下级模块外,还完成其他操作;Jackson图表现的是组成关系,即一个方框中包括的操作仅仅由它下层框中的那些操作组成。Jackson方法Jackson结构程序设计方法基本上由下述五个步骤组成。(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。Jackson方法(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。Jackson方法(3)用下述五条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。①

为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。Jackson方法②

根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。③

根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。总之,描绘程序结构的Jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。Jackson方法④

列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。⑤

用伪码表示程序。Jackson方法使用的伪码和Jackson图是完全对应的,是和三种基本结构对应的伪码。如表5.4所示为伪码和Jackson图的对应关系。Jackson方法在导出程序结构图的过程中,由于改进的Jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框。表5.4Jackson方法使用的伪码和Jackson图对应关系和图5.11(a)

所示的顺序

A

seqB结构对应的伪码,其中seq和end是关键字CDA

end和图5.11(b)所示的选择

A

select

cond1B结构对应的伪码,其中select、or和end是关键字,condl、cond2和cond3分别是执行B、C或D的条件A

or

cond2CA

or

cond3DA

end和图5.11(c)

所示的重

A

iteruntil(或while)复结构对应的伪码,其

cond中iter、until、while

B和end是关键字(重复

A

end结构有until和whil两种形式),cond是条件Jackson实例例5.8:在高考管理系统中,将考生的基本情况文件(简称考生情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件。解:第1步:分析并确定输入数据和输出数据的数据结构,并用Jackson图描述这些数据结构,如图5.12所示。Jackson实例(a)输入数据结构的Jackson图(b)输出数据结构的Jackson图图5.12高考管理系统中输入、输出数据结构的Jackson图Jackson实例第2步:找出输入数据结构和输出数据结构中有对应关系的数据单元。Jackson实例对地区考生进行统计,考生情况文件中的考生记录与考分文件中的考生记录的个数、排列次序是相同的。考生新文件中的考生记录的内容来自于考生情况文件和考分文件的相应记录。因此,可以说输入数据结构中的“考生记录”这个数据单元与输出数据结构中的“考生记录”这个数据单元有对应关系。在图中用双箭头线标出,如图5.13所示。Jackson实例图5.13找出输入、输出数据结构中有对应关系数据单元的Jackson图Jackson实例第3步:把数据结构图转换成程序结构图。把描述数据结构的Jackson

图(简称数据结构图)转换成描述程序结构的Jackson

图(简称程序结构图)需要遵从以下3条规则。(1)按照在数据结构图中的层次,在程序结构图的相应层次,为每对有对应关系的数据单元画一个处理框。Jackson实例第3步:把数据结构图转换成程序结构图。把描述数据结构的Jackson

图(简称数据结构图)转换成描述程序结构的Jackson

图(简称程序结构图)需要遵从以下3条规则。(1)按照在数据结构图中的层次,在程序结构图的相应层次,为每对有对应关系的数据单元画一个处理框。(2)根据输入数据结构图中剩余的每个数据单元所处的层次,在程序结构图的相应层次,分别为它们画上对应的处理框。Jackson实例(3)根据输出数据结构图中剩余的每个数据单元所处的层次,在程序结构图的相应层次,分别为它们画上对应的处理框。根据以上规则,由图5.13的数据结构图,画出如图5.14所示的程序结构图。Jackson实例图5.14程序结构图。Jackson实例第4步:列出所有操作和条件,并且把它们分配到程序结构图的适当位值。列出操作和条件:(1)停止

(2)打开两个输入文件(3)建立输出文件

(4)从输入文件中各读“一条记录”(5)生成一条新记录

(6)将新记录写入输出文件(7)关闭全部文件

(8)文件结束Jackson实例把上述操作和条件分配到程序结构图的适当位置。在改进的Jackson图中规定顺序执行的处理中,不允许混有重复执行或选择执行的处理。因此,在“处理考生记录”这个处理框上面,又增加了一个处理框“分析考生记录”。最后得到如图5.15所示的程序结构图。Jackson实例图5.15把操作和条件分配到程序结构图的适当位置Jackson实例第5步:用伪码表示程序。下面是使用Jackson分析方法所使用的伪码写出的与图5.14对应的程序。产生新文件seq打开两个输入文件建立输出文件从输入文件中各读一条记录分析考生记录iter

unil文件结束处理考生记录seq产生准考证号Jackson实例产生姓名产生通信地址产生考分生成一条新记录将新记录写入输出文件从输入文件中各读一条记录处理考生记录end关闭全部文件停止产生新文件end程序结构复杂性的定量度量06McCabe方法McCabe方法是一种软件质量度量方法,它是基于对程序拓扑结构复杂度的分析。McCabe于1976年指出:一个程序的环形复杂程度取决于它的程序图(流图)

包含的判定结构的数量。定义中所谓的环形复杂度是指根据程序控制流的复杂程度度量程序的复杂程度。程序图是指退化的程序流程图,仅仅描述程序的控制流程,完全不表现对数据的具体操作以及分支或循环的

温馨提示

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

评论

0/150

提交评论