主體的概念
目前學術界和工業界的許多人對于主體的概念有不同的理解和認識,只能給出一個抽象的,高層的,普遍的解釋。即:主體是指駐留在某一環境下能夠自主,靈活地執行動作以滿足設計目標的行為實體。這一概念將主體視為是軟件工程化開發所需的一個計算抽象和高層的概念模型,并在這一模型下實現軟件的開發過程。下面對主體概念作進一步的闡述和分析。
·主體駐留在環境中并需要與環境進行交互
任何主體都不是孤立和封閉的,它駐留一定的環境中,需要與環境持續不斷地進行交互。主體所主流的環境可能是極為復雜的,包含了與主體相關的許多內容,比如實施主體動作所需要的信息,數據,資源,與主體進行交互的其他實體。這些環境組成部分并不一定全受主體的控制(如環境中的資源為多個主題共享),同時可能會受主體行為實施的影響(如主體行為實施將影響環境狀態)。主體與其主流環境之間的交互主要體現在兩個方面:
(1)主體能從環境中感知輸入。例如,環境中用戶的一次界面操作,時鐘時間的發生等。
(2)主體根據從環境中獲得的感知輸入自主地決定該有什么樣的行為以實現其設計目標。主體動作的執行將對主體所駐留的環境產生影響,導致環境狀態的變遷以及系統的進一步演化。在許多系統中,由于環境自身的動態性和不確定性,主體動作的執行只能對環境產生有限的影響。
·主體是一個行為實體
它具有一組動作并能執行這些動作,是動作的實施者。主體的能力是通過這些動作反映出來的,這種能力主要體現為:主體動作的實施將有助于實現主體的設計目標并對主體所駐留環境產生影響。而不具備行為能力的實體則不視為主體。如數據,資源,信息等。
·主體能夠自主的事實行為
主體能在沒有人或者其他主體的直接干涉和指導的情況下運行,并能根據其內部狀態和感知的環境輸入決定自身的狀態,控制自身的行為。
·主體的行為具有一定的靈活性
主要體現為反應性,社會性和自發性。
1、反應性即能夠感知環境并作出相應的行為動作
2、社會性即主體擁有所處環境中其他主體的信息并能實現互相交流。
3、自發性強調的是主體在某些情況下能主動地產生目標并根據這一目標采取行為。
·主體有其設計目標
系統中每個主體都有其特定的設計目標,主體的各種行為動作也是圍繞這一設計目標展開的。
面向主題的軟件開發
面向主體軟件開發給予一組一主體為核心的概念體系。采用一種新的方式來理解和認識應用系統和軟件系統。
·軟件開發思想
一個系統,無論是應用系統還是軟件系統,是由一個或者多個主體構成的。每個主題都是自主的行為實體。不同的主體之間存在著復雜的結構關系,并通過高層的交互來進行合作、協商和競爭等,從而實現系統的整體設計目標。
1、將構成系統的基本成分視為是一個個的主體。主體既可以表現現實世界中的行為實體,從而支持對應用系統進行分析和建模,而且也可以表示計算機世界軟件系統中的行為實體即運算單元,從而支持對軟件系統進行設計和實現。與其他軟件工程概念相比較,主題概念從更高的抽象層次、以一種更為自然和直觀的方式來理解、認識和刻畫系統中的行為實體。
2、在行為關系方面,主體之間是通過高層的交互相互作用。這種交互是在語義和知識層次上進行的,它需要參與交互的雙方或者多方主題清晰地表述交互的意圖和內容,從而可以實現他們之間復雜的合作、協商和競爭。主體之間的交互通常基于某種主體通信語言(如KQML或者FIPAACL)。主體之間的這種交互方式在一定程度上區別于過程調用、函數調用、以及對象之間的消息傳遞,它試圖以一種更為自然的方式描述系統中不同行為實體之間的行為相關性。
·軟件開發原則
1、高層抽象和自然建模。通過抽象來抽取系統最基本的要素,忽略那些不關注的成分,并使用抽象后的主體和高層交互概念來進行自然建模。
2、問題分解。當一個系統規模較大、復雜性較高,難以解決的時候,往往采用問題分解的技術手段,把一個大的系統分割成多個規模相對較小的子系統,將一個復雜的問題分割成多個相對簡單的子問題,并通過解決子系統和子問題來解決整個系統和整個問題。
3、封裝、信息隱藏、模塊化。模塊是指程序中邏輯上相對的單元。模塊化是軟件工程化開發的一個重要原則,它強調要用一個個功能單一,相對獨立的模塊單元來設計和實現軟件系統。封裝和信息隱藏是建立在模塊化之上的,通過模塊之間的相對獨立從而將各自獨立的信息封裝在模塊內部實現信息隱藏。
4、模塊交互機制。模塊間的交互作用是將軟件系統的多個模塊“粘合”在一起協調運行的一種重要機制,是模塊化軟件開發的一個重要組成部分。
(作者單位:長江大學)