




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计任务从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。 详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。1软 件 工 程-第6章 详细设计21. 详细设计的任务(Program Design Coding)为SC图的每一个模块确定使用的算法和数据结构 确定模块内算法,用某种工具来表达 确定模块内的数据结构 确定模块间的接口细节 为每个模块设计测试引言: 详细设计的任务36. 详细设计的任务进行详细设计的原则 在保证正确可靠的前提下,尽量提高算法的可读性 结构化设计方法 自顶向下逐步求精; 具有单入、单出的控制结构
2、(取消GOTO语句) 用工具来描述模块算法 引言:详细设计的任务4引言:详细设计(过程设计、模块设计)主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具 表达算法的过程,写出模块的 详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。56.1 结构化程序设计(SP)方法传统的设计技术和旧观念:强调设计的随意性,具有浓厚的个人色彩.追求程序效率和个人设计技巧新的设计思想和风格:清晰第一使用标准的、规范的控制结构逐步细化6结构程序设计原则程序的读者有二个:计算机和人,人们测试、维护、诊断和修改程序都必须读懂程序衡量程序质量不仅要看
3、逻辑是否正确,性能是否良好,还要看它是否容易阅读和理解程序的质量与GOTO语句数量成反比只用3种或几种基本结构来构造程序每个程序应是单入口和单出口结构程序设计是一种使程序容易阅读、理解的编程方法,自顶向下,逐步求精,用3种基本结构构造程序72. 设计工具2. 设计工具在详细设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类: 图形工具 表格工具 语言工具81、程序流程图(Program Flow Chart)程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:2. 设计工具92. 设计工具10 示例2. 设计工具11程序
4、流程图的标准符号2. 设计工具12循环的标准符号 注解的使用2. 设计工具13多出口判断2. 设计工具14 任何复杂的程序流程图都应由以上五种基本结构组合而成。 缺点:本质上不具备逐步求精的特点,对于提高 大型系统的可理解性作用甚微; 不易表示数据结构; 转移控制太方便。 趋势:仃止使用 优点:容易掌握,且历史“悠久”,使用广泛。2. 设计工具152、N-S图N-S图也叫做盒图(Box Diagram) 。五种基本控制结构由五种图形构件表示。2. 设计工具16示例2. 设计工具17N-S图的嵌套定义形式2. 设计工具18特点: 没有箭头,不允许随意转移控制; 每个矩形框(Case中条件取值例外
5、)都是一个功能域(即一个特定结构的作用域),结构表示明确; 局部及全程数据的作用域易见; 易表现嵌套关系(embedded structure)以及模块的层次结构。2. 设计工具19ABSequential While PS Until PSLoopsPABTHENELSESelectiveP =A1A2CaseAn12nStatement IndexdefDefinition3、PAD图(Problem Analysis Diagram):日立公司,19732. 设计工具20 x4TFDo-Until x5ighfkx1TFbDo-Until x6ajx21cDo-While x323dek
6、 :例:N-S图与PAD的转换2. 设计工具21开始 结束 aj Until x5i Until x6bx1kfx4ghdefkx2de123 While x3c2. 设计工具22特点: 结构清晰,层次分明,易读; 支持逐步求精的设计思想; 容易将PAD自动转换为高级语言源程序。2. 设计工具234 判定表 当算法中包含多重嵌套的条件选择时,用程序流程图、 N-S图或PAD都不易清楚地描述。这时可以用判定表或判定树来描述这些复杂的条件。判定表与判定树除了在详细 设计阶段使用外,在需求分析阶段也经常使用。 判定表一般由4部分组成:左上半部分列出所有条件、左下半部分列出所有动作、右上半部分列出各种
7、条件组合,右下半部分列出和每组条件取值组合对应的动作。其结构下图所示:24 判定表的优点是能够简洁,无二义性的描述所有的处理规则。缺点是它所表示的是静态逻辑,是在某种条件组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构。因此,判定表不能成为一种通用的设计工具,一般作为辅助工具配合其他工具一起使用。图3.33 判定表结构示意图 25例某“订货单处理程序”的处理逻辑描述如下: “如果订货金额不足500元且未过期,则向客户发出批准单和提货单,已过期的,什么也不发;如果订货金额超过500元但不足1000元,则发出批准单和提货单,对已过期的,还要发过期通知单;如果订货金额超过1000元,不
8、论是否过期,都要发出批准单和提货单。” 试用判定表表示出该逻辑。 判定表如表3.2所示:261234条件过期FTT金额500TT500金额1000T金额1000T动作发过期通知单发批准单发提货单表3.2 判定表实例 275判定树(Decision Tree) 判定树实质上是判定表的一种变形,本质上是一样的。 判定树的优点是形式简单、比较直观、易于掌握和使用。 缺点是不如判定表简洁。对于例3.3的描述可用判定树表示成如图3.34所示的形式:图3.34 判定树实例28PROCEDURE spell_check IS BEGIN Split document into single words Lo
9、ok up words in dictionary Display words which are not in dictionary Create a new dictionary END spell_checkExternal statementsInternalstatements6、PDL语言(Program Design Language):又称 Pseudocode.例:2. 设计工具29应具备以下特点: 有固定的外语法(keyword); 有数据说明,例如: TYPE number IS STRING LENGTH (12) TYPE table IS INSTANCE OF s
10、ymbol_table有子程序定义与调用机制,例如: PROCEDURE INTERFACE pseudocode lines END 调用时可用:PERFORM USING 内语法用自然语言描述;抽象类型2. 设计工具30优点:易于实现由PDL到源代码的自动转换。缺点:不够直观。2. 设计工具31ABCBCA =ABoCoSA =SCBA = BAB*I3. 面向数据结构的设计方法Jackson System Development(JSD) 与SD的由DFD导出结构设计不同,JSD是以数据结构(data structure)为基础设计每个模块的处理过程。1、Jackson Diagram:
11、注意:H中的方框表示模块,而JD中的方框代表几个语句构成的简单操作;H表现调用关系,而JD表现组成关系。32 例:(P.91)一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是:每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。2、Jackson方法:33第1步:用Jackson图描述 IO 的数据结构正文文件I字符串*字符*空格O非空格OIS输入输出表格表格体串信息*字符串空格数I输出空格总数第2步:在两个图中指出有直接因果关系(causality)、可以同时处理的单元(
12、重复的次序,次数均相同)34正文文件I字符串*字符*空格O非空格OIS输入输出表格表格体串信息*字符串空格数I输出空格总数? 经过程序处理由正文文件得到输出表格。 每处理输入中一个字符串后就得到输出中一个串信息,二者重复次序和次数均相同。 字符不与多字符组成的字符串对应。 单个空格不能决定空格数。35正文文件I字符串*字符*空格O非空格OIS输入输出表格表格体串信息*字符串空格数I输出空格总数统计空格处理字符串*I程序体印总数印字符串印空格数分析字符*分析字符*I分析字符串处理空格o处理非空格oS注:顺序执行的处理中不允许混有重复执行或选择执行的处理。第3步:Data structure Pr
13、ogram structure把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准)36第4步:列出所有操作条件,并分配到上幅程序结构图中统计空格处理字符串*I(1)程序体印总数印字符串印空格数分析字符*I分析字符串处理空格o处理非空格oS23145例:(部分列举,详见P.93-93)打开文件读入字符串空格总数totalsum=0关闭文件仃止I 文件结束第5步:用Pseudocode 表示程序。(详见P.94 -95)37顾客姓名顾客号旧余额活动号数量代码(存/取)4. Warnier方法Warnier方法又称LCP法(Logically Constructing Progra
14、m)例:(P.96)假设要设计一个系统用来定期产生有关顾客帐目的报表,输入文件中每个顾客有一个头记录,后接若干个事务记录。38输出报表如下:顾客号顾客姓名活动号支出数存入数新余额旧余额支出总数存入总数39第2步:Data Structure Program Structure 。 见P.97 图 5.17 第3步:将上图对应转换为程序流程图,并将每个处理框编号。见P.98 图 5.18第4步:Pseudocode 分类。第1步:用Warnier Diagram 描述IO的数据结构 见P.97 图5.1640例:(部分列举,详见P.98 - 99) 输 入 类 010 读 040 读 100 读
15、 分支准备类:040 顾客号送到访问顾客号 分支指令类:010 若EOF 030 040 若读出的顾客号 =访问的顾客号 060 100 若读出的顾客号 =访问的顾客号 070 计 算 类:040 旧余额送到工作区 输 出 类:040 旧余额送到参考区 040 编辑顾客标题 040 输出并复原打印区 41第5步:将前一步分类结果标号排序 Pseudocode. 见 P.99 100辅助技术:当IO 数据有多个时,借 助判定表 见P.100 10442 详细设计阶段设计出的模块质量如何呢?第5章中曾经讲述了软件设计的基本原理和概念,经过详细设计之后每个模块的内容都非常具体了,因此可以使用这些原理
16、进一步仔细衡量它们的质量。 由于软件工程还是一门很年轻的学科,目前许多定量度量方法还处在研究过程中,本节将要介绍的程序复杂程度定量度量方法是其中比较成熟的一种。6.5 程序复杂程度的定量度量43 定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。 下面着重介绍使用得比较广泛的McCabe方法和Halstead方法。441. 流图McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环
17、形复杂度。为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。6.5.1 McCabe方法45 在流图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)。由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。 图6.15(见
18、书128页)举例说明把程序流程图映射成流图的方法。46 用任何方法表示的过程设计结果,都可以翻译成流图。图6.16是用PDL表示的处理过程及与之对应的流图。 当过程设计中包含复合条件时,生成流图的方法稍微复杂一些。所谓复合条件,就是在条件中包含了一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)。在这种情况下,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。包含条件的结点称为判定节点,从每个判定结点引出两条或多条边。图6.17是由包含复合条件的PDL片断翻译成的流图。47图6.16 由PDL翻译成的流图48图6.17 由包含复合条件的PDL映射成的流图492. 计算环形复杂度的方法 环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1) 流图中的区域数等于环形复杂度。(2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3) 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。503. 环形复杂度的用途程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同范本题目
- 农村水田租赁承包合同范本
- 企业汽车销售合同范本
- 代理买卖二手车合同范本
- 代领购房合同范本
- 一般经销合同范例
- 个人购货采购合同范本
- 关于装修贷款合同范本
- 升旗台合同范本
- 前台劳务派遣合同范本
- 2023年7月浙江省普通高中学业水平考试(学考)语文试题答案
- 解剖台市场发展前景分析及供需格局研究预测报告
- GB/T 44590-2024天然林保护修复生态效益评估指南
- 发热病人护理课件
- 民用无人机操控员执照(CAAC)考试复习重点题及答案
- 第20课清朝君主专制的强化 教案
- 幼儿园中班安全《不动手打人》课件
- 2输变电工程施工质量验收统一表式(变电工程土建专业)-2024年版
- 骨科睡眠护理
- 2025年高考语文复习备考复习策略讲座
- 辽宁沈阳历年中考语文现代文之说明文阅读11篇(含答案)(2003-2022)
评论
0/150
提交评论