软件工程导论课件之第6章_详细设计(第五版)(张海潘编著)_第1页
软件工程导论课件之第6章_详细设计(第五版)(张海潘编著)_第2页
软件工程导论课件之第6章_详细设计(第五版)(张海潘编著)_第3页
软件工程导论课件之第6章_详细设计(第五版)(张海潘编著)_第4页
软件工程导论课件之第6章_详细设计(第五版)(张海潘编著)_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 详细设计,6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量,详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统。经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。,6.1 结构程序设计,经典定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 更全面定义:结构程序设计是尽

2、可能少用GOTO语句的程序设计方法。最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句。,为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构。 有时需要立即从循环(甚至嵌套的循环)中转移出来,允许使用LEAVE(或BREAK)结构。LEAVE或BREAK结构实质上是受限制的GOTO语句,用于转移到循环结构后面。,3种基本的控制结构,其他常用的控制结构,经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构; 扩展的结构程序设计:如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多

3、分支结构和DO-UNTIL型循环结构; 修正的结构程序设计:再加上允许使用LEAVE(或BREAK)结构。,6.2 人机界面设计,人机界面设计是接口设计的重要组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。 人机界面的设计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,必须对人机界面设计给予足够重视。,三条“黄金规则”: 置用户于控制之下。 减少用户记忆负担。 保持界面一致。,6.2.1 设计问题,设计人机界面过程中会遇到的4个问题: 系统响应时间 用户帮助设施 出错信息处理 命令交互,1. 系统响应时间 系统响应时间指从用户完成某个控

4、制动作,到软件给出预期的响应之间的这段时间。系统响应时间有两个重要属性:长度和易变性。 长度:如果系统响应时间过长,用户就会感到紧张和沮丧;系统响应时间过短会迫使用户加快操作节奏,从而可能会犯错误。 易变性:指系统响应时间相对于平均响应时间的偏差,即使系统响应时间较长,响应时间易变性低也有助于用户建立起稳定的工作节奏。,2. 用户帮助设施 大多数现代软件都提供联机帮助设施,用户无须离开用户界面就能解决自己的问题。常见的帮助设施可分为集成的和附加的两类。 集成的帮助设施设计在软件里面,它对用户工作内容是敏感的,用户可以从与刚刚完成的操作有关的主题中选择一个请求帮助。 附加的帮助设施是在系统建成后

5、再添加到软件中的,它实际上是一种查询能力有限的联机用户手册。 集成的帮助设施优于附加的帮助设施。,3. 出错信息处理 出错信息和警告信息,是出现问题时交互式系统给出的“坏消息”。 4. 命令交互 多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能。 在理想的情况下,所有应用软件都有一致的命令使用方法。,6.2.2 设计过程,用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。 为了支持上述迭代过程,各种用于界面设计和原型开发的软件工具应运而生。这些工具被称为用户界面工具箱或用户界面开发系

6、统。,6.2.3 人机界面设计指南,一般交互指南 信息显示指南 数据输入指南,颜色使用指南: 一个窗口中不应该出现5种以上不同色系的颜色。一般的,尽量少用不同的颜色总是好的。 如果一个图表中仅包含几种颜色,背景应该选用其中一种颜色的补色:如果一幅图中包含许多颜色,背景应该选用一种中性的颜色,如灰色。 如果两个相邻的颜色不是特别和谐,可以用细的黑色边框将它们分开。 背景和字体颜色应选用对比度强的颜色。 颜色的应用要适度,装饰性的使用服从功能性的使用。 区域的颜色实际上能够影响他的观察尺寸。 使用高饱和度(亮)颜色的大区域是不明智的。 红色和蓝色具有最强的深度不一致的效果,红色看起来近,蓝色看起来

7、远。,黄月亮和蓝月亮,怀特效应,蓝宝石之光,斯特鲁普效应,6.3 过程设计的工具6.3.1 程序流程图,程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。 它的主要优点是对控制流程的描绘很直观,便于初学者掌握。 程序流程图历史悠久,至今仍在广泛使用着。,程序流程图中使用的符号,程序流程图的主要缺点: 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。 程序流程图不易表示数据结构。,6.3.2 盒图(N-S图),盒图具有

