簡述
作為軟體復用的核心技術之一。領域工程的主要目的是實現對特定領域中可復用成分的分析、生產和管理。領域工程的萌芽可以追溯到Parnas在1976年提出的“程式家族”(ProgramFamily)的概念。其基本思想是把一組具有顯著共性的程式作為一個整體(或家族)並對其共性進行分析;其動機則是為了簡化一組相似程式的開發和維護問題。後來,Neighbors在其博士論文中明確提出了“領域分析”的概念,用來指代“識別特定問題域中一組相似系統所包含的對象和操作的活動”。他還對領域分析和(軟體)系統分析這兩種活動進行了對比,提出了“領域分析員”的概念,並分析了在軟體復用活動中領域分析的必要性和可行性。
實施原則
對領域工程的研究和實施主要基於以下兩個基本原則:
1.可復用信息的領域特定性
可復用性不是信息的一種孤立的屬性,它依賴於特定的問題和特定問題的解決方法,即我們說某信息具有可復用性,是指當使用特定的方法解決特定的問題時,它是可復用的。基於這一基本認識,在識別、獲取和表示可復用信息時,它採用面向領域的策略。
2.問題領域的內聚性和穩定性
人們長期以來觀察的結果表明,在現實世界特定的領域中,問題的解決辦法具有充分的內聚性和穩定性,這是獲得和表示這些知識的前提和基礎。基於此,使得人們可以通過一組有限的、相對較少的可復用信息來把握解決大量問題的知識。領域的穩定性,使得獲取和表示這些信息所付出的代價,可以通過在一段較長的時間內多次復用它們來得到補償。
從領域工程和套用工程的關係來看,領域工程的實施還需要遵循以下原則:
(1)來源於套用工程,服務於套用工程。
(2)將隱式的知識顯式地表達出來。
(3)建立和維護可追蹤性。
(4)過程的疊代性和逐漸精化性。
工程階段
領域工程過程的5個階段分別如l下。
(1)定義領域範圍:本階段的重點是確定什麼在感興趣的領域中以及本過程到何時結束。這個階段的一個主要輸出是領域中的套用需要滿足的一系列用戶的需求。
(2)定義領域特定的元素:本階段的目標是編譯領域字典和領域術語的同義詞詞典。存領域工程過程的前一個階段產生的商層塊圖將被增加更多的細節,特別是識別領域中套用間的共同性和差異性。
(3)定義領域特定的設計和實現需求約束:本階段的目標是描述解空間有差別的特性。不僅要識別出約束,並且要記錄約束對設計和實現決定造成的後果,要i己錄對處理這螳問題時產生的所有問題的討論。
(4)定義領域模型和構架:本階段的目標是產生一般的構架,並說明構成它們的模組或構件的語法和語義。
(5)產生、蒐集可復用產品:本階段的目標是為DSSA增加構件使得它可以被用來產生問題域中的新套用。
組成
領域工程由3個過程組成:領域分析、領域設計和領域實現,而領域模型、DSSA和領域構件是它們相應的產品,即可復用資產。可復用資產由領域工程團隊負責生產、維護和分類,具體包括:
1、領域分析。這個任務在於通過定義套用領域、分析套用領域來確定是否值得為該領域的套用系統進行定性、廣泛、深入地分析,然後對該領域的這些套用系統的相同點和可變點進行分類,以便確定在這個領域進行開發所需的開銷。
2、領域設計。如果領域分析階段結束,則領域工程團隊應該開始構建支持領域套用系統開發所需的復用基礎設施。這包括通用體系結構、結構上的共同點,以及可復用資產的規格說明。該規格說明的重點是規定資產如何匹配體系結構,如何通過參數化適應在領域分析階段確定的可變點的協定。
3、資產獲取。這個階段包括針對復用的開發,可能還包括某些可復用資產,諸如COTS產品的外部採購。復用的開發不同於傳統的軟體開發,這是因為其需要滿足通用性、可靠性和可維護性。可見復用的開發成本要顯著增加。
4、資產分類。資產分類是指資料庫的管理,包括分類和存儲可復用資產,以便套用工程團隊檢索和評估等。
5、資產維護。資產維護是指與配置管理和版本控制任務結合在一起,主要是構件的更正性維護和完善性維護,使用這些構件的套用系統可能也會受到影響,甚至需要修改。