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