8、下述特点: 功能域明确。 不可能任意转移控制。 很容易确定局部和全程数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次结构。,盒图的基本符号,问题分析图(Problem Analysis Diagram 图),6.3 过程设计工具,PAD图 日立公司,1973年发明 采用二维树型结构来表示程序的控制流。 过程与数据结构可同时表示; 易读、易学、易修改、易细化、易编码;,Case分支 与分层结构 (用 def 细化处理框),P1,P2,Pn,X=,L1 L2,Ln,P11,6.3 过程设计工具,def,主要优点: (1)由该图设计出的程序必为结构化的 (2)结构非常清晰,竖线的条数即程序的

9、层次数 (3)所表现的程序逻辑易读、易懂、易记 (4)可利用软件工具自动转换为高级语言源程序 (5)既可表示程序逻辑,也可描绘数据结构 (6)支持自顶向下、逐步求精(利用def) 面向高级语言:FORTRAN,COBOL,PASCAL,C都有相应的图形符号,所以将PAD图转换成对应的高级语言程序比较容易,6.3 过程设计工具,开始 ,结束 ,6.3 过程设计工具,6.3 过程设计工具,举例,判 定 表,判定表:,6.3 过程设计工具,例:,五. 判 定 表,P127,判定表,适合描述:包含复杂的条件组合,并要根据这些条件选择动作执行的模块; 缺点: 不能表示:循环、顺序和选择。 当条件为多值条

10、件时(如机票分为头等舱、二等舱、经济舱等多种级别),判定表的简洁程度也下降。 其含义不能一眼看出,初用者需要一个简短的学习过程,判定表的应用,六. 判 定 树,6.3 过程设计工具,判定树:判定表的变种;形式简单,但简洁性不如判定表,判定树,形式简单: 不用任何说明,一眼可看出含义;易学易用。 缺点: 简洁性较差: 同一个数据元素的值往往要要重复写多遍。 分支的次序:对判定树的简洁程度有较大影响,判定树,判定树,过程设计语言PDL(伪码),伪码:一种以正文形式表示数据结构和处理过程的设计工具,是一种混合语言。 伪码严格的关键字外部语法自然语言的词汇,用于定义控制结构和数据结构,灵活自由地表示实

11、际操作判定条件,C、PASCAL,借用某种结构化的程序设计语言的语法控制框架。,英语/汉语,某种自然语言,过程设计语言PDL(伪码),(一)数据说明语句,6.3 过程设计工具,(二)处理过程说明语句,二叉选择结构 IF THEN ELSE END IF,顺序过程块 BEGIN PDL语句 END,多叉选择结构 CASE OF 标量名 WHENSELECT WHEN SELECT END CASE,6.3 过程设计工具,后判断循环结构 REPEAT UNTIL,前判断循环结构 DO WHILE END DO,(三)输入/输出语句 (四)子程序模 块定义语句,READ FROM LIST WRIT

12、E TO LIST ,PROCEDURE END,6.3 过程设计工具,6.3 过程设计工具,总 结,6.3 过程设计工具,要求掌握: 程序流程图 NS图 PAD图 PDL语言(伪码) 判定树 判定表,6.4面向数据结构的设计方法,在完成了软件结构设计之后,可以使用面向数据结构的方法来设计每个模块的处理过程。 数据结构既影响程序的结构又影响程序的处理过程 重复出现的数据通常由具有循环控制结构的程序来处理 选择数据(即:可能出现也可能不出现的信息)要用带有分支控制结构的程序来处理。 层次的数据组织通常和使用这些数据的程序的层次结构十分相似。,原理:重复出现的数据通常由循环控制结构处理;选择数据通

13、常由分支控制结构。 缺点:没有足够重视和体现模块独立原理 适用范围:详细设计阶段 面向数据结构的设计方法: Jackson方法:英国人M.Jackson在1973年提出 Warnier方法:法国人J.D.Warnier在1973年提出,6.4 面向数据结构设计方法,一. Jackson图,6.4 面向数据结构设计方法,JSP(Jackson Structured Programming): 早期用于开发规模较小的数据处理系统的设计。 小圈表示选择结构,星号表示重复结构。 优点: P131,选择 根据条件, A是B或C或D中的某一个,重复 A由B出现N次(N0)组成,顺序 A由B、C、D 3个元

