第
Download
1 / 62

第 6 章 详细设计 - PowerPoint PPT Presentation


  • 130 Views
  • Uploaded on

第 6 章 详细设计. 概述. 根本目标:确定应该怎样具体实现所要求的系统,即对目标系统的精确描述。 详细设计的结果基本上决定了最终的程序代码的质量。. 6.1 结构程序设计. 程序设计中三种基本的控制结构. 结构程序设计. 如果一个程序的代码块仅仅通过顺序、选择和循环这 3 种基本控制结构进行连接,并且每个代码块只要一个入口和一个出口,就称该程序师结构化的。. 6.2.1 设计问题 1. 系统响应时间 2. 用户帮助设施 3. 出错信息处理 4. 命令交互. 6.2 人机界面设计.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 第 6 章 详细设计' - lance-weiss


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
6章 详细设计


概述

  • 根本目标:确定应该怎样具体实现所要求的系统,即对目标系统的精确描述。

  • 详细设计的结果基本上决定了最终的程序代码的质量。


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.3过程设计的工具

  • 描述程序处理过程的工具称为过程设计的工具,它们可以分为图形、表格和语言三类。




  • 盒图(N-S图)

  • 出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。

  • 盒图没有箭头,因此不允许随意转移控制。坚持使用盒图作为详细设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。


6.4 盒图的基本符号

(a) 顺序;(b) IF-THEN-ELSE型分支;(c) CASE型多分支;

(d) 循环;(e) 调用子程序A


  • PAD图PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自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 业务处理调查与分析


  • 6.3.4例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。判定表

  • 当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。


各种条件组合例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。

所有的条件

所有的可能的动作

特定条件组合对应的动作


  • 判断表 优点:例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。

  • 能把各种组合情况一个不漏地表示出来,还能发现遗漏和矛盾的情况。

  • 用判断表解决问题的步骤:

  • 分析决策问题涉及几个条件;

  • 分析每个条件取值的集合;

  • 列出条件的各种可能组合;

  • 分析决策问题涉及几个可能的行动;

  • 做出有条件组合的判断表;

  • 决定各种条件组合的行动;

  • 合并、简化判定表;


  • 例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。1: 根据下列条件,试画出其判定表:

  • 某厂对一部分职工重新分配工作的原则是:

  • (1)年龄不满20岁,文化程度是小学者脱产学习,文化程度是中学者当电工。

  • (2)年龄满20岁但不足50岁,文化程度是小学或中学者,男性当钳工,女性当车工;文化程度是大学者当技术员。

  • (3)年龄满50岁及50岁以上,文化程度是小学或中学者当材料员,文化程度是大学者当技术员。

解答:根据分析可得主要的决策因素有:

性别{男、女};年龄{青年(小于20岁),中年(满20岁而不足50岁),老年(满50岁及以上)};文化程度{小学,中学,大学}这3个要素,共有2 x 3 x 3=18种情况。


  • 画出判断表:例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。


  • 在判断表中做出决策:例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。


  • 合并判断表:例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。


  • 化简判断表:例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。当技术员的三列不论性别,文化程度都是大学,而年龄不分老幼,所以可合并为一列


例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。2:判断表是采用表格方式来描述处理逻辑的一种工具,这里仍以处理用户订货的例子来说明。

5 系统分析_5.5 业务处理调查与分析


结构语言表示法例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。

这是一种模仿计算机语言的处理逻辑描述方法。它使用了由 “IF”、“THEN”、“ELSE”等词组成的规范化语言。下面是处理订货单逻辑过程的结构英语表示法。

IF 欠款时间≤30天

IF 需要量≤库存量

THEN 立即发货

ELSE

先按库存量发货,进货后再补发

ELSE

IF 欠款时间≤100天 THEN

IF 需求量≤库存量

THEN 先付款再发货

ELSE

不发货

ELSE

要求先付款

5 系统分析_5.5 业务处理调查与分析


  • 过程设计语言例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。(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例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。方法

6.4面向数据结构的设计方法

⑴概念

Jackson方法是一种面向数据结构,以数据驱动的程序设计方法。

基本思想:就是通过分析输入数据的结构、输出数据的结构以及相互之间的内在关系,来推导程序结构。

程序实现的算法在很大程度上依赖于作为基础的数据结构。如:给几个变量赋值,用顺序结构;给一个数组赋值,用循环结构。

⑵方法

设计原则:程序结构同数据结构相对应。

描述工具:Jackson图、纲要逻辑


Jackson p68
Jackson例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。图与层次方框图(P68)的区别


1. 例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。顺序结构

  • 顺序结构——指某个数据是由一个或多个数据元素组成,每个数据元素按确定的次序出现一次。

图6.8A由B、C、D 3个元素顺序组成


2. 例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。选择结构

选择结构——指某个数据是由两个或多个数据元素组成,每次使用这个数据时,按一定条件从这些数据元素中选择一个。

图6.9根据条件A是B或C或D中的某一个


3. 例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。重复结构

重复结构——指某个数据是由一个数据元素出现零次或多次组成,次数由使用时的条件决定。

图6.10A由B出现N次(N≥0)组成


6 4 2 jackson
6.4.2例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。改进的Jackson图


6.4.3Jackson例子:根据用户欠款时间长短和现有库存量情况处理用户订货方案的判断树。判断树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。方法

(1)分析输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

(2)找出输入数据和输出数据结构中有对应关系的数据单元(可以是数据,也可以是数据元素),并标以箭头线。

对应关系指输出数据结构中的某个数据单元是由输入数据结构中的哪个数据单元直接产生的。

(3)由Jackson图导出程序结构。

导出规则:

 存在对应关系的输入数据单元和输出数据单元,画一个处理框。当两个数据单元不在同一层时,所画处理框的层次就低不就高。

 输入数据结构中剩余的数据单元,一个数据单元对应画一个处理框。

 输出数据结构中剩余的数据单元,一个数据单元对应也画一个处理框。


注意:在同一层中的处理框必须是同类型的,如果既有顺序执行的处理框,又有含条件执行的处理框,则将含条件的处理框下移,并在它之前加一个顺序执行的处理框。注意:在同一层中的处理框必须是同类型的,如果既有顺序执行的处理框,又有含条件执行的处理框,则将含条件的处理框下移,并在它之前加一个顺序执行的处理框。

(4)列出所有条件和每个处理框执行之前、执行之后和执行之时的所有操作。

(5)用伪码描述程序结构。


顺序结构注意:在同一层中的处理框必须是同类型的,如果既有顺序执行的处理框,又有含条件执行的处理框,则将含条件的处理框下移,并在它之前加一个顺序执行的处理框。

A seq

B

C

D

A end

选择结构

A sel 条件1

B

alt 条件2

C

alt 条件3

D

A end

重复结构

A iter while 条件

B

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
6.5.2 Halstead注意:在同一层中的处理框必须是同类型的,如果既有顺序执行的处理框,又有含条件执行的处理框,则将含条件的处理框下移,并在它之前加一个顺序执行的处理框。方法

  • 根据程序中运算符和操作数的总数来度量程序的复杂程度。

  • N1——程序中运算符的总次数

  • N2——程序中操作数的总次数

  • 程序长度N= N1 + N2


预测公式注意:在同一层中的处理框必须是同类型的,如果既有顺序执行的处理框,又有含条件执行的处理框,则将含条件的处理框下移,并在它之前加一个顺序执行的处理框。

  • 程序长度H

  • H=n1log2n1+n2log2n2

    错误E=Nlog2(n1+n2)/3000


ad