軟件體系結構——知識點

Textbook

第一章 軟件體系結構概論

軟件危機

  • 表現
    1、軟件成本日益增長
    2、開發進度難以控制
    (用戶需求變化等意想不到的原因)
    3、軟件質量差
    (程序員習慣以自己的想法替代用戶需求)
    4、軟件維護困難
    (缺標準,開發人員的流失,軟件修改十分“危險”很容易出bug)

  • 原因
    1、用戶需求不明確
    (用戶不清楚具體需求,用戶需求有遺漏、二義甚至錯誤,用戶需求變化,開發者與用戶之間理解的差異)
    2、缺乏正確、全面的理論指導
    (軟件開發過分依賴開發者的高度智力投入,以及技巧與創造性。使得軟件開發個性化強)
    3、軟件規模越來越大
    (大型項目需要團隊共同完成,而團隊之間不一定能有效協作)
    4、軟件復雜度越來越高

  • 克服方法
    探索用工程的方法進行軟件生成的可能性,即用現代工程概念、原理、技術和方法進行計算機軟件開發、維護和管理。
    軟件工程:用工程、科學和數學的原則與方法,研制和維護計算機軟件的有關技術以及管理方法。

軟件重用

  • 概念:在兩次貨多次不同的軟件開發過程之中,重復使用相同或相近的軟件元素的過程。

構件

概念
  • 可重用的軟件元素:
    程序代碼,測試用例,設計文檔,設計過程,需求分析,領域知識。

  • 可重用構件:語義完整、語法正確和有重用價值的單位軟件。

  • 粒度:可重用軟件元素的大小。

  • 構件的3C模型
    1、概念(Concept)-構件做什么的描述
    2、內容(Content)-構件如何實現概念
    3、語境(Context)-描述構件的應用場景以及修改指導。

構件獲取
  • 領域:一組相似或相近軟件需求的應用系統所覆蓋的功能區域。
  • 領域工程:領域分析,領域設計,領域實現等。
構件管理
  • 種類
    1、構件描述:方便搜尋
    2、構件分類:方便管理
    3、構件庫組織:方便管理與搜尋
    4、人員及權限管理:安全性
    5、用戶意見反饋:方便迭代開發

  • 構件描述
    對構件的制作和重用提供依據以及方便管理。
    如:實現方式,編程語言,注釋,生產日期,價格等。

  • 構件分類方法
    1、關鍵字分類法:每個概念用一個描述性關鍵字表示。
    2、刻面分類法:定義一些刻畫構件特征的“面”(3C模型中的概念),通常不超過七八個刻面。
    eg. 青鳥構件庫的刻面分類:使用環境,應用領域,功能,層次,表示方法。
    3、超文本組織方法

  • 構件種類
    1、獨立而成熟的構件。
    2、有限制的構件。
    3、適應性構件。
    4、裝配構件。
    (要使用膠水代碼進行連接使用)
    5、可修改的構件。
    (開發中使用得多)

基于構件的軟件開發
  • 優勢:降低開成本,縮短開發時間。

  • 劣勢:兼容性,獨創性缺失從而競爭力下降。對構件提供者的依賴性。

  • 獲取構件的途徑:
    1、在現有構件中搜尋,直接使用或修改后使用。
    2、通過遺留工程,將有重用價值的構件重組后使用。
    3、從市場上購買現成的商業構件COTS(Commercial Off-The-Shell)
    4、開發新構件。

  • 構件重用

  • 可重用構件的特殊要求
    1、功能上獨立與完整。
    2、通用性高,靈活。
    3、穩定性高,質量保證。
    4、標準化程度高。

  • 應用廣泛的構件技術規范
    CORBA(Common Object Request Broker Architecture)通用對象請求代理結構;
    OMG(Object Management Group)對象管理組織;
    EJB(Enterprise Java Bean)Sun公司;
    DCOM(Distributed Component Object Model)分布式構件對象模型 Microsoft;
    它們都實現了接口對象的分離,提供了構件交互能力。

