第 6 章 详细设计
DESCRIPTION
第 6 章 详细设计. 概述. 根本目标:确定应该怎样具体实现所要求的系统,即对目标系统的精确描述。 详细设计的结果基本上决定了最终的程序代码的质量。. 6.1 结构程序设计. 程序设计中三种基本的控制结构. 结构程序设计. 如果一个程序的代码块仅仅通过顺序、选择和循环这 3 种基本控制结构进行连接,并且每个代码块只要一个入口和一个出口,就称该程序师结构化的。. 6.2.1 设计问题 1. 系统响应时间 2. 用户帮助设施 3. 出错信息处理 4. 命令交互. 6.2 人机界面设计. - PowerPoint PPT PresentationTRANSCRIPT
第第 66 章 详细设计章 详细设计
概述 根本目标:确定应该怎样具体实现所要求的
系统,即对目标系统的精确描述。 详细设计的结果基本上决定了最终的程序代
码的质量。
6.1 结构程序设计 程序设计中三种基本的控制结构
结构程序设计 如果一个程序的代码块仅仅通过顺序、选择
和循环这 3 种基本控制结构进行连接,并且每个代码块只要一个入口和一个出口,就称该程序师结构化的。
6.2.1 设计问题 1. 系统响应时间 2. 用户帮助设施 3. 出错信息处理 4. 命令交互
人机界面设计是接口设计的一个组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计、过程设计一样重要。近年来,人机界面在系统中所占的比例越来越大,在个别系统中人机界面的设计工作量甚至占设计总量的一半以上。
人机界面的设计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,因此,必须对人机界面设计给以足够重视。
6.2 人机界面设计
界面设计原则 设计原则
( 1 )用户原则。人机界面设计首先要确立用户类型。划分类型可以从不同的角度,视实际情况而定。确定类型后要针对其特点预测他们对不同界面的反应。这就要从多方面设计分析。( 2 )信息最小量原则。人机界面设计要尽量减少用户记忆负担,采用有助于记忆的设计方案。( 3 )帮助和提示原则。要对用户的操作命令作出反应,帮助用户处理问题。系统要设计有恢复出错现场的能力,在系统内部处理工作要有提示,尽量把主动权让给用户。 ( 4 )媒体最佳组合原则。多媒体界面的成功并不在于仅向用户提供丰富的媒体,而应在相关理论指导下,注意处理好各种媒体间的关系 , 恰当选用。
媒体类型
6.2.2 设计过程——迭代 6.2.3 人机界面设计指南 1. 一般交互指南 2. 信息显示指南 3. 数据输入指南
界面对话设计
数据输入设计
数据输入设计
控制界面设计
描述程序处理过程的工具称为过程设计的工具,它们可以分为图形、表格和语言三类。
6.36.3 过程设计的工具过程设计的工具
程序流图基本符号
程序流图
盒图 (N-S 图 ) 出于要有一种不允许违背结构程序设计精神的图形工具的考
虑, Nassi 和 Shneiderman 提出了盒图,又称为 N-S 图。
盒图没有箭头,因此不允许随意转移控制。坚持使用盒图作
为详细设计的工具,可以使程序员逐步养成用结构化的方式思考
问题和解决问题的习惯。
图 6.4 盒图的基本符号(a) 顺序; (b) IF-THEN-ELSE 型分支; (c) CASE 型多分支;(d) 循环; (e) 调用子程序 A
PAD 图 PAD 是问题分析图 (Problem Analysis Di
agram) 的英文缩写,自 1973年由日本日立公司发明
以后,已得到一定程度的推广。它用二维树形结构的
图来表示程序的控制流,将这种图翻译成程序代码比
较容易。
图 4.28PAD 图的基本符号(a) 顺序 ( 先执行 P1后执行 P2) ;(b) 选择 (IF C THEN P1 ELSE P2) ;(c) CASE 型多分支;(d) WHILE 型循环 (WHILE C DO P) ;(e) UNTIL 型循环 (REPEAT P UNTIL C) ;(f) 语句标号; (g) 定义
6.3.5判定树 判定表虽然能清晰地表示复杂的条件组合与应做的动作之间的对应关系,但其含义却不是一眼就能看出来的,初次接触这种工具的人要理解它需要有一个简短的学习过程。此外,当数据元素的值多于两个时 ( 例子中假设对机票需细分为头等舱、二等舱和经济舱等多种级别时 ) ,判定表的简洁程度也将下降。
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
图 6.7 用判定树表示计算行李费的算法
5 系统分析_5.5 业务处理调查与分析
30
例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。
上海理工大学计算机学院
6.3.4判定表 当算法中包含多重嵌套的条件选择时,用程序流程图、
盒图、 PAD 图或后面即将介绍的过程设计语言 (PDL)都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。
所有的条件
所有的可能的动作 特定条件组合
对应的动作
各种条件组合
判断表 优点: 能把各种组合情况一个不漏地表示出来,还能发现遗漏和
矛盾的情况。
用判断表解决问题的步骤:1. 分析决策问题涉及几个条件;2. 分析每个条件取值的集合;3. 列出条件的各种可能组合;4. 分析决策问题涉及几个可能的行动;5. 做出有条件组合的判断表;6. 决定各种条件组合的行动;7. 合并、简化判定表;
例 1 : 根据下列条件,试画出其判定表:
某厂对一部分职工重新分配工作的原则是:•( 1 )年龄不满 20 岁,文化程度是小学者脱产学习,文化程度是中学者当电工。•( 2 )年龄满 20 岁但不足 50岁,文化程度是小学或中学者,男性当钳工,女性当车工;文化程度是大学者当技术员。•( 3)年龄满 50 岁及 50 岁以上,文化程度是小学或中学者当材料员,文化程度是大学者当技术员。
解答:根据分析可得主要的决策因素有:
性别 {男、女 } ;年龄 {青年(小于 20岁),中年(满 20岁而不足 50岁),老年(满 50岁及以上) } ;文化程度{ 小学,中学,大学 } 这 3个要素,共有 2 x 3 x 3=18 种情况。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
性别 男 男 男 男 男 男 男 男 男 女 女 女 女 女 女 女 女 女年龄 青 青 青 中 中 中 老 老 老 青 青 青 中 中 中 老 老 老文化程度
小 中 大 小 中 大 小 中 大 小 中 大 小 中 大 小 中 大
脱产学习电工钳工车工技术员材料员
•画出判断表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
性别 男 男 男 男 男 男 男 男 男 女 女 女 女 女 女 女 女 女年龄 青 青 青 中 中 中 老 老 老 青 青 青 中 中 中 老 老 老文化程度
小 中 大 小 中 大 小 中 大 小 中 大 小 中 大 小 中 大
脱产学习
X X
电工 X X
钳工 X X
车工 X X
技术员
X X X X X X
材料员
X X X X
• 在判断表中做出决策:
• 合并判断表:1 ,10
2 ,11
3 ,12
4 5 6 ,15
7 ,16
8 ,17
9 ,18
13 14
性别 / / / 男 男 / / / / 女 女年龄 青 青 青 中 中 中 老 老 老 中 中文化程度 小 中 大 小 中 大 小 中 大 小 中脱产学习 X
电工 X
钳工 X X
车工 X X
技术员 X X X
材料员 X X
• 化简判断表:当技术员的三列不论性别,文化程度都是大学,而年龄不分老幼,所以可合并为一列
1 2 3 4 5 6 7 8 9性别 / / / 男 男 / / 女 女年龄 青 青 / 中 中 老 老 中 中文化程度 小 中 大 小 中 小 中 小 中
脱产学习 X
电工 X
钳工 X X
车工 X X
技术员 X
材料员 X X
5 系统分析_5.5 业务处理调查与分析
39
例 2 :判断表是采用表格方式来描述处理逻辑的一种工具,这里仍以处理用户订货的例子来说明。
决策规则号 1 2 3 4 5 6
条件
≤欠款时间 30天 Y Y N N N N
欠款时间 >100天 N N Y Y N N
≤需求量 库存量 Y N Y N Y N
应采取的行动
立即发货 ×
先按库存量发货,进货后再补发 ×
先付款 ,再发货 ×
不发货 ×
要求先付欠款 × ×
5 系统分析_5.5 业务处理调查与分析
40
结构语言表示法 这是一种模仿计算机语言的处理逻辑描述方法。它使用
了由 “ IF” 、“ THEN” 、“ ELSE”等词组成的规范化语言。下面是处理订货单逻辑过程的结构英语表示法。
IF 欠款时间≤ 30天 IF 需要量≤库存量 THEN 立即发货ELSE 先按库存量发货,进货后再补发ELSE IF 欠款时间≤ 100天 THEN IF 需求量≤库存量 THEN 先付款再发货 ELSE 不发货ELSE 要求先付款
过程设计语言 (PDL) PDL也称为伪码,这是一个笼统的名称,现在有许多种
不同的过程设计语言在使用。它是用正文形式表示数据和处理过程的设计工具。
PDL 具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面, PDL 表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。因此,一般说来 PDL 是一种“混杂”语言,它使用一种语言 ( 通常是某种自然语言 ) 的词汇,同时却使用另一种语言 (某种结构化的程序设计语言 ) 的语法。
PROCEDURE spellcheck IS…………………………………查找错拼的单词 BEGIN split document into single words …………. 把整个文档分离成单词 lood up words in dictionary…………………. 在字典中查这些单词 display words which are not in dictionary….显示字典中查不到的单词 create a new dictionary………………………….造一新字典 END spellcheck
----Jackson 方法⑴概念 Jackson 方法是一种面向数据结构,以数据驱动的程
序设计方法。 基本思想:就是通过分析输入数据的结构、输出
数据的结构以及相互之间的内在关系,来推导程序结构。
程序实现的算法在很大程度上依赖于作为基础的数据结构。如:给几个变量赋值,用顺序结构;给一个数组赋值,用循环结构。
⑵方法 设计原则:程序结构同数据结构相对应。 描述工具: Jackson 图、纲要逻辑
6.4 面向数据结构的设计方法
Jackson 图与层次方框图( P68 )的区别
Jackson图 层次方框图方框 几条语句 模块
表现关系 组成 调用
顺序结构——指某个数据是由一个或多个数据元素组成,每个数据元素按确定的次序出现一次。
图 6.8A由 B 、 C 、 D 3 个元素顺序组成
1. 顺序结构
2. 选择结构选择结构——指某个数据是由两个或多个数据元素组成,每次使用这个数据时,按一定条件从这些数据元素中选择一个。
图 6.9 根据条件 A 是 B或 C或 D 中的某一个
3. 重复结构
重复结构——指某个数据是由一个数据元素出现零次或多次组成,次数由使用时的条件决定。
图 6.10A由 B 出现 N次 (N≥0) 组成
6.4.2改进的 Jackson 图
(1) 分析输入数据和输出数据的逻辑结构,并用 Jackson 图描绘这些数据结构。
( 2)找出输入数据和输出数据结构中有对应关系的数据单元(可以是数据,也可以是数据元素),并标以箭头线。
对应关系指输出数据结构中的某个数据单元是由输入数据结构中的哪个数据单元直接产生的。
( 3)由 Jackson 图导出程序结构。 导出规则: 存在对应关系的输入数据单元和输出数据单元,画一
个处理框。当两个数据单元不在同一层时,所画处理框的层次就低不就高。
输入数据结构中剩余的数据单元,一个数据单元对应画一个处理框。
输出数据结构中剩余的数据单元,一个数据单元对应也画一个处理框。
6.4.3Jackson 方法
注意:在同一层中的处理框必须是同类型的,如果既有顺序执行的处理框,又有含条件执行的处理框,则将含条件的处理框下移,并在它之前加一个顺序执行的处理框。
( 4)列出所有条件和每个处理框执行之前、执行之后和执行之时的所有操作。
( 5)用伪码描述程序结构。
选择结构 A sel 条件 1 B alt 条件 2 C alt 条件 3 D A end 重复结构 A iter while 条件 B A end
顺序结构 A seq B C D A end
例子
图 6.12 表示输入输出数据结构的 Jackson 图
图 6.13 描绘统计空格程序结构的 Jackson 图
图 6.14把操作和条件分配到程序结构图的适当位置
6.5 程序复杂程度的定量度量 6.5.1McCabe 方法——根据程序控制流的复杂程度
定量度量程序的复杂度。 1. 流图——为突出表示程序的控制流,用退化的程
序流程图即流图表示。 流图要素:结点——圆,代表一条或多条语句(程序中的一个顺序处理框和一个菱形
判定框可映射为流图的一个结点)边——箭头,代表控制流(一条边必须终止于一个结点)区域——有边和结点围成的面积
注意:当过程设计中包含复合条件时,把该复合条件分解为若干简单条件,每个简单条件对应流图中的一个结点。
计算环形复杂度的方法 三种方法之一 1 、流图中的区域数 2 、流图中 G 的环形复杂度 V(G)=E-N+2,E
是流图中边的条数, N 是结点数 3 、流图的环形复杂度 V(G)=P+1,其中, P
是流图中判定结点的数目
程序流程图
流图
图 6.16由 PDL翻译成的流图——环形复杂度为 4
图 6.17由包含复合条件的 PDL映射成的流图
3. 环形复杂度的用途
程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程度。当程序内分支数或循环个数增加,环形复杂度的也随之增加。
实践研究表明:环形复杂度高的程序往往是最困难、最容易出问题的程序。模块规模 V(G)<=10 为宜
6.5.2 Halstead 方法 根据程序中运算符和操作数的总数来度量程
序的复杂程度。 N1—— 程序中运算符的总次数 N2—— 程序中操作数的总次数
程序长度 N= N1 + N2
预测公式 程序长度 H H=n1log2n1+n2log2n2
错误 E=Nlog2(n1+n2)/3000