• 沒有找到結果。

软件工程 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "软件工程 - 万水书苑-出版资源网"

Copied!
25
0
0

加載中.... (立即查看全文)

全文

(1)第 5 章 软件详细设计. 【本章引言】 软件设计是软件工程的核心技术。与其他领域的工程设计一样,也需要有好的 分析策略和好的方法等。从项目管理的角度来看,软件设计分为总体设计(Preliminary Design)和详细设计(Detail Design)。前面一章介绍了总体设计,总体设计完成的是 软件系统的总体设计,规定了各个模块的功能及模块之间的联系,而接下来介绍的 软件详细设计也称为模块设计、物理设计,是指体系结构选择阶段之后所进行的技 术性的活动。在此期间对每个模块(或类)进行详细设计。详细设计中除了体系结 构设计和过程设计之外,许多现代应用系统里还包括人机交互界面设计。换句话说, 详细设计主要集中在体系结构表达式的细化,选择详细的数据结构和算法。 【本章重点】 z z z. 软件详细设计的任务及步骤 软件详细设计的图形工具 软件详细设计的方法. 【学习目标】 z z z z. 了解软件详细设计的任务及步骤 了解 PDL 语言的使用 掌握程序流程图、N-S 图、PAD 图、判定树及判定表 掌握 Jackson 设计方法和 Warnier 设计方法及其设计过程. 5.1 详细设计概述 5.1.1. 详细设计的任务. 软件设计是一个把软件需求转换为软件表示的过程。这种表示先勾勒出软件的框架模块, 然后,为软件结构图中的每个模块确定所必需的算法和详细的数据结构,最终给出程序设计蓝 图,也就是所谓的详细设计阶段。从技术的角度划分,详细设计可以分为数据设计、系统结构 设计以及过程代码设计。 具体的说,详细设计阶段就是要确定如何具体实现所需求的系统,得到一个接近于源代 码的软件表示。这一阶段需要完成的任务,具体地讲有以下几个方面: (1)确定为实现系统每个模块功能需求所使用的算法和模块间的控制方式(性能设计)。 算法的性能设计评测主要指标包括周转时间、响应时间、吞吐量和精度四个方面。.

(2) ▌▎软件工程 ▎▌. (2)结合算法设计,确定详细的数据结构。 (3)分析软件各部分之间的联系,确认接口,复审详细说明书。 (4)对详细设计进行评审,为编码阶段做准备。 5.1.2. 详细设计的步骤. 详细设计从体系结构设计阶段开始,直到得到一张编码阶段之前的详细完整的设计图。第 一步,设计领域类和结构类中相关的类和模式。第二步,细化模型以确保拥有一个完整的设计, 并为每个类指定必需的属性类型和操作。第三步,使用详细设计描述工具(如程序流图、N-S 图和 PAD 图等)为每个类的每一个需求指定一个最优的方法。第四步,拟定单元测试计划, 确定单元测试的范围和优先级。第五步,评审类、方法的属性(名称、返回值和参数类型)以 及多个模型之间的类和方法的关系,记录数据错误的类型及严重性。如图 5-1 所示,即为软件 详细设计过程。. 图 5-1. 详细设计步骤. 5.2 详细设计的图形描述工具 描述程序处理过程的工具称为详细设计的工具,无论哪种工具,对它们的基本要求都是 能够提供对设计的准确描述,能够指明控制流程、处理功能、数据组织以及实现细节,从而到 了编码阶段就能达到把对设计的描述直接翻译成程序代码。 详细设计中的算法描述理论上讲应 该采用自然语言来表达,但是“一图胜千言”(一张清晰的图形形象,胜过一千句话的描述)。 对于不熟悉软件的人来说,理解算法规格说明时, 还要考虑到语法语义以及上下文的过程细节, 实在太过复杂。这样,详细设计中就引入了图形描述工具,可以通过图形模式很容易地给出算 法过程细节。图形描述工具又称为详细设计工具,目前流行的工具可以分为三类: z 图形工具:如程序流程图、盒图、PAD 图、序列图、数据流图。 z 表格工具:如判定表。 z 语言工具:如程序设计语言 PDL。 - 76 -.

(3) ▌▎第 5 章. 5.2.1. 软件详细设计 ▎▌. 程序流程图. 程序流程图又称为程序框图,是详细设计中最古老、使用最广泛的图形描述工具。是流 经一个系统的信息流、观点流或部件流的图形代表。 流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和 符号表示操作的内容,流程线表示操作的先后次序。其图形绘制简单,最常用的流程图结构是 矩形和菱。矩形称为处理,代表一个处理步骤;菱形称为决策,代表一个逻辑判断条件。例如, 在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是 完成一项任务必需的管理过程。一张流程图能够成为解释某个零件的制造工序,甚至组织决策 制定程序的方式之一。这些过程的各个阶段均用图形块表示,不同图形块之间以箭头相连,代 表它们在系统内的流动方向。下一步何去何从,要取决于上一步的结果,典型做法是用“是” 或“否”或者“真”或“假”的逻辑分支加以判断。 对于流程图所使用的符号,为了统一,国际标准化组织提出并被中国国家技术监督局批 准,规定了一些程序流程图标准符号,如图 5-2 所示。. 处理. 条件判断. 文档. 准备. 控制流. 输入输出. 预先定义的处理. 开始或停止. 外连接. 并行方式 图 5-2. 循环上界. 内连接. 循环下界. 标准程序流程图的规定符号. …. 1966 年 Bohm 和 Jacopini 提出了只用 3 种基本的控制结构就可以实现单入口、单出口的 结构程序。这 3 种基本控制结构是顺序型结构、选择型结构以及 循环型结构。1972 年 IBM 公司的 Mills 进一步从理论上论证了问 处理 1 题的任何算法都可以综合表示为上述结构化构造。由此,使用流 程图描述结构化程序,规定任何复杂的程序流程图都可由以下 3 处理 2 种基本控制结构组成。 1.顺序型结构 顺序结构由带箭头的控制线依次连接几个处理方框构成。流 程如图 5-3 所示。 处理 n 2.选择型结构 选择型结构是流程图中最为常用的结构,其结构构造有两种, 图 5-3 顺序结构流程图 一种是条件选择结构又称为 If-Then-Else 结构,使用菱形表现逻辑 - 77 -.

