1、第第6章章 人机交互界面的表示模型人机交互界面的表示模型与实现与实现 人机交互界面的表示模型与实现人机交互界面的表示模型与实现n在界面设计的早期阶段,研究建立一种用户界面表示模型和形式化设计语言 利用形式化的设计语言来分析和表达用户任务以及用户和系统之间的交互情况;使界面表示模型能方便地映射到实际的设计实现。主要内容n人机交互界面表示模型n界面描述语言n窗口系统n用户界面管理系统6.1 人机交互界面表示模型n三种模型:行为模型,主要从用户和任务的角度考虑如何来描述人机交互界面,将详细介绍GOMS,UAN及LOTOS模型。结构模型,主要从系统的角度来表示人机交互界面。重点介绍状态转换网络(STN
2、-State Transition Network)和产生式规则(Production Rule)。6.1 人机交互界面表示模型n对象模型,是一种目前非常流行的面向对象的表示模型,它将人机交互活动归结为事件与对象的相互作用。n模型转换,界面的事件-行为表示模型与系统的结构模型之间的转换。n表现模型,主要介绍人机界面表现的具体描述方法6.1.1 行为模型n分析人员获取用户需求后,结合领域专家的意见和指导,获取系统中需要完成的任务,对任务的主要因素进行详细地分析,如任务的层次、发生条件、完成的方法以及它们之间的关系等等。n所有这些内容,都是在行为模型中所要研究的。6.1.1 行为模型n行为模型将在
3、后面的具体系统设计中起着非常重要的指导作用n下面从模型的基本原理、实例、局限性等方面介绍四种行为模型:n目标操作和选择行为模型GOMS n时序关系说明语言LOTOSn用户行为标注UANn预测性的行为模型GUL,融合上面三个1.GOMS n1983年由Card,Morgan和Newell 提出的。n通过目标(Goal)、操作(Operator)、方法(Method)以及选择规则(Selection)四个元素来描述用户的行为。nGOMS是在交互系统中用来分析建立用户行为的模型。它采用“分而治之”的思想,将一个任务进行多层次的细化。1.GOMS 1.1.目标目标 GoalsGoals 目标就是用户执
4、行任务最终想要得到的结果,它可以在不同的层次中进行定义。n 高层次的目标可定义为“编辑文章”,低层次的目标可定义为“删除字符”n高层次的目标可分解成若干低层次的目标1.GOMS 2.操作操作 OperatorsOperators 操作是任务分析到最低层时的行为,是用户为了完成任务所必须执行的基本动作。n双击鼠标,按Enter键n操作不能再分解,在GOMS模型中是原子原子元素 1.GOMS 3.方法方法 MethodsMethods 方法是描述如何完成目标的过程。一个方法本质上来说是内部的算法,用来确定子目标序列及完成目标所需要的操作。1.GOMS 3.方法方法 MethodsMethods在M
5、acintosh操作系统下关闭窗口的方法:GOAL:ICONSIZE-WINDOW.select GOAL:USE-CLOSE-METHOD.MOVE-MOUSE-TO-WINDOW-HEADER.POP-UP-MENU.CLICK-OVER-CLOSE-OPTION.GOAL:USE-L7-METHOD.PRESS-L7-KEY1.GOMS 4 4选择规则选择规则 SelectionSelectionn选择是用户要遵守的判定规则,以确定在特定环境下所要使用的方法。n当有多个方法可供选择时,GOMS中并不认为这是一个随机的选择,而是尽量预测会使用哪个方法,这需要根据特定用户、系统的状态、目标的
6、细节预测要选择哪种方法。1.GOMS 4 4选择选择 SelectionSelectionn用户Sam一般不用L7,在玩游戏时用:Rule 1:Use the CLOSE-METHOD unless another rule applies Rule 2:If the application is GAME,use L7-METHODn另一个完整的实例如下:GOMS实例Task:Editing 任务任务EDITING的的GOMS描述实例描述实例GOAL:EDIT-MANUSCRIPT GOAL:EDIT-UNIT-Task repeat until no more unit tasks GOA
7、L:ACQUIRE-UNIT-TASK GET-NEXT-PAGE if at end of manuscript GET-NEXT-TASK GOAL:EXECUTE-UNIT-TASK GOAL:LOCATE-LINE select:USE-QS-METHED USE-LF-METHOD GOAL:MODIFY-TEXT select:USE-S-METHOD USE-M-METHOD VERIFY-EDIT GOMS实例n上面实例中可以看到,当所有子目标完成后,对应的最高层的用户目标就得以实现了n属于同一目标的字母表之间存在几种关系:如顺序关系,选择关系GOMS应用n作为一种人机交互界面
8、表示的理论模型,GOMS是人机交互研究领域内少有的几个广为人知的模型之一,并被称为最成熟的工程典范,该模型在计算机系统的评估方面也有广泛的应用。GOMS应用nGOMS can save money!美国电话公司NYNEX利用GOMS分析一套即将被采用的新的计算机系统的应用效果,结果发现效果不理想,放弃了使用新系统,为公司节约了数百万的资金。GOMS的局限性nGOMS没有清楚的描述错误处理的过程,一旦子目标由于错误而导致目标无法正常实现而异常终止,系统将无法处理。这些错误在GOMS模型中无法描述n会假设用户完全按一种正确的方式进行人机交互,因此只针对那些不犯任何错误的专家用户。GOMS的局限性n
9、GOMS对于任务之间的关系描述过于简单,只有顺序和选择.事实上任务之间的关系还有很多种(具体参见6.1.2节中LOTOS的介绍),这限制了它的表示能力。n另外选择关系通过非形式化的附加规则描述,实现起来也比较困难。GOMS的局限性nGOMS把所有的任务都看作是面向操作目标的,而忽略了一些任务所要解决的问题本质以及用户间的个体差异,它的建立不是基于现有的认知心理学,故无法代表真正的认知过程。nGOMS的理论价值不容忽视,但需要对它进行一定程度的扩展,并结合其他的建模方式,以更好的应用于人机交互领域2.LOTOS n时序关系说明语言LOTOS(Language Of Temporal Orderi
10、ng Specification)T.Bolognesi,H.Brinskma,Introduction to the ISO Specification Language LOTOS”,1987.2.LOTOS n国际标准形式描述语言,适于描述具有并发、交互、反馈和不确定性等特点的并发(concurrent)系统中的行为。n开始作为一种描述网络协议的语言,由于交互系统、特别是多通道交互系统有并发系统的特点,因此成为用来描述交互系统的行为模型。LOTOS基本思想n系统的外部可见行为可以看作是由一个有时序关系的交互序列组成。n系统由一系列进程组成,进程同环境之间通过称为“关口”(gates)的交
11、互点进行交互。n两个以上的进程在执行同一个外部可见的行为时会发生交互操作,进行数据交换、信息传递、协调同步等操作。LOTOS基本思想n进程行为用“行为表达式”来描述,复杂的行为由简单的行为表达式通过表示时序关系的LOTOS算符组合而成。n在将LOTOS思想用于人机交互的行为模型时,用进程之间的约束关系来描述交互子任务之间的关系。LOTOS算符nT1|T2(交替Interleaving)T1和T2两个任务相互独立执行,可按任意顺序执行,但永远不会同步。nT1 T2(选择Choice)需要在T1,T2中选择一个执行,一旦选择某一个后,必须执行它直到结束,在这中间另一个再无执行机会。任务如何来选择没
12、有给出一定的形式化描述 LOTOS算符nT1|a1,.,an|T2(同步Synchronization)任务T1,T2必须在动作(a1,an)处保持同步 nT1 T2(禁止Deactivation)一旦T2任务被执行,T1便无效(不活动)nT1 T2(允许Enabling)当T1成功结束后才允许T2执行 LOTOS与GOMS的结合nLOTOS模型很好的描述了任务之间的时序约束关系,这些时序约束关系能更好的描述GOMS中子目标之间的关系。n如果能将两个表示模型结合起来,用GOMS模型描述任务的分解过程,而用LOTOS给出子任务之间的约束关系,这样就可以增加两种表示模型的表示能力。LOTOS实例中
13、国象棋的LOTOS任务分解实例结合GOMS和LOTOS的中国象棋程序的行为描述GOAL:中国象棋 :GOAL:运行|:*GOAL:走棋 ACTION:自动记录棋谱 :GOAL:当前方走 :OPRATOR:拾取棋子 OPRATOR:放置棋子 GOAL:对弈方走 OPRATOR:拾取棋子 OPRATOR:放置棋子 *GOAL:打谱 :OPRATOR:加速 OPRATOR:减速 OPRATOR:暂停 OPRATOR:恢复 GOAL:退出LOTOS总结nLOTOS与GOMS结合,可以清楚地了解整个目标层次及各目标之间的约束关系。n但与GOMS同样存在无法描述目标异常结束的缺陷,同时当任务进行选择时用什
14、么规则进行选择并为涉及。LOTOS总结nLOTOS最大的优越性在于可以构造一套现成的自动化工具,利用这些工具,可自动进行错误检测,但它过于形式化的记法比较晦涩难懂。nGOMS和LOTOS的结合可以很好地描述人机交互的较高级的任务,对于原子任务的形式化描述,上述模型并没有给出一个比较清晰的描述,下面讨论的UAN模型主要用于原子目标的描述。3.UAN nUAN-User Action Notion用户行为标注nUAN是一种简单的符号语言,主要描述用户的行为序列及在执行任务时所用的界面。n尽管UAN属于一种行为模型,但作为一种任务描述语言,它又涉及一定程度的系统行为的描述,因而它兼有行为模型和结构模
15、型的一些特点。UAN模型的基本思想n预定义一些标志符:用户动作标志符:在UAN的表示模型中有一些常用的已经预定义的符号,用来表示常见的用户界面的交互动作条件标志符:除了动作的符号,还包含表示条件及选择的标识符UAN预定义的动作标志符(部分)n用户动作标志符:move_mouse(x,y)移动鼠标至(x,y)release_button(x,y)在(x,y)位置释放鼠标按钮;highlight(icon)使icon高亮显示;de_highlight(icon)取消icon的高亮显示。用户动作标志符:X,在某个图形对象上移动鼠标;,按下鼠标;,释放鼠标;!,使对象高亮显示;-!,取消对象的高亮显示
16、Display,显示图形对象Erase,取消显示对象。UAN预定义的条件标志符(部分)nwhile(condition)TASK 当条件condition为真时,循环执行任务TASK;nif(condition)then TASK 如果条件condition满足,则执行任务TASK;niteration A*or A+表示迭代操作;nwaiting 表示等待,可以等待一个条件满足,也可以等待任务中的一个操作执行。UAN模型的基本思想n有了上面定义的符号,UAN采用一种表格结构来表示任务,表格构成:任务(任务(tasktask):任务名称():任务名称(the name the name of
17、taskof task)用户行为界面反馈界面状态UAN模型的基本思想n界面被分解成一些类似层次结构的异步任务,每个任务的实现都用表格来描述,用户动作的关联性和时序关系由表格的行列对齐关系和从上到下、从左到右的阅读顺序来确定。UAN实例-单通道交互任务:任务:drag and drop a file to the recycle bindrag and drop a file to the recycle bin用户行为界面反馈界面状态mouse_down(x,y)drag_icon(x,y)mouse_up(x,y)then highlight(icon)show_outline(icon)t
18、hen highlight(bin)then hide(icon)show_bin_full()if intersect(icon,x,y)icon=selected if intersect(bin,x,y)if intersect(bin,x,y)UAN实例-多通道交互任务:任务:drag and drop a file to the recycle bindrag and drop a file to the recycle bin用户行为界面反馈界面状态2D鼠标语音then highlight(icon)show_outline(icon)then highlight(bin)then
19、 hide(icon)show_bin_full()if intersect(icon,x,y)icon=selected if intersect(bin,x,y)if intersect(bin,x2,y2)mouse_down(x,y)drag_icon(x,y)mouse_up(x,y)PronounceMove_to_recycle_binUAN总结nUAN模型更接近于实现,界面状态和界面反馈用一般的程序语言描述,实现起来比较方便,当然这种描述由于接近于程序语言,因此设计时需要一定的编程基础nUAN模型在精确刻画各成分之间的各种平行和串行的时序关系方面尚显不足,任务之间的时序关系没有
20、明确表示出来,当所描述的界面使用多种输入设备和有若干可选交互路径时,比较繁琐。43层次化的界面描述方法G-U-L模型n在结合了LOTOS后,整个行为模型变得更为完整,可以考虑将GOMS、UAN、LOTOS中模型结合为一个预测行为模型:G-U-L模型。nG-U-L运用GOMS原理为基础进行任务分解,建立基本的行为模型,原子操作由UAN模型描述,在此基础上,运用LOTOS算符来表示任务目标之间的时序关系。G-U-L模型n在G-U-L模型中没有加入规则,在表示目标之间的关系中也未考虑同步。这主要考虑到规则的转换要涉及到推理、建立知识库等问题,而同步的问题的描述和转换也非常的复杂,这会在工作的初期造成
21、非常大的困难。4.任务模型n任务模型表示法(Concurrent Task Tree Notation,CTT),是一种基于图形符号的,采用层次的树状结构来组织并表示任务模型的方法n介绍任务模型中任务种类和暂态关系的含义及其图形符号:1)任务分析n任务分析是一个以人们的行为为出发点的分析过程,它分析人们完成任务的方法:他们要做的事、要起作用的事和想要知道的事。n任务分析一个重要方法是任务分解,即需要考察将一项任务分成若干子任务的途径以及这些子任务执行次序的方法1)任务分析n任务分解使得任务的执行过程层次化,即一个任务的执行被委托给它下一层的子任务来完成n这些子任务之间的关系及其执行顺序成为了解
22、一个任务执行过程的重点n考虑一个用户交互过程,对其进行任务分析的目的和重点在于得到交互任务及其子任务的一个层次体系,以及一些描述子任务执行的顺序和条件的解决方案。1)任务分析n这个方案必须能够恰当地捕获用户的交互意图,能够如实地反映交互过程,并把它准确地表达出来n同时它不能曲解交互过程蕴含的业务要求n这样一个层次体系以及方案就是一个任务模型n表达越准确,由任务模型生成的用户界面越能够贴近实际的交互需求,符合一般的交互习惯,同时不会改变业务规则2)任务种类n抽象任务(Abstract Task)n用户任务(User Task)n交互任务(Interaction Task)n系统任务(Applic
23、ation Task)2)任务种类n抽象任务(Abstract Task),代表一个复杂抽象的任务,通常用来表示由其他种类的任务任意组合而成的任务n用户任务(User Task),代表一个只能由用户参与的任务,通常用来表示和用户感知或者认知行为相关的任务。例如用户阅读系统的反馈的信息提示,决定下一步的操作2)任务种类n交互任务(Interaction Task):代表执行过程中需要用户与系统进行交互的任务。例如用户在线注册填写面板n系统任务(Application Task):代表由系统来执行而不需要用户参与交互的任务。例如,系统处理用户提交的注册信息,然后将处理结果显示给用户3)暂态关系符号
24、暂态关系符号n在任务模型表示法定义了丰富的暂态关系,用以表示在执行过程中任务之间的相互联系和制约作用。这些关系都有相应的图形符号:(1)Choice:t1 t2 tn 选一个且只能选一个执行,且在执行过程中,一旦选定了一个任务则其他任务将不能被执行 3)暂态关系符号暂态关系符号(2)Concurrent(Independent Concurrency):t1|t2|tn任务可以并发的执行,任务之间的执行开始和结束没有任何的限制(3)带信息交换的Concurrent:t1|t2|tn任务可并发执行,允许任务间进行信息交换3)暂态关系符号暂态关系符号(4)Disabling:t1 t2一旦任务t2
25、开始执行,则中断并终止任务t1的执行(5)Enabling:t1 t2 tn必须按照顺序执行,ti+1只有在ti已经执行完成后才能开始执行3)暂态关系符号暂态关系符号(6)带信息交换的Enabling:t1 t2 tn允许任务之间进行信息交换(7)Independence:t1|=|t2任务可以按任意顺序执行,但当一个开始执行后,另一个任务则不能开始执行,除非已经开始的任务执行完成574)单用户任务模型 单用户任务模型在CTT中表示为一棵树用户使用自动取款机的任务模型4)单用户任务模型n每个节点代表一个任务,任务可以被分解成更为具体的子任务,并用该节点的子节点来表示。n根节点代表的任务抽象层次
26、最高,叶子节点代表的任务最为具体。4)单用户任务模型n拥有相同父节点的兄弟节点之间的关系由暂态关系符号来表示。n暂态关系符号决定了兄弟任务在某个时刻的相互之间的制约关系,并且决定了这组任务所能有的执行顺序n任务具有不同的种类,以区别不同任务执行过程中参与的角色的不同,以及对交互要求的高低6.1.2 结构模型n前面介绍了用任务分析或用户行为的方法描述人机对话的过程n本节主要介绍用结构化的方法来描述人机交互的一般过程,简单介绍形式化语言的描述产生式规则,这种结构的方法从理论上可以引导界面设计者及界面工具的设计者进行有效的设计n重点讨论状态转换网络及其扩展方式n它是一种图示化的结构1.产生式规则n产
27、生式规则-Production Rule是一种形式化语言,这种结构的方法从理论上可以引导界面设计者及界面工具的设计者进行有效的设计。n状态转换网络-State Transit Network 用结构化的方法来描述人机交互的一般过程,是一种图示化的结构1.产生式规则 n产生式规则-Production Rule,又称为上下文无关文法,将人机交互对话看作是一种语言,运用基于语法的方法来描述交互对话。n产生式规则是一种形式化语言,这些规则可用于描述人机交互界面。1.产生式规则 n产生式规则的一般形式是:if condition then action 这些规则可以表示为不同的形式,如conditio
28、n actioncondition:action1.产生式规则n所有的规则都是有效的,并且系统不断用它来检测用户的输入是否与这些条件相匹配。n若匹配则激活相应的动作,这些动作可以是执行应用程序的一个过程,也可以是直接改变某些系统状态的值。1.产生式规则n一般来说,组成界面描述的产生式规则很多,规则定义的顺序并不重要,只要与规则中的条件相匹配,就可以激活相应的动作。n产生式规则系统可以是事件引导的,也可以是状态引导的,或者两者都有。1)事件引导的系统 Sel-linestart-line C-point start-linerest-line C-point rest-linerest-line
29、 D-point rest-line产生式集合,实现用户在屏幕上绘直线 事件的主要类型 n用户事件(user event),Sel-line表示从菜单中选择line命令,C-point 和D-point表示用户在绘图平面上单击和双击鼠标 n内部事件,用于保持对话状态,如start-line 表示开始画线后的状态,rest-line表示选择了第一个点之后的状态。n系统响应事件,以尖括号表示可见或可听的系统响应,如,把菜单项line 高亮度显示,表示在屏幕上显示直线,表示橡皮筋绘制方式打开,表示橡皮筋绘制方式关闭。产生式规则的解释n在上面的产生式规则中,第一条规则表示选择画线命令后,系统状态进入了
30、开始画线状态,接着把line菜单项高亮度显示;第二条规则表示,用户在开始画线状态时,在绘图区域单击鼠标则系统表示已定义了一个点,此时橡皮筋绘图方式打开;第三条规则表示在定义了一个(或多个)点后,用户单击鼠标可以连续地定义点;第四条规则表示双击鼠标则结束画线的交互过程。事件引导的系统n对话控制由一块系统内存专门存放一系列的事件,如果来自用户的事件与系统内存中的内部事件合并后与某条产生式规则匹配,则激活该条规则n保存内部事件序列n构造一个对话控制器,主要负责事件的产生和规则的匹配对话控制n对话控制主要负责事件的产生和规则的匹配,可以看到在每一时刻系统内存中会保存一些内部事件,当产生一个事件时,可能
31、是用户事件(如单击鼠标),也可能是内部事件(如时钟事件等)。对话控制n对话控制就要将所有的产生式规则与事件集合进行匹配,这个过程是复杂的而且是耗时的,当产生式很多并且产生式规则的条件复杂时,匹配算法的效率就显的更为重要,因此需要设计好的数据结构和匹配算法来提高匹配规则的效率。n可以将规则和事件进行分组和分层。2)状态引导的系统 n状态引导的系统在系统内存保存的不再是动态的随时进出的事件,而是一些表示系统的当前状态的属性,这些属性在不同的时刻有不同的值。画线操作在系统中的五个属性Mouse:mouse-null,select-line,click-point,double-clickLine-s
32、tate:menu,start-line,rest-lineRubber-band:rubber-band-on,rubber-band-offMenu:highlight-null,highlight-line,highlight-circleDraw:draw-nothing,draw-line对象的状态n第一个特征Mouse有4个不同的状态mouse-null(鼠标空闲),select-line(选择线命令),click-point(单击鼠标),double-click(双击鼠标)当用户对鼠标进行操作时Mouse自动设置成相应的状态;对象的状态n第二个特征Line-state用于保持当前
33、会话的状态,分别是menu(可选命令状态),start-line(开始绘制线),rest-line(已经定义点);对象的状态n后三个属性用于控制系统响应 Rubber-band橡皮筋绘制的开和关状态,Menu表示任何项也没有选中(highlight-null)、选中绘直线命令(highlight-line)或选中绘圆命令(highlight-circle)Draw表示什么也不画状态(draw-nothing)或画直线状态(draw-line)显示控制器根据上面状态做出相应显示控制状态引导的产生式规则(画直线)Select-linemouse-null start-line highlight-
34、lineClick-point start-linemouse-null rest-line rubber-band-onClick-point rest-linemouse-null draw-lineDouble-click rest-linemouse-null menu draw-line rubber-band-off状态引导的产生式规则的特点n当产生式规则的条件和状态匹配时将激活该产生式规则,对于某一特定的属性,如果前面的状态需要改变成新的状态时才需要在产生规则的后面标注状态引导的产生式规则的特点例如,n在第二条规则中,规则指定“Line-state”属性应设置成“rest-lin
35、e”,因为原来的“start-line”值将丢失n而在第三条规则中,没有提及rest-line值,因为它已默认,Line-state 属性的值继续保留为 rest-line。状态引导的产生式规则的特点n属性的永久特性有时会引起一些奇怪错误n因此在上述的规则集中,每一条产生式规则都要求将鼠标的状态设置为 mouse-null,否则,当用户单击了鼠标,激活了第二条规则,如果不立即将鼠标的属性设置为mouse-null,则会立即激活第三条规则,此时系统的状态和第三条规则的条件是匹配的,并且会反复的一直执行下去。3)混合引导系统 n有的对话过程比较适合于事件引导方式,有的对话过程适合于状态引导方式,当
36、然也可以将两者结合起来,例如采用下面的形式:event:condition action 3)混合引导系统 n描述一个产生式规则,事件用来计划产生式规则,如果条件不满足,即当前系统内存中的状态和产生式的规则不匹配,则无法激活规则,另外当状态改变时,产生式规则中的action本身也可以产生新的事件,从而可以激活另一条规则。83文本样式 加粗加粗混合的事件/状态产生式系统 Bold:off,on Italic:off,onUnderline:off,on 图6-2 粗体/斜体/下划线对话框根据用户点击鼠标的位置不同,可能产生三个事件:select-bold,select-italic,select
37、-under,该对话过程有下面六个产生式规则定义。斜体下划线混合的事件/状态产生式系统select-bold:Bold=offBold=onselect-bold:Bold=onBold=offselect-italic:Italic=offItalic=onselect-italic:Italic=onItalic=offselect-under:Underline=offUnderline=onselect-under:Underline=onUnderline=off产生式规则总结n如果有n个转换开关,则会产生2n个规则n产生式规则比较适合于描述并发的操作,而对于顺序的对话就不太适合2.
38、状态转换网络n状态转换网络(STN)的基本思想是定义一个具有一定数量的状态的转换机,称之为有限状态机-Finite State Machine(FSM)nFSM从外部世界中接收到事件,并能使FSM从一个状态转换到另一个状态。2.状态转换网络这里介绍两种最基本的状态转换网络:n传统状态转换网络(State Diagrams)n扩展状态转换网络(State Charts)后者是前者的一个扩展 1)传统状态转换网络n状态转换网络的主要组成部分是状态,以及代表状态改变和转换的箭头,状态转换网络实际上是一个有向图,图的节点代表状态,图中的有向边转换代表一个状态到另一个状态的n状态可以定义为在给定时间、方
39、法和行为的情况下,与用户环境相关的一组环境变量或属性集1)传统状态转换网络n状态转换网络则用于图形化地显示状态以及任何时刻在状态之间发生的交互源状态目标状态转换1)传统状态转换网络n当发生一个外部或内部事件时,系统就会从一个状态转换到另外一个状态,这称为状态转换。n外部事件主要由用户操作外部输入设备来产生,内部事件可以是系统产生的事件,如时钟事件,也可以是为了改变系统的状态和行为而产生的事件,如当一个任务完成后可以激活另一个任务等。n一个状态转换与一对状态相关联。n一般的系统具有很多个状态,假设系统由n个状态组成,状态之间的转换最多可能有n*(n-1)个。带条件的状态转换源状态目标状态条件动作
40、带条件的状态转换 T2C2 T1C1SE1E2S+C1S+C2E1E2T1T2带条件的状态转换实例(基于鼠标的画图工具)draw circle单击在圆周上rubber band单击在中心点highlight circle选择 circle Circle1MenuFinish Circle2draw line双击rubber band单击在第一点highlight line选择 lineLine1Finish Line295基于鼠标画图工具状态转换网带条件的状态转换实例(基于鼠标的画图工具)n图中是一个基于鼠标画图工具,图中涉及到了状态、转换、条件、动作等元素。它有一个菜单(有两个选项“circ
41、le”和“line”)和一个绘图平面。若选择“circle”则要求你确定两个点:第一个点是圆心,第二个点表示圆周上的任意一点。第一个点确定后,系统就在圆心和当前鼠标位置之间画一条“橡皮圈”线,第二个点确定后就画出了一个圆。传统状态转换模型n状态转换网络比相应的文本解决方案更易于设计、理解、修改和文档化,它给出了对行为的精确的、甚至是格式化的定义。传统状态转换模型n存在着一定的局限性,一个最大的缺陷是需要定义出系统的所有状态,这对于小型的系统是没有问题的,但是在一个较大的系统中,系统会很快崩溃,状态的数目是呈指数级增长的,同时状态的增长直接导致了状态转换网络过于复杂、无法实际应用。传统状态转换模
42、型n为了解决状态爆炸的问题,可以采用面向对象方法来为每个类定义单独的状态转换网络。n每个类都有一个简单的、易于理解的状态转换网络,这种方法很好地消除了状态级数爆炸的问题 2)扩展状态转换网络(1)层次状态转换网络n层次元素的使用不改变对话基本描述法功能,但它却能简单地说明一个大的复杂的系统,从最高级的主菜单到击键或击鼠标这样的小动作101分层的状态图实例带有帮助功能的状态转换按下HELP按钮按下HELP按钮从菜单出发draw circle单击在圆周上rubber band单击在中心点Circle1Finish Circle2帮助子系统帮助子系统描述并发任务?状态转换模型n状态的爆发式增长问题n
43、具有良好的描述串行和顺序行为的能力,并发及其他行为的描述能力差n虽然是一个结构模型,但难以实现6.1.3 行为模型和结构模型的转换一般来说行为模型主要对设计起指导作用,在此基础上,设计人员再进行结构模型(如状态转换网络等)的创建,这个过程很大程度上取决于设计人员的经验和对行为模型的理解。l整体框架l转换算法6.1.3 行为模型和结构模型的转换 n一般来说行为模型主要对设计起指导作用,在此基础上,设计人员再进行结构模型(如状态转换网络等)的创建,这个过程很大程度上取决于设计人员的经验和对行为模型的理解.n本节主要介绍一种从行为模型到结构模型的一种转换思想和算法,以实现两种模型间的自动的转化工作。
44、1061.基本的模型转换整体框架 转换算法 行为模型(G-U-L)结构模型State ChartsGOMSUANLOTOS约束规则用户D o m a i n ExpertDesigner图6-17 模型转换整体框架模型转换整体框架 n整个框架分为三个部分:行为模型使用G-U-L模型,在这一层将产生一个基本的预测性的行为模型。结构模型采用层次状态转换网络,它涉及到的元素有状态、转换、事件、层次结构。不考虑状态转换网络在转换中条件和同步,可以简化转换工作。模型转换整体框架 n整个框架分为三个部分:用户包含两种用户,领域专家和设计者。G-U-L模型的创建主要是由领域专家和设计者合作来完成的,然后通过
45、模型转换算法转换成为结构模型,最后提供给设计者使用。2.转换算法 n1)基本思想 n2)基本步骤 n3)实例应用 1)基本思想 n采用G-U-L以层次化结构对任务进行建模,包括目标(包括循环属性)、行为、关系。n状态转换网络表示的是状态之间的转换,也采用层次化表示,涉及到的主要是状态、转换、事件和行为。1)基本思想 n在G-U-L中体现的层次关系转换到状态转换网络中也体现出层次的关系,G-U-L中的每个目标都对应一个状态转换网络。n如果一个目标下层有子目标,对子目标来说,它所对应的状态网络应该嵌套在上层目标对应的状态网络中。1)基本思想在产生的状态转换网络中,有两类事件起作用:n一类是外部由用
46、户激活的事件,如“按下鼠标”事件、“点击键盘”事件等;n另一类是内部由目标产生的内部事件,这里只定义了“目标正常结束”,表示目标正常结束时产生的事件。1)基本思想n在进行从G-U-L到状态的转换时,这些事件只是形式上的一个定义,没有具体的实现过程,如要在某一层出现的第i个外部事件用“外部事件i”来代替,而由某个目标Ti执行时产生的内部事件也仅仅用类似于“Ti正常结束事件”来表示1)基本思想n而具体的事件还需要由状态网络进行,系统实现时通过专门的事件管理器来定义和管理。n对G-U-L中的行为在转换后就成为对应的状态转换网络中的一个行为。115图6-18 事件产生过程G产生“G正常结束”事件S0F
47、图6-18 中描述了一个目标层次中产生事件的过程。1162)基本步骤 对转换后的数据,存储的是状态转换网络中表示转换的弧,如下图所示:出发状态目的状态触发事件父状态行为2)基本步骤n其中的触发事件就是触发从出发状态到目的状态转换的事件;n父状态表示的是当前弧所在状态网络的上层状态,可以是一个抽象出来的状态名2)基本步骤转换基本步骤n(1)读取存储G-U-L模型的数据文件,进行解析,定义一个数组stn用于存储状态网络中的弧。获取G-U-L模型中的最高目标,设为G0,然后调用(2)中的Translate函数,在Translate执行完毕后,stn中便存储了转换后的状态网络的数据。函数示意如下:2)
48、基本步骤main()定义一个存储弧的数组stn读取G-U-L文件GOAL G0”:允许关系处理 case “|”:交替关系处理 case “”:禁止关系处理 /对所有的子目标进行递归调用 for(int I;I(允许Enabling):设目标G下的子目标关系为(G0,G1),在这种关系中完成目标G的路径只有一条,当G0成功结束后才允许G1执行,这是一个顺序执行的过程。在转换成状态转换网络后如下图所示。131图6-22 允许”关系状态网络G1正常结束事件G0正常结束事件外部事件S1S2S0产生G正常结束事件n从状态S0在外部事件激发转换至S1,在S1状态等待“G0正常结束事件”发生后转换至S2;
49、然后在S2处等待“G1正常结束事件”转换至S0,这样表示目标G执行完毕,同时发生动作“产生G正常结束事件”,处理转换过程中存储所有的弧。这种约束关系允许同一层次下有多个目标存在,如(G0,G1,Gn)允许,这些目标都是顺序执行。n|(交替Interleaving):设目标G下的子目标关系为|(G0,G1),表示两个目标之间一种任意的组合来执行完成。在转换到状态网络后,如图6-23所示,有S0-S1-S4-S0和S0-S2-S3-S0两条途径可以完成目标G的一次执行。134图6-23“交替”关系状态网络G0正常结束事件S2G1正常结束事件G0正常结束事件 外部事件0S0S3S4S1产生G正常结束
50、事件产生G正常结束事件G01常结束事件 外部事件1n从S0状态,如果产生“外部事件0”,依次等待“G0正常结束事件”、“G1正常结束事件”并最终回到S0状态,同理,若产生“外部事件1”,则会沿着另一条路径回到S0。记录下所有状态转换的弧。在有交替关系的层次中最多只允许有两个状态存在。n(禁止Deactivation):设目标G下的子目标关系为(G0,G1),一旦G1任务被执行,G0便无效(不活动)。这个关系在转换到状态网络以后与前面不同的是,在状态S2被“G1正常结束事件”激活以后,不会再回到S0,而是转到了一个新的状态F。在有禁止关系的层次中最多只允许有两个目标状态存在。一个典型的例子是G0