


摘 要: 從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個或多個數據表,這些表可以來自同一個數據庫,也可以來自不同的數據源。交互界面元素只與數據島中的數據表進行綁定。交互數據集類似于ADO.Net中的DataSet,也是和物理數據庫斷開的,表示數據的緩存,具有類似數據庫的結構屬性,如表、列、關系、約束等。但交互數據集和交互腳本都在客戶端存在和運行,以便實現交互腳本、交互控件的讀寫處理,這一點和ADO.Net有所不同。
交互數據集與物理數據庫之間的連接由交互運行支撐環境(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 基于交互的軟件模型的特性
交互是應用軟件的靈魂,通過引入交互設計過程建立可運行的軟件交互模型,可以在軟件設計開始之前完全確定軟件的數據處理邏輯,從而將開發迭代過程局限在軟件設計之前?;诮换サ能浖P途哂腥缦绿攸c:
(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] 許旻鴻,鄭巍.基于指數平滑模型的大型開源軟件開發成本預測分析[J].湘潭大學自然科學學報,2011,33(1):123?126.