(4) ▌▎软件工程 ▎▌. 判定条件,条件结果决定选择两个处理方框中的一个。具体的说,条件为真,处理 Then 部分 控制线的方框;条件为假,处理 Else 部分控制线的方框。流程如图 5-4 所示。另一种是多向 选择结构,又称为 Select-Case 结构,是条件选择结构的扩展形式,列举多种判定情况,一个 参数被连续的判定,然后根据控制变量的取值,选择执行其一。流程如图 5-5 所示。. 图 5-4. 图 5-5. 条件选择结构流程图. 多向选择结构流程图. 3.循环型结构 重复执行某种功能的程序时就用到循环结构,流程图中循环型结构分为两种,一种是先 判定型循环,又称为 Do-While 型循环结构,测试一个循环控制条件为真时,就重复执行特 定的处理。流程如图 5-6 所示。另外一种是后判定型循环,又称为 Repeat-Until 型循环结构, 先重复执行特定的处理,然后测试条件,直到循环控制条件为真时,停止执行。流程如图 5-7 所示。. 图 5-6. 图 5-7. 先判定型循环结构流程图. 后判定型循环结构流程. 以上 3 种结构的流程图通常不会单独使用,都是相互结合和嵌套使用,如图 5-8 所示给出 了一个结构化程序流程图。图中增加了一些以虚线构成的框,便于理解控制结构的结合嵌套关 系。为了便于更好地理解结构化流程图的使用,本书随后又给出了一个关于合同评审的实例, 详细流程如图 5-9 所示。 - 78 -.

(5) ▌▎第 5 章. 图 5-8. 5.2.2. 软件详细设计 ▎▌. 综合嵌套结构流程图. N-S 图. Nassi 和 Schneiderman 提出了一种符合结构化程序设计原则的图形描述工具,称为 N-S 图, 又叫盒图。其基本元素是盒,也就是形象化的矩形,盒图没有箭头,因此不允许随意转移控制, 解决了流程图中控制流箭头的随意性的缺点。盒图具有以下显著特征:①图中矩形框明确定义 功能域;②控制流不能够任意转移控制;③很容易确定局部和全局作用域;④易于表现嵌套关 系和模块层次结构。 盒图也分为 3 种基本控制结构,两个盒(矩形)或多个盒的顶部底部连接起来表示顺序 结构;条件盒下边紧接着一个 Then 盒和一个 Else 盒表示条件选择结构;多向选择结构跟条件 选择结构盒图类似,就是 Case 条件盒下边紧接着 n 个条件取值盒;循环结构式采用了划界的 方式,把 Do-While 循环和 Repeat-Until 循环部分分别框于盒的上部和下部表示重复构造的过 程。结构复杂时,一个盒图不能够完整地表述细节,可以在图中相应位置用椭圆框出子调用的 从属模块,从属模块部分可以在另外的盒图中进一步展开表述。具体的盒图的结构化构造的图 形表达式如图 5-10 所示。 - 79 -.

(6) ▌▎软件工程 ▎▌. 图 5-9. 合同评审程序流程图实例. 图 5-10. 盒图的基本控制结构. 为了说明 N-S 图的使用以及和其他图形工具的区别,这里仍然使用相同的例子(图 5-8 综 合嵌套结构流程图)来描述盒图的表示,如图 5-11 所示。. - 80 -.

(7) ▌▎第 5 章. 软件详细设计 ▎▌. 图 5-11 综合嵌套结构 N-S 图. 5.2.3. PAD 图. PAD 图是问题分析图(Problem Analysis Diagram)的英文缩写,它使用二维树型结构的 图形来描述程序的逻辑,比流程图更容易读懂,结构清晰。PAD 图中从左竖线上端的节点开 始执行,自上而下,从左及右顺序执行,遍历所有节点来表示程序的控制流。因此,程序中包 含的层次数就是 PAD 图的竖线数,一目了然。 PAD 图是面向高级程序设计语言的,为 BASIC 和 C 语言等常用高级编程语言提供了相应 的基本图形图式,每个图式都有相应的控制语句标准模式与之对应,有了 PAD 图的基本图式, 根据系统的要求就可以画出系统的 PAD 图,然后根据语言的标准模式进行编程就可以很轻松 地得到相应的源程序。 PAD 图也分为 3 种控制结构,其结构图式如图 5-12 所示。. 图 5-12. PAD 图的结构的基本图式. PAD 图的执行顺序从最左侧上端的节点开始,每遇到判断选择和循环时,就自左而右进 入下一层,从下一层的竖线上端节点开始执行,直至该竖线的下端,再返回上一层的竖线的转 - 81 -.

