毕业设计 基于面向方面编程技术的上下文敏感帮助.docx

上传人:b****7 文档编号:23504412 上传时间:2023-05-17 格式:DOCX 页数:54 大小:800.64KB
下载 相关 举报
毕业设计 基于面向方面编程技术的上下文敏感帮助.docx_第1页
第1页 / 共54页
毕业设计 基于面向方面编程技术的上下文敏感帮助.docx_第2页
第2页 / 共54页
毕业设计 基于面向方面编程技术的上下文敏感帮助.docx_第3页
第3页 / 共54页
毕业设计 基于面向方面编程技术的上下文敏感帮助.docx_第4页
第4页 / 共54页
毕业设计 基于面向方面编程技术的上下文敏感帮助.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

毕业设计 基于面向方面编程技术的上下文敏感帮助.docx

《毕业设计 基于面向方面编程技术的上下文敏感帮助.docx》由会员分享,可在线阅读,更多相关《毕业设计 基于面向方面编程技术的上下文敏感帮助.docx(54页珍藏版)》请在冰豆网上搜索。

毕业设计 基于面向方面编程技术的上下文敏感帮助.docx

毕业设计基于面向方面编程技术的上下文敏感帮助

 

基于面向方面编程技术的上下文敏感帮助

中文摘要

随着计算机的不断发展,软件技术不断创新,人类设计的软件功能越来越强大,由此产生的软件使用问题也越来越复杂,用户希望软件使用简易化的同时,也希望软件提供的帮助更加智能化。

即要求帮助程序能自动感应程序运行的上下文,并根据当前上下文提供合适的帮助。

本文介绍了现有上下文敏感帮助的实现方法,指出它们的缺点,并提出了一个基于面向方面编程技术上下文管理框架,使用该框架可降低上下文敏感帮助实现的复杂性,使其具有更大的灵活性,并适用于其他基于程序上下文的应用软件。

论文详细介绍了该框架的三个组成部分:

提供上下文的原程序、上下文缓冲池管理器和上下文应用程序。

文章还探讨了如何采用面向方面编程技术向原程序加入感应其运行时上下文的程序代码的方法,论述了如何对上下文进行收集、分析、管理、传送等技术,并研究了如何采用观察者设计模式建立原程序与上下文应用程序之间的依赖联系。

本文还分析了原程序与上下文缓冲池管理器之间、上下文缓冲池管理器与上下文应用程序之间的通信模式。

另外,我们还参照CORBA,将框架中传递的上下文信息用上下文对象进行封装,建立了上下文之间的层次结构。

文章还通过在一个开源项目FreeSudoku的基础上进行上下文敏感帮助设计,验证了基于面向方面编程技术的上下文敏感帮助是一个提高软件帮助智能化的可行灵活的实现技术,并说明了我们提出的框架的可行性和易扩展性。

关键词:

上下文敏感,帮助系统,面向方面编程,上下文结构,通信模式

 

ABSTRACT

Alongwiththedevelopmentofthecomputerandinnovationofthesoftwaretechnology,thefunctionsofthesoftwareisbecomingmoreandmorepowerfulresultintheproblemofusingsoftwareisbecomingmorecomplex.Consequently,usersnotonlyhopetousethesoftwareeasily,butalsohopetogetamoreintelligenthelpprovidedbythesoftware.Thispaperdescribestherealizationofthecurrentlycontext-sensitivehelpandanalysestheirshortcomings.AfterwardwepresentacontextmanagementframeworkbasedonAOP.Thisframeworkcanreducethecomplexityoftheimplement,getgreaterflexibilityandeasilybeappliedtootherapplicationbasedonprogramcontext.Threecomponentsoftheframeworkareintroducedparticularlylater:

originalapplication,contextpoolmanagerandcontext-sensitiveapplication.Next,weexplainthetechnologyaboutweavingcodetoawareruntimecontextwithAOP.Wedescribethemethodofthecontextcollection,analysis,management,andtransfer.WeusetheObserverdesignpatterntoestablishtherelationshipbetweenoriginalapplicationandcontext-sensitiveapplication.Thepapergoesontoanalyzethecommunicationmodelamongoriginalapplication,contextpoolmanagerandcontext-sensitiveapplication.Inaddition,werefertoCORBAtoencapsulatethecontextinformationinacontextobjectandestablishthehierarchicalstructureofcontext.Atlast,weimplementthecontextmanagementframeworkwithinanopensourceapplication:

FreeSudoku.Asaconclusion,thecontext-sensitivehelpbasedonAOPisafeasibleandflexibletechnologytoimprovetheintelligentofthesoftwarehelpsystemandtheframeworkisfeasibleandexpandable..

KeyWords:

context-sensitive,helpsystem,AOP,contextstructure,communicationmodel

 

 

1.引言

1.1.研究背景与意义

1.1.1.上下文敏感的研究

正随着计算机技术的发展,硬件性能不断提高,手提电脑、掌上电脑、手机、各类嵌入式系统等纷纷进入了我们的日常生活,在其上运行的软件越来越多,各种浏览软件、播放软件、游戏软件为我们的生活带来了无限的精彩与乐趣;各类编程软件,开发工具为软件设计师的软件开发工作提供了巨大的帮助;形形色色的管理工具、编辑工具给人们的日常工作带来了工作方式的革命;大量专用的嵌入式系统,为我们的生活提供了更大的方便,创造出更多的可能……

一些软件为提高其应用的专业性,在同一领域处理更多业务、提供更多服务,于是在软件中加入了大量功能,于是,越来越多集成软件出现在我们面前,软件规模越来越大,正向专业化逐步发展。

在软件功能多元化的同时,用户的操作选择越来越多,操作也越来越复杂,这同时也对用户的能力提出了更高的要求。

一个功能强大的软件可能附带一本厚厚的使用手册,用户在享受软件提供的强大服务之前必须学习大量关于该软件的知识,如各类功能所需的操作、专业术语、配置环境信息……。

随着人性化要求的不断提高,软件开发时应考虑更多人为与环境因素,因此我们希望软件能具备智能化,能通过简单的操作实现强大的功能。

对于单个软件而言,我们希望软件能根据用户操作的行为判断用户的意图,自动执行相关代码并引导用户正确使用软件。

对多个软件而言,由于不同类型软件间可能没有统一的接口或没有一个公认的通信机制,很多时候需要用户进行手工配置以达到不同软件间相互配合工作的目的,因此我们希望软件间合作也具有自适应性。

在要求软件专业化的同时,我们也要求软件具有通用性。

因为软件应用平台越来越多,不可能针对每种平台为同一应用设计专用软件,正如JAVA所提出的:

一次编译,多处执行。

我们希望软件也具有适应各种应用环境的能力,这也促进了普适计算研究的发展。

普适计算的目标是使计算机在整个物理环境中都是可获得的,而用户又察觉不到计算机的存在。

其两个特点为:

“随时随地”和“透明”,“其中“随时随地”指人们无论在何时何地都可以获得数字化服务,而不需要特意走到一个专门的计算机面前;而“透明”是指人们获得这种服务不需要花过多的注意力,相比“随时随地”,“透明”性这一特性是普适计算一个更本质的要求,实现“透明”性,要求计算和服务的访问方式是十分自然的,甚至用户本身注意不到的、蕴涵的方式进行”[1]。

这要求计算机设备能够更好地理解环境状态和用户的需求,对不同的环境状态和用户需求,提供不同的多元化服务,并且通过蕴涵的状态信息提高计算机和服务的效率。

所以,充分感应环境中的上下文是实现普适计算系统“透明”性这一本质目标的重要途径。

上下文敏感技术因此成为实现软件智能化和软件通用化目标的关键性技术。

上下文敏感技术主要是对动态上下文信息进行捕获,特别在普适计算中,上下文将随任务而变化,而且由于工作环境是具体的,软件执行的背景情况不但复杂而且是动态变化的,使上下文的动态问题更加突出。

利用动态的上下文信息来引导软件的提供各类人性化服务,即软件具有上下文敏感的特性,是未来软件发展的一个方向。