軟件體系結構

  • 概念:是在處理算法與數據結構之上的,關于整體系統結構設計和描述方面的問題。是軟件系統的一個結構、行為和熟悉的高級抽象。(除了概念的組織結構與系統的拓撲結構外,還有系統需求與元素的對應關系。)
    重設計重用。

  • 軟件體系結構組成部分:
    1、構件(Component):一組代碼,或程序塊或一個獨立的程序。(如SQL服務器)
    2、連接件(Connector):關系的抽象,用以表示構件之間的相互作用。(如過程調用、管道等)
    3、配置(Configuration):用于對構件與連接件的語義說明。
    4、端口:表示構件與外部環境的交互點。
    5、角色:連接件的接口。

    軟件體系結構核心模型

  • 軟件體系結構的意義
    1、是系統開發中不同參與者進行交流和信息傳播的媒介。
    2、是早期設計決策的體現。
    3、可以反映軟件的的質量以及瓶頸。
    4、本身也是一種可傳遞可重用的模型。

  • 軟件體系結構應用現狀
    1、ADL(Architecture Description Language)軟件體系結構描述語言:描述體系結構的概念框架。(C2,Wright,Aesop,Unicon等)
    優秀的ADL的特性:組裝性,抽象性,重用性,可配置性,異構性,可分析性等。
    2、軟件體系結構描述構造與表示:用一定描述方法,對體系結構進行描述。
    eg. “4+1”模型:由邏輯視圖,開發視圖,過程視圖,和物理視圖組成。用應用場景將這4個有機結合起來。比較細致地描述了需求和體系結構之間的關系。
    3、體系結構的設計、分析與驗證:如何將系統分解成相應的組成成分(構件,連接件)
    eg. 風格設計。結構分析,功能分析,非功能分析。
    4、體系結構的發現、演化與重用:對已有的系統,提取體系結構等。
    5、基于體系結構等軟件開發
    6、特定領域的體積結構
    7、軟件體系結構的支持工具:軟件體系結構的支持工具。
    8、軟件產品線體系結構:提高重用性。
    9、建立軟件體系結構的方法

  • 軟件體系結構的研究與應用之中的不足之處:
    1、缺乏統一的軟件體系結構概念,導致軟件體系結構的研究范圍模糊。
    2、ADL繁多,缺乏統一的ADL標準。
    3、軟件體系結構研究缺乏統一的理論模型支持。
    4、市面上的多種標準規范或建議標準不易于操作。
    5、軟件體系結構性質的研究尚不充分,不能明確給出一個良好的體系極高的屬性或評斷標準,也沒有給出良好體系就高的設計指導原則,因此對于軟件開發實踐缺乏有力的促進作用。
    6、缺乏有效的支持環境,以及軟件體系結構理論研究與環境支持不同步,缺乏有效的體系結構分析、設計、方針和驗證工具支持,導致體系結構應用困難。
    7、缺乏有效的體系結構復用方案。
    8、體系結構發現方法研究相對欠缺。

第二章 軟件體系結構建模

軟件體系結構模型:

1、結構模型:最直觀最普遍的建模方法,通過體系結構的構件、連接件和其他概念來刻畫結構;力圖通過結構,來反映系統的重要語義內容。
包括:系統的配置,約束,隱含的假設條件,風格,性質。
2、框架模型:與結構模型類似,但不側重結構的細節,而側重整體的結構。主要以一些特殊的問題作為目標,建立只針對和適應這類問題的結構。
3、動態模型:對結構或框架模型的補充,研究系統的“大粒度”的行為及其性質。如系統總體結構的配置或演化、通信通道或計算過程的建立或拆除等方面的行為。
4、過程模型:研究構造系統的步驟與過程,因而其機構是遵循某些腳本的結果。
5、功能模型:體系機構的一組功能構件,按照層次組成,下層向上層提供服務,可以看作為一種特殊的框架模型。

“4 + 1”視圖模型

5個角度:邏輯視圖,開發視圖,進程視圖,物理視圖,場景視圖。


“4 + 1”視圖模型
  • 邏輯視圖:系統提供給最終用戶的服務。
    邏輯視圖中使用的標記符號
某通信系統體系結構的邏輯視圖

eg 會話使用轉換服務與連接服務。

  • 開發視圖:側重于軟件模塊的組織管理。

    開發視圖的標記符號

  • 進程視圖:側重系統的運行特性,并關注一些非功能性需求,如系統性能與可用性。
    強調:并發性,分布性,系統集成性,容錯性等。

    進程視圖使用的標記符號

ACS系統的進程視圖(部分)
  • 物理視圖:重視目標程序的靜態位置問題,決定拓撲結構,系統安裝,通訊方面的問題。
    物理視圖使用的標記符號
ACS系統的物理視圖
  • 場景:重要系統獲得的抽象,將其他4個視圖聯系起來。
    本地呼叫的一個原型

軟件開發的主要階段

1、需求分析階段。
2、建立軟件體系結構。
3、詳細設計階段。
4、實現階段。

軟件體系結構的抽象化描述

定義1:
構件描述:C = (A,O,X,P)
A:構件屬性集合
O:組成構件的所有對象的集合
X:構件動作的集合
P:構件端口的集合

定義2
先執行構件C1,后執行C2

構件順序結構關系圖

……

  • 問題: 引入軟件體系結構以后,傳統軟件過程發生了哪些變化?這種變化有什么好處?

  • 問題: 軟件體系結構的神明周期模型與軟件生命周期模型有什么關系?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,224評論 6 529
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,916評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,014評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,466評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,245評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,795評論 1 320
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,869評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,010評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,524評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,487評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,634評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,173評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,884評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,282評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,541評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,236評論 3 388
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,623評論 2 370

推薦閱讀更多精彩內容