基于交互的软件模型研究

时间:2022-07-29 02:32:51

基于交互的软件模型研究

摘 要: 从Peter Wegner的交互计算理论出发,将软件中的交互与计算进行分离,提出了基于交互的软件模型。对交互单元、无交互构件、交互运行支撑环境以及基于交互的软件模型进行了详细叙述,并提出软件的开发过程可以划分为交互设计和无交互构件生产两个独立的阶段,无交互构件的复用是软件复用的重要方式,基于交互的软件将形成不同于C/S,B/S的网构软件体系结构。

关键词: 交互计算; 交互模型; 交互运行支撑环境; 网构软件

中图分类号: TN711?34 文献标识码: A 文章编号: 1004?373X(2016)15?0119?04

Abstract: Proceeding from the interaction computing theory proposed by Peter Wegner, the software model based on inte?raction is proposed by separating the interaction and computation from software. The software model based on interaction, inte?raction unit, no?interaction component and interaction run?time infrastructure are described in detail. It is pointed that the software development process can be divided into two independent stages of interaction design and no?interaction component production, the multiplex of the no?interaction component is an important method of software multiplex, and the software based on interaction can form the internetware architecture different from C/S and B/S.

Keywords: interaction computing; interaction model; interaction run?time infrastructure; internetware

1 交互计算模型

长期以来,人们对软件的认识一直处于探索过程中,传统的图灵机可计算理论认为,“可计算”意味着首先能够把问题形式化,并设计一个复杂度合理的算法[1]。

1.1 图灵机与可计算

图灵机(Turing Machines)是为了研究可计算问题而构思的一个理论装置,它实现了人类对计算本质的真正认识,是计算机科学中可计算性理论和计算复杂性理论的基础。

图灵机可以定义为五元组:[TM=(S,Σ,Δ,S0,SF),]其中[S]是状态集;[S0]是初始状态;[Σ]是输入字符集;[Δ]是状态转换关系。一个图灵机有一个工作带完成输入输出,工作带的左右两端可以无限延长。图灵机工作时从工作带上读入字符,然后根据转换规则[Δ]确定输出字符、下一状态和下一动作(右移、左移),输出字符被写到工作带上,然后执行动作继续计算,直到最终状态,最后工作带上的内容就是输出。

1.2 交互计算理论

Peter Wegner在算法和图灵机理论研究的基础上提出了交互计算模型[2?3]。Peter Wegner认为:从理论上说,“软件危机”是由于图灵机并非表示处理人类思维的合理模型,面向对象将交互引入其中,但图灵机无法描述交互式计算[4],必须用交互机(IM)替换图灵机(TM)来描述。

定义1 交互性质[5]

一个计算主体具有交互性质,是指它与不受它控制的外部环境存在交互的输入和输出动作。

定义2 交互机(Interaction machine)[5]

对图灵机(TM)用具有交互性质的输入和输出动作扩展,就得到交互机(IM)。他们的不同之处在于:TM的输入带是确定的,而IM的输入流是不确定的,输入动作由不在其控制之下的外部机制动态产生。

一个交互机(IM)是用具有交互性质的输入和输出动作扩展了的图灵机(TM),TM具有确定的输入带,而IM的输入流的元素是由不在其控制之下的一个外部机制动态提供的。

2 软件中的交互行为

WEGNER Peter的理论启发人们从软件的交互行为入手认识软件和软件开发过程,改变以往以计算为核心的分析和认识方法。本文在交互计算理论的基础上对这一思想进一步做了扩展,认为现代软件的本质是交互,一个软件实际上是包含了1个或多个交互单元及相关无交互构件的集合。关注的焦点将从软件内部执行过程过渡到交互行为。

2.1 交互单元

软件具有交互性质,一个交互单元就是一个交互机(IM)的具体实现。交互单元之间也可以存在交互关系,形成网状关系结构,从而构成一个规模更大的交互单元,最后形成一个完整的软件,如图1所示(交互单元A为主交互单元, 即软件启动后第一个运行的交互单元)。

交互单元是一个具体实现的交互机,是人机交互对话的基本运行单位,它由交互界面、交互数据集、交互逻辑三部分组成。

为了保存交互单元运行的输入、输出状态信息,需要操作系统提供统一的交互运行支撑环境,交互单元经过授权可以存取交互运行支撑环境(IRE)的相应数据区。