1.1.2.上下文敏感帮助系统的研究

由于软件功能的多样性和使用方法的复杂性,软件不可避免需要具备一个帮助系统。

帮助系统主要为用户提供各类帮助,是人机交互的一种重要方式。

而上下文敏感在人机交互中尤其重要,软件需根据用户使用的环境,使用习惯和当前操作方式,提供有效的帮助信息。

这所有的信息都是软件运行的上下文。

具有上下文敏感的帮助系统(Context-SensitiveHelp)可以减少用户输入计算机的上下文信息,增强帮助的对应性,使帮助更加透明化;通过感应上下文判断用户意图,自动提供帮助,使用户随时随地得到准确的帮助,也是增强软件易用性的一种表现。

那什么样的帮助系统才是一个优秀的帮助系统呢?

这主要有以下三个方面要求:

●无处不在的帮助

用户对帮助信息的需求可谓是多方位的:

用户拿到一个新软件的时候,会先翻看帮助系统的新特点部分;在日常使用中,他可能需要任何一个对话框中各选项的帮助信息;如果用户界面上有比较独特的工具或状态栏中出现不常见的显示,他会调用“这是什么”的帮助功能;用户在对某种功能有疑问时,帮助系统能提供相关的帮助主题。

对于用户的误操作,除了给予明确的提示外,还应提供相关的帮助信息。

当用户不能明确描述遇到的问题时,帮助搜索和疑难解答将为他提供必要的信息。

当以上的一切都无能为力的时候,应当提示用户拨打技术支持电话或访问技术支持网站。

如果一个软件的帮助系统在各个方面都从用户角度进行设计,那么使用这样的软件是一件多么轻松而愉快的事情。

●细粒度的帮助

帮助系统能够根据多种信息搜索相关的帮助。

用户手册与帮助系统都能够帮助用户使用软件,但优秀的搜索功能则使软件帮助系统的使用率大大高于用户手册。

帮助索引能否为用户提供真正的帮助,与帮助的粒度有很大关系。

以办公软件中段落格式功能的帮助页为例,索引词最少可以有一个,即段落;也可以有多个,如段落、行距、缩进、排版等;好的帮助系统将设置多层索引,如段落-行距-缩进-排版等。

索引词的丰富和层次化,将大大缩小帮助的粒度,使用户在需要的时候能真正得到帮助。

●准确有效的帮助

功能表述上不出现错误只是对帮助系统最基本的要求,帮助系统还应当做到排版统一、格式美观;表达风格一致;没有病句、不使用过长的句子;帮助形式多样,这些都是优秀的帮助系统应当做到的。

与其他用户文档不同,帮助系统还涉及到与软件的连接问题,保证帮助系统与软件运行上下文的挂接正确性和帮助文件中各页面间交叉引用的正确性,也是帮助系统制作的一个重要任务,需要编程人员和文档开发人员的协同工作。

因此,帮助文件的编写制作工作是极其繁琐的,但却是软件开发不可缺少的部分,不同的软件可以按照各自的风格选择帮助文件的内容、格式和风格。

具备优秀的帮助系统,可以提高用户对软件的信赖程度。

上下文敏感帮助系统由于考虑了用户上下文和程序本身的上下文信息,因此可以从多个角度判断用户需要帮助的情况,增大帮助的范围,当软件帮助系统能根据上下文判断用户需要帮助时,自动弹出帮助,实现软件向用户主动交流,并共同配合完成工作。

上下文信息可以是各种类型的,可以是用户的环境信息,如系统语言、物理位置、当前时间、网络状况,也可以是程序运行时的各类定位信息,如所在窗口、组件,更可以是用户操作的各类信息,如同一个错误操作出现的次数、习惯操作的步骤等。

上下文信息的丰富多样大大增强软件帮助系统搜索相关帮助的能力。

上下文敏感帮助系统是对原有帮助系统的一种改进,因此可以利用充分当前大量的帮助系统制作工具,还可以根据上下文信息,实现多类帮助形式之间的自动选择,集合各类帮助文件的优点,共同服务用户。

