《软件详细设计教程》由会员分享,可在线阅读,更多相关《软件详细设计教程(42页珍藏版)》请在金锄头文库上搜索。
1、软件设计基本概念软件设计工作内容概要设计详细设计 将软件需求转化为软件体系结构, 确定系统级接口、全局数据结构或 数据库模式。 确立每个模块的实现算法、局部数 据结构,用适当方法表示算法和数 据结构的细节。 第5章 软件详细设计5.1 概述详细设计必须无歧义的描述过程单位细节,而自然 语言不具有单义性,所以,必须使用设计描述工具.图形工具:把过程的细节表示成一个图的组成部分。列表工具:用一个表来表示过程的细节,表中列出了输入、 处理和输出的信息。语言工具:用类语言(接近编程语言)来表示过程的细节。数据描述软件结构描述软件的程序过程描述5.2 结构化构造详细设计中应采用合适的方式来描述模块 内问
2、题解决过程的细节,采用结构化的 图形设计表示法是人们易于使用、易于 理解的方式。结构化程序设计技术是60年代中期提出来 的,它主要包括两个方面: 在编写程序时,强调使用几种基本控制 结构,通过组合嵌套,形成程序的控制 结构。尽可能避免使用会使程序质量受 到影响的GOTO语句。 在程序设计过程中,尽量采用自顶向下 和逐步细化的原则,由粗到细,一步步 展开 结构化程序设计(Structured Programming)的主要原则 有: 使用语言中的顺序、选择、重复等有限的基本控制结构表 示程序逻辑。 选用的控制结构只准许有一个入口和一个出口。 程序语句组成容易识别的块,每块只有一个入口和一个出 口
3、。 复杂结构应该用基本控制结构进行组合嵌套来实现。 语言中没有的控制结构,可用一段等价的程序段模拟,但 要求该程序段在整个系统中应前后一致。 严格控制GOTO语句,仅在用一个非结构化的程序设计语 言去实现一个结构化的构造,或者在某种可以改善而不是损 害程序可读性的情况下才可以使用GOTO语句。 if ( A = B else printf (“%d“, C );这种程序结构清晰,可读性好。5.3 图形设计工具5.3.1 程序流程图详细设计标准流程图符号我国国家标准局批准的国家标准(GB1525-89) 流程图符号:详细设计5.3.2 方块图(N-S图)Nassi和Shneiderman 提出了
4、一种符合结构化 程序设计原则的图形描述工具,叫做盒图,也 叫做N-S图。为表示五种基本控制结构,在N- S图中规定了五种图形构件。 为说明N-S图的使用,仍用图给出实例,将 上述流程图用N-S图表示。 如前所述,任何一个N-S图,都是前面介绍 的五种基本控制结构相互组合与嵌套的结果。 当问题很复杂时,N-S图可能很大。N-S图的特点明确规定功能域即某一具体构造的功能 范围,并且很直观地从图形表示中看出 来。不可能随意分支或转移可以很容易地确定局部数据和全程数据 的作用域容易表示出递归结构5.3.3 HIPO图( Hierarchy plus Input Process Output ) 层次加
5、输入-处理-输出HIPO最初只用做文档编写的格式要求,随后 发展成比较有名的软件设计手段。HIPO图采 用功能框图和PDL来描述程序逻辑,它由两部 分组成:可视目录表和IPO图。可视目录表给 出程序的层次关系,IPO图则为程序各部分提 供具体的工作细节。 HIPO能够表示输入/输出数据与软件的过程之 间的关系。1、可视目录表 可视目录表由体系框图、图例、描述说 明三部分组成。 (1) 体系框图又称层次图(H图),是可视目录表的主体,用它表明 各个功能的隶属关系。它是自顶向下逐层分解得到的,是一 个树形结构。它的顶层是整个系统的名称和系统的概括功能 说明;第二层把系统的功能展开,分成了几个框;第
6、二层功 能进一步分解,就得到了第三层、第四层,直到最后一 层。每个框内都应有一个名字,用以标识它的功能。还应有 一个编号,以记录它所在的层次及在该层次的位置。一般每 层画3-10个功能模块为宜。(2) 图例每一套HIPO图都应当有一个图例,即图形符号说明。 附上图例,不管人们在什么时侯阅读它都能对其符号的意义 一目了然。 (3) 描述说明它是对层次图中每一框的补充说明,在必须说明时才用 ,所以它是可选的。描述说明可以使用自然语言 2、IPO图 IPO图为层次图中每一功能框详细地指明输 入、处理及输出。通常,IPO图有固定的格式 ,图中处理操作部分总是列在中间,输入和输 出部分分别在其左边和右边
7、。由于某些细节很 难在一张IPO图中表达清楚,常常把IPO图又 分为两部分,简单概括的称为概要IPO图,细 致具体一些的称为详细IPO图。 概要IPO图用于表达对一个系统,或对其中 某一个子系统功能的概略表达,指明在完成某 一功能框规定的功能时需要哪些输入,哪些操 作和哪些输出。图3.35是表示销售/盘存系统第 二层的对应于H图上的1.1.0框的概要IPO图。在概要IPO图中,没有指明输入处理 输出三者之间的关系, 用它来进行下一 步的设计是不可能的。故需要使用详细 IPO 图以指明输入处理输出三者之 间的关系,其图形与概要IPO图一样,但 输入、输出最好用具体的介质和设备类 型的图形表示。图
8、3.36是销售/盘存系统 中对应于1.1.2框的一张详细IPO图。3、利用HIPO进行迭代式细化设计 在软件设计时,解决设计问题通常需要经历一个认 识逐步发展的过程,并且对一些问题还要经过反复的 考虑才可能达到比较满意的设计效果。我们称此为迭 代式细化设计。HIPO能很好地适应这一要求。图4.37 是利用HIPO进行迭代式细化设计的示意图。从图中可 看到,把可视目录表和IPO图结合起来,反复交替地使 用它们,可使得设计工作逐步深化,最终取得完满的 设计结果。其实这正是自顶向下,逐步求精的结构化 程序设计思想。 HIPO有自己的特点。首先,这一图形表达方法容 易看懂。其次,HIPO的适用范围很广
9、,绝不限于详细 设计。事实上,画可视目录表就是与概要设计密切相 关的工作。如果利用它仅仅表达软件要达到的功能, 则是需求分析中描述需求的很好的工具。因为HIPO是 在开发过程中的表达工具,所以它又是开发文档的编 制工具。开发完成后,HIPO图就是很好的文档,而不 必在设计完成以后,专门补写文档。5.3.4 PAD图PAD是Problem Analysis Diagram的缩写,它是日本日立公司 提出,由程序流程图演化来的,用结构化程序设计思想表现 程序逻辑结构的图形工具。现在已为ISO认可。PAD基于PASCAL的控制结构,以二维树的形式描述程序的 逻辑,程序结构清晰,能够直接导出程序代码。P
10、AD采用自定向下、逐步求精和结构化设计的原则,力求将 模糊的问题解逐步转换成确定的、详尽的过程,最终可用计 算机进行处理。 PAD也设置了五种基本控制结构的图式,并允许递归使用。 做为PAD应用的实例,图给出了上图程序的PAD表示。 PAD所描述程序的层次关系表现在纵线上。每条纵线表 示了一个层次。把PAD图从左到右展开。随着程序层次 的增加,PAD逐渐向右展开。 PAD的执行顺序从最左主干线的上端的结点开始, 自上而下依次执行。 每遇到判断或循环,就自左而右进 入下一层,从表示下一层的纵线上端开始执行,直到该 纵线下端,再返回上一层的纵线的转入处。如此继续 ,直到执行到主干线的下端为止。PA
11、D图优点:层次关系清楚、易读易写使用方便、可自 动生成程序。在有PAD系统的计算机上,可直接输入 PAD图,机器自动遍历树并生成相应的源代码。5.4 伪码与程序设计语言伪码(Pseudo-Code)是控制结构和某些其他编程语言元素的简写符 号,可以任意插入注释而且常采用语句而不 是表达式,所以,伪码实质上是“文字流程 图”。例: PL/1中Do循环是:DO i=1 TO N; ;END, 而使用伪码编写为:DO (对每个元素) 。 PDL ( Program Design Language ) PDL是一种用于描述功能模块的算法设计 和加工细节的语言。称为过程设计用语言。 它是一种伪码。一般地
12、,伪码的语法规则分 为“外语法“和“内语法“。外语法应当符合一般 程序设计语 言常用语句的语法规则;而内语 法可以用英语中一些简单的句子、短语和通 用的数学符号,来描述程序应执行的功能。 使用PDL语言,可以做到逐步求精:从比 较概括和抽象的PDL程序起,逐步写出更详细 的更精确的描述。PROCEDURE spellcheck IS 查找错拼的单词 BEGIN split document into single words 把整个文档分离成单词 lood up words in dictionary 在字典中查这 些单词 display words which are not in dict
13、ionary显示字典中查不到的单词 create a new dictionary造一新字典 END spellcheck伪代码的例子伪代码的例子PDL作为一种用于描述程序逻辑设计的语言,具有以 下特点: 有固定的关键字外语法,提供全部结构化控制结构 、数据说明和模块特征。属于外语法的关键字是有限 的词汇集,它们能对PDL正文进行结构分割,使之变 得易于理解。为了区别关键字,规定关键字一律大写 ,其它单词一律小写。 内语法使用自然语言来描述处理特性。内语法比较 灵活,只要写清楚就可以,不必考虑语法错,以利于 人们可把主要精力放在描述算法的逻辑上。 有数据说明机制,包括简单的(如标量和数组)与
14、复杂的(如链表和层次结构)的数据结构。 有子程序定义与调用机制,用以表达各种方式的接 口说明。5.5各种详细设计工具的比较流程图方块图PAD图PDL判定表易使用性 好 不好 好 很好 尚好 逻辑表示 尚好 好 好 好 很好 逻辑验证 不好 尚好尚好 尚好 很好 易编码 尚好 好好 很好 好 可读性 不好 不好尚好 很好很好 可修改性 不好 不好尚好 好 好 结构化 不好 很好好 好不能适用 使用频率 高 低低 中等 低 数据表示 不好 不好不好 尚好 不好5.6 详细设计文件与复审详细设计完成,这一阶段应交付的文件有l详细设计说明书l初步的模块开发卷宗 5.6.1详细设计说明书编写内容:l第一
15、章 引言l编写目的l背景l定义l第二章 程序系统的结构l第三章 程序1的设计l程序描述l功能l性能l输入项l输出项l算法l流程逻辑l接口l存储分配l注释设计l限制条件l测试计划l尚未解决的问题l第四章l用类似第三章的方法,说明第二个程序乃至第N 个程序的设计考虑 。 。 。5.6.2 详细设计的复审从正确性和可维护性对它的逻辑、数据结构和 界面等进行检查l设计者和设计组的另一个成员一起进行静态检查l由一个检查小组进行的较正式的“结构设计检查”l由检查小组进行的正式“设计检查”,对软件设计 质量 给出严肃的评价。l在详细设计复审中,不为设计辩护,而是揭 短,揭露出设计中的缺点错误。5.7 小结结构化构造l顺序、条件、重复详细设计的工具l图形、列表、语言l流程图、方块图、HIPO图和PAD图、PDL语言 和判定表等详细设计产生的主要文件是详细设计说 明书