摘要:該文分析和研究了基于構(gòu)件的軟件開(kāi)發(fā)的含義和優(yōu)點(diǎn),研究了基于構(gòu)件的軟件開(kāi)發(fā)的基本思路和生命周期模型,總結(jié)了基于構(gòu)件的軟件開(kāi)發(fā)的不足,引出了領(lǐng)域工程的概念,對(duì)領(lǐng)域工程的相關(guān)理論知識(shí),領(lǐng)域工程、專向領(lǐng)域工程概念,以及與應(yīng)用工程的區(qū)別進(jìn)行了研究,在此基礎(chǔ)上,提出了一種基于領(lǐng)域工程的構(gòu)件的軟件開(kāi)發(fā)過(guò)程及生命周期模型。
關(guān)鍵詞:構(gòu)件技術(shù);領(lǐng)域工程;軟件工程
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)33-9300-02
Study on Software Development Technology Based on Component of Field Engineering
HU Hui
(Suzhou Institute of Industry Technology, Suzhou 215104, China)
Abstract: The meaning and advantage of software development based on component were analyzed and studied, the basic thought and life cycle model of software development based on component was researched, the insufficiency of software development based on component was summarized, and the concept of field engineering was introduced, the related theoretic knowledge, field engineering, concept of special field engineering concept as well as the difference of applied field engineeringwas studied, respectively, on this base, a kind of software development process and life cycle mode base on the component based on field engineering was brought forward.
Key words: software component technology; field engineering; software engineering
1 傳統(tǒng)構(gòu)件開(kāi)發(fā)技術(shù)
雖然以構(gòu)件為單位獨(dú)立地進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),提高了應(yīng)用系統(tǒng)各部分開(kāi)發(fā)的獨(dú)立性,是長(zhǎng)期以來(lái)主流的復(fù)用技術(shù),但是,實(shí)際操作起來(lái),在整個(gè)過(guò)程及構(gòu)件的開(kāi)發(fā)、尋找和使用階段必須要解決一些技術(shù)上面的問(wèn)題。實(shí)際上,基于構(gòu)件的開(kāi)發(fā)并未真正實(shí)現(xiàn)其最初的“復(fù)用和靈活性”的承諾,并非很多的構(gòu)件可以真正復(fù)用,一些因素阻礙了它的發(fā)展:
1) 構(gòu)件在實(shí)際應(yīng)用中的變化性。多數(shù)構(gòu)件在應(yīng)用時(shí)都有其局限性,需要對(duì)其修改以適應(yīng)新系統(tǒng),而且,構(gòu)件的這種變化性需要在系統(tǒng)中加以實(shí)現(xiàn)才能真正實(shí)現(xiàn)軟件復(fù)用。
2) 構(gòu)件的發(fā)展還處于不完善階段,多數(shù)構(gòu)件的應(yīng)用還是僅僅局限于代碼復(fù)用或模塊復(fù)用,而越來(lái)越多的大規(guī)模軟件開(kāi)發(fā)項(xiàng)目要求更高層次的復(fù)用。構(gòu)件要達(dá)到一定的數(shù)量,才能支持有效的復(fù)用,而大量構(gòu)件的獲得需要有很高的投入和長(zhǎng)期的積累。
正是這些因素的存在,在實(shí)際應(yīng)用過(guò)程中,存在一些不太現(xiàn)實(shí)或者目前看來(lái)不夠成熟的地方。
CBD采用獨(dú)立的方式進(jìn)行開(kāi)發(fā)時(shí),這一活動(dòng)通常被稱為領(lǐng)域分析(Domain Analysis)或領(lǐng)域工程(Domain Engineering)。領(lǐng)域工程中可復(fù)用構(gòu)件開(kāi)發(fā)的目標(biāo)是針對(duì)于某一特定的應(yīng)用領(lǐng)域,對(duì)該領(lǐng)域中一組已開(kāi)發(fā)的系統(tǒng)進(jìn)行領(lǐng)域分析,確定目標(biāo)領(lǐng)域的公共特性,進(jìn)行抽象并編碼實(shí)現(xiàn),包裝為可復(fù)用構(gòu)件,并在領(lǐng)域開(kāi)發(fā)過(guò)程中,進(jìn)行構(gòu)件適當(dāng)?shù)男薷模涂梢栽陬I(lǐng)域內(nèi)實(shí)現(xiàn)真正的復(fù)用,并在實(shí)際的應(yīng)用中,加入最流行的軟件開(kāi)發(fā)思想,如設(shè)計(jì)模式,分層思想等技術(shù)對(duì)其不足之處加以改進(jìn),從而使其更好地實(shí)現(xiàn)復(fù)用的目的,這樣的軟件開(kāi)發(fā)技術(shù)叫基于領(lǐng)域工程的構(gòu)件的軟件開(kāi)發(fā)技術(shù)。
2 基于領(lǐng)域工程的開(kāi)發(fā)技術(shù)
2.1 領(lǐng)域工程的基本概念
領(lǐng)域工程中有一些基本的概念,正確、深入的理解這些概念對(duì)于理解和實(shí)施領(lǐng)域工程具有非常重要的意義。
1) 領(lǐng)域:領(lǐng)域是指一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域。
2) 領(lǐng)域模型:領(lǐng)域模型描述領(lǐng)域中系統(tǒng)之間的共同需求。領(lǐng)域模型描述了需求上的共性,因此稱領(lǐng)域模型中描述的需求為“領(lǐng)域需求”。
領(lǐng)域需求是通過(guò)考察領(lǐng)域中己有的系統(tǒng)獲得的,當(dāng)領(lǐng)域中存在大量的系統(tǒng)時(shí),需要選擇它們的一個(gè)子集作為樣本系統(tǒng),對(duì)樣本系統(tǒng)需求的考察將顯示領(lǐng)域需求的一個(gè)變化范圍。一些需求對(duì)所有被考察的系統(tǒng)是共有的,一些需求是單個(gè)系統(tǒng)所獨(dú)有的,依據(jù)己獲取的領(lǐng)域需求可以建立起領(lǐng)域模型,一般包括用例模型和特征模型。
用例建模是需求工程的一種形式,被認(rèn)為是軟件工程中良好的實(shí)踐之一,在現(xiàn)在的軟件工程中被廣泛運(yùn)用。從外部用戶的視角看,一個(gè)用例是執(zhí)行者與目標(biāo)軟件系統(tǒng)之間的一次典型的交互作用。對(duì)一個(gè)用例的完整描述包括用例名稱、用例目標(biāo)簡(jiǎn)述、執(zhí)行者、前置條件、一個(gè)主事件流、零到多個(gè)輔事件流、后置條件和附加信息。如果用例的事件流比較復(fù)雜,還可以使用活動(dòng)圖來(lái)更為精確和直觀地描述。
特征模型被作為領(lǐng)域需求的一種重要表現(xiàn)方式。它是對(duì)一個(gè)特定領(lǐng)域的軟件所具有的特征的有組織的描述,主要記錄了特征自身具有的重要屬性和特征之間存在的各種關(guān)系。在領(lǐng)域工程的各個(gè)階段領(lǐng)域分析、領(lǐng)域設(shè)計(jì)、領(lǐng)域?qū)崿F(xiàn)中可能存在的特征都應(yīng)該被一一記錄到特征模型中。特征模型由特征圖和特征描述信息組成,特征圖是由特征和特征之間的關(guān)系組成的分層結(jié)構(gòu)圖。
3) 領(lǐng)域工程:領(lǐng)域工程是為一組相似或相近的應(yīng)用工程建立基本能力和必備基礎(chǔ)的過(guò)程,它覆蓋了建立可復(fù)用軟件構(gòu)件的所有活動(dòng)。領(lǐng)域工程對(duì)領(lǐng)域中的系統(tǒng)進(jìn)行分析,識(shí)別這些應(yīng)用的共同特征和可變特征,對(duì)刻畫(huà)這些特征的對(duì)象和操作進(jìn)行選擇和抽象,形成領(lǐng)域模型,依據(jù)領(lǐng)域模型產(chǎn)生體系結(jié)構(gòu),并以此為基礎(chǔ)識(shí)別、開(kāi)發(fā)和組織可復(fù)用構(gòu)件。這樣,當(dāng)開(kāi)發(fā)同一領(lǐng)域中的新應(yīng)用時(shí),可以根據(jù)領(lǐng)域模型,確定新應(yīng)用的需求規(guī)約,根據(jù)特定領(lǐng)域的軟件體系結(jié)構(gòu)形成新應(yīng)用的設(shè)計(jì),并以此為基礎(chǔ)選擇可復(fù)用構(gòu)件并進(jìn)行組裝,從而形成新系統(tǒng)。
2.2 領(lǐng)域工程的三個(gè)基本階段
實(shí)施領(lǐng)域工程的過(guò)程包含了一些基本的行為,雖然具體的領(lǐng)域工程方法可能定義不同的概念、步驟、產(chǎn)品等,但這些基本行為大體上是一致的,這些行為分為三個(gè)階段。
1) 領(lǐng)域分析:這個(gè)階段的主要目標(biāo)是獲得領(lǐng)域模型。在這個(gè)階段中首先要進(jìn)行一些準(zhǔn)備性的工作,包括定義領(lǐng)域的邊界,明確分析的對(duì)象,識(shí)別信息源,即領(lǐng)域分析和整個(gè)領(lǐng)域工程過(guò)程中信息的來(lái)源,可能的信息源包括現(xiàn)存系統(tǒng)、技術(shù)文獻(xiàn)、問(wèn)題域和系統(tǒng)開(kāi)發(fā)的專家、用戶調(diào)查和市場(chǎng)分析、領(lǐng)域演化的歷史記錄等。在此基礎(chǔ)上,就可以分析領(lǐng)域中系統(tǒng)的需求,確定哪些需求是被領(lǐng)域中的系統(tǒng)廣泛共享的,從而建立領(lǐng)域模型。
2) 領(lǐng)域設(shè)計(jì):這個(gè)階段的目標(biāo)是獲得特定領(lǐng)域的軟件體系結(jié)構(gòu)(DSSA)。建立了領(lǐng)域模型之后可以派生出滿足這些領(lǐng)域需求的DSSA。由于領(lǐng)域模型中的領(lǐng)域需求具有一定的變化性,DSSA也要相應(yīng)地具有變化性。同時(shí)復(fù)用構(gòu)件是依據(jù)領(lǐng)域模型和DSSA來(lái)組織的,因此在這個(gè)階段通過(guò)獲得DSSA,也就同時(shí)形成了復(fù)用構(gòu)件的規(guī)約。
3) 領(lǐng)域?qū)崿F(xiàn):這個(gè)階段的主要目標(biāo)是依據(jù)DSSA開(kāi)發(fā)和組織可復(fù)用信息。這些可復(fù)用信息可能是從現(xiàn)有系統(tǒng)中提取得到的,也可能需要通過(guò)新的開(kāi)發(fā)得到。這個(gè)階段也可以看作復(fù)用構(gòu)件的實(shí)現(xiàn)階段。
需要說(shuō)明的是,領(lǐng)域工程的三個(gè)基本階段所描述的過(guò)程是一個(gè)反復(fù)的、逐漸求精的過(guò)程。在實(shí)施領(lǐng)域工程的每個(gè)階段中,都可能返回到以前的步驟,對(duì)以前得到的結(jié)果進(jìn)行修改和完善,再回到當(dāng)前步驟,在新的基礎(chǔ)上實(shí)施本階段的過(guò)程。
2.3 專向領(lǐng)域工程
將領(lǐng)域工程技術(shù)引入軟件復(fù)用中,形成了專向領(lǐng)域復(fù)用思想。專同領(lǐng)域工程的目標(biāo)就是在一個(gè)特地給你的應(yīng)用領(lǐng)域中實(shí)現(xiàn)軟件復(fù)用。由于目標(biāo)集中,因此可復(fù)用構(gòu)件的制作不需要在很廣的范圍內(nèi)考慮其通用性,構(gòu)件庫(kù)也不需要包括與本領(lǐng)域無(wú)關(guān)的構(gòu)件。因此,構(gòu)件的開(kāi)發(fā)和構(gòu)件的存儲(chǔ)與管理都比較容易,構(gòu)件的使用頻率與檢索效率都會(huì)明顯的提高。另外,在專向領(lǐng)域中,由于同一領(lǐng)域的應(yīng)用系統(tǒng)之間有更多的共性構(gòu)件的粒度可以增大。
2.4 領(lǐng)域工程和應(yīng)用工程的關(guān)系
領(lǐng)域工程和應(yīng)用工程又是互相聯(lián)系的。一方面,通過(guò)應(yīng)用工程得到的現(xiàn)有系統(tǒng)(包括需求規(guī)約、設(shè)計(jì)、實(shí)現(xiàn)等)是領(lǐng)域工程的主要信息來(lái)源,領(lǐng)域工程的各個(gè)階段主要是對(duì)應(yīng)用工程中相應(yīng)階段產(chǎn)品的抽象,領(lǐng)域工程又對(duì)本領(lǐng)域中新系統(tǒng)的開(kāi)發(fā)提供了支持。另一方面,領(lǐng)域工程和應(yīng)用工程需要解決一些相似的問(wèn)題,例如怎樣從各種信息源中獲取用戶的需求,如何表示需求規(guī)約,如何進(jìn)行設(shè)計(jì),如何表示設(shè)計(jì)模型,如何進(jìn)行構(gòu)件開(kāi)發(fā),如何在需求規(guī)約、設(shè)計(jì)和實(shí)現(xiàn)間保持邏輯聯(lián)系,如何對(duì)需求規(guī)約、設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行演化等。因此,領(lǐng)域工程的步驟,行為、產(chǎn)品等很多方面都可以和應(yīng)用工程進(jìn)行類比,在應(yīng)用到構(gòu)件的軟件開(kāi)發(fā)過(guò)程中時(shí)可以使需求更全面,獲取得到的可復(fù)用構(gòu)件更具有全面性,有利于提高軟件開(kāi)發(fā)的效率,更有利于軟件的復(fù)用。
3 基于領(lǐng)域工程的構(gòu)件的軟件開(kāi)發(fā)
3.1 基于領(lǐng)域工程的軟件開(kāi)發(fā)過(guò)程模型
基于領(lǐng)域工程的軟件開(kāi)發(fā)過(guò)程可以概括為:
1) 領(lǐng)域分析:領(lǐng)域分析階段的主要任務(wù)是通過(guò)對(duì)領(lǐng)域知識(shí)的抽象,區(qū)分出共性和可變性,生成概念級(jí)BCMS。領(lǐng)域分析的最終結(jié)果是領(lǐng)域知識(shí)的形式化表示,用基于UML的領(lǐng)域模型來(lái)表示。包括領(lǐng)域框架和領(lǐng)域構(gòu)件的設(shè)計(jì)。領(lǐng)域模型中的共性在領(lǐng)域框架中映射為穩(wěn)定不變的凝固點(diǎn),領(lǐng)域模型中的可變性在領(lǐng)域框架中映射為易變的熱點(diǎn)。在具體構(gòu)件的設(shè)計(jì)中可以遵循COM/DCOM/COM+/OLE/ACTIVEX構(gòu)件模型標(biāo)準(zhǔn)。
2) 領(lǐng)域?qū)崿F(xiàn):領(lǐng)域?qū)崿F(xiàn)階段產(chǎn)生物理模型。物理模型包括領(lǐng)域構(gòu)件和熱點(diǎn)子系統(tǒng)的具體設(shè)計(jì)、編碼和測(cè)試及領(lǐng)域框架的動(dòng)態(tài)生成,加入最先進(jìn)的軟件開(kāi)發(fā)思想,完成代碼級(jí)的開(kāi)發(fā)。
3)應(yīng)用實(shí)現(xiàn):領(lǐng)域工程向應(yīng)用工程的過(guò)渡,體現(xiàn)構(gòu)件化開(kāi)發(fā)的行業(yè)分工思想,把系統(tǒng)開(kāi)發(fā)者分為構(gòu)件生產(chǎn)者和構(gòu)件裝配者。應(yīng)用工程將參考領(lǐng)域框架進(jìn)行系統(tǒng)設(shè)計(jì),生成具體應(yīng)用的體系結(jié)構(gòu)(框架);然后根據(jù)應(yīng)用框架要求從領(lǐng)域構(gòu)件庫(kù)挑選構(gòu)件進(jìn)行組裝,實(shí)現(xiàn)構(gòu)件在框架上的集成(靜態(tài)或動(dòng)態(tài)的),或根據(jù)熱點(diǎn)子系統(tǒng)對(duì)熱點(diǎn)進(jìn)行特化,實(shí)現(xiàn)靜態(tài)的集成領(lǐng)域設(shè)計(jì)階段產(chǎn)生邏輯模,它是領(lǐng)域模型的具體設(shè)計(jì)。
圖1是根據(jù)實(shí)踐結(jié)合最新的軟件思想得來(lái)的過(guò)程模型,領(lǐng)域工程創(chuàng)建應(yīng)用領(lǐng)域的模型,該模型被用作在軟件工程流中分析用戶需求的基礎(chǔ)。類屬的軟件體系結(jié)構(gòu)為應(yīng)用的設(shè)計(jì)提供了輸入。最后,在可復(fù)用構(gòu)件己經(jīng)被購(gòu)買(mǎi)、從現(xiàn)存庫(kù)中選出或構(gòu)造好后作為領(lǐng)域工程的一部分,它們可以被從事基于構(gòu)件開(kāi)發(fā)的軟件工程師使用。
3.2 基于領(lǐng)域工程的構(gòu)件軟件生命周期
在軟件開(kāi)發(fā)的發(fā)展歷史中,軟件開(kāi)發(fā)經(jīng)歷了無(wú)模型、瀑布型、快速原型、漸增模型、螺旋型、軟件復(fù)用型、基于CASE模型等階段。軟件復(fù)用結(jié)合了技術(shù)、方法和過(guò)程。
圖2反映了面向領(lǐng)域工程的軟件生命周期。其中構(gòu)件庫(kù)是核心,它是構(gòu)件及其關(guān)系組成,構(gòu)造構(gòu)件庫(kù)必須注意兩方面的問(wèn)題:一是可復(fù)用構(gòu)件應(yīng)具有有用性、可用性、質(zhì)量、適用性、可移植性;二是領(lǐng)域工程。軟件構(gòu)件是對(duì)系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)的刻畫(huà),包括全局組織與控制結(jié)構(gòu),構(gòu)件間通訊、同步和數(shù)據(jù)訪問(wèn)的協(xié)議,功能分配,物理布局,設(shè)計(jì)元素集成,伸縮性和性能,設(shè)計(jì)選擇等以及指導(dǎo)這些集成的模式。
4 總結(jié)與展望
隨著軟件需求的激增,軟件規(guī)模和復(fù)雜度的不斷增大,傳統(tǒng)的軟件開(kāi)發(fā)模式面臨著前所未有的挑戰(zhàn),人們開(kāi)始探索新的軟件開(kāi)發(fā)技術(shù)來(lái)適應(yīng)軟件發(fā)展的要求,軟件復(fù)用則是解決這一軟件危機(jī)行之有效的方法,軟件構(gòu)件技術(shù)則在軟件復(fù)用中扮演著重要的角色,是當(dāng)前軟件復(fù)用研究的焦點(diǎn)。構(gòu)件技術(shù)的基本實(shí)現(xiàn)在于創(chuàng)建和利用復(fù)用的軟件構(gòu)件來(lái)解決應(yīng)用軟件的開(kāi)發(fā)問(wèn)題。它與面向?qū)ο缶幊陶Z(yǔ)言不同,只規(guī)定構(gòu)件的外在形式,不關(guān)心其實(shí)現(xiàn)方法。只要遵循構(gòu)件技術(shù)規(guī)范,各個(gè)軟件開(kāi)發(fā)商就可以用自己方便的語(yǔ)言去實(shí)現(xiàn)構(gòu)件,應(yīng)用軟件可以通過(guò)構(gòu)件間相互提出請(qǐng)求和返回服務(wù)結(jié)果的協(xié)同工作機(jī)制來(lái)達(dá)到系統(tǒng)目標(biāo)。
參考文獻(xiàn):
[1] 楊芙清,梅宏,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)[J].電子學(xué)報(bào),1999,27(2):41-42.
[2] 薛春光,吳紹東.軟件復(fù)用技術(shù)及其展望[J].天津理工學(xué)院學(xué)報(bào),2002,18(1):68-71.
[3] 梅宏.軟件復(fù)用技術(shù)研究與應(yīng)用[J].科技與經(jīng)濟(jì),2002(1):12-13.
[4] 張世混,張文娟,常欣,等.基于軟件體系結(jié)構(gòu)的可復(fù)用構(gòu)件制作和組裝[J].軟件學(xué)報(bào),2001(9):12-14.
[5] 朱建江,基于軟件構(gòu)件的軟件復(fù)用的研究[D].南京航空航天大學(xué)博士論文,2002.
[6] Brown A W,大規(guī)模基于構(gòu)件的軟件開(kāi)發(fā)[M].趙文耘,譯.北京:機(jī)械工業(yè)出版社,2003.
[7] 張偉,梅宏.一種面向特征的領(lǐng)域模型及其建模過(guò)程[J].軟件學(xué)報(bào),2003(8):1-3.