综上所述,加入上下文敏感的帮助系统会使软件帮助更加灵活,更加人性化,是一个优秀的帮助系统。

1.2.当前上下文敏感研究遇到的问题

当前,业界还还在努力研究希望给出上下文的精确定义,而实践方面,开发人员也面临巨大的挑战,当前主要面临以下三类棘手问题,这些问题阻碍了上下文应用的建立和使用:

●感知上下文所固有的困难

如何获取、使用和存储上下文,如何建立上下文敏感的应用系统,在理论研究方面还存在很多争议,没有一个统一的框架;在实践方面,上下文的获取通过许多非传统设备,随着技术的不断进步,室外的GPS可获取位置信息,通过WirelessSensorNetwork技术可获取室内定位信息,通过各类图像捕获设备、探测设备,我们获得更多可用的上下文信息,上下文信息已甚少来自鼠标键盘。

另一方面,上下文具有动态特性,如何实时发现上下文、应用上下文,也是一个不可回避的问题。

面对上下文种类的多样性、数据格式和精度的不同,如何对上下文进行管理、抽象和分析集成,是实现上下文敏感系统的面临的第一道难题。

尽管存在以上困难,研究者们仍通过各种方法对上下文进行了各式应用,但是这些系统仅专注于某个特定领域或特定的过程,他们的成果很难被其他系统所重用。

●上下文敏感系统向通用化发展

传统的上下文敏感系统一般都是专有系统,这些系统的应用程序通常直接与硬件设备交互,这虽然在一定程度上有利于效率的提高,但同时也限制了系统的发展和对环境系统的应变能力,而上下文敏感系统却正是为面向动态多变的环境而设计的。

相关的研究工作者开始意识到这个问题,因此,提高上下文敏感系统的通用性研究正渐渐得到重视。

●上下文敏感应用规模日益扩大

鉴于上下文的利用对系统的帮助显而易见,基于上下文的应用的规模也越来越大,大规模的上下文敏感应用不仅使其固有的困难更加难以解决,同时也面临其他任何大规模软件系统所遇到的问题,如开发困难、维护困难等。

传统的上下文敏感应用的规模通常较小,它一般都通过定制以便能在专用系统上运行。

虽然这些定制为软件高效运行提供了所需的条件,但它却创建了一个不灵活的结构,存在不容易修改、升级和与其他产品集成等缺点。

唯一的解决办法是使用开放系统技术解决大规模上下文敏感系统所面临的问题。

总的来说,当前上下文敏感的应用需建立一个通用的上下文敏感应用支持环境,创造出一个研究和开发平台,在它之上可以更全面的解决上下文敏感的相关问题,更迅速的构建出上下文敏感应用。

因此,建立上下文敏感应用框架具有基础性的意义,会直接影响到上下文敏感研究的开展和应用的推广。

1.3.当前实现上下文敏感帮助系统的方法

帮助系统(HelpSystem),是指对应用程序的特性说明,以及应用范围的简单介绍文件,类似于一个整理过的大型FAQ集。

由于用户需要方便快捷地使用程序,帮助系统应运而生。

用户按下帮助按钮或者帮助快捷键,如Windows系统中的F1键,或达到软件预设的帮助条件,便会启动帮助系统,一般的帮助系统是通过目录和索引实现的。

帮助系统第一步会显示帮助的根目录信息的窗口,通过不断提出问题,要求用户输入相关上下文信息,逐层细化问题,确定用户当前上下文,并利搜索相关的帮助主题。

该方法可能遇到以下问题:

首先,对于一个对专业术语不太了解的用户,将无法准确描述他当前的状况甚至给出错误的信息,从而导致无法得到有效的帮助;其次,程序内部运行状态的信息,根本不可能从用户那里获得,例如用户进入同一的错误操作状态次数、某些内部状态信息,这些数据可能对搜索帮助起到很大的作用,但这种方法不可能实现这些信息的利用;再次,这种通过人机对话的方式获得上下文,也会给用户带来额外的工作负担,重复输入大量仅用于帮助的信息,会降低用户对软件的认同度。