(8) ▌▎软件工程 ▎▌. 入处。如此反复,直到主干线的最下端节点为止。 作为 PAD 应用的实例,这里仍然使用相同的例子(图 5-8 综合嵌套结构流程图)来描述 PAD 图的表示,如图 5-13 所示。. 图 5-13. PAD 图式. 目前,使用 PAD 图编程有两种方式,一种是 PAD 图由人工写入;另一种是在有 PAD 图 系统支持的计算机系统上,直接输入 PAD 图,机器随即就自动生成语言的源程序。 5.2.4. 过程设计语言 PDL. PDL 是过程设计语言(Program Design Language)的英文缩写,又称为伪码(Pseudocode), 是一种具有正式格式数据表示和处理过程的设计工具,更像高级语言,用于描述功能模块的算 法设计和加工细节。它采用某种语言(如英语、汉语等)的词汇,同时采用另一种结构化编程 语言的全部语法,并把说明性的文字直接嵌入到 PDL 语句里。 伪码的语法规则一般分为“外语法”和“内语法”,PDL 就是这样的伪码,它具有严格的 关键字外部语法,用于定义控制结构和数据结构;同时表示实际操作和条件的内部语法又是灵 活自由的,可以使用自然语言词汇,适应各种工程项目的需要。 PDL 作为一种用于描述程序设计逻辑的语言,可以是语言的简化版本,比如 PDL/C,但 是无论怎样,都应该具备以下特征: z 关键字必须具备固定语法,以便提供了结构化控制结构、数据说明和模块化的特点。为了 使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字等。 z 内语法使用自然语言描述处理特性,语法自由。 z 数据说明的手段。应该既包括简单的数据结构(如标量和数组),又包括复杂的数据 结构(如链表或层次的数据结构)。 z 模块子程序的定义和调用的技术,提供各种接口描述。 以下引用一个很多教材所使用的 PDL 的实例,抛砖引玉。 例如:查找拼错单词的程序。 ------------------------------------------------------------------------------Procedure spell check is Begin. - 82 -.

(9) ▌▎第 5 章. 软件详细设计 ▎▌. split document into single words look up words in dictionary display words which are not in dictionary treat a new dictionary End spell check -----------------------------------------------------------------------------Procedure 查找拼错单词 Begin 把整个文件分离成单词 查字典找到这些单词 显示字典中查不到的单词 创建一个新字典 End ------------------------------------------------------------------------------. 由此例的 Procedure、Begin-End 不难看出,PDL 的基本语法是有具体规定的,至少应该 包括:数据说明、块构造技术、子程序定义、条件构造、循环构造、接口描述和 I/O 构造。接 下来,就来具体介绍 PDL 的格式和语义。 1.数据说明 在 PDL 程序中它的功能是指明数据的类型及作用域。 其格式为:Type<变量名>Is<限定词 1><限定词 2> 说明:变量名是一个模块内部使用的变量或模块间共用的全局变量; <限定词 1>标明数据类型,如 SCALAR 标量、ARRAY 数组、LIST 列表、STRING 字符、 STRUCTURE 结构;<限定词 2>标明该变量的作用域。 例如,Type number Is STRING LENGTH(12)。 2.块程序结构 PDL 的过程元素是由块结构构成的,而块将作为一个单个的实体来执行。 其格式为:Begin<程序块名> <PDL 语句> End 3.输入/输出描述 PDL 中输入/输出说明语句十分灵活,变化也很多。 其格式为:Read/Write To <设备> <I/O 表> 或者 Ask <询问>Answer <响应选项> 说明:<设备>表示物理的 I/O 设备,如磁盘、打印机; <I/O 表>表示被传送的变量。 例如,Ask "select the target direction" Answer "left","right"。 I/O 输入输出描述通常可以扩充,如音频输出、面向窗口、下拉菜单界面等。 4.子程序结构 把 PDL 中的过程称为子程序。 其格式为:Procedure<子程序名><属性> Interface<参数表> - 83 -.

(10) ▌▎软件工程 ▎▌. < PDL 语句> End 说明:属性描述了它的引用特征以及其他相关属性。Interface 是用来确定模块的自变量参 数表,包括所有输入输出信息的标识符。 5.基本控制结构 用 PDL 表示的程序结构一般有以下几种: (1)顺序结构:语句按顺序先后执行。 (2)条件选择结构:PDL 的条件构造,采用 If-Then-Else 的形式。 其格式:If <决策条件> Then< PDL 语句或处理 S1> Else < PDL 语句或处理 S2> Endif 决策条件为真值时,执行 Then 后边的语句;决策条件为假值时,执行 Else 后边的语句。 If-Then-Else 是可以嵌套使用的。 下面以某系统主控模块详细设计为例,说明如何用 PDL 来描述。 Procedure 模块名( ) 清屏; 显示 xx 系统用户界面; Put("请输入用户口令:"); Get(password); If password< >系统口令 Then 提示警告信息; 退出运行 Endif 显示本系统主菜单; While(true) 接收用户选择 ABC; If ABC="退出" Break; Endif 调用相应下层模块完成用户选择功能; Endwhile 清屏; Return End (3)多向选择 Case 结构:条件很多的情况下,不能仅仅依赖真值和假值来判断语句执行 方向,或者 If 嵌套的一组语句,往往会选择应用 Case 结构。 其格式:Case Of <case 变量名>; - 84 -.