为了与现有的软件界面相匹配,交互单元可以按传统意义上的窗体划分,也可以按HTML/XML页面划分,还可以按特定的交互设备或交互区域划分。为了将一个长的、复杂的处理过程分拆、封装成多个交互单元,还可以虚拟一个交互界面,从而建立多个交互单元。

交互单元可看作一个三元组,即:交互单元 =(交互界面[I,]交互数据集[D,]交互脚本S),见图2。

2.2 交互界面

交互界面已经不仅是用户和计算机交流信息的界面,它实际上还决定了用户使用软件完成日常工作的处理逻辑,界面设计在很大程度上决定了软件的功能模块划分。

交互界面可以是个传统意义上的窗体,也可以是一般的HTML/XML页面,还可以是一个特定的交互设备和交互区域。界面设计只解决界面上有什么,只需要定义界面的构成元素,而动作、事件的处理由交互脚本完成。界面元素应包括常见的各种Windows控件,每个界面元素都要有惟一的ID和NAME属性。界面元素可以分为数据绑定元素和非绑定元素,数据绑定元素绑定到交互数据集的数据表中。

操作简单、赏心悦目的界面是软件成功的基础,WIMP风格界面已经在Windows世界中得到了一致的认可,但目前各种软件集成开发环境的IDE界面都使用各不相同的描述格式,例如VB的FRM,Delphi的DFM和PB的PBL等,互相之间不兼容,给大型应用软件的开发带来了极大的不便。因此,软件界面描述应采用统一的标准,以XML格式为首选。典型的基于XML的界面描述语言有Mozilla基金会的XUI、微软Longhorn平台的XAML、Macromedia的MXML等,但其标准尚未统一。

2.3 交互数据集

交互数据集(Interaction Data Set)是独立于物理数据库之外、只提供给当前交互单元使用的数据集合。数据集中有1个或多个数据表,这些表可以来自同一个数据库,也可以来自不同的数据源。交互界面元素只与数据岛中的数据表进行绑定。交互数据集类似于中的DataSet,也是和物理数据库断开的,表示数据的缓存,具有类似数据库的结构属性,如表、列、关系、约束等。但交互数据集和交互脚本都在客户端存在和运行,以便实现交互脚本、交互控件的读写处理,这一点和有所不同。

交互数据集与物理数据库之间的连接由交互运行支撑环境(IRE)维护。交互脚本可以通过调用IRE方法完成交互数据集的填充、刷新、保存等操作,还可以通过调用无交互构件对交互数据集中的数据进行处理。

交互数据集设计结果应以XML方式存储。数据岛中除了保存数据表的数据格式外,还必须提供范例数据,这是交互测试的基础。交互单元初始化运行时显示的是范例数据,交互脚本填写交互数据集后交互界面显示的才是真正的运行数据。范例数据是交互模型初始运行的基础,其作用在于使得交互逻辑更直观,同时也可以对交互脚本和无交互构件进行初步演示和测试。

交互数据集中的数据表可以与交互界面的元素进行绑定,它们之间的一致性由软件交互支撑环境保证。

2.4 交互脚本

交互脚本(Interaction Script)用来描述各交互元素之间的交互逻辑,是交互单元运行的核心。交互逻辑用来处理操作员以及交互界面中各元素之间的互动。

交互脚本的功能包括:调用交互支撑环境刷新交互界面;调用数据集对象或无交互构件操作交互数据集;控制交互界面的交互元素;调用交互支撑环境将交互数据集中的数据写入数据库;读写公共交互环境变量;其他功能。

交互脚本是通过调用无交互构件完成主要数据处理过程的,在交互设计阶段,需要在交互脚本编写过程中给出无交互构件的调用接口,但不应涉及无交互构件的具体实现。和以往的高级语言如VB,VC++等不同,交互脚本语言应以VBScript/JavaScript/ActionScript为基础来设计,以大大降低交互设计的难度和进度。

2.5 无交互构件

为了把计算行为与交互行为进行分离,在这里把交互中的计算过程独立出来,组成无交互构件集,交互单元通过调用无交互构件实现数据的处理过程。

一般认为,构件是软件系统中具有一定意义的、相对独立的、可复用的软件实体。这里的无交互构件还应具备如下性质:

(1) 无交互构件是编译过、可供交互单元调用的构件程序;

(2) 无交互界面不能对交互界面进行操作,具有界面无关性;

(3) 可以部署到任意网络位置,并且支持调用时按需及时下载;

(4) 可以在授权情况下进行分拆和组合。

这样不同的交互单元可以调用同一个无交互构件;无交互构件之间也可以互相调用。

3 基于交互的软件系统

3.1 交互运行支撑环境

交互单元本身是不能独立运行的,交互界面、交互数据集仅仅是对应的XML描述,交互单元的启动、输入、输出都由交互运行支撑环境(Interaction Runtime Environment)来管理和维护。IRE的功能应包括:创建、维持上下文交互环境;提供交互单元运行所需要的公共类库;提供交互数据集访问类库;对交互脚本进行解释执行;绘制、管理交互界面;对交互脚本提供动态修改交互元素属性的方法。

IRE的特点是其通用性,它是所有符合基于交互的应用软件的运行平台,但它不是应用软件的一部分。IRE既可以集成在浏览器(如IE)中,也可以作为独立的交互应用浏览器。

3.2 基于交互的软件系统模型

通过上述分析,一个完整的软件从逻辑上可以划分为交互层、构件层两个层次,见图3。交互层描述了软件的交互行为,而构件层则完成数据的处理过程。交互运行支撑环境层属于系统程序,负责完成交互单元和构件库的调度、权限管理、版本管理、数据库驱动等功能。

这样划分的意义在于:由于不同软件的交互行为很少能够一致,因此交互层的重用几乎是不可能的,而构件层由于不涉及交互行为,因而有很好的重用性。

一个完整的软件系统,包括如下元素:软件交互配置文件;1个或多个交互单元;1个或多个无交互构件库。它们之间的关系见图3。

图3采用了类似计算机硬件的总线结构,交互运行支撑环境相当于CPU,负责交互单元之间、交互单元与无交互构件之间的交互与调用;交互单元的运行参数由交互运行支撑环境提供,交互单元的输出信息也提交给交互运行支撑环境。也就是说交互单元之间不直接发生关系,交互单元调用无交互构件时,首先提交请求给交互运行支撑环境,由后者调用无交互构件并将运行结果返回给调用的交互单元。

3.3 基于交互的网构软件

交互单元和无交互构件可以以开放、自主的方式在Internet的各个节点进行,并以协同方式与其他节点的交互单元和无交互构件等实体进行跨网络的互连、互通、协作和联盟,形成一种与当前信息Web类似的Software Web,形成一种全新的、不同于C/S,B/S的软件体系结构,即网构软件(InternetWare)。

一方面交互单元和无交互构件可以分布在网络上任意位置,另一方面交互发生在本地,交互脚本和交互数据集在本地的交互运行支撑环境中运行,这样既保留了B/S软件易于开发和维护升级的特点,又可以象C/S软件那样方便地使用本地的计算机资源。

3.4 基于交互的软件层次划分

基于交互的软件模型实质上把软件划分为交互层、构件层、系统环境层三个层次,见图4。其中系统环境层是所有软件通用的、统一的支撑软件,与Web浏览器类似,也可以称之为“软件浏览器”。

软件不再是普通意义的EXE程序,也不再是简单的多个动态网页,而是由软件交互配置文件、交互单元定义、无交互构件组成的集合。

4 基于交互的软件模型应用展望

4.1 基于交互的软件开发过程

需求分析完成后,传统的软件开发模型是直接进入到实现过程/模块/类的设计阶段的,软件的设计和生产没有明确的区分。在完成需求分析后应进入软件交互设计过程,其目标是建立一个可运行、可进行需求分析测试的软件交互模型。交互设计阶段的工作包括如下几个方面:

(1) 交互活动定义。根据UML模型和功能清单定义交互活动,有的对象或功能需要分解成多个交互单元完成,多个对象或功能也可以合并用一个交互单元完成。

(2) 交互界面设计。界面设计只解决界面上有什么,界面元素的操作与互动由交互脚本描述。交互界面设计的结果是XML格式的界面描述文件。

(3) 交互数据集设计。交互数据集是交互单元的私有数据定义。