因此,仅通过人机对话方式获得上下文的帮助系统,不具备上下文敏感的特性。

上下文敏感帮助系统应能减少用户的干预,能自动、准确地获得其所需的各类相关信息。

许多软件意识到帮助系统应考虑用户当前的状态信息,于是便出现了许多基于内容的敏感帮助。

内容敏感的帮助是具有用户友好特点的提供帮助方式。

当用户单击一个特定的图标或者字段时就会有一个弹出窗口解释功能或者这个字段下一步要做的事情。

内容敏感的帮助可以分为以下三类:

●窗口级帮助:

当应用程序的窗口拥有焦点时,用户按下帮助键以启动帮助系统的特定主题,它通常是一个介绍主题。

●字段级帮助:

当应用程序的GUI上的一个特定组件--如文本字段或者按钮--拥有焦点时,用户按下帮助键或者单击一个按钮以启动帮助系统的描述当前组件的特定主题。

●屏幕级帮助:

用户单击一个按钮以调出具有描述应用程序当前屏幕的特定主题的帮助系统。

但这些内容敏感帮助都仅仅是基于组件的,只是考虑了位置信息,而且要求软件的视图部分有固定的框架结构,如利用JavaHelp编写帮助,必须要求JAVA程序使用Swing框架。

在编写帮助文档的时候,现有方法是在软件编写时为每个控件加入一个帮助的ID,并为每个ID编写特定的帮助文件,当用户启动帮助服务,程序将获取当前用户操作的控件的ID,通过该ID寻找其对应的帮助文件。

这种帮助需要将帮助ID在软件编写阶段硬编码进程序,而且只能定位用户操作的控件信息,无法获取程序运行时的其他信息,如不能在用户第二次出现同样错误操作的时候提供更加详细的帮助。

因此,用户希望软件能考虑更多的上下文信息,如根据其操作的具体过程,其使用习惯提供更加准确的帮助。

还有很多软件在制作帮助系统时考虑其他的上下文信息,如在word程序中,按F1会调出帮助助手,助手会根据它探测到的上下文推测用户最可能需要了解的问题并在屏幕上列出来。

为了感应更多的上下文信息用于帮助主题搜索,部分软件在软件设计中加入一些专门用于记录用户操作的变量和获取上下文信息的程序片断,使更多的上下文信息可以被检测和使用。

如获取操作系统语言、记录用户操作过程……只要帮助系统需要,软件设计时都可以加入代码实现上下文的提取。

这种设计虽能达到上下文敏感帮助的效果,却增加的软件设计复杂度,增大了软件维护的难度,主要是因为:

第一,上下文信息是从程序的各不相连的部分获得的,获取上下文的代码将分散于整个程序的各个角落,造成代码纠结,增大了模块间的耦合度;第二,由于上下文相关的代码是硬编码进程序的,当上下文敏感帮助需要考虑更多的上下文信息或修改原来的上下文敏感代码时,软件需要重新进行整体设计修改,这对软件维护更新提出了更高的要求;第三,这种方法没有统一的设计模式,只能根据具体软件具体设计,技术不具备通用性;第四,软件的运行是相互影响的,上下文敏感帮助可能需要利用其他软件的上下文信息,而这种设计方法无法做到上下文信息共享,因此不具备可扩展性。

现有的各类上下文敏感帮助系统的实现方法,都需要软件开发者和帮助系统开发者从软件设计初期便开始紧密配合工作。

两方面开发者必须先协商确定将用到那些上下文信息,但在软件开发过程中,需求是不断进化的,上下文在软件设计初期可能未完全考虑清楚,或在帮助的粒度可通过加入新的上下文而变小时,由于代码纠结,后期加入新的上下文代码将增大软件开发的难度,大大削弱了软件的健壮性。

综上所述,现有上下文敏感帮助的实现方法仍存在不少缺点,仅能针对特定软件通过硬编码的方式设计,提供有限度的上下文敏感帮助,设计复杂,且容易导致代码纠结,增大了软件维护的难度,也不利于软件日后的升级更新。