(11) ▌▎第 5 章. 软件详细设计 ▎▌. When <case 条件 1>Select <PDL 语句>; When <case 条件 2>Select <PDL 语句>;. # When < case 条件 n>Select <PDL 语句>; Default: <PDL 语句> Endcase 此种结构首先针对的是一组条件来测试一个专门的参数变量,如果满足一个条件,就可 以执行与此条件对应的 PDL 语句。 (4)重复结构: PDL 的重复结构包括后测试循环(PostTest Loops)、先测试循环(Pretest Loops)和下标 循环(Index Loops)3 种循环。 1)后测试循环(Posttest Loops) 其格式:Repeat Until <循环条件> <PDL 语句> Endrep 或者 Do Loop <PDL 语句> Exit When<循环条件> End Loop 2)先测试循环(Pretest Loops) 其格式:Do While <循环条件> <PDL 语句> Enddo 3)下标循环也称为索引增量型循环(Index Loops) 其格式:Do For <下标=下标列表、表达式或者序列> <PDL 语句> Endfor 代码举例如下: Begin Enter a vector Set Maximum to the value of the first element in the vector Do For each second one to the last If value of element is greater than the Maximum value Then Set Maximum to the value of the element Endif Endfor Print the Maximum value End. - 85 -. Input arrayA Max=A(1) Do For i=2 to n IF Max<A(i) Set Max=A(i) Endif Endfor Print Max.

(12) ▌▎软件工程 ▎▌. 从以上例子可以看到 PDL 的总体结构与一般程序完全相同。外语法同相应程序语言一致, 内语法使用自然语言,易编写,易理解,也很容易转换成源程序。 PDL 作为一种设计工具有如下一些优点: ①可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也 相应地修改 PDL 注释,因此有助于保持文档和程序的一致性,提高了文档的质量。 ②可以使用普通的正文编辑程序或文字处理系统,很方便地完成 PDL 的书写和编辑 工作。 ③已经有自动处理程序存在,而且可以自动由 PDL 生成程序代码。 虽然 PDL 不是详细设计的唯一工具,但是在帮助发现设计中的缺陷,容易生成文件以及 改动方便方面具有不可比拟性。而 PDL 的缺点则是不如图形工具形象直观,描述复杂的条件 组合与动作间的对应关系时,不如判定表清晰简单。 5.2.5. 判定表和判定树. 1.判定表 判定表(Decision Table)也是描述加工的一种图形工具,呈表格形。当描述数据流中的 加工时,如果判断的条件较多,各条件又相互组合,相应采取的措施(策略)较多,在这种情 况下用程序流程图、盒图、PAD 图或者 PDL 都不易清楚描述,然而采用判定表来描述这类处 理逻辑比较合适,它表达清晰、简洁。 判定表的编制,首先要明确加工处理的功能与目标,然后要识别影响策略的各项因素即 条件,列出这些因素可能出现的状态,并制定出判定的规则。 判定表共分四大部分,如图 5-14 所示:. ①基本条件. ②条件项. ③基本动作. ④动作项. 图 5-14. 判定表组成图. 判定表由四部分组成。第一部分即①表示的部分,判定表的左上部称为基本条件项,列 出各种可能的条件。第二部分即②表示的部分,判定表的右上部称为条件项,它列出了各种可 能的条件组合。第三部分即③表示的部分,判定表的左下部称为基本动作项,它列出了所有的 操作。第四部分即④表示的部分,判定表的右下部称为动作项,它列出在对应条件组合下所选 的操作。 以下面学生的奖学金评定为例,说明判定表的组织方法和应用。奖励的目的在于鼓励学 生的品学兼优,此处理功能是要合理确定奖学金评定等级。决定受奖的条件为:成绩优秀占 70%或 50%以上,成绩为中或中以下占 15%或 20%以下,团结纪律为优良或一般者。奖励方 案为一等奖、二等奖、三等奖、鼓励奖四种。因为受奖条件有些是相容的,相互组合的项较多。 描述此学生奖励政策的判定表如表 5-1 所示。. - 86 -.

(13) ▌▎第 5 章. 软件详细设计 ▎▌. 表 5-1 学生奖励政策的判定表. 条件. 已修课程 各科成绩 比率 团结纪律 评分. 优秀≥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. N. 一般. N. Y. N. Y. N. Y. N. Y. *. *. 一等奖 奖励 方案. 状态. *. 二等奖. *. 三等奖. *. *. 判定 规则. *. 鼓励奖. *. 由表 5-1 可见,判定表将比较复杂的决策问题简洁、明确、一目了然地描述出来,它是描 述条件比较多的决策问题的有效工具。判定表能够把一定条件下系统应做的动作准确无误的表 示出来,但是不能描述循环的处理特性,循环处理还需结构化语言。 2.判定树 判定树又称决策树,是一种描述加工的图形工具,适合描述问题处理中具有多个判断, 而且每个决策与若干条件有关。使用判定树进行描述时,应该从问题的文字描述中分清哪些是 判定条件,哪些是判定的决策,根据描述材料中的连接词找出判定条件的从属关系、并列关系、 选择关系,根据它们构造判定树。判定树本质上同判定表是一样的,当用户不易接受判定表这 种描述方式时,可以用判定树的形式,判定树是一种图形表示,更易被用户理解。下面给出判 定表如表 5-2 所示。 表 5-2 货单操作判定表 规则 条件. 操作. 1. 2. 3. 4. 发货单金额. >$500. >$500. ≤$500. ≤$500. 赊欠情况. >60 天. ≤60 天. >60 天. ≤60 天. 不发出批准书. √. 发出批准书. √. √. √. 发出发货单. √. √. √. 发出赊欠报告. √. 其对应的判定树如下: 金额>$500 检 查 发货单 金额≤$500. 欠款>60 天 ── 不发出批准书 欠款≤60 天 ── 发出批准书、发货单 欠款>60 天 ── 发出批准书、发货单及赊欠报告 欠款≤60 天 ── 发出批准书、发货单. 这一判定树比起文字叙述,使人一目了然,清晰地表达了在什么情况下采取什么策略, 不易产生逻辑上的混乱。因而判定树是描述基本处理逻辑功能的有效工具。 - 87 -.

