结构化详细设计
一、人机界面设计
1. 人机界面设计问题
- 系统响应时间
从用户完成某控制动作,到软件给出预期响应。
两个重要属性:长度和易变性。
长度:
过长,用户感到不安、沮丧。
过短,迫使用户加快操作节奏,易导致出错。
易变性:
易变性指响应时间相对平均响应时间偏差,越低越好,否则会让用户误认为系统工作异常。 - 用户帮助措施
手册和联机帮助。
联机帮助:集成帮助和附加帮助。
集成帮助设计在软件里面,附加帮助系统建成后加到软件中,前者可用性更强。
请求帮助:帮助菜单,特殊功能键(F1),HELP命令。
显示帮助信息:独立窗口、参考某个文档、屏幕固定位置作简短提示。
组织帮助信息:
- 平面结构,通过关键字访问
- 层次结构,查更详细信息
- 超文本结构
- 出错信息处理
- 以用户可用理解术语;
- 提供清楚、易理解报错信息(出错位置、原因);
- 从错误中恢复的建设性意见;
- 信息用颜色等在视觉上引人注目;
- 可能造成负面后果。
- 命令交互
建议保留命令交互方式:
- 控制序列:ctrl + c (拷贝)、ctrl + h (帮助)、ctrl + p (打印)
- 功能键:F1(帮助)
- 键入命令
- 命令宏机制:用户定义名字代表一个常用命令序列。
2. 人机界面设计指南
- 一般交互
- 保持人机界面菜单选择、命令输入、数据显示风格一致;
- 提供有意义信息反馈:双向通信;
- 破坏性动作前要确认:删除、覆盖;
- 允许取消大多数操作;
- 减少两次操作之间必须的记忆量;
- 提高对话、移动和思考的效率;
- 允许犯错误:保护不受致命错误破坏;
- 按功能对动作分类,设计屏幕布局;
- 提供帮助措施;
- 用简单的动词或动词短语作为命令名。
- 信息显示
- 显示与当前工作有关信息;
- 简单移动方式表示数据:图形、图表;
- 使用一致标记、标准缩写和可预知颜色;
- 产生有意义出错信息;
- 使用模拟的方式显示信息等。
- 数据输入
- 减少用户输入动作:鼠标选择、滑动标尺等;
- 使当前不适用命令不起作用;
- 交互灵活:保留各种输入方式;
- 让用户控制交流;
- 对所有输入都提供帮助;
- 消除冗余输入:数据单位、整钱后键入.00、提供缺省值等。
二、过程设计
1. 过程设计任务
- 确定模块算法
- 确定模块使用数据结构
- 确定模块接口(系统外部接口、用户界面、内部模块间接口细节、输入数据和输出数据)
2. 结构化程序设计
结构化程序设计技术是过程设计的关键技术
- 经典定义:程序代码通过顺序、选择、循环三种控制结构连接,单入口单出口。
- 扩展定义:可限制使用GOTO语句、DO_UNTIL和DO_CASE
- 修正定义:LEAVE和BREAK,可从循环中转移出来。
3. 结构化程序设计工具
3.1 程序流程图
历史最悠久、使用最广泛的过程设计工具。
- 顺序型:几个连续的加工依次序排列
- 选择型:由某个判定的取值决定选择两个加工中一个。
- 当型循环型:当循环控制条件成立时,重复执行特定的加工。
- 直到型循环型:重复执行特定的加工,直到循环控制条件成立时。
- 多情况选择型:列出多种加工情况根据控制变量的取值,选择执行其一。
程序设计流图标准化图符
优点:
对控制流程描绘直观,便于初学者掌握。
缺点:
- 不是逐步求精的好工具,过早考虑控制流程,非整体结构;
- 用箭头代表控制流,程序员随意转移控制;
- 不易表示数据结构和调用关系。
3.2 N-S图
特点:
- 功能域(特定控制结构的作用域)明确;
- 不可能任意转移控制;
- 容易确定局部和全程数据的作用域;
- 容易表现嵌套关系,也可表示模块的层次结构。
3.3 PAD图
优点:
- 使用PAD图设计的程序必然是结构化程序;
- PAD图描绘的程序结构十分清晰;
- 用PAD图表现程序逻辑,易读、易懂、易记;
- 容易将PAD图转换成高级语言源程序;
- 支持自顶向下逐步求精
3.4 判定表
能清晰表示复杂的条件组合与应做动作间对应关系。
四部分:
- 左上部列出所有条件;
- 左下部所有可能做的动作;
- 右上部表示各种条件组合的矩阵;
- 右下部是和每种条件组合相对应的动作。
3.5 判定树
判定表变种,表示复杂条件组合与应做动作间对应关系。
优点:形式简单,易看出含义,易于掌握和使用。
缺点:简洁性不如判定表,相同数据元素重复写多遍,越接近叶端重复次数越多。
3.6 过程设计语言
伪码,用正文形式表示数据和处理过程设计工具
PDL具有严格关键字外部语法,定义控制结构和数据结构;
PDL表示实际操作和条件的内部语法灵活自由。适应各种工程项目需要。
4. 程序复杂度
McCabe方法
- 根据过程设计结果画出相应流图
流图描述程序控制流,基本图形符号如下图所示。
流程图映射成流图
符合条件下流图映射
- 计算流图的环形复杂度
三、面向数据结构设计方法
数据结构既影响程序的结构也影响程序的处理过程,可从数据结构导出程序的处理过程,适合详细设计。
面向数据结构设计方法两种:Jacksom和Warnier方法。
1. Jackson图
描述数据结构:顺序、选择、重复。
改进:直线,选择和循环结束条件。
2. Jackson方法步骤
- 确定输入数据和输出数据逻辑结构,用Jackson图表达;
- 确定输入结构和输出结构中有对应关系(因果)的单元;
- 描绘数据结构的Jackson图导出描绘程序结构Jackson图;
- 列出所有操作和条件,分配到Jackson图中;
- 用伪码表示。