因此,更好的上下文敏感帮助应能自动获取各类上下文信息,减少用户干预,自动提供有效的帮助。

另外,软件开发与上下文敏感帮助应从物理上分离,分散关注点,抛弃硬编码的方式,在软件开发完成后根据需要通过简单灵活的方式加入这些上下文敏感帮助代码,从而降低程序模块间的耦合度。

这种设计方法不单可用于新设计的软件,还可以用于对原有软件的改进。

更进一步,上下文应在程序间共享,增强帮助系统的自适应性。

因此,我们需要一个统一的上下文获取-管理-使用框架,使上下文信息使用更加灵活,降低软件开发维护难度。

1.4.利用面向方面技术实现上下文敏感帮助

随着软件编程技术的发展,面向方面编程技术日趋成熟,在面向对象编程技术的基础上,进一步分散关注点,通过后期织入的方式,使各关注点彼此配合工作。

这种技术也为我们实现上下文敏感帮助提供了一个更简单更合理的实现方法。

将探测上下文信息的代码写入方面,利用面向方面技术把方面织入软件源程序中,这些织入的代码我们称为上下文传感器(sensor),sensor将上下文信息传递给一个公共的中间件处理,在中间件中,程序可以共享到其他软件的上下文,经分析处理后的上下文信息传给上下文敏感帮助程序,进行上下文帮助的搜索显示。

该处理方式从物理上分离了程序代码,上下文信息获取使用更加灵活,降低了程序的耦合度,简化了程序的功能实现。

基于面向方面编程技术的上下文敏感帮助的实现的框架、技术还适合于其他基于上下文信息的应用,为基于上下文的软件开发提供了一个可选的的框架。

 

2.相关介绍

2.1.上下文的相关概念

2.1.1.上下文

面对上下文的各类应用,我们需要搞清的第一个概念就是上下文(Context)。

根据不同的使用环境和应用目的,人们提出了不同的定义。

SchilitBillN.:

附近的人、物、位置、标识。

[2]

RyanNick:

用户的位置、环境、身份、时间。

[3]

BrownPeterJ:

用户周围人的位置、标识、时间、季节、温度等。

[4]

Franklin和Flaschbart:

上下文是应用程序环境的状态。

[5]

……

现在比较认可的是A.K.DeyandG.D.Abowd在上下文研究中给出的定义:

上下文是一种信息输入,该信息可以是任一种描述与用户及其应用相关的环境实体的信息,包括任务、地点、时间、物体等。

[6]

以上众多的描述,无非都是以“列举上下文信息”和“描述上下文信息”两种方法来对上下文进行定义。

列举上下文有利于特定应用的使用和建模,并且列举越具体,越有利于特定应用程序的实现;但对于不同领域的应用,则缺乏通用的指导意义,且难以被应用,因为在考虑新的上下文信息时,这些定义无法帮助我们界定是否属于上下文信息。

描述上下文的定义方法比列举定义更有通用性,但这种定义对分析和确定上下文元素缺乏指导意义。

如果对上下文定义过于概括,将不能给具体应用的实现提供更多的帮助。

因此一个较为明确的上下文定义能帮助人们了解上下文的特点,且有利于工程人员的抽象和使用。

但想准确界定智能空间中上下文的内涵和外延还是比较困难的事情,目前的定义都不具备好的操作性。

比如A.K.DeyandG.D.Abowd给出的定义实际上是把上下文的概念的模糊性转移到了“场景”上。

由于无法给出精确定义,因此我们研究通过从多种角度对目前已实现的上下文敏感应用中使用的各种上下文和其他一些研究者公认的比较重要的上下文进行总结,来得出我们必须处理的上下文信息。

2.1.2.程序上下文

在计算机软件开发中,我们主要关心的是程序上下文(ProgramContext)。

程序上下文是指任何能够用于描述应用程序状态的信息。

那些被探测获取上下文的应用程序我们称为原程序(OriginalApplication),程序上下文可以分为内部和外部上下文,内部程序上下文包括原程序中组件的状态、原程序发生的各种事件、

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1