已阅读5页,还剩82页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章详细设计 ProgramDesign 主要内容 详细设计的目标和任务 理解 详细设计工具 应用 程序复杂性的定量度量 理解 人机界面设计 自学 3 4 1详细设计的目标和任务 从软件开发的工程化观点来看 在使用程序设计语言编制程序以前 需要对所采用算法的逻辑关系进行分析 设计出全部必要的过程细节 并给予清晰的表达 这就是详细设计的任务 5 回答的关键问题 怎样具体地实现这个系统 主要任务是设计出程序的 蓝图 供程序员日后根据这个蓝图编写出实际的程序代码 注意 设计程序的蓝图 不是具体地编写程序 设计程序主要采用结构化的程序设计方法 基本任务 ProgramDesign Coding 6 什么是结构程序设计结构程序设计是一种设计程序的技术 它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构 只使用三种基本的控制结构 单入口单出口的控制结构 取消GOTO语句 结构程序设计 经典的结构程序设计 顺序 选择 当型循环扩展的结构程序设计 顺序 选择 多分支 当型循环 直到型循环修正的结构程序设计 顺序 选择 多分支 当型循环 直到型循环 break结构 8 结构程序设计的优点显著提高软件开发工程的成功率和生产率 程序具有清晰的层次结构 容易阅读和理解 程序的静态结构和动态结构较一致 程序容易读和理解 开发较易保证程序的正确性 控制结构有确定的逻辑模式 编写程序代码简单源程序清晰流畅 易读易懂易测试 可以重用的代码量最大 程序的逻辑结构清晰 有利于程序正确性证明 结构程序设计的缺点存贮容量和运行时间较大 增加10 20 9 详细设计的原则与方法 1 清晰第一的设计风格2 结构化的控制结构3 逐步细化 逐步求精 的实现方法 10 逐步求精的含义总体设计阶段逐步求精的含义 把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统 详细设计阶段逐步求精的含义 把一个模块的功能逐步分解细化为一系列具体的处理步骤 11 在详细设计阶段 要决定各个模块的实现算法 并精确地表达这些算法 表达详细规格说明的工具叫做详细设计工具 它可以分为以下三类 图形工具表格工具语言工具 2详细设计工具 12 1 程序流程图又称为程序框图 是早期软件设计的主要工具 2 优点 对控制流程的描绘很直观 便于初学者掌握 3 缺点 程序流程图本质上不是逐步求精的好工具 它诱使程序员过早地考虑程序的控制流程 而不去考虑程序的全局结构 2 1程序流程图 13 程序流程图中用箭头代表控制流 因此程序员不受约束 可以完全不顾结构程序设计的精神 随意转移控制 程序流程图不易表示数据结构 程序流程图使用五种基本控制结构是 14 15 示例 16 程序流程图的标准符号 17 多出口判断 18 N S图也叫做盒图 Nassi和Shneiderman提出 有以下特点 1 功能域 即一个特定控制结构的作用域 明确 很容易从盒图上看出 2 盒图没有箭头 不可以随意转移控制 不允许违背程序设计的原则 3 很容易确定局部和全程数据的作用域 4 很容易表现嵌套关系 也可以表示模块的层次结构 2 2N S图 19 五种基本控制结构由五种图形构件表示 20 示例 21 N S图的嵌套定义形式 22 PAD图由日本日立公司在1973年发明 它用二维树型结构的图来表示程序的控制流 比较容易翻译成程序代码 主要特点 1 使用PAD图设计的程序必然是结构化程序 2 PAD图描绘的程序结构十分清晰 3 用PAD图表现程序逻辑 易读 易懂 易记 2 3问题分析图 PAD 23 4 PAD图面向高级语言 容易将PAD图转换成高级语言源程序 5 PAD图既可用于表示程序逻辑 也可用于描绘数据结构 6 PAD图的符号支持自顶向下 逐步求精方法的使用 24 PAD也设置了五种基本控制结构的图式 并允许递归使用 25 PAD描述的示例 开始 结束 26 对应于增量型循环结构fori n1ton2stepn3do在PAD中有相应的循环控制结构 PAD的扩充控制结构 27 2 4判定表 判定表用于表示程序的静态逻辑 在判定表中的条件部分给出所有的两分支判断的列表 动作部分给出相应的处理 28 判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系 而其它的工具不易表示 一张判定表由四部分组成 左上部列出所有条件 左下部是所有可能做的动作 右上部是表示各种条件组合的一个矩阵 右下部是和每种条件组合相对应的动作 判定表的每一列实质上是一条规则 规定了与特定的条件组合相对应的动作 详细设计的工具 判定表 例子假设某航空公司规定 乘客可以免费托运重量不超过30公斤的行李 当行李重量超过30公斤时 对头等舱的国内乘客超重部分每公斤收费4元 对其它舱的乘客超重部分每公斤收费6元 对外国乘客超重部分每公斤收费比国内乘客多一倍 对残疾乘客超重部分每公斤收费比正常乘客少一半 用判定表来表示与上述每种条件组合相对应的动作 例 某校制定了教师的讲课课时津贴标准 对于各种性质的讲座 无论教师是什么职称 每课时津贴费一律是50元 而对于一般的授课 则根据教师的职称来决定每课时津贴费 教授30元 副教授25元 讲师20元 助教15元 31 检查发货单 的判定表 32 无多分支判断结构 33 34 建立判定表的步骤 列出过程执行期间的所有条件 或所有判断 列出与一个具体过程 或模块 有关的所有处理 将特定条件取值组合与特定的处理相匹配 消去不可能发生的条件取值组合 将右部每一纵列规定为一个处理规则 即对于某一条件取值组合将有什么动作 35 判定树是判定表的变种 也能清晰地表示复杂的条件组合与应做的动作之间的对应关系 优点 形式简单 不需任何说明 易看出含义 易于掌握和使用 缺点 简洁性不如判定表 相同的数据元素往往要重复写多遍 而且越接近树的叶端重复次数越多 2 5判定树 详细设计的工具 判定树 行李费算法 行李重量W 30 国内乘客 外国乘客 头等舱 其它舱 残疾乘客 W 30 2 正常乘客 W 30 4 残疾乘客 W 30 3 正常乘客 W 30 6 头等舱 其它舱 残疾乘客 W 30 4 正常乘客 W 30 8 残疾乘客 W 30 6 正常乘客 W 30 12 行李重量W 30 免费 教师课时津贴判定树 注 判定表与判定树并不适用于作为一种通用的设计工具 通常将之用于辅助测试 38 2 6PDL ProgramDesignLanguage PDL是一种用于描述功能模块的算法设计和加工细节的语言 称为设计程序用语言 它是一种伪码 伪码的语法规则分为 外语法 和 内语法 PDL具有严格的关键字外语法 用于定义控制结构和数据结构 同时它的表示实际操作和条件的内语法可使用自然语言的词汇 39 示例 拼词检查程序 PROCEDUREspell checkISBEGINSplitdocumentintosinglewordsLookupwordsindictionaryDisplaywordswhicharenotindictionaryCreateanewdictionaryENDspell check 40 应具备以下特点 有固定的外语法 keyword 有数据说明 例如 TYPEnumberISSTRINGLENGTH 12 TYPEtableISINSTANCEOFsymbol table又如 DESCLARE 变量名 AS 限定词1 限定词2 内语法用自然语言描述 抽象类型 41 有子程序定义与调用机制 例如 PROCEDUREINTERFACEpseudocodelines END调用时可用 PERFORMUSING 42 程序控制结构判定结构IF 条件 THEN PDL语句段或程序块 ELSE PDL语句段或程序块 ENDIF 43 分支结构CASE 情况变量 WHEN 情况条件1 SELECT 块或PDL语句 WHEN 情况条件2 SELECT 块或PDL语句 WHEN 情况条件N SELECT 块或PDL语句 省缺或出错情况 块或PDL语句 ENDCASE重复结构WHILE DO REPEAT UNTIL FOR DO 44 优点 易于实现由PDL到源代码的自动转换 缺点 不够直观 45 使用PDL语言 逐步求精 PROCEDUREspellcheckBEGIN splitdocumentintosinglewordsLOOPgetnextwordaddwordtowordlistinsortorderEXITWHENallwordsprocessedENDLOOP lookupwordsindictionaryLOOPgetwordfromwordlist 46 IFwordnotindictionaryTHEN displaywordsnotindictionarydisplaywordpromptonuserterminalIFuserresponsesayswordOKTHENaddwordtogoodwordlistELSEaddwordtobadwordlistENDIFENDIFEXITWHENallwordsprocessedENDLOOP 47 createanewwordsdictionarydictionary mergedictionaryandgoodwordlistENDspellcheck 48 检查发货单 的例子 IF发货单金额超过 500THENIF欠款超过了60天THEN在偿还欠款前不予批准ELSE 欠款未超期 发批准书 发货单ENDIFELSE 发货单金额未超过 500 IF欠款超过60天THEN发批准书 发货单及赊欠报告ELSE 欠款未超期 发批准书 发货单ENDIFENDIF 49 上述工具的比较 50 3程序复杂性的定量度量 定义 程序复杂性主要指模块内程序的复杂性 它直接关联到软件开发费用的多少 开发周期的长短和软件内部潜伏错误的多少 意义可用于估算软件中的故障数量可用于估算软件开发的工作量可作为模块规模的精确度量可用于比较设计的优劣 51 复杂性度量需要满足的假设 为了度量程序复杂性 要求 可用于计算任何一个程序的复杂性 对于不合理的程序 例如对于长度动态增长的程序 或者对于原则上无法排错的程序 不应当使用它进行复杂性计算 如果程序中指令条数 附加存储量 计算时间增多 不会减少程序的复杂性 52 3 1代码行度量法 源代码行数度量法基于两个前提 程序复杂性随着程序规模的增加不均衡地增长 控制程序规模的方法最好是采用分而治之的办法 将一个大程序分解成若干个简单的可理解的程序段 53 方法的基本考虑是统计一个程序模块的源代码行数目 并以源代码行数做为程序复杂性的度量 设每行代码的出错率为每100行源程序中可能有的错误数目 Thayer曾指出 程序出错率的估算范围是从0 04 7 之间 即每100行源程序中可能存在0 04 7个错误 他还指出 每行代码的出错率与源程序行数之间不存在简单的线性关系 54 Lipow指出 对于小程序 每行代码出错率为1 3 1 8 对于大程序 每行代码的出错率增加到2 7 3 2 之间 这只是考虑了程序的可执行部分 没有包括程序中的说明部分 Lipow及其他研究者得出一个结论 对于少于100个语句的小程序 源代码行数与出错率是线性相关的 随着程序的增大 出错率以非线性方式增长 55 3 2McCabe度量法 McCabe度量法 又称环路复杂性度量 是一种基于程序控制流的复杂性度量方法 它基于一个程序模块的程序图中环路的个数 因此计算它先要画出程序图 流图 程序图是退化的程序流程图 流程图中每个处理都退化成一个结点 流线变成连接不同结点的有向弧 56 57 程序图仅描述程序内部的控制流程 完全不表现对数据的具体操作 以及分支和循环的具体条件 计算环路复杂性的方法 根据图论 在一个强连通的有向图G中 环的个数由以下公式给出 V G m n p 环路个数 弧数 结点数 强连通分量个数 详细设计的工具 程序复杂度的定量度量 V G 13 11 1 3 59 补充 计算环形复杂度的方法 教材P137 环形复杂度定量度量程序的逻辑复杂度 有了描绘程序控制流的流图之后 可以用下述3种方法中的任何一种来计算环形复杂度 1 流图中的区域数等于环形复杂度 2 流图G的环形复杂度V G E N 2 其中 E是流图中边的条数 N是结点数 3 流图G的环形复杂度V G P 1 其中 P是流图中判定结点的数目 60 几点说明 环路复杂度取决于程序控制结构的复杂度 当程序的分支数目或循环数目增加时其复杂度也增加 环路复杂度与程序中覆盖的路径条数有关 环路复杂度是可加的 例如 模块A的复杂度为3 模块B的复杂度为4 则模块A与模块B的复杂度是7 61 McCabe建议 对于复杂度超过10的程序 应分成几个小程序 以减少程序中的错误 Walsh用实例证实了这个建议的正确性 在McCabe复杂度为10的附近 存在出错率的间断跃变 McCabe环路复杂度隐含的前提是 错误与程序的判定加上例行子程序的调用数目成正比 加工复杂性 数据结构 录入与打乱输入卡片的错误可以忽略不计 62 这种度量的缺点是 对于不同种类的控制流的复杂性不能区分简单IF语句与循环语句的复杂性同等看待嵌套IF语句与简单CASE语句的复杂性是一样的模块间接口当成一个简单分支一样处理一个具有1000行的顺序程序与一行语句的复杂性相同 63 作业 画出与下列用伪码书写的程序所对应的NS图和PAD图 K 0 FLAG 1WHILEFLAG 0DOK K 1FLAG 0FORJ 1TOKDOIFL J L J 1 THENDOL J L J 1 FLAG 1ENDDOENDFORENDWHILE 64 解 65 五 详细设计说明书1引言1 1编写目的 阐明编写详细设计说明书的目的 指明读者对象 1 2项目背景 应包括项目的来源和主管部门等 1 3定义 列出本文档中所用到的专门术语的定义和缩写词的愿意 1 4参考资料 列出有关资料的作者 标题 编号 发表日期 出版单位或资料来源 项目经核准的计划任务书 合同或上级机关的批文 项目开发计划 需求规格说明书 概要设计说明书 测试计划 初稿 用户操作手册 文档所引用的资料 软件开发的标准或规范 2总体设计2 1需求概述2 2软件结构 如给出软件系统的结构图 3程序描述3 1逐个模块给出以下说明 功能 性能 输入项目 输出项目3 2算法 模块所选用的算法 3 3程序逻辑 详细描述模块实现的算法 可采用 标准流程图 PDL语言 N S图 判定表等描述算法的图表 3 4接口 存储分配 限制条件3 5测试要点 给出测试模块的主要测试要求 4补充 人机界面设计 软件的任务是由用户在提供给用户的虚拟工作环境中来完成 用户所面对的虚拟工作环境就是人机界面 用户承担需要创造 判断和探索的任务 而计算机承担重复检查 计算和数据处理的任务 用户能够正确 高效的完成任务 取决于软件所提供的工作环境 在应有的功能和性能基础上 人机界面在完成用户任务 用户形成使用软件的感受中起到非常重要的作用 人机界面设计是软件设计的重要内容 人机界面应具备的特性1 可使用性 1 使用的简单性 2 术语标准化和一致性 3 快速的系统响应和低的系统成本 4 用户界面应具有容错能力2 灵活性 1 算法的可隐可显性 2 用户可以根据需要制定和修改界面方式 3 足够的响应信息 4 与其它软件系统应有标准的界面3 可靠性 人机交互部件的设计人机交互部件突出人如保命令系统以及系统如何向用户提供交互信息 在设计人机交互部件时 首先考虑的是人 其次是任务 然后再是有关工具 人机交互部件在系统行为和用户界面之间架起了一座桥梁 交互设计准则一致性 即使用一致的术语 一致的步骤 一致的动作等 及时提供反馈信息 并且应简短 直接 及时从户角度作出提示 提供撤消命令 减少用户记忆负担 如每步给出足够的提示 易学 富有吸引力 如提供联机帮助 充分利用图形用户界面的优越性等 用户界面是用户与计算机之间联系的中间媒介 是应用程序中用户能见到的系统运行部分 是应用程序中重要的部分和最直接的体现者 4 1什么是好的用户界面4 2用户界面的风格4 3学生成绩管理系统用户4 4用户界面设计原则4 5用户界面设计步骤4 6用户界面设计的评价4 7小结 4 1什么是好的用户界面 第一代是以文本为基础的简单交互 如常见的命令行 字符菜单等 第二代直接操作的图形用户界面 它大量使用图形 语音和其它交互媒介 4 2用户界面的风格分析 1 命令语言 2 菜单选项 3 面向窗口的点选界面 4 自然语言 4 3学生成绩管理系统用户界面设计 4 3 1 学生成绩管理 菜单设计菜单的基本作用有两个 第一是提供人机对话的接口 以便让用户选择应用系统的各种功能 第二是管理应用系统 控制各种功能模块的运行 菜单一般分为两种基本类型 下拉式菜单和弹出式菜单 图4 1 学生成绩管理 菜单图4 2VB工程资源管理器窗口弹出式菜单 4 3 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电工等级考试题库及答案
- 配电工考试题库及答案
- 售后服务流程管理客户满意度提升版
- 技术会议活动内容及准备工作表含场地预约标准步骤
- 2025年机器人行业技术创新与产业应用研究报告及未来发展趋势预测
- 2025年农业科技行业数字农业技术应用与农业发展研究报告及未来发展趋势预测
- 智能家居安全便捷体验承诺书8篇范文
- 会议组织与策划执行工具箱
- 会计从业资格考试卷分ab卷及答案解析
- b2从业资格证模似考试及答案解析
- 2025设备租赁合同补充协议范本设备租赁合同补充协议书
- 2025年内蒙古能源行业分析报告及未来发展趋势预测
- 浙江省杭州市2026届高三上学期11月一模试题 语文 含解析
- 2025-2026学年苏少版七年级综合实践活动上册(全册)教学设计(附目录)
- 2025广东清远市清城区源潭镇人民政府招聘后勤服务类人员3人笔试考试参考试题及答案解析
- 2025普陀区属国有企业招聘18人备考参考试题及答案解析
- 学堂在线 研究生学术与职业素养讲座 章节测试答案
- 2025年安徽省高考物理试卷真题(含答案解析)
- 阅读填表专项训练10篇(含参考答案)人教版英语七年级上册
- 涵洞基底注浆施工作业指导书
- 心衰中医护理
评论
0/150
提交评论