




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 详细设计详细设计 根本目标:确定怎样具体地实现所要求的系统。 任务:设计出程序的“蓝图”。 回答的问题:“具体的说,系统应该怎样做?” 详细设计的结果基本上决定了最终的程序代详细设计的结果基本上决定了最终的程序代码的质量码的质量 6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量第第6章章 详细设计详细设计-程序的质量与程序中所包含的GO TO 语句的数量成反比-Bohm和Jacopini证明了:3种基本的控制结构(顺序,选择,循环)就能实现任何单入口单出口的程序-“结构程序设计是尽可能少用GO T
2、O语句的程序设计方法。最好仅在检测出错误时才使用GO TO语句,而且应该总是使用前向GO TO语句。”-衡量程序的质量不仅要看它的运行情况,更主要衡量程序的质量不仅要看它的运行情况,更主要的是要看它的可读性!的是要看它的可读性!6.1 结构程序设计: 易读性6.26.2人机界面设计人机界面设计6.2.16.2.1设计问题设计问题1. 响应时间: 长度和易变性2. 用户帮助: 集成和附加, 上下文3. 出错信息: 如何办, 多媒体(图,文,声,光), 用户心理4. 命令交互:快捷操作,自定义宏指令, 一致性6.2.2设计过程设计过程: 原型,迭代,精化6.2.3人机界面设计指南人机界面设计指南总
3、原则:用户的屏幕总原则:用户的屏幕一般交互指南(一致,确认,减少记忆,UNDO,易记,层次,多媒体)信息显示指南(一致,少用缩写,色彩,窗口布局)1.数据输入指南(尽量少,格式) 1 1、可使用性、可使用性 使用简单使用简单 用户界面中所用术语的标准化和一致性用户界面中所用术语的标准化和一致性 具有具有HELP功能功能 快速的系统响应和低的系统成本快速的系统响应和低的系统成本 具有容错能力具有容错能力 2 2、灵活性、灵活性 考虑用户的特点、能力、知识水平。考虑用户的特点、能力、知识水平。 提供不同的系统响应信息。提供不同的系统响应信息。 提供根据用户需求制定和修改提供根据用户需求制定和修改界
4、面。界面。 3 3、界面的复杂性与可靠性、界面的复杂性与可靠性 复杂性复杂性界面规模及组织的复杂程度。应该愈简单愈好。界面规模及组织的复杂程度。应该愈简单愈好。 可靠性可靠性指无故障使用的时间间隔。用户界面应该能够保指无故障使用的时间间隔。用户界面应该能够保 证用户正确、可靠地使用系统,及程序、数据的安全。证用户正确、可靠地使用系统,及程序、数据的安全。 1 1、用户特性分析、用户特性分析 用户模型用户模型 了解所有用户的技能和经验,针对用户能力设计或更改界面。了解所有用户的技能和经验,针对用户能力设计或更改界面。从以下方面分析:从以下方面分析: 用户类型用户类型通常分为:外行型、初学型、熟练
5、型、专家型。通常分为:外行型、初学型、熟练型、专家型。 用户特性度量用户特性度量与用户使用模式和用户群体能力有关。与用户使用模式和用户群体能力有关。 包括:用户使用频度、用户用机能力、用户的知识、思维能力等。包括:用户使用频度、用户用机能力、用户的知识、思维能力等。2 2、用户界面的任务分析、用户界面的任务分析 任务模型(任务模型(DFDDFD图)图) 是对系统内部活动的分解,不仅要进行功能分解(用是对系统内部活动的分解,不仅要进行功能分解(用DFDDFD图描图描述),还要包括与人相关的活动。每个加工即一个功能或任务。述),还要包括与人相关的活动。每个加工即一个功能或任务。3 3、确定用户界面
6、类型、确定用户界面类型 正文菜单、图标菜单、正文和图标混合菜单,如:开始正文菜单、图标菜单、正文和图标混合菜单,如:开始菜单。菜单。 从用户角度出发,用户界面设计的类型主要有问题描述语言,数据表格、从用户角度出发,用户界面设计的类型主要有问题描述语言,数据表格、图形与图标、菜单、对话框及窗口等。每一种类型都有不同的特点和性能。讨图形与图标、菜单、对话框及窗口等。每一种类型都有不同的特点和性能。讨论以下类型:论以下类型: 固定位置、固定位置、下拉式、下拉式、浮动位置(弹出)浮动位置(弹出)图3.54 混合菜单图3.55 固定及下拉菜单固定菜单固定菜单下拉菜单下拉菜单 在用户界面中,加入丰富多彩的
7、画面,将能够更加行象地为用户提供有用的信在用户界面中,加入丰富多彩的画面,将能够更加行象地为用户提供有用的信息,以达到可视化的目的。主要的处理操作有:图象的隐蔽和再现、屏幕滚动和息,以达到可视化的目的。主要的处理操作有:图象的隐蔽和再现、屏幕滚动和图案显示、动画等。图案显示、动画等。 对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。通过对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。通过对话框,实现系统和用户之间的通信。对话框,实现系统和用户之间的通信。对话框显示的方式与弹出式菜单类似,即瞬时弹出。同时,系统还应将对话对话框显示的方式与弹出式菜单类似,即瞬时弹出。同
8、时,系统还应将对话框所覆盖的原图象进行保存,以便在对话结束后能立即恢复。框所覆盖的原图象进行保存,以便在对话结束后能立即恢复。有三种对话形式:有三种对话形式:必须回答式如图必须回答式如图3.58所示所示无需回答式无需回答式 如图如图3.59所示所示警告式警告式 如图如图4.58所示所示图3.58 必须回答式对话框图3.59 无需回答式对话框图3.60 警告式对话框4 4、窗口(、窗口(windowwindow) 图形学中称为视图区(图形学中称为视图区(ViewportViewport),视为虚拟屏幕。一个实用窗口,可包),视为虚拟屏幕。一个实用窗口,可包含部件:含部件: 菜单区(菜单区(men
9、u barmenu bar) 图标区(图标区(icon baricon bar) 标题区(标题区(title bartitle bar) 移动区(移动区(move barmove bar) 大小区(大小区(size barsize bar) 退出区(退出区(quit barquit bar) 用户工作区(用户工作区(users work barusers work bar) 横向滚动区(横向滚动区(horizontal scroll barhorizontal scroll bar) 纵向滚动区(纵向滚动区(vertical scroll barvertical scroll bar)图3.6
10、1 窗口数据输入界面,是系统的重要组成部分。主要从数据输入界面,是系统的重要组成部分。主要从输入速度输入速度和和减减少出错率少出错率考虑。考虑。1、尽量减少输入工作量、尽量减少输入工作量 对相同内容输入设置默认值对相同内容输入设置默认值 自动填入自动填入 列表选择或点击选择列表选择或点击选择2、输入屏幕与输入格式匹配、输入屏幕与输入格式匹配 即屏幕显示按照数据使用频率、重要性、次序等组织。即屏幕显示按照数据使用频率、重要性、次序等组织。3、数据输入的一般规则、数据输入的一般规则确定输入确定输入交互动作交互动作确定删除确定删除提供反馈提供反馈推荐一本推荐一本GUIGUI设计的好书设计的好书GUI
11、GUI设计禁忌设计禁忌2.02.0 (GUI Bloopers 2.0 Common User Interface Design Donts and Dos) (美 Jeff Johnson 著 盛海艳 等译) 机械工业出版社 2009年1月第1版第1次印刷 ISBN: 978-7-111-24229-16.3 过程设计的工具1 1、流程图、流程图2 2、结构化流程图(、结构化流程图(N-S图)图)3 3、PAD图图问题分析图问题分析图4、 PDL5、 判定表判定表/ /判定树 程序流程图又称为程序框图,它是历史上程序流程图又称为程序框图,它是历史上最悠久使用最广泛的描述过程设计的方法,然最悠
12、久使用最广泛的描述过程设计的方法,然而也是用得最混乱得方法。而也是用得最混乱得方法。1. 程序流程图程序流程图优点:对控制流程的描绘很直观,优点:对控制流程的描绘很直观, 便于初学者掌握。便于初学者掌握。缺点缺点:(1)不是逐步求精的好工具;)不是逐步求精的好工具;(2)箭头不受约束;)箭头不受约束;(3)不易表示数据结构。)不易表示数据结构。( (p) p) 控制流控制流(a) 选择选择(分支分支);(b) 注释;注释; (c) 预先定义的处理;预先定义的处理;(d) 多分支;多分支;(e) 开始或停止;开始或停止;(f) 准备;准备;(g)循环上界限;循环上界限;(h) 循环下界限;循环下
13、界限;(i) 虚线;虚线;(j) 省略符;省略符;(k) 并行方式;并行方式;(l) 处理;处理;(m) 输入输入/输出;输出;(n) 连接;连接;(o) 换页连接;换页连接;程序流程图常用符号程序流程图常用符号abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支选多分支选择结构择结构先判定型循先判定型循环结构环结构选择结构选择结构后判定型循环结构后判定型循环结构图3.4 流程图N-SN-S图由而且仅由顺序、选择、循环三种基本结构组成。图由而且仅由顺序、选择、循环三种基本结构组成。基本图例如下:基本图例如下:顺序结构顺序结构块块1块块2块块3块块4条件条件T F块块1块块2选
14、择结构选择结构Case I=1,2,3T块块1块块2多分支选择结构多分支选择结构F块块3块块当条件成立时当条件成立时当型循环当型循环块块直到条件成立时直到条件成立时直到型循环直到型循环2、 NS图图盒图的特点盒图的特点 功能域明确,可以从盒图上一眼就看出来。功能域明确,可以从盒图上一眼就看出来。 不可能任意转移控制不可能任意转移控制 很容易确定局部和全程数据的作用域很容易确定局部和全程数据的作用域 很容易表现嵌套关系,也可以表示模块的层很容易表现嵌套关系,也可以表示模块的层次结构。次结构。ab条条 件件 1TF Case Xi, i=2,3,4X2X3X4当条件当条件3成立成立条条 件件 2直
15、到条件直到条件4成立成立直直 到到 条条 件件 成立成立cdefghij顺序结构顺序结构选择结构选择结构多分支选择结构多分支选择结构先判定型循环结构先判定型循环结构后判定型循环结构后判定型循环结构FTTFN-SN-S图举例图举例NS图举例3 3、PADPAD图图问题分析图问题分析图(problem Analysis Diagramproblem Analysis Diagram) 其基本控制结构如下:其基本控制结构如下:PAD图基本结构 PAD图是一种由左往右展开的二维树由左往右展开的二维树型结构。 PAD图的控制流程为自上而下、从左到右自上而下、从左到右地执行。PAD图的优点如下: (1)清
16、晰地反映了程序的层次结构。图中的竖线为程序的层次线,最左边竖线是程序的主线, 其后一层一层展开,层次关系一目了然。 (2)支持逐步求精的设计方法, 左边层次中的内容可以抽象, 然后由左到右逐步细化。 (3)易读易写, 使用方便。 (4)支持结构化的程序设计原理。 (5)可自动生成程序。 (6)既可用于表示程序逻辑,也可用于描绘数据结构。PADPAD图应用举例图应用举例ji1maxA(i)开始输入A(1)到A(10)的值置初值:n10sort输入A(1)到A(10)的值结束sortdefi1WHILE in1WHILE jnA(i)maxii1jj1maxA(j)BmaxmaxA(j)A(j)B
17、 4. 过程设计语言过程设计语言 过程设计语言过程设计语言(Process Design Language, 简称简称PDL)是在伪码的是在伪码的基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。它的控制结构与伪码相同。它的控制结构与伪码相同。PDL是一种用于描述模块算法设计和处是一种用于描述模块算法设计和处理细节的语言。理细节的语言。 PDL一般分为一般分为内外两层语法内外两层语法,外层语法应符合一般,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用一些简单的句子、程序设计语言常用的语法规则,而内层语法则用一些
18、简单的句子、短语和通用的数学符号,来描述程序应执行的功能。短语和通用的数学符号,来描述程序应执行的功能。 PDL具有严格具有严格的关键字外层语法,用于定义控制结构、数据结构和模块接口,而的关键字外层语法,用于定义控制结构、数据结构和模块接口,而它表示实际操作和条件的内层语法又是灵活自由的,使用自然语言它表示实际操作和条件的内层语法又是灵活自由的,使用自然语言的词汇。的词汇。 PDL与结构化分析中描述加工逻辑的与结构化分析中描述加工逻辑的“结构化语言结构化语言”有什么不同有什么不同呢呢? 所不同的仅是它们的作用不同,故抽象层次不同,所不同的仅是它们的作用不同,故抽象层次不同, 模糊程度不同。模糊
19、程度不同。 “结构化语言结构化语言”是描述加工是描述加工“做什么做什么”的,并且使开发人员和用的,并且使开发人员和用户都能看懂,因此户都能看懂,因此无严格的外语法无严格的外语法,内层自然语言描述较抽象、较概,内层自然语言描述较抽象、较概括。而括。而PDL是描述处理过程是描述处理过程“怎么做怎么做”的细节。的细节。 开发人员将按其处开发人员将按其处理细节编程序,理细节编程序,故外层语法更严格一些,故外层语法更严格一些, 更趋于形式化更趋于形式化,内层自然,内层自然语言描述实际操作更具体更详细一些。语言描述实际操作更具体更详细一些。 1). PDL特点特点 PDL的特点如下:的特点如下: (1)
20、所有关键字都有固定语法,所有关键字都有固定语法, 以便提供结构化控制结构、以便提供结构化控制结构、 数数据说明和模块的特征。据说明和模块的特征。 (2) 描述处理过程的说明性语言没有严格的语法。描述处理过程的说明性语言没有严格的语法。 (3) 具有数据说明机制,包括简单的与复杂的数据说明。具有数据说明机制,包括简单的与复杂的数据说明。 (4) 具有模块定义和调用机制,开发人员应根据系统编程所用的具有模块定义和调用机制,开发人员应根据系统编程所用的语种,说明语种,说明PDL表示有关程序结构。表示有关程序结构。 2). 程序结构程序结构 用用PDL表示的程序结构一般有下列几种结构。表示的程序结构一
21、般有下列几种结构。1) 顺序结构顺序结构采用自然语言描述顺序结构:采用自然语言描述顺序结构: 处理处理S1 处理处理S2 处理处理Sn2) 选择结构选择结构(1) IF-结构:结构: IF 条件条件 IF 条件条件 处理处理S1 或或 处理处理S ELSE ENDIF 处理处理S2 ENDIF(2) IF-ORIF-ELSE结构:结构: IF 条件条件1 处理处理S1 ORIF 条件条件2 ELSE 处理处理Sn ENDIF(3) CASE结构:结构: CASE OF CASE(1) 处理处理S1 CASE(2) 处理处理S2 ELSE 处理处理Sn ENDCASE 3) 重复结构重复结构 (
22、1) FOR 结构:结构: FOR i=1 TO n 循环体循环体 END FOR (2) WHILE 结构:结构: WHILE 条件条件 循环体循环体 ENDWHILE(3) UNTIL 结构:结构: REPEAT 循环体循环体 UNTIL 条件条件4) 出口结构出口结构(1) ESCAPE 结构结构(退出本层结构退出本层结构): WHILE 条件条件 处理处理S1 ESCAPE L IF 条件条件 处理处理S2 ENDWHILE L: (2) CYCLE结构结构(循环内部进入循环的下一次循环内部进入循环的下一次): L: WHILE 条件条件 处理处理S1 CYCLE L IF 条件条件
23、处理处理S2 ENDWHILE 5) 扩充结构扩充结构 (1) 模块定义:模块定义: PROCEDURE 模块名模块名(参数参数) RETURN END (2) 模块调用:模块调用: CALL 模块名模块名(参数参数) (3) 数据定义:数据定义: DECLARE 属性属性 变量名,变量名, 属性有:属性有: 字符、字符、 整型、整型、 实型、实型、 双精度、双精度、 指针、指针、 数组及结构数组及结构等类型。等类型。 (4) 输入输入/输出:输出: GET(输入变量表输入变量表) PUT(输出变量表输出变量表) 3). PDL应用示例应用示例 现以现以系统主控模块详细设计为例,系统主控模块详
24、细设计为例, 说明如何用说明如何用PDL来描述。来描述。 PROCEDURE模块名模块名( ) 清屏;清屏; 显示显示系统用户界面;系统用户界面; PUT(“请输入用户口令:请输入用户口令:”); GET(password); IF password系统口令系统口令 提示警告信息;提示警告信息; 退出运行退出运行 ENDIF 显示本系统主菜单;显示本系统主菜单; WHILE(true) 接收用户选择接收用户选择ABC; IF ABC=“退出退出” Break; ENDIF 调用相应下层模块完成用户选择功能;调用相应下层模块完成用户选择功能; ENDWHILE; 清屏;清屏; RETURNEND
25、 PDL的总体结构与一般程序完全相同。的总体结构与一般程序完全相同。 外语法同相应程序语言外语法同相应程序语言一致,内语法使用自然语言,易编写,一致,内语法使用自然语言,易编写, 易理解,也很容易转换成源程易理解,也很容易转换成源程序。除此以外,还有以下优点:序。除此以外,还有以下优点: (1) 提供的机制较图形全面,提供的机制较图形全面, 为保证详细设计与编码的质量创造了有为保证详细设计与编码的质量创造了有利条件。利条件。 (2) 可作为注释嵌入在源程序中一起作为程序的文档,并可同高级程可作为注释嵌入在源程序中一起作为程序的文档,并可同高级程序设计语言一样进行编辑、修改,有利于软件的维护。序
26、设计语言一样进行编辑、修改,有利于软件的维护。 (3) 可自动生成程序代码,提高软件生产率。目前已有可自动生成程序代码,提高软件生产率。目前已有PDL多种版本多种版本(如如PDL/pascal, PDL/C, PDL/Ada等等),为自动生成相应代码提供了便,为自动生成相应代码提供了便利条件。利条件。 当算法中包含多重嵌套的条件选择时,用程序当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、流程图、盒图、PADPAD图或过程设计语言图或过程设计语言( (PDL)PDL)都不易清都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动
27、作之间的对应关系。组合与应做的动作之间的对应关系。 一张判定表由四部分组成,左上部列出所有条一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定表右半部的每一应的动作。判定表右半部的每一列实质上是一条规则,列实质上是一条规则,规定了与特定的条件组合相对应的动作。规定了与特定的条件组合相对应的动作。5 5、判定表、判定表 判定表虽然能清晰地表示复杂的条件组合判定表虽然能清晰地表示复杂的条件组合与应做的动作之间的对
28、应关系,但其含义却与应做的动作之间的对应关系,但其含义却不是一眼就能看出来的,初次接触这种工具不是一眼就能看出来的,初次接触这种工具的人要理解它需要有一个简短的学习过程。的人要理解它需要有一个简短的学习过程。 此外,当数据元素的值多于两个时此外,当数据元素的值多于两个时(例如,例如,上例中假设对机票需细分为头等舱、二等舱上例中假设对机票需细分为头等舱、二等舱和经济舱等多种级别时和经济舱等多种级别时),判定表的简洁程度,判定表的简洁程度也将下降。也将下降。 判定树是判定表的变种,也能清晰地表示复判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系杂的条件组合与应做的动作之
29、间的对应关系。5 5、 判定树判定树 1.1.在许多应用领域中信息都有清楚的层次结构、输入数据、内在许多应用领域中信息都有清楚的层次结构、输入数据、内部存储的信息部存储的信息( (数据库或文件数据库或文件) )以及输出数据都可能有独特的结以及输出数据都可能有独特的结构。构。 2.2.数据结构既影响程序的结构又影响程序的处理过程,重复出数据结构既影响程序的结构又影响程序的处理过程,重复出现的数据通常由具有循环控制结构的程序来处理,选择数据现的数据通常由具有循环控制结构的程序来处理,选择数据( (即,即,可能出现也可能不出现的信息可能出现也可能不出现的信息) )要用带有分支控制结构的程序来要用带有
30、分支控制结构的程序来处理。处理。 3.3.层次的数据组织通常和使用这些数据的程序的层次结构十分层次的数据组织通常和使用这些数据的程序的层次结构十分相似。相似。6.4 6.4 面向数据结构的设计方法面向数据结构的设计方法 4.4.面向数据结构的设计方法的最终目标是得出对程序处理过程面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。的描述。 5.5.这种设计方法并不明显地使用软件结构的概念,模块是设计这种设计方法并不明显地使用软件结构的概念,模块是设计过程的副产品,对于模块独立原理也没有给予应有的重视。过程的副产品,对于模块独立原理也没有给予应有的重视。 6.6.因此,这种方法最适合于在
31、详细设计阶段使用,也就是说,因此,这种方法最适合于在详细设计阶段使用,也就是说,在完成了软件结构设计之后,可以使用面向数据结构的方法来在完成了软件结构设计之后,可以使用面向数据结构的方法来设计每个模块的处理过程。设计每个模块的处理过程。JacksonJackson方法和方法和WarnierWarnier方法是最著名的两种面向数据方法是最著名的两种面向数据结构的设计方法。结构的设计方法。JacksonJackson系统开发方法则是面向数据结构的开发方法系统开发方法则是面向数据结构的开发方法. . 其基本思想是先建立输入输出的数据结构其基本思想是先建立输入输出的数据结构, ,再将其转换再将其转换为
32、软件结构为软件结构. .其分析的重点放在构造与系统相关的现实世界其分析的重点放在构造与系统相关的现实世界, ,并建立并建立现实世界的信息域的模型上现实世界的信息域的模型上. .其最终目标是生成软件的过程性描述其最终目标是生成软件的过程性描述. .强调程序结构与强调程序结构与问题结构相对应问题结构相对应. . Jackson方法有方法有JSP(Jackson Structure Programming)和)和改进的改进的JSD(Jackson System development)方法。)方法。 JSP法主要体现程序结构的设计法主要体现程序结构的设计,不严格区分软件概要设不严格区分软件概要设计和
33、详细设计计和详细设计.可以根据可以根据JSP的规则直接导出程序结构的规则直接导出程序结构.一般用一般用于规模不大的数据处理系统于规模不大的数据处理系统,而且而且I/O数据结构容易描述的情数据结构容易描述的情况况. (2) JSD法是对法是对JSP法的扩充法的扩充,针对针对JSP法的缺陷而提出的解决法的缺陷而提出的解决方案方案.其主要特点是其主要特点是: 用用“分而治之分而治之”的策略控制系统的复杂性的策略控制系统的复杂性,解决解决I/O结构的冲结构的冲突问突问 题题. 实体结构分析是用实体结构分析是用Jackson图来描述每个实体执行图来描述每个实体执行的动作及其时序的动作及其时序,产生一组描
34、述实体进程的产生一组描述实体进程的Jackson结构图结构图. 6.4.1 Jackson图图 1. Jackson图的表示图的表示 虽然程序中实际使用的数据结构种类繁多,但是它们的数据元虽然程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复三种,因此,素彼此间的逻辑关系却只有顺序、选择和重复三种,因此, 逻辑数逻辑数据结构也只有这三种。据结构也只有这三种。 1) 顺序结构顺序结构 顺序结构的数据由一个或多个数据元素组成,每个元素按确定顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。次序出现一次。 2) 选择结构选择结构 选择结构的数
35、据包含两个或多个数据元素,每次使用这个数据选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。时按一定条件从这些数据元素中选择一个。 3) 重复结构重复结构 重复结构的数据,重复结构的数据, 根据使用时的条件由一个数据元素出现零次根据使用时的条件由一个数据元素出现零次或多次构成。或多次构成。(a) 顺序结构;顺序结构; (b) 选择结构;选择结构; (c) 重复结构重复结构(b)ACDB(a)AC D B AB *(c) Jackson图具有如下图具有如下优点:优点: (1) 便于表示层次结构,便于表示层次结构, 是对结构进行自顶向下分解的有力工是对结构
36、进行自顶向下分解的有力工具。具。 (2) 形象直观可读性好。形象直观可读性好。 (3) 既能表示数据结构也能表示程序结构(因为程序结构也只既能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。有上述三种基本类型)。 缺点缺点: 当系统规模及复杂度大时当系统规模及复杂度大时,确定数据结构困难确定数据结构困难. 2. Jackson图应用的示例图应用的示例 某仓库管理系统每天要处理大批由单据所组成的事务文件。某仓库管理系统每天要处理大批由单据所组成的事务文件。 单单据分为订货单和发货单两种,每张单据由多行组成,订货单每行包据分为订货单和发货单两种,每张单据由多行组成,订货单每行包
37、括零件号、零件名、单价及数量等括零件号、零件名、单价及数量等 4 个数据项,发货单每行包括零个数据项,发货单每行包括零件号、零件名及数量等件号、零件名及数量等 3 个数据项,用个数据项,用Jackson结构图表示该事务文结构图表示该事务文件的数据结构。下图为该事务文件的数据结构。件的数据结构。下图为该事务文件的数据结构。 事务文件的事务文件的Jackson结构图结构图事务文件单据 *订货单发货单发货行*订货行*零件号 零件名数量数量单价零件名零件号Jackson图和层次图的区别:图和层次图的区别: 层次图中的一个方框通常代表一个模块;层次图中的一个方框通常代表一个模块; Jackson图即使在
38、描绘程序结构时,一个方框也并不代表图即使在描绘程序结构时,一个方框也并不代表一个模块,通常只代表几个语句。一个模块,通常只代表几个语句。 层次图表现的是调用关系,通常一个模块除了调用下级模层次图表现的是调用关系,通常一个模块除了调用下级模块外,还完成其他操作;块外,还完成其他操作; Jackson图表现的是组成关系,即一个方框中包括的操作图表现的是组成关系,即一个方框中包括的操作仅仅由它下层框中的那些操作组成。仅仅由它下层框中的那些操作组成。伪码(纲要逻辑)伪码(纲要逻辑) 与与Jackson结构图对应,结构图对应, 用于将用于将Jackson结构图表示的程序结构结构图表示的程序结构转换为语言
39、表示。转换为语言表示。 (1) 顺序结构顺序结构: A seq B C D A end (2) 选择结构选择结构: A sel 条件条件1 B A or 条件条件2 C A or 条件条件3 D A end (3) 重复结构重复结构: A iter until(或(或while)条件)条件 B A end 开发步骤开发步骤 JSP方法基本由下列方法基本由下列5个步骤个步骤组成组成: (1) 分析并确定输入数据和输出数据的逻辑结构,分析并确定输入数据和输出数据的逻辑结构, 并用并用Jackson图图描绘这些数据结构描绘这些数据结构。 (2) 找出输入数据结构和输出数据结构中有找出输入数据结构和输
40、出数据结构中有对应关系对应关系的数据单的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须是重复的次序和次数理的数据单元(对于重复出现的数据单元必须是重复的次序和次数都相同才可能有对应关系)。都相同才可能有对应关系)。 (3) 用下列用下列3条规则从描绘数据结构的条规则从描绘数据结构的Jackson图导出图导出描绘程序描绘程序结构的结构的Jackson图图: 为每对有对应关系的数据单元,按照它们在数据结构图中的层为每对有对应关系的数据单元,按照它们在数据结构图中的层次和在程序结构图的
41、相应层次画一个处理框(如果这对数据单元在输次和在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,入数据结构和输出数据结构中所处的层次不同, 则和它们对应的处则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中理框在程序结构图中所处的层次与它们之中在数据结构图中层次低层次低的的那个对应)。那个对应)。 根据输入数据结构中剩余的每个数据单元所处的层次,根据输入数据结构中剩余的每个数据单元所处的层次, 在程在程序结构图的相应层次分别为它们画上对应的处理框。序结构图的相应层次分别为它们画上对应的处理框。 根据输出数据结构中剩余的每个数据单
42、元所处的层次,根据输出数据结构中剩余的每个数据单元所处的层次, 在程在程序结构图的相应层次分别为它们画上对应的处理框。序结构图的相应层次分别为它们画上对应的处理框。 (4) 列出所有操作和条件列出所有操作和条件(包括选择条件和重复结束条件),并(包括选择条件和重复结束条件),并把它们分配到程序结构图的适当位置。把它们分配到程序结构图的适当位置。 (5) 用伪码表示程序用伪码表示程序。 现举例说明现举例说明Jackson方法设计过程。方法设计过程。 问题陈述问题陈述 某仓库存放多种零件(如某仓库存放多种零件(如P1, P2, ),每个零件的每次),每个零件的每次进货、发货都有一张卡片作出记录,每
43、月根据这样一叠卡片打印一进货、发货都有一张卡片作出记录,每月根据这样一叠卡片打印一张月报表。张月报表。 报表每行列出某种零件本月库存量的净变化。用报表每行列出某种零件本月库存量的净变化。用JSP方方法对该问题进行设计。法对该问题进行设计。 1) 建立输入、建立输入、 输出数据结构输出数据结构 建立输入、建立输入、 输出数据结构的步骤如下:输出数据结构的步骤如下: (1) 输入数据:输入数据: 根据问题陈述,根据问题陈述, 同一种零件的进货、同一种零件的进货、 发货状发货状态不同,每月登记有若干张卡片。态不同,每月登记有若干张卡片。 把同一种零件的卡片放在一起组成一组,所有的卡片组按零件把同一种
44、零件的卡片放在一起组成一组,所有的卡片组按零件名排序。名排序。 所以输入数据是由许多零件组组成的文件,每个零件组有所以输入数据是由许多零件组组成的文件,每个零件组有许多张卡片,许多张卡片, 张卡片上记录着本零件进货或发货的信息。因此输入张卡片上记录着本零件进货或发货的信息。因此输入数据结构的数据结构的Jackson图为图图为图 (a)。 输出数据:根据问题陈述,输出数据是一张如图输出数据:根据问题陈述,输出数据是一张如图 (c)的月报表,)的月报表, 它由表头和表体两部分组成,表体中有许多行,它由表头和表体两部分组成,表体中有许多行, 一个零件的净变化一个零件的净变化占一行,其输出数据结构的占
45、一行,其输出数据结构的Jackson图为图图为图 (b)。 2) 找出输入、找出输入、 输出数据结构中有对应关系的单元输出数据结构中有对应关系的单元 月报表由输入文件产生,有直接的因果关系,月报表由输入文件产生,有直接的因果关系, 因此顶层的数据因此顶层的数据单元是对应的。表体的每一行数据由输入文件的每一个单元是对应的。表体的每一行数据由输入文件的每一个“零件组零件组”计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,都按零件号排序。因此都按零件号排序。因此“零件组零件组”与与“行行”两个单元对应,以下再两个单元对应,以下再
46、无对应的单元。无对应的单元。 某仓库系统输入、某仓库系统输入、 输出数据结构输出数据结构(a) 输入数据结构;输入数据结构; (b) 输出数据结构;输出数据结构; (c) 输出表输出表输入文件零件组 *卡片 *进货 发货 月报表表头表体行 *零件名净变化对应对 应月报表零件名 增加数量P1P2P3 1500 100 200(c)(b)(a) 3) 导出程序结构导出程序结构 找出对应关系后,根据以下规则导出程序结构:对于输入数据找出对应关系后,根据以下规则导出程序结构:对于输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元按结构与输出数据结构中的数据单元,每对有对应关系的数据单元按
47、照它们所在的层次,在程序结构图适当位置合画一个处理框,无对照它们所在的层次,在程序结构图适当位置合画一个处理框,无对应关系的数据单元,各画一个处理框。应关系的数据单元,各画一个处理框。 根据以上规则,根据以上规则, 画出的程序结构图如下图所示。画出的程序结构图如下图所示。 在下图的程序结构的第在下图的程序结构的第4层增加了一个层增加了一个“处理零件组处理零件组”的框,的框,因为改进的因为改进的Jackson图规定顺序执行的处理中不允许混有重复执行图规定顺序执行的处理中不允许混有重复执行和选择执行的处理。和选择执行的处理。 增加了这样一个框,增加了这样一个框, 使符合该规定,同时也使符合该规定,
48、同时也提高了结构图的易读性。提高了结构图的易读性。 某仓库系统程序结构某仓库系统程序结构由输入文件产生月报表产生表头产生表体产生零件名产生净变化处理零件组处理卡片 *处理发货处理进货由零件组产生输出行 * 4) 列出并分配操作与条件列出并分配操作与条件 为了对程序结构作补充,要列出求解问题的所有操作和条件,为了对程序结构作补充,要列出求解问题的所有操作和条件,然后分配到程序结构图的适当位置,然后分配到程序结构图的适当位置, 就可得到完整的程序结构图。就可得到完整的程序结构图。 (1) 本问题的基本操作列出如下:本问题的基本操作列出如下: A:终止终止,B:打开文件打开文件,C:关闭文件关闭文件
49、,D:打印字符行打印字符行,E:读一张卡读一张卡 , F:产产生行结束符生行结束符,G:累计进货量累计进货量,H:累计发货量累计发货量,I:计算净变化计算净变化, J: 置零件组置零件组开始标志开始标志 (2) 列出条件如下:列出条件如下: I(1):输入条件未结束):输入条件未结束I(2):零件组未结束):零件组未结束S(3):): 进发进发货标志货标志将操作与条件分配到适当位置的程序结构图如下图所示。将操作与条件分配到适当位置的程序结构图如下图所示。 分配操作后的程序结构图 由输入文件产生月报表产生表头产生表体产生零件名产生净变化处理零件组处理卡片 *处理发货处理进货由零件组产生输出行 *
50、IS(3)GHI(2)DIDFJDJEBCAI(1) 在分配操作时注意:为了能获得重复和选择的条件,在分配操作时注意:为了能获得重复和选择的条件, Jackson建议至少超前读一个记录,以便使得程序不论在什么时候判定,建议至少超前读一个记录,以便使得程序不论在什么时候判定, 总总有数据已经读入,并做好使用准备。有数据已经读入,并做好使用准备。 因此在图因此在图4.32中,中, 将操作将操作E(读一张卡)放在打开文件之后,同时在处理完一张卡片后再读一(读一张卡)放在打开文件之后,同时在处理完一张卡片后再读一次。次。 5) 用伪码写出程序用伪码写出程序 Jackson方法中的伪码与方法中的伪码与J
51、ackson所示的程序结构图完全对应,用所示的程序结构图完全对应,用伪码写出程序的过程,实际上就是自顶向下用这些伪码替换伪码写出程序的过程,实际上就是自顶向下用这些伪码替换Jackson图中每个处理框的过程,每个处理框都看作是下层处理框及分配在图中每个处理框的过程,每个处理框都看作是下层处理框及分配在上面的操作组成。上面的操作组成。 下图所示的程序结构的伪码为:下图所示的程序结构的伪码为: 产生月报表产生月报表 seq 打开文件打开文件 读一张卡读一张卡 产生表头产生表头 seq 打印字符行打印字符行 产生表头产生表头 end 置零件组开始标志置零件组开始标志 产生表体产生表体 iter wh
52、ile 输入文件未结束输入文件未结束 由零件组产生输出行由零件组产生输出行 seq 处理零件组处理零件组 iter while 零件组未结束零件组未结束 处理卡片处理卡片 sel 进货标志进货标志处理进货处理进货 seq 累计进货量累计进货量处理进货处理进货 endalt 发货标志发货标志处理发货处理发货 seq 累计发货量累计发货量处理发货处理发货 end 处理卡片处理卡片 end 读一张卡读一张卡 处理零件组处理零件组 end产生零件名产生零件名 seq 打印字符行打印字符行产生零件名产生零件名 end产生净变化产生净变化 seq 计算净变化计算净变化 打印字符行打印字符行 产生净变化产生
53、净变化 end 换行换行 置零件组开始标志置零件组开始标志 由零件组产生输出行由零件组产生输出行end 产生表体产生表体 end 关闭文件关闭文件 终止终止 产生月报表产生月报表 end 用伪码书写程序可以很方便地转换成源代码,用伪码书写程序可以很方便地转换成源代码, 还可以检查前面还可以检查前面步骤的错误。如果分配操作不正确或者结构图不正确,步骤的错误。如果分配操作不正确或者结构图不正确, 都难以写出都难以写出它的伪码。它的伪码。 结构冲突问题结构冲突问题 JSP方法适用于输入数据和输出数据结构之间有对应关系的问方法适用于输入数据和输出数据结构之间有对应关系的问题求解。但有些情况下,输入数据
54、和输出数据结构之间找不到对应题求解。但有些情况下,输入数据和输出数据结构之间找不到对应关系,关系, 若仓库系统中的卡片不按零件名分组,而是按进货、发货的若仓库系统中的卡片不按零件名分组,而是按进货、发货的日期顺序排列,这样日期顺序排列,这样“零件组零件组”与与“行行”就不对应了。就不对应了。 输入数据与输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。输出数据结构找不到对应关系的情况,称为结构冲突。 对这种结构对这种结构冲突的问题,冲突的问题,Jackson提出了引入中间数据结构或中间文件的办法,提出了引入中间数据结构或中间文件的办法, 将冲突部分分隔开来,建立多个程序结构,将冲突部分
55、分隔开来,建立多个程序结构, 再利用中间文件把它们再利用中间文件把它们联系起来,构成一个系统的整体。联系起来,构成一个系统的整体。 详细设计阶段设计出的模块质量如何呢?第5章中曾经讲述了软件设计的基本原理和概念,经过详细设计之后每个模块的内容都非常具体了,因此可以使用这些原理进一步仔细衡量它们的质量。但是,这种衡量毕竟只能是定性定性的,人们希望能进一步定量度量定量度量软件的性质。6.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计
56、或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。使用得比较广泛的有McCabeMcCabe方法和HalsteadHalstead(霍斯德)方法。1. 1. 流图流图McCabe方法根据程序控制流的复杂程度控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。为了突出表示程序的控制流,人们通常使用流图流图(也称为程序图程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。6.5.1 McCabe方法在流图中用圆圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框
57、序列和一个菱形判定框,可以映射成流图中的一个结点。流图中的箭头线称为边边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)。由边和结点围成的面积称为区域区域,当计算区域数时应该包括图外部未被围起来的那个区域。 用任何方法表示的过程设计结果,都可以翻译成流图。 当过程设计中包含复合条件复合条件时,生成流图的方法稍微复杂一些。所谓复合条件,就是在条件中包含了一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)。在这种情况下,应该把复合条件分解为若干个简单条件分解为若干个简单条件,每个简单条件对应流图中一个结点。包含条件的结点称为判定节点判定节点,从每个判定结点引出两条或多条边。图6.16 由PDL翻译成的流图由包含复合条件的PDL映射成的流图2. 2. 计算环形复杂度的方法计算环形复杂度的方法 环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种任何一种来计算环形复杂度。(1) 流图中的区域数等于环形复杂度。(2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3) 流图G的环形复杂度V(G)=P+1,其中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年日用及医用橡胶制品合作协议书
- 2025年中高压变量叶片泵合作协议书
- 2025年麦草编织手袋项目可行性研究报告
- 2025年轻质燃油运油半挂车项目可行性研究报告
- 2025年落地灯弯管项目可行性研究报告
- 2025年耐高温过滤网项目可行性研究报告
- 2025-2030中国牛羊肉行业市场深度发展趋势与前景展望战略研究报告
- 2025-2030中国灌木修剪器行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国滴灌带行业市场发展分析及前景趋势与投资潜力研究报告
- 2025-2030中国游戏周边行业市场发展趋势与前景展望战略研究报告
- 家政服务平台的绿色发展与可持续发展研究
- 17-软件版本说明-GJB438C模板
- 38铬钼铝热处理工艺
- 医院医疗机构医疗风险管理工作方案(完整版)
- 京东商城的物流体系分解
- 世界文化遗产万里长城课件
- 2024年贵州高速公路集团有限公司招聘笔试参考题库含答案解析
- 急性脑卒中的早期识别和急诊处理
- 软件使用授权书
- 第四章社会医疗保险基金的测算
- 工程材料调差样表
评论
0/150
提交评论