複用與產品線
基於產品線的架構
特定領域軟件架構
1、DSSA的定義
架構的本質在於其抽象性,包括連個方面:業務抽象性和技術抽象性、其中業務抽象面向特定的應用領域。
特定領域軟件架構(Domain Specific Software Architecture,DSSA)可以看成產品線的一個方法它的目標就是支持在一個特定領域中有多個應用的生成。
DSSA特徵:
(1)一個嚴格定義的問題域或解決域;
(2)具有普遍性,使其可以用於領域中某個特定應用的開發;
(3)對整個領域的合適程度的抽象;
(4)具備該領域固定的、典型的在開發過程中的可複用元素。
從功能覆蓋範圍角度理解DSSA中領域的含義兩種方法:
(1)垂直域。定義了一個特定的系統族,導出在該領域中可作爲系統的可行解決方案的一個通用軟件架構。
(2)水平域。定義了在多個系統和多個系統族中功能區域的共有部分,在子系統級上涵蓋多個系統(族)的特定部分功能。
在垂直域上定義的DSSA只能應用於一個成熟的穩定的領域,但這個條件比較難以滿足:若將領域分割爲較小的範圍,則更相對容易,也容易得到一個一致的解決方案。
對於中等複雜項目:應該在系統的領域模型中找到 50~100
2、DSSA的基本活動
實施DSSA的過程中包含了一些基本的活動。雖然具體的DSSA方法可能定義不同的概念、步驟和產品等,主要分三個階段。
(1)領域分析
這個階段的主要目的是獲得領域模型。
領域模型描述領域中系統之間共同的需求,即領域模型所描述的需求爲領域需求。這個階段中收線要進行一些準備性的活動麪包括定義領域的邊界。從而明確分析的對象;識別信息源,整個領域工程過程中信息的來源,可能的信息源包括現存系統、技術文獻、問題域和系統開發的專家、用戶調查和市場分析、領域演化的歷史記錄,在此基礎上就可以分析領域中系統需求,確定那些需求是領域中的系統廣泛共享,從而建立領域模型。當領域中存在大量系統時,需要選擇他們的一個子集作爲樣本系統。
(2)領域設計
這個階段設計的目標是獲得DSSA。
(3)領域實現
這個階段的主要目標是依據領域模型和DSSA開發和組織可重用信息。
3、參與DSSA的人員
參與DSSA的人員可以劃分爲四種角色:領域專家、領域分析人員、領域設計人員、領域實現人員。
領域專家:
領域專家可能包括該領域中的系統有經驗的用戶,從事該領域中的系統的需求分析,設計,實現及項目管理的有經驗的軟件工程師。
主要任務:提供關於領域中系統的需求規約和實現的知識,幫助組織規範的,一致的領域字典,幫助選擇樣本系統作爲領域工程的依據,複審領域模型,DSSA等領域工程產品。
領域專家應該熟悉該領域系統中的軟件設計和實現,硬件限制,未來用戶需求及技術走向。
領域分析人員:
領域分析人員應該具有工程知識背景,有經驗的系統分析人員。應屬虛軟件重用和領域分析方法:熟悉進行知識獲取和知識表示所需的技術、語言和工具;應該具有一定的該領域的經驗,以便分析領域中的問題及與領域專家進行交互;應具有較高的進行抽象、類比和關聯的能力;應該具有較高的與他人交互和合作的能力。
主要任務:控制整個領域分析過程,進行知識獲取,將獲取的只是組織到領域模型中,根據現有系統,標準規範等驗證領域模型的準確性和一致性,維護領域模型。
領域設計人員:
領域設計人員應該由有經驗的軟件設計人員來擔任。
主要任務:控制整個軟件設計過程,根據領域模型和現有的系統開發出DSSA,對DSSA的準確性和一致性進行驗證,建立領域模型和DSSA之間的聯繫。
領域設計人員應該熟悉重用和領域設計方法;熟悉軟件設計方法;熟悉軟件設計方法,應該有一定的該領域的經驗,以便於分析領域中的問題與領域專家進行交互。
領域實現人員:
領域是實現人員應該由經驗的程序設計人員來擔任。領域實現人員的主要任務包括根據領域模型和DSSA,或者從頭可重用構件,或者利用軟件再工程技術從現有系統中提取可重用構建,可對重用構建進行驗證,建立DSSA與可重用構建之間的聯繫。
領域實現人員應熟悉軟件重用、領域實現及軟件在工程技術;熟悉程序設計;具有一定的該領域的經驗。
4、DSSA的建立過程
DSSA 五個階段特點:每一步驟可以進一步劃分爲一些步驟或子階段
DSSA建立過程五個階段:
- 定義領域範圍
- 定於領域特定的元素
- 定於領域特定的設計和實現需求約束
- 定義領域模型和架構
- 產生,蒐集可重用的產品單元。
每個階段包括一組需要回答的問題,一組需要輸入,一組將產生的輸入和驗證標準。過程是併發(concurrent),遞歸(recusive)反覆(Iterative)螺旋形。目的是將用的需求映射爲基於實現限制集合的軟件需求,這些定義了DSSA。在此之前的領域工程和領域分析過程並沒有對系統的功能呢個性需求和實現限制進行區分,而是統稱爲"需求"