(14) ▌▎软件工程 ▎▌. 判定表或判定树都是以图形形式描述数据流的加工逻辑,它结构简单,易懂易读。尤其 遇到组合条件的判定,利用判定表或判定树可以使问题的描述清晰,而且便于直接映射到程序 代码。在表达一个加工逻辑时,判定树、判定表都是好的描述工具,根据需要可以交叉使用。. 5.3 Jackson 设计方法 5.3.1. Jackson 方法概述及其图例. 1975 年,M.A.Jackson 提出了一种至今仍广泛使用的软件开发方法。这一方法从目标系统 的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构 图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处 理。该方法也可与其他方法结合,用于模块的详细设计。 Jackson 方法有时也称为面向数据结构的软件设计方法,简称 JSP 方法。Jackson 方法定义 了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软 件的过程描述,即程序结构。 Jackson 方法把问题分解为可由 3 种基本结构形式表示的各部分的层次结构。3 种基本的 结构形式就是顺序、选择和重复。3 种数据结构可以进行组合,形成复杂的结构体系。 Jackson 系统开发方法(JSD,Jackson System Development)是一种典型的面向数据结构 的分析设计方法。Jackson 系统开发方法的系统模型就是相互通信的一组进程的集合。进程间 的通信方式有以下 3 种: z 进程同步发生。 z 通过数据通道发送/接收活动发生。 z 访问公用存储信息。 Jackson 图对于种类繁多的程序中使用的数据结构,各数据元素之间的逻辑关系只有顺序、 选择、重复 3 种,所以逻辑数据结构也只有 3 种,如图 5-15 所示。 A. B. C. A. B0. D. 顺序结构. C0 选择结构. 图 5-15. A. D0. B* 循环结构. Jackson 图的 3 种结构. 顺序结构。 z 选择结构。 z 循环结构。 Jackson 图的缺点是:用这种图形工具表示选择或重复结构时,选择条件或循环结束条件 不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序,此外,框间连 线为斜线,不易在行式打印机上输出。以下是设计的改进的 Jackson 图,如图 5-16 所示。 z. - 88 -.

(15) ▌▎第 5 章 A. 软件详细设计 ▎▌. A. A S(i). B. C. B0. D. I(i). C0. 顺序结构. D0. B*. 选择结构 图 5-16. 循环结构. 改进的 Jackson 图. 举例描述,使用 Jackson 图表示数据结构。用 Jackson 图表示如表 5-3 所示的二维表格。 表 5-3 学生点名册 姓名. 性别. 班级. 学号. 表头 …. …. …. …. 表体. 这个 Jackson 图首先声明了该学生名册表格由表头和表体两部分组成。其中表头又顺序包 括表名和字段名。而表体可由任意行(0 行或多行)组成,每行包括学生的姓名、性别、班级 和学号。班级是本科生的,学号项是本科生学号;班级是研究生的,学号项是研究生学号。 例如,要用 Jackson 图表示产生上面的学生名册文件的程序的程序结构:把学生名册生成 为一个计算机文件,则该程序结构可以用如图 5-17 所示的 Jackson 图来表示。 学生名册. 表头. 表名. 表体. 字段名. 姓名. *. 行. 性别. 班级. 学号. 1 图 5-17. 用 Jackson 图表示学生名册. Jackson 伪代码表示方法有 3 种,对应的 Jackson 结构图如图 5-18 所示。 - 89 -. n.

(16) ▌▎软件工程 ▎▌ A Seq Do B Do C A End. A. B. A. B0. C (a)顺序结构. C0. A Select Do B0 Or Do C0 A End. (b)选择结构 图 5-18. A. A Iter(While or Until) Do B A End. B* (c)循环结构. 三种结构 Jackson 图表示. 1.顺序结构 顺序结构的伪码如下,其中 Seq 和 End 是关键字: A Seq B C D A End. 2.选择结构 Select、Or,和 End 是关键字,Cond1、Cond2 和 Cond3 分别是执行 B、C 或 D 的条件。 选择结构对应的伪码如下: A Select Cond1 B A Or Cond2 C A Or Cond3 D A End. 3.循环结构 Iter、Until、While 和 End 是关键字(循环结构有 Until 和 While 两种形式),Cond 是条件, 重复结构对应的伪码图像如下: A Iter Until(或 While) Cond B A End. 下面以招干成绩单为例描述 Jackson 图的设计方法。 输入数据结构的 Jackson 图如图 5-19 所示。. 图 5-19. 输入数据结构的 Jackson 图表示. 招干成绩单样式和输出数据结构的 Jackson 图如图 5-20 所示。 - 90 -.

