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