[计算机软件及应用]软件工程PPT-05详细设计.ppt_第1页
[计算机软件及应用]软件工程PPT-05详细设计.ppt_第2页
[计算机软件及应用]软件工程PPT-05详细设计.ppt_第3页
[计算机软件及应用]软件工程PPT-05详细设计.ppt_第4页
[计算机软件及应用]软件工程PPT-05详细设计.ppt_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

授课教师:梁丽,软件工程,西华大学数学与计算机学院,第五章 详细设计,内容要点: 本章主要介绍详细设计的基本任务、描述方法和设计方法。 教学重点: 详细设计的基本任务 教学难点: 流程图、PAD图及过程设计语言,详细设计与总体设计,详细设计以总体设计阶段的工作为基础,但又不同于总体设计阶段,主要表现为以下两方面: (1)在总体设计阶段,数据项和数据结构以比较抽象的方式描述,例如,总体设计可以申明一组值从概念上表示一个矩阵,详细设计就要确定用什么数据结构来实现这样的矩阵。 (2)详细设计要提供关于算法的更多的细则,例如,总体设计可以申明一个模块的作用是对一个表进行排序,详细设计则要求确定使用哪种排序算法。在详细设计阶段为每个模块增加了足够的细节,使得程序员能够以相当直接的方式编码每个模块。,因此,详细设计的模块包含实现对应的总体设计的模块所需要的处理逻辑,主要有: (1)详细的算法 (2)数据表示和数据结构 (3)实施的功能和使用的数据之间的关系 每个模块被编码成过程、子程序、函数或企图类型的命名实体。 详细设计的目的是具体确定实现目标系统的精确描述,即对系统中每个模块的内部过程进行设计和描述。使程序员可以将这种描述直接翻译为某种语言程序。,详细设计与总体设计,详细设计阶段:,根本目标是确定应该怎样具体地实现所要求的系统。 概念详细设计主要确定每个模块具体执行过程,也称过程设计。详细设计的结果基本上决定了最终的程序代码的质量。 详细设计的任务不是编写程序,而是要设计出程序的“蓝图”,便于以后根据这个蓝图写出实际的程序代码。, 为每个模块进行详细的算法设计。用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。 为模块内的数据结构进行设计。 对数据库进行物理设计,即确定数据库的物理结构。 其他设计。根据软件系统类型,可能要进行代码设计、输入/输出格式设计、人机对话设计。 编写详细设计说明书。 评审。评审处理过程的算法和数据库的物理结构。,详细设计的基本任务:,结构程序设计(SP),结构化程序设计是一种典型的面向数据流的软件设计方法,它采用采用自顶向下、逐步求精的设计方法和单入口单出口的控制结构,且只包含顺序、选择和重复3种结构。 基本要点是: 采用自顶向下、逐步求精的程序设计方法:详细设计中某个模块内部处理过程仍然可以逐步求精,降低处理细节的复杂程度。,结构程序设计, 使用3种基本控制结构(顺序、选择和重复,其共同点是单入口、单出口)构造程序: 用顺序方式对过程分解,确定各部分的执行顺序。 用选择方式对过程分解,确定某个部分的执行条件。 用循环方式对过程分解,确定某个部分进行循环的开始和结束的条件。 对于处理过程仍然模糊的部分反复使用以上分解方法,最终将所有细节确定下来。,严格控制GOTO语句,仅在下列情形才可使用: 用一个非结构化的程序设计语言去实现一个结构化的构造。 若不使用GOTO语句就会使程序功能模糊。 在某种可以改善而不是损害程序可读性的情况下。,结构化程序设计的主要原则,例 打印A, B, C三数中最小者的程序,程序1 if ( A B ) goto b12; if ( B C ) goto b11; b10: printf (“%d”, C ); goto b14; b11: printf (“%d”, B ); goto b14; b12: if ( A C ) goto b13; goto b10; b13: printf (“%d”, A ); b14: ,程序2 if ( A B and A C ) printf (“%d”, A ); else if ( A B and B C ) printf (“%d”, B ); else printf (“%d”, C ); ,结构程序设计,主程序员组的组织形式:突出主程序员的领导,设计责任集中在少数人身上,有利于提高软件质量和软件生产率。其组织形式是: 一个主程序员:负责全部技术活动。 一个后备程序员:协调、支持主程序员。 一个程序管理员:负责事务性工作,如收集、记录数据,文档资料管理等。 一些专家(如通信专家、数据库专家)。 其他技术人员。,自顶向下,逐步求精, 在详细设计和编码阶段,应当采取自顶向下,逐步求精的方法。 把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的程序。,自顶向下,逐步求精,例,用筛选法求100以内的素数 筛选法就是从2到100中去掉2,3,9,10的倍数,剩下的就是100以内的素数。 为了解决这个问题,可先按程序功能写出一个框架。,main ( ) /程序框架 建立2到100的数组A ,其中Aii; -1 建立2到10的素数表 B ,其中存放2 到10以内的素数;-2 若Aii是B 中任一数的倍数,则 剔除Ai;-3 输出A 中所有没有被剔除的数; -4 ,main ( ) /*建立2到100的数组A ,其中Aii*/ for ( i = 2;i = 100;i+ ) Ai = i; /* 建立2到10的素数表B ,其中存放2到10以内的素数*/ B1 =2;B2 = 3;B3 = 5;B4 = 7; /*若Aii是B 中任一数的倍数,则剔除Ai*/ for ( j = 1;j = 4;j+ ) 检查A 所有的数能否被Bj整除并将 能被整除的数从A 中剔除; -3.1 /*输出A 中所有没有被剔除的数*/ for ( i = 2;i = 100;i+ ) 若Ai没有被剔除,则输出之 -4.1 ,对框架中的局部再做细化,得到整个程序。 ( ) /*建立2到100的数组A ,其中Aii*/ for ( i = 2;i = 100;i+ ) Ai = i; /* 建立2到10的素数表B ,其中存放2到10以内的素数*/ B1 =2;B2 = 3;B3 = 5;B4 = 7; /*若Aii是B 中任一数的倍数,则剔除Ai*/ for ( j = 1;j = 4;j+ ) /*检查A 所有的数能否被Bj整除并将能被整除的数从A 中剔除*/ for ( i = 2;i = 100;i+) if ( AiBj * Bj = Ai ) Ai = 0; /*输出A 中所有没有被剔除的数*/ for ( i = 2; i = 100;i+) /*若Ai没有被剔除,则输出之*/ if ( Ai != 0 ) printf ( “A%d%dn”,i,Ai ); , 符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率 用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解,自顶向下,逐步求精方法的优点:, 程序自顶向下,逐步细化,分解成一个树形结构。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成 程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大 每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查 有利于设计的分工和组织工作。,自顶向下,逐步求精方法的优点:, 在详细设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类: 图形工具 表格工具 语言工具,详细设计的工具,图形工具: 结构化程序流程图:是程序逻辑结构的描述工具。 盒图(N-S图):描述常用的基本控制结构。 问题分析图(简称PAD图):是一种算法描述工具。 IPO图:描述模块间的信息传递和模块内部的处理。,详细设计的工具,表格工具: 判定表:是描述逻辑条件复杂的算法。 语言工具: 过程设计语言(简称PDL):是一种用于描述模块算法设计和处理细节的语言。,详细设计的工具, 程序流程图也称为程序框图,是一种描述程序逻辑结构的工具。 结构化流程图: 要求流程图应由3种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉,从而克服了流程图的最大缺陷。 程序流程图使用五种基本控制结构是:,程序流程图,示例,程序流程图的标准符号,循环的标准符号 注解的使用,多出口判断,优点: 直观清晰、易于使用,是开发者普遍采用的工具。 缺点: 可随心所欲地画控制流程线的流向,容易造成非结构化的程序结构。编码时势必不加限制地使用GOTO语句,导致基本控制块多入口多出口,使软件质量受到影响,与软件设计原则相违背。 流程图不易反映逐步求精的过程,往往反映的是最后的结果。 不易表示数据结构。 对于大型软件而言,流程图过于琐碎,不容易阅读和修改。,程序流程图, 五种基本控制结构由五种图形构件表示。,盒图(N-S图):,(1) 顺序型,A,B,C,(2) 选择型(If then else) If then else If then,A,B,F,条件,T,A,F,T,条件,then 部分,then 部分,else部分,(3)多分支选择型(CASE型),A1,值1,A2,An,条件,值2,值n,(4) WHILE重复型 (5) UNTIL重复型,S (循环体),DO-WHILE P,S (循环体),REPEAT UNTIL P,(先测试循环),(后测试循环),循环条件,(6) 移出标记,A,C,B,F,X6,T,A:,D,(调用结构),示例,N-S图的嵌套定义形式,主要特点: 控制结构明确 禁止任何转移控制 容易确定数据作用域 可以表现模块嵌套结构。 盒图是训练、养成结构化程序设计思维方式和解决方案的有效工具。,盒图(N-S图):,问题分析图(PAD图),PAD图是一种由左往右展开的二维树形结构,它的控制流程为自上而下,从左到右地执行。 优点: 清晰反映程序的层次结构。 支持逐步求精的设计方法。 易读易写,使用方便。 支持结构化程序设计原理。 可自动生成程序,可由软件工具自动生成相应源代码。,问题分析图(PAD图),基本控制结构: (1)顺序结构 (2)选择结构,A,B,C,A,B,T,F,条件,(3)重复结构,WHILE C,S,UNTIL C,S,(先测试循环),(后测试循环),等价的PASCAL语言: REPEAT S UNTIL C,等价的PASCAL语言: WHILE C DO S,(4) 多分支选择型(CASE型),A1,值1,值2,值n,A2,An,. . .,.,.,.,条件,PAD描述的示例,对应于增量型循环结构 for i := n1 to n2 step n3 do 在PAD中有相应的循环控制结构,PAD的扩充控制结构,例1:对数组X进行排序。 “自顶而下,逐步求精”,J:=h,k:=h+1,n,J:=k,h:=1,n-1,排好第h个X h,W:=Xh Xh:=Xj Xj:=w,1、循环一次,排好一个Xh,排好第h个X h,找 XJ= MAX(XhXn),交换 XJ 和 Xh,2、细化,(a),(b),(b),(a),3、连接各图,构成完整的PAD图,h:=1,n-1, 判定表用于表示程序的静态逻辑 在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理 要求将程序流程图中的多分支判断都改成两分支判断,判定表,判定表是一种二维的表格,常用于较复杂的组合条件(与结构化语言比较)。,特点:可处理较复杂的组合条件,但不易理解.不易输入计算机。,通常由四部分组成。 条件框 条件定义。 操作框 操作的定义。 条件条目 各条件的取值及组合。 操作条目 在各条件取值组合下所执行的操作。,例如: 对商店每天的营业额所收税率, 列出与一个具体过程(或模块)有关的所有处理。 列出过程执行期间的所有条件(或所有判断)。 将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。 将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。,建立判定表的步骤:,例:一图书销售系统,其中一加工为“优惠处理”,条件是:顾客的营业额大于1000元,同时必须信誉好,或者虽然信誉不好,但是20年以上的老主顾。,1 2 3 4,1000元 Y Y Y N 信誉好 Y N N - 20 年 - Y N - 优 惠 X X 正 常 X X,化简后,1 2 3 4 5 6 7 8,1000元 Y Y Y Y N N N N 信誉好 Y Y N N Y Y N N 20 年 Y N Y N Y N Y N 优 惠 X X X 正 常 X X X X X,Y-满足条件 N-不满足条件 X-选中判定的结论,判定表应用举例,无多分支判断结构,特点:描述一般组合条件较清晰,易理解。不易输入计算机。,营业额, 1000元 1000元 正常处理,好的支付信誉 优惠处理 坏的支付信誉, 20年 优惠处理 20年 正常处理,如上例,判定树, PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。 伪码的语法规则分为“外语法”和“内语法”。 PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。,PDL (Program Design Language),PDL语言的成分是:数据说明、处理过程描述、输入/输出 PDL的语法是开放式的,其外层语法是确定的,而内层语法则不确定。外层语法描述控制结构它用类似于一般程序设计语言控制结构的关键字: 如 : IF-THEN-ELSE , WHILE-DO REPEAT-UNTIL,DO CASE, DO WHILE 等表示。 有时还用关键字反排,表示控制结构结束: DO - OD IF -FI,例如: if X is not negative then return(square root of X as a real number); else return(square root of -X as an imaginary number); 外层语法IF-ELSE-THEN是确定的,内层操作“square root of X ”是不确定的。, 提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。 为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。,PDL的特点:, 内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。 有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。 有子程序定义与调用机制,用以表达各种方式的接口说明。,PDL的特点:,面向数据结构的设计,软件系统本质上都是信息处理系统。许多应用系统中,信息往往具有清晰的层次结构,输入/输出数据有明显的对应关系。问题求解方法的构造往往依赖于问题描述的数据结构,即使求解同一问题,使用的数据结构不同,相应的求解算法也不同。因此软件设计与数据结构有极大的相关性。如果一个数据结构具有选择性质,那么应该使用条件选择结构处理;如果一个数据结构具有重复性,则一定要求使用循环控制结构处理;如果一个数据结构具有层次组织,则软件控制结构也要求是分层的。由此提出了一类面向数据结构的设计方法。Jackson方法是面向数据结构的设计方法的代表之一。,1. 概念 Jachson方法是面向数据结构的设计方法。 2. JSP用于开发规模较小的数据处理系统的设计。该方法定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件的体系结构。,Jackson方法,3. 特点 Jackson方法有自己的描述工具Jackson结构图,用3种基本结构(顺序、选择和重复)来表示。其特点是: 能对结构进行自顶向下的分解,因此可以表示层次结构。 结构易读,形象直观。 既能表示数据结构也能表示程序结构,且表示的是组成关系。,Jackson方法,4. JSP设计步骤 分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。 找出输入数据结构和输出结构中有对应关系的数据单元,对应关系指数据单元在数据内容上、数量上和顺序上有直接的因果关系。 按一定的规则由输入、输出的数据结构导出程序结构。 列出基本操作与条件,并把它们分配到程序结构图的适当位置。 用伪码(也称图解逻辑)写出程序。,Jackson方法,5、优缺点 Jackson方法对问题分析的基本思想仍然是自顶而下,逐步求精,问题求解层次化和模块化。它与SD方法的区别仅仅在于主要以数据结构(而不是数据流驱动)来建立程序模块和控制结构。 对于数据结构与问题结构密切相关的系统,该方法导出的系统设计易于理解,当问题发生局部变化时,也易于修改。特别适用于具有良好层次数据结构的输入/输出设计,典型的如商业应用中文件表格处理。,Jackson方法,6. JSP设计中结构冲突的解决方法 在JSP设计中,如果输入数据和输出数据结构之间找不到对应关系,称为结构冲突。在工程实践中,实施Jackson方法的主要问题是结构冲突。 解决方法是:引入中间数据结构或中间文件,将冲突部分分隔开来,建立多个程序结构,再利用中间文件将把它们联系起来,构成一个系统的整体。,Jackson方法,程序复杂度的定量度量,如何使软件结构复杂度和软件质量的评价能够量化是软件工程研究的课题之一。软件复杂度、软件质量的量化评判,是客观评估软件质量,计算开发进度,衡量软件成本的基础,也是估计软件残存错误的依据。 目前比较流行的软件复杂度度量方法有两种:一是由McCabe提出的根据程序流程图的结构复杂度对软件复杂度和质量进行量度;二是由Halstead提出的根据程序中包含的运算操作符和操作数个数对程序复杂度进行度量的行代码度量方法。,程序复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。 减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。,程序复杂度的定量度量,复杂性度量需要满足的假设,为了度量程序复杂性,要求: 它可以用来计算任何一个程序的复杂性; 对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算; 如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。,代码行度量法,源代码行数度量法基于两个前提: 程序复杂性随着程序规模的增加不均衡地增长; 控制程序规模的方法最好是采用分而治之的办法。将一个大程序分解成若干个简单的可理解的程序段。,方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。 设每行代码的出错率为每100行源程序中可能有的错误数目。 Thayer曾指出,程序出错率的估算范围是从0.047之间,即每100行源程序中可能存在0.047个错误。他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。,Lipow指出,对于小程序,每行代码出错率为1.31.8;对于大程序,每行代码的出错率增加到2.73.2之间,这只是考虑了程序的可执行部分,没有包括程序中的说明部分。 Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。,McCabe度量法,McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。 它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。 程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。,基本控制结构的结点化处理,图7 基本控制结构的结点化处理,程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。 计算环路复杂性的方法:根据图论,在一个强连通的有向图G中,环的个数由以下公式给出: V(G)mnp 其中,V(G)是有向图G中环路个数,m是图G中弧数,n是图G中结点数,p是图G中的强连通分量个数。,Myers建议,对于复合判定,例如,(A0)(CD)(XA) 算做三个判定。 为使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性。 在例示中,结点数n11,弧数m13,p1,则有 V(G)mnp131113. 等于程序图中弧所封闭的区域数。,几点说明,环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。 环路复杂度是可加的。例如,模块A的复杂度为3,模块B的复杂度为 4,则模块A与模块B的复杂度是7。,McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误。Walsh用实例证实了这个建议的正确性。在McCabe复杂度为10的附近,存在出错率的间断跃变。,这种度量的缺点是: 对于不同种类的控制流的复杂性不能区分 简单IF语句与循环语句的复杂性同等看待 嵌套IF语句与简单CASE语句的复杂性是一样的 模块间接口当成一个简单分支一样处理 一个具有1000行的顺序程序与一行语句的复杂性相同,Halstead的软件科学,Halstead软件科学研究确定计算机软件开发中的一些定量规律,它采用以下一组基本的度量值。 这些度量值通常在程序产生之后得出,或者在设计完成之后估算出。,程序长度(预测的Halstead长度) 令n1表示程序中不同运算符(包括保留字)的个数,令n2表示程序中不同运算对象的个数,令H表示“程序长度”,则有 H=n1log2 n1+n2 log2n2 这里,H是程序长度的预测值,它不等于程序中语句个数。,在定义中,运算符包括: 算术运算符 赋值符(=或:=) 逻辑运算符 分界符(,或;或:) 关系运算符 括号运算符 子程序调用符 数组操作符 循环操作符等。 特别地,成对的运算符,例如 “BEGINEND”、“FORTO”、“REPEAT UNTIL”、“WHILEDO”、“IFTHENELSE”、“()”等都当做单一运算符。,运算对象包括变量名和常数。 实际的Halstead长度 设N1为程序中实际出现的运算符总个数,N2为程序中实际出现的运算对象总个数,N为实际的Halstead长度,则有 N = N1 + N2,程序的词汇表 Halstead定义程序的词汇表为不同的运算符种类数n1和不同的运算对象种类数n2的总和。若令n为程序的词汇表,则有 n = n1+n2,程序量 程序量 V 可用下式得到 V = N log2n 它表明了程序在词汇上的复杂性。其最小值为 V* = (2+n2*) log2(2+n2*)V 这里,2表明程序中至少有两个运算符:赋值符 = 和函数调用符 f ( ) ,n2*表示输入输出变量个数。,程序量比率 (语言的抽象级别) L = V* / V 或 L = (2 / n1)(n2 / N2) 它表明了一个程序的最紧凑形式的程序量与实际程序量之比,反映了程序的效率。其倒数 D = 1 / L 表明了实现算法的困难程度。,程序员工作量 E = V / L 程序的潜在错误 Halstead度量可以用来预测程序中的错误。预测公式为 B = (N1+N2)log2(n1+n2) / 3000 B为该程序的错误数。它表明程序中可能存在的差错 B 应与程序量V成正比。,例如,一个程序对75个数据库项共访问1300次,对150个运算符共使用了1200次,那么预测该程序的错误数: B = (1200+1300)log2(75+150)/3000 6.5 即预测该程序中可能包含67个错误,Halstead的重要结论 程序的实际Halstead长度N可以由词汇表n算出。即使程序还未编制完成,也能预先算出程序的实际Halstead长度N, 虽然它没有明确指出程序中到底有多少个语句。 这个结论非常有用。经过多次验证,预测的Halstead长度与实际的Halstead长度是非常接近的。,Halstead度量的缺点,没有区别自己编的程序与别人编的程序。这是与实际经验相违背的。这时应将外部调用乘上一个大于1的的常数Kf (应在15之间,它与文档资料的清晰度有关)。 没有考虑非执行语句。补救办法:在统计n1、n2、N1、N2时,可以把非执行语句中出现的运算对象,运算符统计在内。,没有注意调用的深度。Halstead 公式应当对调用子程序的不同深度区别对待。在计算嵌套调用的运算符和运算对象时,应乘上一个调用深度因子。这样可以增大嵌套调用时的错误预测率。 没有把不同类型的运算对象,运算符与不同的错误发生率联系起来,而是把它们同等看待。例如,对简单IF语句与WHILE语句就没有区别。,忽视了嵌套结构(嵌套的循环语句、嵌套IF语句、括号结构等)。一般地,运算符的嵌套序列,总比具有相同数量的运算符和运算对象的非嵌套序列要复杂得多。解决的办法是对嵌套结果乘上一个嵌套因子。,软件设计复审,复审对象软件设计说明文档 意义通过设计复审,可以及时发现软件结构缺陷和设计错误,使得它们能够在进入编码前得以改正。 种类正式复审和临时复审 复审的内容,1、正式复审,在全部设计文档制作完毕后召开正式的软件设计复审确认会议。在复审会议上由设计人员对软件总体结构、性能规范、用户界面、关键模块和关键算法等进行详细报告。由独立的评审专家小组对设计文档和设计人员的报告进行全面深入的讨论审查。 正式复审的结果 (1)确认通过软件设计(软件开发可进入下一阶段) (2)设计文档未获通过。(通常是软件设计存在重大缺陷或者错误,也可以是设计没有原则性错误,但是设计文档本身不规范,不能作为后续编码的依据。) 软件设计即使是通过复审通常也不是完全正确的,复审报告中应该说明设计中仍然存在的问题或者缺陷,使得这些问题在后续编码中得以改正或者完善。,2、临时复审 是在软件设计过程中,针对某个局部或者问题的解决方案或者阶段性设计成果进行讨论或者审核。,3、软件复审的内容,(1)设计功能和性能的可追踪性:软件结构设计是否充分实现了软件需求规格说明?目标软件设计中实现的每个功能、性能在需求说明中是否能够找到来源? (2)软件设计中采用的技术是否成熟?如果是新技术,其技术风险系数多大,是否存在替代实现方案? (3)软件系统的所有外部接口和内部各模块接口定义是否恰当、完整? (4)设计中对于系统的可维护性是如何体现的?设计文档本身的可理解性如何?它们易于编码实现吗? (5)在软件系统结构、关键算法和用户界面中如何保证系统质量?,软件规格说明书,软件设计阶段完成,应提交设计文档: 1、改进后的模块结构图(包含模块说明) 2、各模块的详细说明 (流程图、N-S图、PAD图等),1、用户特性分析 用户模型 了解所有用户的技能和经验,针对用户能力设计或更改界面。从以下方面分析: 用户类型通常分为:外行型、初学型、熟练型、专家型。 用户特性度量与用户使用模式和用户群体能力有关。 包括:用户使用频度、用户用机能力、用户的知识、思维能力等。,用户界面设计的任务,这部分工作应该与软件需求分析同步进行。包括以下内容:,2、用户界面的任务分析 任务模型(DFD图) 是对系统内部活动的分解,不仅要进行功能分解(用DFD图描述),还要包括与人相关的活动。每个加工即一个功能或任务。 3、确定用户界面类型,界面的设计原则,分析用户类型 应用程序和界面分离 一致性 尽量减少用户工作 提供反馈 出错处理和帮助功能 增加可视化图形表示,1 黄金规则,在有关界面设计的著作中, Theo Mandel创造了三条黄金原则: 置用户于控制之下 减少用户的记忆负担 保持界面一致,黄金规则:置用户于控制之下,Mandel定义的一组允许用户操作控制的原则: 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式 提供灵活的交互 允许用户交互可以被中断和撤消 当技能级别增加时可以使交互流水化并允许定制交互 使用户隔离内部技术细节 设计应允许用户和出现在屏幕上的对象直接交互,黄金规则:减少用户的记忆负担,Mandel定义了一组设计原则,使界面能够减少用户记忆负担: 减少对短期记忆的要求 建立有意义的缺省 定义直觉性的捷径 界面的视觉布局应该基于真实世界的隐喻 以不断进展的方式揭示信息,黄金规则:保持界面一致,用户应以一致的方式展示和获取信息 所有可视信息的组织均按照均按照贯穿所有屏幕显示所保持的设计标准 输入机制被约束到有限的集合,在整个应用中被一致地使用 从任务到任务的导航机制被一致地定义和实现 Mandel定义了一组帮助保持界面一致性的设计原则 允许用户将当前任务放入有意义的语境 在应用系列内保持一致性 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它,2 用户友好性设计,用户友好性一般属软件的性能特性,它独立于所有具体功能,却影响着所有功能的重用性。 用户友好性应体现在与用户有接口的软件特性上。 用户友好性的根本目的是为了软件可重用性、可维护性。,用户友好性的标志,可操作性 健壮性 易学习性 可扩展性,用户界面设计,1 界面设计模型 设计用户界面要考虑四种模型:,软件工程师创建的设计模型 (design model) 人员工程师创建的用户模型 (user model) 终端用户对未来系统的假想(sysytem perception或users model) 系统实现后得到的系统映象(sysytem image),四种模型可 能相差甚远,界面设计人 员的任务就 是消除这些 差距,导出 一致的界面 表示,用户界面设计过程,用户界面设计过程包括四种不同的框架: 用户、任务和环境分析及建模 界面设计 界面构造 界面确认,影响用户行为特性的因素,人-机匹配性 人的固有技能 人的固有弱点 用户的知识经验 用户对系统的期望和态度,用户对计算机系统的要求,让用户灵活地使用 适应不同类型用户 系统的行为及效果对用户透明 用户对系统的期望和态度 提供联机帮助功能 人机交互尽可能和人际通信相似,用户技能方面的使用需求,应让系统去适应用户 使用易于理解、掌握的准自然语言 一致性的系统设计 用户对系统的期望和态度 能通过系统学习 系统提供演示及范例,用户习性方面的使用需求,系统应让用户有耐心 系统应很好地对付人的易犯错误 系统应对不同用户提供不同交互方式,用户经验、知识方面的使用需求,系统应能让未经专门训练的用户使用 系统能对不同经验用户做出不同反应 提供同一系统的一致性,建立标准化人-机界面 系统必须适应用户在应用领域的知识变化,提供动态的自适应的设计,用户对系统的期望方面的要求,用户界面应提供形象、生动、美观的布局显示和操作环境 系统处理问题应尽可能简单,提供学习机制 系统应对不同用户提供不同交互方式,1、菜单(menu) 按照显示方式 正文菜单、图标菜单、正文和图标混合菜单,如:开始菜单。,用户界面的基本类型,从用户角度出发,用户界面设计的类型主要有问题描述语言,数据表格、图形与图标、菜单、对话框及窗口等。每一种类型都有不同的特点和性能。讨论以下类型:菜单、图象、对话框和窗口。,按屏幕位置和操作风格 固定位置、浮动位置(弹出)、下拉式、嵌入式,图2 混合菜单,2、图 象 在用户界面中,加入丰富多彩的画面,将

温馨提示

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

评论

0/150

提交评论