(17) ▌▎第 5 章. 软件详细设计 ▎▌. 字符串 1:. 招干考试成绩单. 字符串 2:. 准考证号. 姓名. 专业. 政治. 语言. 法律. 总分. 字符串 3:. 准考证号. 姓名. 专业. 政治. 语言. 行政学. 总分. 字符串 4:. 准考证号. 姓名. 专业. 政治. 语言. 财经学. 总分. 字符串 5: 图 5-20(a). 图 5-20(b). 招干考试成绩单样式. 输出数据结构的 Jackson 图表示. 输入、输出数据结构的 Jackson 图对应关系如图 5-21 所示。. 图 5-21. 输入、输出数据结构的 Jackson 图对应关系表示. 随后介绍输入、输出数据结构关系导出程序结构 Jackson 图。 - 91 -.

(18) ▌▎软件工程 ▎▌. 5.3.2. Jackson 程序设计过程. Jackson 方法一般通过以下五个步骤来完成设计: (1)分析并确定输入数据和输出数据的逻辑结构,并用 Jackson 结构图来表示这些数据 结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。 (3)按以下的规则由输入、输出的数据结构导出程序结构,如图 5-22 所示。. 图 5-22. 输入、输出数据结构关系导出程序结构 Jackson 图. 1)为每一对在输入数据结构和输出数据结构中有对应关系的单元画一个处理框。 2)为输入和输出数据结构中剩余的数据单元画一个处理框。 3)所有处理框在程序结构图上的位置,应与由它处理的数据单元在数据结构 Jackson 图 上的位置一致。 4)必要时,可以对映射导出的程序结构图进行进一步的细化。 (4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。 (5)用伪码写出程序。. 5.4 5.4.1. Warnier 设计方法. Warnier 方法概述及其图例. Warnier 方法又称为逻辑构造程序的方法,简称 LCP(Logical Construction of Program)法。 Warnier 方法也是一种软件开发方法。1974 年,J.D.Warnier 提出的软件开发方法与Jackson 方 法类似。差别有三点:一是它们使用的图形工具不同,分别使用 Warnier 图和 Jackson 图;另 一个差别是使用的伪码不同;最主要的差别是在构造程序框架时,Warnier 方法仅考虑输入数 - 92 -.

(19) ▌▎第 5 章. 软件详细设计 ▎▌. 据结构,而 Jackson 方法不仅考虑输入数据结构,而且还考虑输出数据结构。 Warnier 程序设计方法是另一种面向数据结构的设计方法。它也是从数据结构出发设计程 序,但是这种方法的逻辑更严格。Warnier 图在 Warnier 方法中使用一种专用的表达工具。用 Warnier 图可以表明信息的逻辑组织,也就是说,它可以指出一类信息或一个信息量是重复出 现的,也可以表示特定信息在某一类信息中是有条件地出现的。Warnier 图是由嵌套的花括号、 伪代码以及少量说明和符号组成的层次树。花括号:区分数据结构的层次,在一个花括号内的 所有名字都属于同一类信息。异或符号 ⊕:表明一类信息或一个数据元素在一定条件下才出 现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个。圆括号:中间的数字指 明了这个名字代表的信息类(或元素)在这个数据结构中重复出现的次数。 Warnier 图也具有表达数据结构和表达程序结构的双重功能。Warnier 图是表示数据层次结 构的一种图形工具,它用树型结构来描绘数据结构。它还能指出某一类数据或某一数据元素重 复出现的次数,并能指明某一特定数据在某一类数据中是否是有条件的出现。在进行软件设计 时,从 Warnier 图入手,能够很容易转换成软件的设计描述。 以报纸的自动编辑系统为例。通常报纸的版面采用以下格式。 头版部分 社论部分 副刊部分 头条新闻 社论 体育新闻 国内新闻 专栏 商业新闻 当地新闻 读者来信 广告 讽刺漫画 上面给出的报纸概观就是一个数据的层次结构。如图 5-23 所示给出了用 Warnier 图表示 的报纸的数据层次结构。 头条新闻 头版部分. 国内新闻 当地新闻 讽刺漫画(0,1) 社论(1,1). 报纸的版面. 社论部分. 专栏(1,3) 读者来信 体育新闻. 副刊部分. 商业新闻 广告. 图 5-23. 报纸数据层次结构. 在这个 Warnier 图中,用花括号“{”表示层次关系,在同一括号下,自上到下是顺序排 列的数据项。在有些数据项名字后面附加了圆括号,给出该数据项重复的次数。 例如,社论(1,1)表示社论占 1 栏;专栏(1,3)表示专栏占 1 到 3 栏;讽刺漫画(0,1)表示讽刺. - 93 -.

(20) ▌▎软件工程 ▎▌. 漫画可有可无,若有就占 1 栏。另外,Warnier 图可以通过细化组合数据项进一步分解信息域。 输入数据结构 Warnier 图如图 5-24 所示。 准考证号 姓名 专业. 行政 财经 法律 政治. 学生情况(SUM). 考生成绩. 语文 专业课 行政学. 总分. 财经学 法律学. 图 5-24. 输入数据结构. 输出数据结构 Warnier 图如图 5-25 所示。 字符串 1 字符串 2 字符串 3. 表头. 字符串 4 准考证号. 考生成绩单(SUM). 姓名. 行政. 专业. 财经 法律. 政治. 表体. 语文. 行政学. 专业课. 财经学 法律学. 总分 字符串 5 图 5-25. 输入数据结构. 输入、输出数据结构关系导出程序结构 Warnier 图如图 5-26 所示。 5.4.2. Warnier 程序设计过程. (1)通过分析和确定输入数据和输出数据的逻辑结构,确认数据流程并画出 Warnier 图 的数据结构。. - 94 -.

(21) ▌▎第 5 章 输入考生基本情况. 软件详细设计 ▎▌. 字符串 1 字符串 2. 输入考生成绩. 字符串 3. 表头. 字符串 4. 输入考生成绩. 准考证号 输出考生成绩 表体 各专业按考生成绩 总分排序 录用. 姓名. 行政. 专业. 财经. 政治. 法律. 语文. 行政学. 专业课. 财经学. 总分. 法律学. 输出录用通知书 字符串 5. 考生情况分析 图 5-26. 关系导出程序结构. (2)根据输入的数据结构得出程序的逻辑结构,再用 Warnier 图画出程序的处理过程。 (3)根据以上两步的结构,画出程序的流程图。 (4)画出程序流程图并自上而下给每个处理框编序号,分类写出伪指令。 (5)对(4)的伪指令进行分类排序,并描述出程序处理过程的伪代码。. 5.5 小结 详细设计常用的描述方式包括流程图、盒图、问题分析图和程序设计语言(PDL)等,本 节介绍一个支持问题分析图的工具系统。详细设计的工具: z 图形工具。用图形工具可以把过程的细节用图形描述出来。 z 表格工具。用一张表来描述过程的细节,列出各种可能的操作和相应的条件。 z 语言工具。用某种高级语言(称之为伪码)来描述过程的细节。 程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于 任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。因此,至今 仍是软件开发者最普遍采用的一种工具。流程图中只能使用下述的 5 种基本控制结构。 z 顺序型由几个连续的处理步骤依次排列构成,如图 5-27 所示。 z 选择型是指由某个逻辑判断式的取值决定选择两个处理中的一个,如图 5-28 所示。 z While 型循环是先判定型循环,在循环控制条件成立时,重复执行特定的处理,如图 5-29 所示。 z Until 型循环是后判定型循环,重复执行某些特定的处理,直到控制条件成立为止, 如图 5-30 所示。 多情况型选择列举多种处理情况,根据控制变量的取值,选择执行其一,如图 5-31 所示。. - 95 -.

(22) ▌▎软件工程 ▎▌. 图 5-27. 顺序型. 图 5-28. 图 5-29. 选择型. 图 5-30 Until 型循环. 图 5-31. While 型循环. 多情况型循环. 盒图是一种符合结构化程序设计原则的图形描述工具,又称之为 N-S 图。在 N-S 图中, 为了表示 5 种基本控制结构,规定了 5 种图形构件。顺序型如图 5-32 所示,在顺序型中,先 执行 A,后执行 B。 如图 5-33 所示,在选择型结构中,如果条件 P 成立,则可执行 T 下面的 A 的内容,如果 条件 P 不成立,则执行 F 下的内容。. 图 5-32 顺序型结构. 图 5-33. 选择型结构. 如图 5-34 所示,在 While 重复型循环结构中,先判断 P 的值,再执行 S。其中 P 是循环 条件,S 是循环体。 如图 5-35 所示,在 Until 重复型循环结构中,先执行 S,后判断 P 的值。. 图 5-34. While 重复型循环结构. 图 5-35 - 96 -. Until 重复型循环结构.

(23) ▌▎第 5 章. 软件详细设计 ▎▌. 多分支选择型如图 5-36 所示。. 图 5-36. 多分支选择型. PAD 图是用结构化程序设计思想表现程序逻辑结构的图形工具。问题分析图(PAD)用 顺序、选择、循环等 3 种标准图式描述一个模块内部的执行过程,而且用“走树”规则(Tree Walk)机械地将 PAD 翻译成编程语言。研制以下两种工具可以支持 PAD 方法:图形和文字编 辑器,从 PAD 自动产生程序的程序生成器。日本日立公司 20 世纪 80 年代初在 M 系列机上 开发了一个试验性的系统 SDL/PAD(Software Design Language/PAD),该系统接受用 SDL 方 法确定的模块说明书,然后辅助设计人员以交互方式进行详细设计(采用 PAD 或 SDL 描述法), 继而可以直接产生用编程语言书写的程序。 PAD 也设置了 5 种基本控制结构的图示,并允许递归使用。 顺序型如图 5-37 所示按顺序先执行 A,再执行 B。选择型如图 5-38 所示,给出了判断条 件为 P 的选择型结构。当 P 为真值时执行上面的 A 框,P 为假值时执行下面的 B 框。如果这 种选择型结构只有 A 框,没有 B 框,表示该选择结构中只有 Then 后面有可执行语句 A,没 有 Else 部分。. A. A P. B. 图 5-37. 图 5-38. 顺序型结构. B 选择型结构. While 重复型和 Until 重复型。如图 5-39 所示,P 是循环判断条件,S 是循环体。循环判 断条件框的右端为双纵线,表示该矩形域是循环条件,以区别于一般的矩形功能域。 While P /Until P 图 5-39. S. While 重复型和 Until 重复型结构. 多分支选择型是 Case 型结构。当判定条件 P 等于 1 时执行 A1 框的内容,P 等于 2 时执 行 A2 框的内容,P 等于 N 时执行 An 框的内容。 PDL(过程设计语言)是所有非正文形式的过程设计工具的统称,到目前为止已出现多种 PDL 语言。PDL 具有“非纯粹”的编程语言的特点。过程设计语言(Process Design Language, 简称 PDL)是一个笼统的名字,目前有许多种不同的过程设计语言。过程设计语言用于描述 - 97 -.

(24) ▌▎软件工程 ▎▌. 模块中算法和加工的具体细节,以便在开发人员之间比较精确地进行交流。 过程设计语言由外层语法和内层语法构成。外层语法描述结构,采用与一般编程语言类 似的确定的关键字(如 If-Then-Else、Do-While 等),内层语法描述操作,可以采用任意的自 然语句(英语或汉语)。 判定表(Decision Table)也是描述加工的一种图形工具,呈表格形。判定表由四部分组 成。第一部分即①表示的部分,判定表的左上部称为基本条件项,列出各种可能的条件。第二 部分即②表示的部分,判定表的右上部称为条件项,它列出了各种可能的条件组合。第三部分 即③表示的部分,判定表的左下部称为基本动作项,它列出了所有的操作。第四部分即④表示 的部分,判定表的右下部称为动作项,它列出在对应条件组合下所选的操作。判定树又称决策 树,是一种描述加工的图形工具,适合描述问题处理中具有多个判断,而且每个决策与若干条 件有关。使用判定树进行描述时,应该从问题的文字描述中分清哪些是判定条件,哪些是判定 的决策,根据描述材料中的连接词找出判定条件的从属关系、并列关系、选择关系,根据它们 构造判定树。 Jackson 系统开发方法(JSD,Jackson System Development)是一种典型的面向数据结构 的分析设计方法。Jackson 系统开发方法的系统模型就是相互通信的一组进程的集合。Jackson 图对于种类繁多的程序中使用的数据结构,各数据元素之间的逻辑关系只有顺序、选择、重复 3 种,所以逻辑数据结构也只有 3 种。Warnier 方法又称为逻辑构造程序的方法,简称 LCP 法 (Logical Construction of Program),与Jackson 方法类似。差别有三点:一是它们使用的图形 工具不同,分别使用 Warnier 图和 Jackson 图;另一个差别是使用的伪码不同;最主要的差别 是在构造程序框架时,Warnier 方法仅考虑输入数据结构,而 Jackson 方法不仅考虑输入数据 结构,而且还考虑输出数据结构。. 5.6 习题 1.概述软件详细设计的任务及步骤。 2.简述软件详细设计的图形工具有哪些。 3.详细设计的任务是什么? 4.什么是结构化程序设计?用 N-S 图表示 3 种基本结构。 5.简述 Jackson 程序设计方法的主要内容。 6.简述 Warnier 程序设计方法的主要内容。 7.某厂对部分职工重新分配工作的政策是:年龄在 20 岁以下者,初中文化程度脱产学 习,高中文化程度当电工。20 岁至 40 岁之间,中学文化程度,男性当钳工,女性当车工,大 学文化程度都当技术员。年龄在 40 岁以上者,中学文化程度当材料员,大学文化程度当技术 员。用判定树画出此分配办法。 8.请就下述伪码程序画出 N-S 图。 Start Input (A,B,C) If A > 6 Then X = 5. - 98 -.

(25) ▌▎第 5 章. 软件详细设计 ▎▌. Else X = 2 End If If B < 15 Then Y = 10 Else Y = 4 End If If C < 25 Then Z = 15 Else Z = 6 End If Print(X,Y,Z) Stop. 9.Jackson 结构图解和图解逻辑与 Warnier 图有什么不同? 10.用 Jackson 图描绘下述的一列火车的构成:一列火车最多有两个火车头。只有一个火 车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头 既可能是内燃机车也可能是电器机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等。硬座车厢 在所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间 还有一节餐车。 11.介绍软件测试流程中的各个方法。 12.概括测试用例的设计过程。 13.根据决策表方法设计具体测试用例。. - 99 -.

(26)

參考文獻

相關文件

Shift +a 新增方塊物件→使用 Scale 來調整物 件的大小→Translate 來調整方塊的位置→排 列成樓梯的形狀.. 使用 import 匯入躺椅的

学校现有教学仪器设备超过1亿元,学校图书馆纸质藏书125万册,电子图书

一、高斯消去法:將方程組的某一列乘以定數加到另一列的方法,稱為高斯消去法

CD Hybrid 的方法大致如下,當物件進出某個 Anchor 的感測圓時,使用 DCTT 的方法產生的評估位置當作物件的評估位置。當 Anchor 感測到物件但又沒有進 出任何其他

這個計算方法稱為計畫評核術 (PERT, Progra m Evaluation and Review Technique) ,是 1958 年美國海軍為了控制北極星導彈專案,所研 發出來的專案管理工具。.

本研究於 2017 年 2 月至屏東縣 10 所校園採集使用水源及經淨水處理

本研究是以景觀指數進行對 1993 年、2008 年與擴大土地使用三個時期之評 估,其評估結果做比較討論。而目前研究提供研究方法的應用-GIS 與 FRAGSTATS 之使用方法。從 1993 年至

在集群分析方法中,Stuart Lloyd 於 1957 年提出了 K-Means 分析法。它是利用劃分方 式的ㄧ種聚類算法。此種方式以隨機選取