14、素顺序组成,二. 改进的Jackson图,6.4 面向数据结构设计方法,改进: 选择条件或循环结束条件直接在图上表示出来,增强图的表达能力,容易直接把图翻译成程序 框间连线为直线而不是斜线,从而容易在行式打印机上输出。 在构成顺序结构的元素中不能有重复出现或选择出现的元素 即:下面第一个图中的不能是在右上角有小圆圈或星号的元素。,二. 改进的Jackson图,6.4 面向数据结构设计方法,选择,重复,顺序,可选,A select cond1 B A or cond2 C A or cond3 D A end,A iter until I(i) B A end,A seq B C D A end

15、,A iter while I(i) B A end,6.4 面向数据结构设计方法,Jackson图与层次图和层次方框图的区别:,三. Jackson方法五个基本步骤,6.4 面向数据结构设计方法,(1) 分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。 (2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。 “对应关系”是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。 (3) 用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:,6.4 面向数据结构设

16、计方法,第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框 (注意,如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应); 第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别画上对应的处理框; 第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别画上对应的处理框。,6.4 面向数据结构设计方法,总之,描绘程序结构的Jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。 (注意:在导

17、出程序结构图的过程中,由于改进的Jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框。) (4) 列出所有操作和条件(包括分支条件和循环结束条件),并分配到程序结构图的适当位置。 (5) 用伪码表示程序。 伪码和Jackson图是完全对应的, 和3种基本结构对应的伪码: P132,2. 实例分析统计空格数 P133,6.4 面向数据结构设计方法,2. 实例分析统计空格数 P133,源文件: With C, the programmer can access the underlying hardware.,输出格式: With C, the

18、 programmer 3 can access the 2 underlying hardware. 1 6,6.4 面向数据结构设计方法,每行空格数,文件空格总数,2. 实例分析,6.4 面向数据结构设计方法,1.2 输入、输出的数据结构及对应关系分别为:,输入的数据结构 输出的数据结构,哪些数据单元有对应关系呢?用一对虚线箭头连接 输出数据总是通过对输入数据的处理而得到的,因此在输入输出数据结构最高层次的两个单元总是有对应关系的。经过程序的处理由正文文件得到输出表格。 因为每处理输入数据中一个“字符串”之后,就可以得到输出数据中一个“串信息”,它们都是重复出现的数据单元,而且出现次序和重

19、复次数都完全相同。 依次考察输入数据结构中余下的每个数据单元。 “字符”不可能和多个字符组成的“字符串”对应,和输出数据结构中其他数据单元也不能对应。 “空格”能和“空格数”对应吗?显然,单个空格并不能决定一个记录中包含的空格个数,因此没有对应关系。,2. 实例分析,6.4 面向数据结构设计方法,3 导出程序JackSon结构图,2. 实例分析,6.4 面向数据结构设计方法,3 导出程序JackSon结构图,统计空格,程序体,处理字符串*,印总数,I,处理非空格,处理空格,分析字符*,S,印字符串,印空格数,分析字符串,I,2. 实例分析,6.4 面向数据结构设计方法,135 4、列出所有的操

20、作和条件并将其插入上图的恰当位置;,I(1)文件结束 I(2)字符串结束 S(3)字符是空格,统计空格,程序体,处理字符串*,印总数,I(1),处理非空格,处理空格,分析字符*,S(3),印字符串,印空格数,分析字符串,I(2),5,3. Jackson方法小结,6.4 面向数据结构设计方法,JSP方法主要体现程序结构的设计,不明确地划分软件概要设计和详细设计的两个阶段。 JSP方法主要用于规模不大的数据处理系统,输入、输出数据结构能较容易地描述出来的情况。,一. 定量度量,6.5 程序复杂度定量度量,定量度量程序复杂程度的用处: 估算出软件中错误的数量以及所需的开发工作量,可用于比较两个不同

21、的设计或两个不同算法的优劣; 可以作为模块规模的精确限度。,二. McCabe 方 法,6.5 程序复杂度定量度量,二. McCabe 方 法,6.5 程序复杂度定量度量,根据程序控制流的复杂程度度量程序的复杂程度,其结果称为程序的环形复杂度。,什么是环形复杂度?,二. McCabe 方 法,6.5 程序复杂度定量度量,什么是程序图(流图)?,6.5 程序复杂度定量度量,二. McCabe 方 法,6.5 程序复杂度定量度量,二. McCabe 方 法,6.5 程序复杂度定量度量,程序流程图如何转化为程序图?,二. McCabe 方法,6.5 程序复杂度定量度量,例:,结点数: N5 边数:

22、E6 判定结点数: P2 区域数:3,程序 流程图,流图,6.5 程序复杂度定量度量,流图中的结点可能具有以下的含义: 过程块:一组连续执行的无分支的语句。在过程块中,如果块中的某个语句被执行,那么块中的所有其它语句也将会被执行。 例如:结点1和2、3和4。反例:2和3不是过程块; 汇聚点:程序中控制流的结合点(如果程序流程图中这个结合点没有对应的处理框应该在流图中补上)。例如:结点7 判定点(谓词结点):程序中控制流的分叉点。 例如:结点2、6,二. McCabe 方 法,6.5 程序复杂度定量度量,流图中,复合判定条件应该分解成若干简单判定条件。 复合条件:在条件中包含了一个或多个布尔运算

23、符(逻辑OR,AND,NAND,NOR)。 例:下页 思考:若将or b 换成and b ,如何分解?,二. McCabe 方 法,6.5 程序复杂度定量度量,将复合条件分解成若干简单条件。,二. McCabe 方 法,6.5 程序复杂度定量度量,环形复杂度V(G): 强连通图G中线性无关的有向环的个数。三种计算方法: V(G) = 图中平面区域的个数 V(G) = P(判定结点的个数)+ 1 V(G) = E(边数)N(结点数)+2,6.5 程序复杂度定量度量,6.5 程序复杂度定量度量,二. McCabe 方 法,6.5 程序复杂度定量度量,6.5 程序复杂度定量度量,二. McCabe

24、方 法,6.5 程序复杂度定量度量,环形复杂度的用途: 环形复杂度是对测试难度的一种定量度量 对软件最终的可靠性给出一种预测 软件规模以V(G)10为宜,三. Halstead 算 法,6.5 程序复杂度定量度量,Halstead算法:又称为文本复杂性度量法。是基于程序中操作符号(包括保留字)和操作数(即常、变量)出现的总次数来计算程序的复杂程度。 程序总长度:N= N1 (操作符号总数) + N2 (操作数总数) 不便于实际的统计,用下式估算: 程序总长度:N= n1 log2 n1+ n2 log2 n2 ( n1 :不相同的操作符号总数;n2 :不相同的操作数总数 ) 程序内含的错误数:

25、E=Nlog2(n1+ n2)/3000,三. Halstead 算 法,6.5 程序复杂度定量度量,预测估算: 程序总长度:N= n1 log2 n1+ n2 log2 n2 ( n1 :不相同的操作符号总数;n2 :不相同的操作数总数 ) 程序内含的错误数:E=Nlog2(n1+ n2)/3000 在详细设计完成之后就可预测估算上述值; 实验表明:与实际结果非常接近。140,详细设计说明书,6.6 详细设计文档,编写目的:尽可能详细地说明软件所包含的程序中,各成分的设计考虑,以利于程序员编制程序。 主要内容: 对程序进行整体描述,包括该程序的各项功能和性能 详细说明程序的运行环境 说明程序运行过程,包括程序的装入、启动、停机、恢复 详细描述程序的输入、输出和所用的数据环境,主要用图表的形式描述程序的逻辑流程,并加以叙述,第六章 详细设计作业,P141P143: 习题3、4,6.6 详细设计文档,习题6 第3题,画出下列伪码程序的程序流程图和盒图 START IF p THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCK END IF STOP,习题6 第3题,程序流程图:,T,F,习题6 第3题,盒图:,P,F,T,g,n,q,f,习题6 第4题,下图给出的程序流程图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论