(4) 交互脚本设计。用交互脚本表示外界环境与软件之间的交互行为,以及界面元素之间的相互关联,但不涉及具体的数据处理过程。交互脚本运行时,对于尚未实现的描述标记,IRE将以适当的方式显示该描述标记的内容,反之则不显示。这样设计是为了使交互单元在设计完成之前就可以运行。

(5) 交互模型测试。交互模型测试通过后,软件的功能、处理逻辑就确定下来,软件作为一个产品的设计阶段基本完成,除了生成由交互单元组成的交互模型外,还生成了无交互构件需求清单。无交互构件可以外购或者自行开发。

4.2 无交互构件的复用

软件的不同,最大的表现是其交互行为的不同,而其内部实现有可能存在不同程度上的相似之处。比如财务软件,虽然其外在界面、操作定义有所不同,但对于记帐凭证、帐本的数据处理则有可能是相同的。通过把交互和计算分离,可以最大程度地实现无交互构件的复用。

无交互构件不涉及交互行为,因而有更好的复用性。交互设计和构件生产是两个不同的开发阶段,可以分别由不同的专业团队完成。构件生产团队的目的是生成有效的、可以大规模复用的无交互构件库,而不再是生成可执行程序。不同的无交互构件可以采用不同的编程语言实现。

在获得授权的情况下,多个无交互构件可以合并到一个构件库中,多个构件库可以连编成一个更大的交互构件库文件,一个无交互构件库也可以分拆成多个独立的无交互构件库。

不同的交互单元,不同的基于交互模型的软件都可以调用同一个无交互构件;无交互构件之间也可以互相调用。无交互构件的复用将是软件复用的最主要形式,为实现不同软件开发团队之间交互构件的复用,实现软件生产的工业化奠定基础。

4.3 基于交互的软件模型的特性

交互是应用软件的灵魂,通过引入交互设计过程建立可运行的软件交互模型,可以在软件设计开始之前完全确定软件的数据处理逻辑,从而将开发迭代过程局限在软件设计之前。基于交互的软件模型具有如下特点:

(1) 无交互构件复用

无交互构件是不同软件开发商之间进行软件复用的最小单位。同类应用软件的主体功能有重复之处,通过无交互构件的复用可以大大缩短软件开发周期。软件交互模型就如同建筑设计中的图纸,无交互构件的开发则类似传统意义的建筑施工。

同类应用软件之间可以通过复用对方的交互单元和交互构件实现两个软件的优势互补。用户可以将A软件的一部分交互单元和B软件的一部分交互单元合并为一个可用的、个性化的软件系统。

(2) 支持并行运行与并行开发

交互单元之间、无交互构件之间的交互和调用行为可以是并发的。同时,由于软件交互模型的总线结构,它们的开发过程可以是各自独立的。

(3) 网构软件体系

交互单元、无交互构件可以在Internet上部署和运行,软件存在形态也将从现有的C/S,B/S体系发展为网构软件体系。

5 结 语

本文对基于交互的软件模型进行了较详细的论述,但也存在一些不足,对于该方法中用到的交互运行支撑环境等基础性软件还需要做大量的研究,这将是下一步努力的方向。

参考文献

[1] 汪成为.请教我国计算机发展的12个问题[R].北京:中国计算机学会第七届理事会,2000.

[2] WEGNER Peter. Why interaction is more powerful than algorithms [J]. Communications of the ACM, 1997, 40(5): 81?91.

[3] WEGNER Peter. Towards empirical computer science [EB/OL]. [1999?02?07]. http://www.cs.brown.edu/people/pw.

[4] 付岩,黄铁军,余珂,等.交互计算模型概述[J].计算机研究与发展,2002,39(6):701?706.

[5] 杨芙清.软件工程技术发展思索[J].软件学报,2005,16(1):1?6.

[6] 杨芙清,王千祥,梅宏,等.基于复用的软件生产技术[J].中国科学(E辑),2001(4):363?371.

[7] WEGNER Peter. Interactive foundations of computing [J]. Theoretical computer science, 1998, 192: 315?351.

[8] 许F鸿,郑巍.基于指数平滑模型的大型开源软件开发成本预测分析[J].湘潭大学自然科学学报,2011,33(1):123?126.

上一篇:古诗词中草意象的描绘维度 下一篇:浅谈农村小学作文教学生活化