1、第六章 详细设计第一部分,西安电子科技大学课程,第六章 详细设计,详细设计的目标是对目标系统给出精确的描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序。详细设计不是具体编写代码,而是要设计出程序的“蓝图”程序员根据这个蓝图写出实际的程序代码。详细设计的结果关系到程序代码的质量。,第六章 详细设计,6.1 结构程序设计结构程序设计的概念是EWDijkstra 1965年提出的,他认为:“可以从高级语言中取消GOTO语句” “程序质量与包含GOTO语句的数量成反比”,实际上用顺序结构和循环结构(DO-WHILE)完全可以实现选择结构(又称IF-THEN-ELSE结构) 什么是
2、结构程序设计?结构程序设计是一种设计程序的技术,它采用自上向下逐步求精的设计方法和单入口单出口的控制结构。,第六章 详细设计,在三种基本控制结构中,就可以实现任何单入口单出口的程序,但从实际使用方便起见,常常允许使用下面二种控制。,DOCASE 多分支结构 DOUNTIL循环结构,第六章 详细设计,6.2 详细设计的工具6.2.1 程序流程图 程序流程图又称为程序框图,它是历史悠久,使用广泛的描述软件设计的方法,然而它也是使用得最混乱的一种方法。上一节已经介绍了程序流程图中使用的符号,有一个十分重要的说明,程序流程图中的箭头代表控制流而不是数据流。,第六章 详细设计,流程图从40年代末到70年
3、代中,一直使用它,不过总的趋势是越来越多的人不再使用程序流程图了。程序流程图的主要缺点如下: 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。 程序流程图不易表示数据结构。 应该指出,详细的微观程序流程图每个符号对应于源程序的一行代码,对于提高大型系统的可理解性作用甚微。,第六章 详细设计,6.2.2 盒图(N -S图)出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称N-S 图,它有
4、下述特点: 功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。 不可能任意转移控制。 很容易确定局部和全程数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次结构。,第六章 详细设计,第六章 详细设计,6.2.3 PAD图 (problem analysis diagram)它是日立公司提出的(问题分析图)。它是由程序流程图演化来的,它用二维树型结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。PAD图优点:1 使用表示结构优化控制结构的PAD符号所设计出来的程序必然是程序化程序 2 PAD图所描述的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层控制
5、结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数;,第六章 详细设计,3 用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维数型结构的图形,程序从图中最左边上端的结点开始执行,自上而下,从左到右顺序执行; 4 很容易将PDA图转换成高级程序语言源程序,这种转换可由软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。 5 既可用于表示程序逻辑,也可用于描述数据结构 6 PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象程序,随着设计工作的深入而使用“def”符号逐
6、步增加细节,直至完成详细设计。,第六章 详细设计,第六章 详细设计,下面给出了程序流程图、盒图、PAD图以及程序语句的对应关系。请大家现在用一张纸记下来,便于下面的课堂练习!,请大家注意,第六章 详细设计,第六章 详细设计,第六章 详细设计,课堂练习!,第六章 详细设计,第六章 详细设计,6.2.4 判定表算法中包含有多重嵌套的条件选择时,用程序流程图、盒图、PAD图及过程设计语言(PDL)都不易清楚的描述,此时用判定表则比较容易。判定表能简洁而又无歧义的描述处理规则。但是判定表并不是与作为一种通用的设计工具,没有一种简单的方法使它能同时清晰的表示顺序和重复等处理特性。6.2.5 判定树判定树
7、是判定表的变种,容易掌握与使用,是一种比较常用的系统分析和设计的工具。缺点是简洁性不如判定表,数据元素的同一个值往往要重复写多便,而且越接近树的叶端重复次数越多。,判定表表征计算行李费的算法,用判定树表示计算行李费的算法,第五章 详细设计,6.2.6 过程设计语言(PDL)PDL也称为伪码,它使用正文形式表示数据和处理过程的设计工具。伪码的语法规则分为“外部语法”和“内部语法”。外部语法应当符合一般程序设计语言常用语句的语法规则。内部语法可用英语中一些简单的句子,短语和通用的数学符号来描述程序应执行的功能。PDL语言的外部描述语言的格式1) 数据说明TYPE 变量名 AS 限定词1 限定词2限
8、定词1 SCALE (存量)LIST (表)ARRAY (数组)CHAR (字符)STRUCT (结构)限定词2 指明该变量的作用域,第五章 详细设计,2) 程序块BEGIN 块名一组伪码语句END3) 子程序结构PROCEDURE 子程序名 一组属性INTERFACE 参数表程序块和/或一组伪码语句END4) 基本控制结构(1) 顺序结构(2) 选择型结构 ifthenelseIF条件描述THEN 程序块/伪码语句ELSE ENDIF(3) 重复结构DO WHILE 条件描述 ENDDOREPEAT UNTIL 条件描述 ENDREP,第五章 详细设计,或 DO LOOP EXIT WHEN
9、 条件描述ENDLOOPDO FOR 下标:下标表,表达式或序列 ENDFOR(4)多路选择型结构CASE OF case 变量名WHEN case 条件1 SELECT WHEN case条件2 SELECT WHEN 最后的case条件 SELECT DEFAULT 缺省或错误case: ENDCASE(5) 输入/输出结构 READ/WRITE 设备 I/O表或 ASK 询问 ANSWER 响应选项,第五章 详细设计,PROCEDURE Spellcheck IS 查找错拚的单词BEGINSplit document into single words 把文档分离成单词Look up w
10、ords in dictionary 在字典中查找单词Display words which are not in dictionary 显示字典中查不到的单词Create a new dictionary 造一个新字典END spellcheck用PDL描述求一组数中最大数的算法STARTARRAY AInput a series of numbers to ASET MAX=A(1)DO FOR I=2 TO NIF MAXA(I) THEN SET MAX=A(I)ENDIFENDDOPrint MAXEND,例子,第五章 详细设计,PDL优缺点:可以作为注释直接插在源程序中间。可以使用
11、普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。已经有自动处理程序存在,而且可以自动由PDL生成程序代码。PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。,第六章 详细设计,6.3 面向数据结构的设计方法 前面介绍了面向数据流的设计方法,也就是根据数据流确定软件结构的方法。本节和下一节分别介绍两种面向数据结构的方法。数据结构既影响程序结构又影响程序的处理过程,重复出现的数据通常由具有循环控制结构的程序处理,选择数据要用带有分支控制结构的程序处理。层次的数据组织通常和使用这些数据的程序的层次结构十分相似。面向数据结构的设计方法
12、的最终目标:是得出对程序处理过程的描述。使用面向数据结构的设计方法,应先分析确定数据结构,用适当的工具清晰地描绘出数据结构。 6.3.1 Jackson图顺序数据结构种类 选择重复,第六章 详细设计,1顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。2选择结构选择结构与数据应包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选一个。 3重复结构 该数据使用时的条件有一个数据元素出现一次或多次构成。,第六章 详细设计,第六章 详细设计,Jackson图有下述优点: 便于表示层次结构,而且是对结构进行白顶向下分解的有力工具; 形象直观可读性好; 既能表
13、示数据结构也能表示程序结构(因为结构程序设计也只使用上述三种基本结构)。Jackson图有下述缺点:循环和选择条件无法列出,影像图解表达能力。,改进的Jackson方法,第六章 详细设计,Jackson结构程序设计方法基本上由5个步骤组成: 1、分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。 2、找出输人数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。 3、用下述三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackso
14、n 图。 第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,如果这对数据单元在输人数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。,第六章 详细设计,第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。 第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。 总之,描绘程序结构的1ackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。在导出程序结构
15、图的过程中,由于改进的Jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框。 4、列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。 5、用伪码表示程序。,第六章 详细设计,6.3.2 Jackson方法举例一个正文文件由若干记录组成,每个记录是一个字符串,要求统计每个记录中空格字符的个数及文件中空格字符的总个数。要求输出数据格式是每复制一行字符串后,另起一行打印出这个字符串中的空格数,最后打印出文件空格的总个数,使用Jackson方法设计该程序结构。,第六章 详细设计,第六章 详细设计,如何使用Jac
16、kson图表示数据结构 例如:Jackson图表示下面的二维表格:,学生名册,第六章 详细设计,上表首先声明了该学生名册表格由表头和表体两部分组成。 表头又顺序包括表名和字段名。 表体可由任意行(0行或多行)组成,每行包括学生的姓名、性别、班级和学号。班级是本科的,学号项是本科生学号;班级是研究生的,学号项是研究生学号。,第六章 详细设计,第六章 详细设计,C、Jackson伪代码为了方便从程序结构到逻辑描述的转换,Jackson方法中为结构图设计了一组与之相对应的伪代码,并称之为图解逻辑。Jackson方法中使用的伪代码和Jackson图是完全对应的,下面是和三种基本结构对应的伪代码。,(I
17、)顺序结构与我们上面顺序结构图对应的伪码如下,其中“seq”和“end”是关键字A seqBCDA end,(II)选择结构“select”、“or”和“end”是关键字,cond1、cond2和cond3分别是执行B、C或D的条件;A select cond1BA or cond2CA or cond3DA end,(III)重复结构“iter”、“until” 、“while”和“end”是关键字(重复结构有until和while两种形式),cond是条件;A iter until(或while) condBA end下面看一个例子:在实际工作中,会遇到不同结构组合的情况。如图:,下面两种
18、伪代码:(a) A seqBC iter until cond I1Dend A(b) A iter until cind1BCDend A,从上图可见,执行是顺序地执行和的处理框,而框要根据条件执行0次或多次。上面两种分析(a)是正确的。但是,这种画法容易引起混淆,故可以改为:,其相应的伪代码为:A seqBCunit iter until cond I1Cend CunitDend A,第六章 详细设计,6.4 Warnier 程序设计方法6.4.1 Warnier图Warnier程序设计方法是由法国人J.D.W- arnier提出的另一种面向数据结构的设计方法,又称为逻辑构造程序的方法,
19、简称LCP (Logical Construction of Programs)方法。Warnier方法的原理和Jackson方法类似,也是从数据结构出发设计程序,但是这种方法的逻辑更严格。Warnier图是在Warnier方法中使用的一种专用表达工具。,第六章 详细设计,Warnier-orr 图也定义了三种基本结构(a)顺序结构 (b)二选一 (c)多选一 (d)重复W图与Jackson图类似,但不同;它不是自上而下,而是从左到右。用花括号 “” 表示结构的层次。,第六章 详细设计,数据(大写字母)之间的号表示“或”;表示选择零次或1次;数据(大写字母)下面的(0,N)表示重复0次或N次;
20、数据(大写字母)之间没有 号的和下面没有(0,N)则表示顺序结构,另外,也可以采用下面的表现形式。,?1/while I10,第六章 详细设计,此外,W图经Orr扩充,还可以用下列形式表示“并发”与“递归” 图里的 step x 和 step y 并发执行,可以 step x 先,也可以 step y 先或同时发生。当后面层次的元素名与前面层次元素名(可以标一个下角号)相同时,则表示为递归。,Warnier_Orr图优点:1图形表示、形象、直观、容易理解,逻辑性强。2既可以表示数据结构,也可以表示程序结构。 3易于表示结构的层次 4便于分解5简单易学,第六章 详细设计,实际上,用Warnier
21、-Orr方法进行设计比较多的是用在功能设计,如上图所示:就是一个工具软件的主要功能设计的Warnier-Orr图,第六章 详细设计,6.4.2 Warnier-orr开发方法它也被称为数据结构化系统开发(DSSD,1983年他们提出来的。该方法有程序逻辑构造法(LCP)扩展而成,它不但增强了设计能力,还增强了分析能力。DSSD提供了导出数据结构,程序结构,以及程序构件(模块)的细节过程设计符号表示和过程,还给出了使设计者能检查数据流与信息源和接收器之间的符号表示法以及变换过程。需求规格说明 应用范围IN 功能描述 应用产生的结果DSSD设计过程 . 设计文档 输出数据结构OUT 过程细节 限制
22、与约束,第六章 详细设计,一简化的设计方法逻辑输出结构(LOS)的导出 逻辑设计过程 逻辑过程结构(LPS)的产生意义在应用中LOS,可分为四步:1 评价问题说明或相关需求信息,并列出所有不同的,不能在细化的数据项(称为原子)2 确定每个原子发生的频率,3 评价所有可细分的数据项(也称组合项)4 开发LOS图解表达式,第六章 详细设计,举例: “机床工具使用日常报告”日期:工具类别 工具标识 状态 NO零件生产零件类型总计:零件类型总计:本日“机床工具使用日常报告” 生产总计:,第六章 详细设计,二LOS的导出在导出LOS中,第一步是分隔所有原子(不能再细分的数据项),第二步应注意各原子发生频
23、率 数据元素(原子) 频率 细节标题 1/报告 机床工具使用日报告 日期 各档标题 工具类别,工具标识 工具类别 1/工具类别 工具类别状态 1/工具标识 零件编号 小计标题 1/工具类别 零件类型总计 类别总计 总计标题 1/报告 本日零件生产总计 生产总计,第六章 详细设计,本例子中: 组合数据项有: 报告:(出现一次)工具类别:(每个报告出现t次)工具标识:(每个标号出现s次)三LPS的导出逻辑过程结构LPS是软件的一种过程表达式,这是软件处理对应LOS所要求的,每个组合数据项都是一项重复构造,要增加其处理细则。为导出LPS要有:(1)从LOS的W图中去掉所有原子;(2)把定义符BEGI
24、N-END加到所有组合数据项(重复)上;,第六章 详细设计,(3) 定义所有起始、终止或处理的细则(4) 确定所有计算或非数值处理,第六章 详细设计,进一步开发:(5)确定所有输出细则和过程(6)确定所有输入细则和过程,可与下一页的原要求对比,第六章 详细设计,举例: “机床工具使用日常报告”日期:工具类别 工具标识 状态 NO零件生产零件类型总计:零件类型总计:本日“机床工具使用日常报告” 生产总计:,第六章 详细设计,非结构转化方法程序流程图结构化转化问题,经科学家mills进一步验证BothmJacopini提出理论,证明问题解的任何算法都表示为结构化构造。其理论研究归纳如下:定理一:假
25、如不增加辅助变量,不增加额外计算或不改变程序的执行顺序,那末必然存在不能用if-while表示的构造。,【补充内容】,第六章 详细设计,定理二:在定理一的假设条件下,if-while构造的充分必要条件是:该构造不含两个(或两个以上)出口循环。定理三:若允许增加辅助变量或增加额外计算,或改变程序的执行顺序,问题解的任何算法都可以表示为结构化的构造。下面给出具体实例加以说明,第六章 详细设计,结构化程序设计的方法: (1) 以三种基本结构的组合来描述程序; (2) 整个程序采用模块化结构; (3) 有限制地使用转移语句,在非用不可的情况下,也要十分谨慎,并且只限于在一个结构内部跳转,不允许从一个结
26、构跳到另一个结构,这样可缩小程序的静态结构与动态执行过程之间的差异,使人们能正确理解程序的功能; (4) 以控制结构为单位,每个结构只有一个入口,一个出口,各单位之间接口简单,逻辑清晰; (5) 采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读; (6) 注意程序设计风格。,第六章 详细设计,【例1】非结构化的流程图(如何转换为结构化流程图?),第六章 详细设计,与左图等价的结构化流程图,第六章 详细设计,上面是一个增加额外计算的例子,图(左)有10个元素,而右图有11个元素,比左图多了一个D元素,这是结构化构造要求增加的。如果是一个大的系统,则这种增加是不理想的,
27、这是可将写成一个子程序,有两个调用语句来调用。 【例2】非结构化的流程图(如何转换为结构化流程图?),第六章 详细设计,与上图等价的结构化流程图,第六章 详细设计,【例3】非结构化流程图 (如何转换为结构化流程图?),第六章 详细设计,与左图等价的结构化流程图在上图中使用了3组合判定P1 和P2 ,“P1 and P2”表示P1和P2的“非”。(改变构造执行顺序的例子),T,第六章 详细设计,结构化课堂练习,课堂练习,第六章 详细设计,结构化课堂练习答案,第六章 详细设计,结构化二次修正答案,第六章 详细设计,6.5 体系结构设计与优化应鼓励设计阶段早期对结构多做精化,表示软件在开发出来以后应
28、不断精化和评估,以达到“最好”。便于优化也是开发软件体系结构表示的一个重要的因素。对于性能要求很高的应用来说,可能还需要在设计阶段的后期甚至编码阶段进行优化。软件开发者应该注意,一小部分的程序约(10%-20%)往往占用大部分的处理时间(50%-80%),因此,以下的方法对于性能要求很高的应用来说并非是不合理的。,第六章 详细设计,1 .开发和精化程序结构,且不考虑关键性能而进行的优化。2. 使用可以提高运行性能的CASE工具来孤立低效的部分。3. 在后期设计中,对有可能最消耗时间的模块的算法进行时间优化。4. 用适当的程序设计语言编码5. 孤立出那些大量占用处理器时间的模块。6 .如果需要,
29、用依赖机器的语言重新设计和编码,提高效率。这方法遵循了这种格言“先使其工作起来,再设法使其更好的工作”。,第六章 详细设计,6.6 接口设计体系结构设计中的接口设计主要包括三个方面:(1) 设计软件模块间的接口;(2) 设计模块和其他非人的信息生产者和消费者(比如外部实体)的接口;(3) 设计人(用户)和计算机间的接口;内部和外部接口设计内部程序接口的设计有时称为模块间的接口设计特性,它是由模块间传递数据和程序设计语言的共同导致的。分析模块中包括了足够的信息用于模块间的接口设计。数据流图描述了数据对象在系统中流动时发生的变换,DFD中的变换被映射到程序结构的模块中。因此,每个DFD变换的输入/
30、输出的箭头(数据对象)必须映射到该变换对应的模块接口上。,第六章 详细设计,外部接口设计始于对分析模型的DFD变换中的每个外部实体的评估。内/外部接口设计必须与模块内的数据验证和错误处理算法紧密相关。由于副作用往往是程序接口进行传递的,必须对从某模块流向另一个模块的数据进行检查,以保证符合需求分析时要求的确定。,第六章 详细设计,6.7 人-机交互的界面设计人-机交互部分的设计结果,将对用户的情绪和工作效率产生直接的重要影响。人机界面设计的水平,则会使系统对用户产生吸引力,用在使用系统的过程中,会感到兴奋,能激发用户的创造力,提高工作效率。相反,用户在使用过程中会感到不方便、不习惯、甚至会产生
31、厌烦和恼怒的情绪。,第六章 详细设计,6.7.1 界面设计宏观分类界面设计的种类宏观上可分为两种:工程化界面和人文界面1 工程化界面是技术人员较熟悉的类似开发平台的界面,如VF、VB等自动生成界面。2 人文界面是针对非工程化需求的应用软件界面, 如:家政管理、游戏等。这两中类型的界面是比较容易界定,但不能混用,人文界面采用拟人及虚拟现实的手法来设计界面,使用户有十分的亲切感,特别适合不懂计算机人员的使用与操作。而工程界面常用于行业软件、企业软件等专业应用软件中,在界面风格与人文界面有着本质上的区别。,第六章 详细设计,第六章 详细设计,第六章 详细设计,第六章 详细设计,第六章 详细设计,第六
32、章 详细设计,6.7.2 人机界面的交互方式目前已经流行着多种人-机界面的交互方式,通常简称为人-机交互(Human-Computer interaction)方式。人机交互方式,在很大程度上,决定于硬件的水平。最初的人-机交互只能通过电传打字机把一个一个字符打印在打印纸上。后来,有了CRT,就能把字符显示在屏幕上的任何位置,并能高分辨地显示图形(二维、多维和动态),还能支持鼠标、多窗口,以及图像处理(图像增强和图像的几何处理)。今天,随着硬件的不断发展和完善,已经出现了可以把字符、图形、图像、视频和音频结合为一体的多媒体人机交互方式。所以每一种方式都有不同的性能、特点和适用范围。在进行人机界
33、面设计时,要按照不同用户、任务类型选择和设计适合的人机交互方式。人机交互方式一般分为以下几种。,第六章 详细设计,一、问答式对话回答式对话是最简单的人机交互方式,它是由系统启动的对话,系统使用类自然语言的指导性提问,提示用户进行回答,用户的回答一般通过键盘输入字符串做出。最简单的回答式对话是采用非选择形式,即系统要求用户的回答限制在 Yes/No 上;较复杂一些的是把回答限制在很少范围的答案集内,用户通过字符或数码输入做出回答,这类用户响应也可称为菜单响应。适用对象主要是偶然型或生疏型用户。,第六章 详细设计,二、菜单界面菜单交互方式是指让用户在一组多个可能对象中进行选择,各种可能的选择项以菜
34、单项的形式分层显示在屏幕上。菜单界面适用于熟悉系统要完成的功能,但又缺少计算机经验的用户,对于熟练型或专家型用户,如果系统响应快也可以使用,但不如命令语言灵活和高效。三、功能键功能键用来代替用户输入命令或选取功能菜单,从而方便地完成系统功能。使用功能键可以减少用户的记忆负担,加快操作速度以及减少命令的输入的出错率。但功能键的使用应趋于标准化,组合功能键的定义应尽量考虑用户的记忆量和出错率。,第六章 详细设计,第六章 详细设计,四、图符(标)界面图符(icon)方式实际上也属于菜单交互方式,只是它使用图符来代表文本菜单的菜单项。使用图符可以形象、逼真地反映菜单的功能,从而使理解、学习和操作变得更
35、加容易。但使用图符方式必须具有图形硬软件环境的支持,而且它的使用以占据较大的屏幕空间和附加较多的图符文字说明为代价。,第六章 详细设计,图标界面,第六章 详细设计,五、填表界面计算机系统大量地应用于数据处理领域,而数据通常以数据库方式进行存储、处理和显示。由于一般数据库的信息包含许多字段,所以一种很自然的界面形式是填表界面。它是由系统驱动的具有高度结构形式的输入表格,让用户按照要求输入数据来填写。其特点是全部的输入、输出信息同时显示在屏幕上,所以只要表格设计得好,那么操作步骤是不言而喻的。在填表操作时,应允许用户在自由移动光标定位到所需的字段并进行输入。,第六章 详细设计,第六章 详细设计,六
36、、命令语言界面和以上的几种交互方式不同(他们都是由系统驱动的),命令语言是用户驱动的对话,即由用户发起和控制对话。用户按照命令语言文法,输入命令给系统。然后,系统解释命令语言,完成命令语言规定的功能,并显示运行结果。七、查询语言界面查询语言是用户与数据库的交互媒介,是用户定义、检索、修改和控制数据的工具。查询语言是非过程化的准自然语言,用户可以使用类自然语言的语言的语句方式来定义、查询或更新数据库。查询语言只需给出要做什么的操作要求,而不必描述应如何做的过程所以用户使用查询语言界面时一般可以不需要通常的程序设计知识,因而方便了用户的使用。,第六章 详细设计,6.7.3 人机界面的开发过程一般说
37、来,除了人一机界面开发工具,如UIMS(用户界面管理系统)或UIDE(用户界面开发环境)外,人一机界面软件不是一个独立的软件系统,它总是要嵌入到待开发的应用系统中去所以开发具有友好人一机界面的应用系统时,除了要致力于分析、设计应用系统功能外,还要分析、设计系统的人一机界面。可采用软件工程过程模型来开发用户界面,主要采用瀑布模型和原型模型。1、人一机界面开发的瀑布式模型采用瀑布模型开发人一机界面软件部分时,要把与用户、界面以及系统的使用性能的相关内同结合到系统的分析、设计和评估中。它与开发一般软件系统的差别在于,增加或强调了与用户特性及人机交互有关的内容。下面简单说明一下各阶段的任务。,第六章
38、详细设计,(1)调查用户的界面要求和环境由于判断一个系统的优劣,在很大的程度上取决于未来用户的使用评价。因此、在系统开发的最初阶段尤其要重视系统人一机界面部分的用户需求。必须尽可能广泛地向系统未来的各类直接或潜在用户进行调查,也要注意调查人一机界面涉及的硬、软件环境。(2)用户特性分析调查用户类型,定性或定量地测量用户特性,了解用户的技能和经验,预测用户对不同界面设计的反响。(3)任务分析从人和计算机两方面共同入手,进行系统的任务分析,并划分各自承担或共同完成的任务,然后进行功能分解,画出数据流图。(4)建立界面模型确定描述模型的规格说明语言,建立界面需求规格说明。,第六章 详细设计,(5)任
39、务分析根据来自用户特性和任务分析的界面需求规格说明,详细分解任务动作,并分配给用户或计算机或二者共同承担,确定适合于用户的系统工作方式。(6)环境设计确定系统的硬、软件支持环境带来的限制,甚至包括了解工作场所,向用户提供的各类文档要求等。(7)界面类型设计根据用户特性,以及系统任务和环境,制定最为适合的界面类型,包括确定人一机交互任务的类型,估计能为交互提供的支持级别和复杂程度。(8)交互设计根据界面需求规格说明和对话设计准则,以及所设计的界面类型,进行界面结构模型的具体设计,考虑存取机制,构造界面结构图。,第六章 详细设计,(9)屏幕显示和布局设计首先制定屏幕(screen)显示信息的内容和
40、次序,然后进行屏幕总体布局和显示结构设计。(10)帮助和出错信息设计决定和安排帮助信息和出错信息的内容,组织查询方法,并进行出错信息、帮助信息的显示格式设计。,第六章 详细设计,(11)界面实现根据界面设计方案,借助用户界面开发工具,实现系统界面软件。(12)界面测试和评估 开发完成的系统界面软件必须经过严格的测试和评估。评估可以使用分析方法、实验方法、用户反馈,以及专家分析等方法。可以对界面客观性能进行测试(如功能性、可靠性、效率等),或者按照用户的主观评价(用户满意率)及反馈进行评估,以便尽早发现错误,改进和完善系统设计。,第六章 详细设计,2、人一机界面开发的原型模型由于人一机界面与最终
41、用户的关系非常密切,且开发环境日趋成熟所以一般采用原型模型开发人一机界面。原型开发模型体出了人一机界面设计过程的反复性,即由人一机界面需求经快速设计建立界面原型,然后由用户进行评价,再根据他们的意见进行需求调整,建立下级原型,此过程重复进行,直至产生用户满意的界面产品为止。,第六章 详细设计,(1)管理输入设备(如鼠标或键盘)。(2)确认用户输入的信息。(3)出错处理并显示出错信息。(4)提供反馈(如自动的输入回应)。(5)提供帮助和提示。(6)管理窗口和处理窗口中的域滚动。(7)建立应用软件与界面间的连接。(8)把应用和界面管理功能分隔开。(9)允许用户定制界面。开发者可帮助用户确定评审界面
42、的定量和定性的指导性准则。 这些定量的指导性准则体现在以下四个方面:(1)系统及其界面说明的长度和复杂性提供了系统用户所要求的学习量信息。,第六章 详细设计,(2)指定的命令数目和每条命令的平均参数个数提供了系统交互时间长短和总体效率的信息。(3)原型描述的操作、命令和系统状态个数提供了系统用户的记忆量信息。(4)界面风格、帮助设施和出错处理机制指出了系统复杂度的大略状况及系统可被用户接受的程度。,第六章 详细设计,定性数据可通过向用户发放调查问卷获得,问卷问题可以采用简单的是否回答、数字回答、等级回答或百分比回答等。(1)命令易于记忆吗?(是否)(2)你使用了多少个不同的命令?(数字)(3)
43、学会基本系统操作的难易程度如何?(15级)(4)与你曾使用过的界面比较,这一界面的性能比率是多少?(高出1、高出10、高出50、低50)如果想获得定量数据,应进行一段时间的观察分析。观察交互过程中的用户,收集定量数据,如在一个标准时间段内完成的任务数目;命令使用的频率;命令顺序;出错数目、出错类型和出错修复时间;使用帮助机制的时间;在一个标准时间段内使用帮助机制的次数等。收集这些信息的目的在于提供界面改进的指导性信息。,第六章未结束,请接第二部分,第六章 详细设计,模块开发文件夹每个开发文件夹包含一个(或多个)模块的全部文档项目名称 模块名字程序员姓名 文件夹封皮 完成日期修改日期源程序行数目标代码长度模块的简要描述设计阶段起止时间编码单元测试集成,第六章 详细设计,模块详细设计结果描述源程序清单测试期间修改的源程序清单 文件夹内部 最终源程序清单测试方案测试软件(存根程序和测试驱动程序)测试结果模块开发文件夹模块开发文件夹是组织和保存在软件开发过程中不断产生的文档资料的一种有效方法。每个文件夹内包含一个(或多个)模块的全部文档. 具体的方法请参见P88页相关内容。,