中南大學(xué)軟件體系結(jié)構(gòu)重點(diǎn)_第1頁(yè)
中南大學(xué)軟件體系結(jié)構(gòu)重點(diǎn)_第2頁(yè)
中南大學(xué)軟件體系結(jié)構(gòu)重點(diǎn)_第3頁(yè)
中南大學(xué)軟件體系結(jié)構(gòu)重點(diǎn)_第4頁(yè)
中南大學(xué)軟件體系結(jié)構(gòu)重點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一章 軟件體系結(jié)構(gòu)概述(5分)一、 軟件體系結(jié)構(gòu)的定義l 國(guó)內(nèi)普遍接受的定義:軟件體系結(jié)構(gòu)包括構(gòu)件、連接件和約束,它是可預(yù)制和可重構(gòu)的軟件框架結(jié)構(gòu)。l 軟件體系結(jié)構(gòu) = 構(gòu)件 + 連接件 + 約束二、 軟件體系結(jié)構(gòu)的優(yōu)勢(shì)l 容易理解l 重用l 控制成本l 可分析性第二章 軟件體系結(jié)構(gòu)風(fēng)格(10分)一、 軟件體系結(jié)構(gòu)風(fēng)格定義l 軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。An architectural style defines a family of systems in terms of a pattern of structural organization.l 體

2、系結(jié)構(gòu)風(fēng)格定義了一個(gè)系統(tǒng)家族,即一個(gè)體系結(jié)構(gòu)定義一個(gè)詞匯表和一組約束。詞匯表中包含一些構(gòu)件和連接件類型,而這組約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來(lái)的。An architectural style defines a vocabulary of components and connector types, and a set of constraints on how they can be combined.二、 常見(jiàn)的體系結(jié)構(gòu)風(fēng)格l 管道和過(guò)濾器 每個(gè)構(gòu)件都有一組輸入和輸出,構(gòu)件讀輸入的數(shù)據(jù)流,經(jīng)過(guò)內(nèi)部處理,然后產(chǎn)生輸出數(shù)據(jù)流。 過(guò)濾器風(fēng)格的連接件就像是數(shù)據(jù)流傳輸?shù)墓艿?,將一個(gè)過(guò)濾

3、器的輸出傳到另一個(gè)過(guò)濾器的輸入。l 數(shù)據(jù)抽象和面向?qū)ο蠼M織 數(shù)據(jù)的表示方法和它們的相應(yīng)操作被封裝在一個(gè)抽象數(shù)據(jù)類型或?qū)ο笾小?這種風(fēng)格的構(gòu)件是對(duì)象或者說(shuō)是抽象數(shù)據(jù)類型的實(shí)例。 對(duì)象通過(guò)函數(shù)和過(guò)程的調(diào)用來(lái)進(jìn)行交互。l 基于事件的隱式調(diào)用 構(gòu)件不直接調(diào)用一個(gè)過(guò)程,而是觸發(fā)或廣播一個(gè)或多個(gè)事件。 事件的觸發(fā)者并不知道哪些構(gòu)件會(huì)被這些事件影響。l 分層系統(tǒng) 組織成一個(gè)層次結(jié)構(gòu)。 每一層都為上一層提供了相應(yīng)的服務(wù),并且接受下一層提供的服務(wù)。l 倉(cāng)庫(kù)系統(tǒng) 構(gòu)件:中心數(shù)據(jù)結(jié)構(gòu)(倉(cāng)庫(kù))和一些獨(dú)立構(gòu)件的集合。 倉(cāng)庫(kù)和在系統(tǒng)中很重要的外部構(gòu)件之間的相互作用。l 過(guò)程控制環(huán)路 源自于控制理論中的模型框架,將事務(wù)處理

4、看成輸入、加工、輸出、反饋、再輸入的一個(gè)持續(xù)的過(guò)程模型。 通過(guò)持續(xù)性的加工處理過(guò)程將輸入數(shù)據(jù)轉(zhuǎn)換成既定屬性的“產(chǎn)品”。l C2風(fēng)格通過(guò)連接件綁定在一起的按照一組規(guī)則運(yùn)作的并行構(gòu)件網(wǎng)絡(luò)。l C/S風(fēng)格 基于資源不對(duì)等,且為實(shí)現(xiàn)共享而提出來(lái)的。 有三個(gè)主要組成部分:數(shù)據(jù)庫(kù)服務(wù)器、客戶應(yīng)用程序和網(wǎng)絡(luò)。 優(yōu)點(diǎn): 具有強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡(jiǎn)單,易于人們理解和接受。 對(duì)于硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對(duì)系統(tǒng)進(jìn)行擴(kuò)充和縮小。 將大的應(yīng)用處理任務(wù)分布到許多通過(guò)網(wǎng)絡(luò)連接的低成本計(jì)算機(jī)上,以節(jié)約大量費(fèi)用。 缺點(diǎn): 開(kāi)發(fā)成本較高。 客戶端程序設(shè)計(jì)復(fù)雜。 信息內(nèi)容和形式單一。

5、用戶界面風(fēng)格不一,使用繁雜,不利于推廣使用。 軟件移植困難。 軟件維護(hù)和升級(jí)困難。 新技術(shù)不能輕易應(yīng)用。l 三層C/S風(fēng)格 優(yōu)點(diǎn): 能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性。 具有良好的可升級(jí)性和開(kāi)放性。 可以并行開(kāi)發(fā)。 有效地隔離開(kāi)表示層與數(shù)據(jù)層,為嚴(yán)格的安全管理奠定了堅(jiān)實(shí)的基礎(chǔ)。 缺點(diǎn): 各層間的通信效率不高。 設(shè)計(jì)時(shí)必須慎重考慮三層間的通信方法、通信頻率及數(shù)據(jù)量。l B/S風(fēng)格(瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器) 優(yōu)點(diǎn): 基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。用戶在使用系統(tǒng)時(shí),僅僅需要一個(gè)瀏覽器就可運(yùn)行全部的模塊,真正達(dá)到了“零客戶端”的功能,很容易在運(yùn)行時(shí)自動(dòng)升

6、級(jí)。 提供了異種機(jī)、異種網(wǎng)、異種應(yīng)用服務(wù)器的聯(lián)機(jī)、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實(shí)的開(kāi)放性基礎(chǔ)。 缺點(diǎn): 缺乏對(duì)動(dòng)態(tài)頁(yè)面的支持能力,沒(méi)有集成有效的數(shù)據(jù)庫(kù)處理功能。 系統(tǒng)擴(kuò)展能力差,安全性難以控制。 數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)低于C/S體系結(jié)構(gòu)。 數(shù)據(jù)提交一般以頁(yè)面為單位,數(shù)據(jù)的動(dòng)態(tài)交互性不強(qiáng),不利于在線事務(wù)處理(OLTP)應(yīng)用。第三章 軟件需求與架構(gòu)(15分)一、 軟件需求的概念需求是指明必須實(shí)現(xiàn)什么的規(guī)格說(shuō)明。它描述了系統(tǒng)的行為、特性或?qū)傩?,是在開(kāi)發(fā)過(guò)程中對(duì)系統(tǒng)的約束。二、 軟件需求的流程三、 軟件需求的分類l 按層分: 業(yè)務(wù)需求:反映組織機(jī)構(gòu)或客戶對(duì)系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,通常問(wèn)題定義本身就是

7、業(yè)務(wù)需求。領(lǐng)域?qū)<?用戶需求:描述用戶使用產(chǎn)品必須要完成什么任務(wù),怎么完成的需求。用戶 系統(tǒng)需求:從系統(tǒng)的角度來(lái)說(shuō)明軟件的需求。開(kāi)發(fā)人員l 按類分: 功能需求:系統(tǒng)必須完成的那些事,即為了向它的用戶提供有用的功能,產(chǎn)品必須執(zhí)行的動(dòng)作。 非功能需求:產(chǎn)品必須具備的屬性或品質(zhì),如正確性、可靠性、性能、容錯(cuò)性和可擴(kuò)展性等。 設(shè)計(jì)約束:對(duì)解決方案的一些約束說(shuō)明。四、 軟件需求面臨的主要困難l 知識(shí)技能問(wèn)題l 態(tài)度問(wèn)題l 合作關(guān)系l 用戶說(shuō)不清楚需求l 雙方誤解需求l 開(kāi)發(fā)人員寫(xiě)不好需求文檔l 用戶經(jīng)常變更需求五、 需求工程l 定義:把所有與需求直接相關(guān)的活動(dòng)通稱為需求工程。l 需求工程創(chuàng)建的第一份文檔

8、是需求陳述,用于在項(xiàng)目開(kāi)發(fā)之初理解客戶的需求。l 分類: 需求開(kāi)發(fā):目的是通過(guò)調(diào)查與分析,獲取用戶需求并定義產(chǎn)品需求。包括: 需求調(diào)查(需求獲?。┑哪康氖峭ㄟ^(guò)各種途徑獲取用戶的需求信息(原始材料),產(chǎn)生需求陳述。 需求分析的目的是對(duì)各種需求信息進(jìn)行分析,消除錯(cuò)誤,刻畫(huà)細(xì)節(jié)等。常見(jiàn)的需求分析方法有“問(wèn)答分析法”和“建模分析法”兩類。 需求定義的目的是根據(jù)需求調(diào)查和需求分析的結(jié)果,進(jìn)一步定義準(zhǔn)確無(wú)誤的產(chǎn)品需求,產(chǎn)生軟件需求規(guī)格說(shuō)明書(shū)。 需求管理:目的是在客戶與開(kāi)發(fā)方之間建立對(duì)需求的共同理解,維護(hù)需求與其它工作成果的一致性,并控制需求的變更。包括: 需求確認(rèn)是指開(kāi)發(fā)方和客戶共同對(duì)需求文檔進(jìn)行評(píng)審,雙

9、方對(duì)需求達(dá)成共識(shí)后作出書(shū)面承諾,使需求文檔具有商業(yè)合同效果。 需求跟蹤是指通過(guò)比較需求文檔與后續(xù)工作成果之間的對(duì)應(yīng)關(guān)系,建立與維護(hù)“需求跟蹤矩陣”,確保產(chǎn)品依據(jù)需求文檔進(jìn)行開(kāi)發(fā)。 需求變更控制是指依據(jù)“變更申請(qǐng)審批更改重新確認(rèn)”的流程處理需求的變更,防止需求變更失去控制而導(dǎo)致項(xiàng)目發(fā)生混亂。l 需求工程結(jié)構(gòu)圖:六、 需求獲取技術(shù)l 獲取需求的方法 面談(訪談):開(kāi)放式問(wèn)題和封閉式問(wèn)題 問(wèn)卷調(diào)查:潛在使用者太多或分布太廣時(shí) 會(huì)議(需求討論會(huì)、重點(diǎn)問(wèn)題討論會(huì)、業(yè)務(wù)專題討論會(huì)、設(shè)計(jì)專題討論會(huì)) 文檔研究 任務(wù)示范(觀察):通過(guò)觀察可以獲得第一手的資料。 用例與角色扮演 原型設(shè)計(jì)(小規(guī)模試驗(yàn)) 研究類似

10、公司l 需求陳述 是一份文檔,陳述用戶對(duì)軟件的期望和需要,并對(duì)可能的規(guī)格要求加以說(shuō)明。 需求陳述用來(lái)明確軟件的用途,它不僅要說(shuō)明軟件有什么用,還要在宏觀層次上明確軟件應(yīng)具備的特性。 核心內(nèi)容 開(kāi)發(fā)該軟件的動(dòng)機(jī)(愿景)是什么? 該項(xiàng)目的主要涉眾是誰(shuí)? 希望該軟件具備哪些主要功能和特性?七、 需求建模l 需求模型分類: 功能模型如UC見(jiàn)下章 業(yè)務(wù)流程模型如DFD 數(shù)據(jù)流圖(Data Flow Diagram, DFD)是結(jié)構(gòu)化方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過(guò)程。 數(shù)據(jù)建模模型如ER ER建模用于對(duì)數(shù)據(jù)進(jìn)行建模(概念模型) 在ER圖中包含三個(gè)圖形符號(hào)

11、,分別表示:實(shí)體(矩形)、屬性(橢圓)、聯(lián)系(菱形)八、 編寫(xiě)軟件需求規(guī)格說(shuō)明書(shū)l 需求分析的主要成果:軟件需求規(guī)格說(shuō)明書(shū)(Software Requirement Specification, SRS)l 要求的屬性: 正確:最重要的屬性。 清楚:讓人易讀易懂,不在于文檔的厚度。 無(wú)二義性:是指每個(gè)需求只有唯一的含義。 一致:指軟件需求規(guī)格說(shuō)明書(shū)中各個(gè)需求之間不會(huì)發(fā)生矛盾。 必要:其中的各項(xiàng)需求對(duì)用戶而言應(yīng)當(dāng)都是必要的。 完備:指軟件需求規(guī)格說(shuō)明書(shū)中沒(méi)有遺漏一些必要的需求。 可實(shí)現(xiàn):其中各項(xiàng)需求對(duì)開(kāi)發(fā)方而言應(yīng)當(dāng)都是可實(shí)現(xiàn)的。 可驗(yàn)證:其中的各項(xiàng)需求對(duì)用戶方而言應(yīng)當(dāng)都是可驗(yàn)證的。 確定優(yōu)先級(jí):

12、先做優(yōu)先級(jí)高的需求,后做(甚至放棄)優(yōu)先級(jí)低的需求,這樣可以將風(fēng)險(xiǎn)降到最低。l 闡述“做什么”而不是“怎么做”九、 需求確認(rèn)l 需求確認(rèn)是指開(kāi)發(fā)方和客戶方共同對(duì)軟件需求規(guī)格說(shuō)明書(shū)進(jìn)行評(píng)審,雙方對(duì)需求達(dá)成共識(shí)后作出承諾。l 包含兩個(gè)重要工作: 需求評(píng)審 需求承諾十、 需求跟蹤技術(shù)l 需求跟蹤的目的是建立與維護(hù)“需求-設(shè)計(jì)-編程-測(cè)試”之間的一致性,確保所有的工作成果符合用戶需求。l 跟蹤有兩種方式: 正向跟蹤。檢查軟件需求規(guī)格說(shuō)明書(shū)中的每個(gè)需求是否都能在后繼工作成果中找到對(duì)應(yīng)點(diǎn)。 逆向跟蹤。檢查設(shè)計(jì)文檔、代碼、測(cè)試用例等工作成果是否都能在軟件需求規(guī)格說(shuō)明書(shū)中找到出處。l 跟蹤矩陣 源跟蹤矩陣(需

13、求與需求來(lái)源) 功能跟蹤矩陣(需求與功能) 依賴跟蹤矩陣(一個(gè)需求與另一個(gè)需求)十一、 需求變更控制l 需求發(fā)生變更的起因主要有: 隨著項(xiàng)目的進(jìn)展,人們(包括開(kāi)發(fā)方和客戶方)對(duì)需求的了解越來(lái)越深入。原先的需求文檔可能存在這樣那樣的錯(cuò)誤或不足,因此要變更需求。 市場(chǎng)發(fā)生了變化,原先的需求文檔可能跟不上當(dāng)前的市場(chǎng)需求,因此要變更需求。l 需求變更控制的目的: 如果需求變更帶來(lái)的好處大于壞處,那么允許變更,但必須按照已定義的變更規(guī)程執(zhí)行,以免變更失去控制。 如果需求變更帶來(lái)的壞處大于好處,那么拒絕變更。l 需求基線 已經(jīng)通過(guò)正式評(píng)審和批準(zhǔn)的規(guī)格說(shuō)明或產(chǎn)品,它可以作為進(jìn)一步開(kāi)發(fā)的基礎(chǔ),并且只有通過(guò)正式

14、的變更控制過(guò)程才能修改它。 是被明確和固定下來(lái)的需求集合,是項(xiàng)目團(tuán)隊(duì)需要在某一特定產(chǎn)品版本中實(shí)現(xiàn)的特征和需求集合。第五章 統(tǒng)一建模語(yǔ)言UML(20分)(Unified Modeling Language)(重點(diǎn)看實(shí)驗(yàn)1)一、 用例圖(Use Case Diagram)l 執(zhí)行者和用例之間的關(guān)聯(lián)關(guān)系(Association):一根直線來(lái)表示l 執(zhí)行者之間的泛化關(guān)系(Generalization)(或繼承關(guān)系)用例之間的關(guān)系:l 包含關(guān)系:描述在多個(gè)用例中都有的公共行為,由用例A指向用例B,表示用例A中使用了用例B中的行為或功能,包含關(guān)系是通過(guò)在依賴關(guān)系上應(yīng)用構(gòu)造型(衍型)來(lái)表示的。l 擴(kuò)展關(guān)系:

15、擴(kuò)展用例可以在基用例之上添加新的行為,但是基用例必須聲明某些特定的“擴(kuò)展點(diǎn)”,并且擴(kuò)展用例只能在這些擴(kuò)展點(diǎn)上擴(kuò)展新的行為。擴(kuò)展關(guān)系是通過(guò)在依賴關(guān)系上應(yīng)用構(gòu)造型(衍型)來(lái)表示的。l 泛化關(guān)系: 當(dāng)多個(gè)用例共同擁有一種類似的結(jié)構(gòu)和行為的時(shí)候,可以將它們的共性抽象成為父用例,其他的用例作為泛化關(guān)系中的子用例。 在用例的泛化關(guān)系中,子用例是父用例的一種特殊形式,子用例繼承了父用例所有的結(jié)構(gòu)、行為和關(guān)系。 泛化關(guān)系一般很少使用。二、 狀態(tài)圖(State Diagram)l 定義:用來(lái)描述一個(gè)特定對(duì)象的所有可能狀態(tài)及其引起狀態(tài)轉(zhuǎn)移的事件。 通常用狀態(tài)圖來(lái)描述單個(gè)對(duì)象的行為 只有那些具有重要交互行為的類,才

16、會(huì)使用狀態(tài)圖來(lái)描述。 一個(gè)狀態(tài)圖包括一系列對(duì)象的狀態(tài)及狀態(tài)之間的轉(zhuǎn)換。l 組成元素: 初始狀態(tài) 終止?fàn)顟B(tài) 狀態(tài) 轉(zhuǎn)移 守護(hù)條件 事件 動(dòng)作三、 活動(dòng)圖(Activity Diagram)l 定義:用來(lái)表示系統(tǒng)中各種活動(dòng)的次序,它的應(yīng)用非常廣泛,既可用來(lái)描述用例的工作流程,也可以用來(lái)描述類中某個(gè)方法的操作行為。l 作用: 描述業(yè)務(wù)流程 描述用例路徑 描述方法執(zhí)行流程(程序流程圖)l 組成元素: 起始活動(dòng)(Start Activity) 終止活動(dòng)(End Activity) 活動(dòng)(Activity) 轉(zhuǎn)移(Transition)或流(Flow) 決策(Decision) 守護(hù)條件(Conditio

17、n) 同步條(Synchronization) 泳道(Swimlane)四、 順序圖l 定義: 用于確認(rèn)和豐富一個(gè)使用情境的邏輯。 將交互關(guān)系表現(xiàn)為一個(gè)二維圖,縱向是時(shí)間軸,時(shí)間沿豎線向下延伸。橫向軸代表了在協(xié)作中各獨(dú)立對(duì)象的類元角色,類元角色的活動(dòng)用生命線表示。l 組成元素: 生命線:用一條縱向虛線表示。 對(duì)象:表示為一個(gè)矩形,其中對(duì)象名稱標(biāo)有下劃線。 激活:是過(guò)程的執(zhí)行,包括等待過(guò)程執(zhí)行的時(shí)間。激活部分替換生命線,使用長(zhǎng)條的矩形表示。 消息:對(duì)象之間的通信 調(diào)用消息:對(duì)應(yīng)于激活,表示它將會(huì)激活一個(gè)對(duì)象。 發(fā)送消息:沒(méi)有對(duì)應(yīng)激活框,表示它不是一個(gè)調(diào)用消息,不會(huì)引發(fā)其他對(duì)象的活動(dòng)。 返回消息

18、自身消息 創(chuàng)建消息 銷毀消息 同步消息 異步消息 交互片段:一個(gè)復(fù)雜的順序圖可以劃分為幾個(gè)小塊,每一個(gè)小塊稱為一個(gè)交互片段。 alt:多條路徑,條件為真時(shí)執(zhí)行。 opt:任選,僅當(dāng)條件為真時(shí)執(zhí)行。 par:并行,每一片段都并發(fā)執(zhí)行。 loop:循環(huán),片段可多次執(zhí)行。 critical:臨界區(qū),只能有一個(gè)線程對(duì)它立即執(zhí)行。五、 類圖l 類之間的關(guān)系: 關(guān)聯(lián)關(guān)系(Association) 用于表示一類對(duì)象與另一類對(duì)象之間有聯(lián)系 用實(shí)線連接有關(guān)聯(lián)的對(duì)象所對(duì)應(yīng)的類 通常將一個(gè)類的對(duì)象作為另一個(gè)類的屬性 自關(guān)聯(lián) 一些類的屬性對(duì)象類型為該類本身 多重性關(guān)聯(lián) 表示一個(gè)類的對(duì)象與另一個(gè)類的對(duì)象連接的個(gè)數(shù)。 聚

19、合關(guān)系(Aggregation) 表示一個(gè)整體與部分的關(guān)系。 成員類是整體類的一部分,即成員對(duì)象是整體對(duì)象的一部分,但是成員對(duì)象可以脫離整體對(duì)象獨(dú)立存在。 在UML中,聚合關(guān)系用帶空心菱形的直線表示。 組合關(guān)系(Composition) 部分和整體具有統(tǒng)一的生存期。 部分對(duì)象與整體對(duì)象之間具有同生共死的關(guān)系。 整體類可以控制成員類的生命周期,即成員類的存在依賴于整體類。 在UML中,組合關(guān)系用帶實(shí)心菱形的直線表示。 依賴關(guān)系(Dependency) 使用關(guān)系。 體現(xiàn)在某個(gè)類的方法使用另一個(gè)類的對(duì)象作為參數(shù)。 在UML中,依賴關(guān)系用帶箭頭的虛線表示。 泛化關(guān)系(Generalization) 用

20、于描述父類與子類之間的關(guān)系,父類又稱作基類或超類,子類又稱作派生類。 在UML中,泛化關(guān)系用帶空心三角形的直線來(lái)表示。 接口與實(shí)現(xiàn)關(guān)系(Realization) 類實(shí)現(xiàn)了接口,類中的操作實(shí)現(xiàn)了接口中所聲明的操作。 在UML中,類與接口之間的實(shí)現(xiàn)關(guān)系用帶空心三角形的虛線來(lái)表示。六、 包圖l 定義 一種把元素組織到一起的通用機(jī)制 用于描述包與包之間的關(guān)系 包的圖標(biāo)是一個(gè)帶標(biāo)簽的文件夾。l 包之間的關(guān)系 引入關(guān)系: 一個(gè)包中的類可以被另一個(gè)指定包(以及嵌套于其中的那些包)中的類引用。 在依賴線上增加一個(gè)衍型。 泛化關(guān)系:表示一個(gè)包繼承了另一個(gè)包的內(nèi)容,同時(shí)又補(bǔ)充自己增加的內(nèi)容。 嵌套關(guān)系:一個(gè)包中可

21、以包含若干個(gè)子包,構(gòu)成了包的嵌套層次結(jié)構(gòu)。七、 組件圖(Component Diagram)l 定義: 顯示編譯、鏈接或執(zhí)行時(shí)組件之間的依賴關(guān)系,以及組件的接口和調(diào)用關(guān)系。 組件就是一個(gè)實(shí)際文件,可以有以下幾種類型: 源代碼組件:一個(gè)源代碼文件或者與一個(gè)包對(duì)應(yīng)的若干個(gè)源代碼文件。 二進(jìn)制組件:一個(gè)目標(biāo)碼文件,一個(gè)靜態(tài)的或者動(dòng)態(tài)的庫(kù)文件。 可執(zhí)行組件:在一臺(tái)處理器上可運(yùn)行的一個(gè)可執(zhí)行的程序單位,即所謂可執(zhí)行程序。l 組件間關(guān)系:泛化關(guān)系、依賴關(guān)系l 組成元素: 組件:系統(tǒng)中可以替換的部分,一般對(duì)應(yīng)一個(gè)實(shí)際文件,如exe、jar、dll等文件,它遵循并提供了一組接口的實(shí)現(xiàn)。 接口:一組操作的集合,

22、它指明了由類或組件所請(qǐng)求或者所提供的服務(wù)。 部件:組件的局部實(shí)現(xiàn)。 端口:被封裝的組件與外界的交互點(diǎn),遵循指定接口的組件通過(guò)它來(lái)收發(fā)消息。 連接件:在特定語(yǔ)境下組件中兩個(gè)部件之間或者兩個(gè)端口之間的通信關(guān)系。 供(Provided)接口與需(Required)接口八、 部署圖(Deployment Diagram)l 定義: 描述系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)及在此結(jié)構(gòu)上執(zhí)行的軟件。 顯示了系統(tǒng)的硬件和安裝在硬件上的軟件,以及用于連接異構(gòu)計(jì)算機(jī)之間的中間件。l 組成元素: 節(jié)點(diǎn)和連接:節(jié)點(diǎn)(Node)代表一個(gè)物理設(shè)備。在 UML 中,使用一個(gè)立方體表示一個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)之間的連線表示系統(tǒng)之間進(jìn)行交互的通信路

23、徑,在 UML 中被稱為連接。 組件:在部署圖中,組件代表可執(zhí)行的物理代碼模塊,如一個(gè)可執(zhí)行程序,邏輯上它可以與類或包對(duì)應(yīng)。九、 對(duì)象圖l 定義:對(duì)象圖是類圖在某一時(shí)刻的一個(gè)實(shí)例。十、 組合結(jié)構(gòu)圖l 定義: 將每一個(gè)類放在一個(gè)整體中,從類的內(nèi)部結(jié)構(gòu)來(lái)審視一個(gè)類。 組合結(jié)構(gòu)圖可用于表示一個(gè)類的內(nèi)部結(jié)構(gòu)。l 組成元素: 部件(Part):表示被描述事物所擁有的內(nèi)部成分。 連接件(Connector):表示部件之間的關(guān)系。 端口(Port):表示部件和外部環(huán)境的交互點(diǎn)。十一、 通信圖l 定義: 通信圖強(qiáng)調(diào)參與一個(gè)交互對(duì)象的組織。 它與順序圖是同構(gòu)圖,也就是它們包含了相同的信息,只是表達(dá)方式不同而已,

24、通信圖與順序圖可以相互轉(zhuǎn)換。 當(dāng)對(duì)象及其連接有利于理解交互時(shí),選擇通信圖;當(dāng)只需了解交互的次序時(shí),選擇順序圖。l 組成元素:執(zhí)行者(Actor)、對(duì)象(Object)、連接(Link,也稱為鏈)、消息(Message)和守護(hù)條件(Condition)。十二、 定時(shí)圖l 定義: 采用一種帶數(shù)字刻度的時(shí)間軸來(lái)精確地描述消息的順序 可視化地表示每條生命線的狀態(tài)變化 可以把狀態(tài)發(fā)生變化的時(shí)刻以及各個(gè)狀態(tài)所持續(xù)的時(shí)間具體地表示出來(lái)。十三、 交互概覽圖l 定義: 交互圖與活動(dòng)圖的混合物,可以把交互概覽圖理解為細(xì)化的活動(dòng)圖,在其中的活動(dòng)都通過(guò)一些小型的順序圖來(lái)表示;也可以將其理解為利用標(biāo)明控制流的活動(dòng)圖分解

25、過(guò)的順序圖。 用于將一些零散的順序圖組織在一起,它采用了活動(dòng)圖的構(gòu)造方式,利用了活動(dòng)圖的各種控制節(jié)點(diǎn),并把活動(dòng)圖的每個(gè)活動(dòng)結(jié)點(diǎn)替換為一個(gè)交互或者交互使用。每個(gè)交互或者交互使用都使用一個(gè)順序圖表示。面向?qū)ο笤O(shè)計(jì)原則1、 單一職責(zé)原則(Single Responsibility Principle, SRP)定義:一個(gè)對(duì)象應(yīng)該只包含單一的職責(zé),并且該職責(zé)被完整地封裝在一個(gè)類中。Every object should have a single responsibility, and that responsibility should be entirely encapsulated by the

26、 class.2、 開(kāi)閉原則(Open-Closed Principle, OCP)定義:一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。Software entities should be open for extension, but closed for modification.3、 里氏代換原則(Liskov Substitution Principle, LSP)定義:所有引用基類(父類)的地方必須能透明地使用其子類的對(duì)象。Functions that use pointers or references to base classes must be able to use objec

27、ts of derived classes without knowing it.4、 依賴倒轉(zhuǎn)原則(Dependence Inversion Principle, DIP)定義:高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。High level modules should not depend upon low level modules, both should depend upon abstractions. Abstractions should not depend upon details, details should depend

28、 upon abstractions.5、 接口隔離原則(Interface Segregation Principle, ISP)定義:客戶端不應(yīng)該依賴那些它不需要的接口。Clients should not be forced to depend upon interfaces that they do not use.6、 合成復(fù)用原則(Composite Reuse Principle, CRP)定義:盡量使用對(duì)象組合,而不是繼承來(lái)達(dá)到復(fù)用的目的。Favor composition of objects over inheritance as a reuse mechanism.7、

29、迪米特法則(Law of Demeter, LoD)定義:一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用。設(shè)計(jì)模式(重點(diǎn)看實(shí)驗(yàn)2、3)一、 創(chuàng)建型模式l 簡(jiǎn)單工廠模式(Simple Factory) 定義:根據(jù)參數(shù)的不同返回不同類的實(shí)例,專門定義一個(gè)類來(lái)負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。 優(yōu)點(diǎn): 實(shí)現(xiàn)了對(duì)責(zé)任的分割,它提供了專門的工廠類用于創(chuàng)建對(duì)象。 客戶端無(wú)須知道所創(chuàng)建的具體產(chǎn)品類的類名,只需要知道具體產(chǎn)品類所對(duì)應(yīng)的參數(shù)即可。 通過(guò)引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產(chǎn)品類,在一定程度上提高了系統(tǒng)的靈活性。 缺點(diǎn): 工廠類集中了所有產(chǎn)品創(chuàng)

30、建邏輯,職責(zé)過(guò)重,不符合單一職責(zé)原則。 增加系統(tǒng)中類的個(gè)數(shù)。 系統(tǒng)擴(kuò)展困難,不符合開(kāi)閉原則。 由于使用了靜態(tài)工廠方法,造成工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。 適用范圍: 工廠類負(fù)責(zé)創(chuàng)建的對(duì)象比較少。 客戶端只知道傳入工廠類的參數(shù),對(duì)于如何創(chuàng)建對(duì)象不關(guān)心。l 工廠方法模式(Factory Method Pattern) 定義: 工廠父類負(fù)責(zé)定義創(chuàng)建產(chǎn)品對(duì)象的公共接口,而工廠子類則負(fù)責(zé)生成具體的產(chǎn)品對(duì)象,這樣做的目的是將產(chǎn)品類的實(shí)例化操作延遲到工廠子類中完成,即通過(guò)工廠子類來(lái)確定究竟應(yīng)該實(shí)例化哪一個(gè)具體產(chǎn)品類。 Define an interface for creating an object

31、, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses. 優(yōu)點(diǎn): 用戶只需要關(guān)心所需產(chǎn)品對(duì)應(yīng)的工廠,無(wú)須關(guān)心創(chuàng)建細(xì)節(jié),甚至無(wú)須知道具體產(chǎn)品類的類名。 工廠可以自主確定創(chuàng)建何種產(chǎn)品對(duì)象,而如何創(chuàng)建這個(gè)對(duì)象的細(xì)節(jié)則完全封裝在具體工廠內(nèi)部。 在系統(tǒng)中加入新產(chǎn)品時(shí),無(wú)須修改抽象工廠和抽象產(chǎn)品提供的接口,無(wú)須修改客戶端,也無(wú)須修改其他的具體工廠和具體產(chǎn)品,而只要添加一個(gè)具體工廠和具體產(chǎn)品就可以了。 缺點(diǎn): 在添加新產(chǎn)品時(shí),需要

32、編寫(xiě)新的具體產(chǎn)品類,而且還要提供與之對(duì)應(yīng)的具體工廠類,系統(tǒng)中類的個(gè)數(shù)將成對(duì)增加,在一定程度上增加了系統(tǒng)的復(fù)雜度。 增加了系統(tǒng)的抽象性和理解難度。 適用范圍: 一個(gè)類不知道它所需要的對(duì)象的類。 一個(gè)類通過(guò)其子類來(lái)指定創(chuàng)建哪個(gè)對(duì)象。 將創(chuàng)建對(duì)象的任務(wù)委托給多個(gè)工廠子類中的某一個(gè),客戶端在使用時(shí)可以無(wú)須關(guān)心是哪一個(gè)工廠子類創(chuàng)建產(chǎn)品子類,需要時(shí)再動(dòng)態(tài)指定。l 抽象工廠模式(Abstract Factory Pattern) 定義: 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類。 Provide an interface for creating families of relat

33、ed or dependent objects without specifying their concrete classes. 優(yōu)點(diǎn): 隔離了具體類的生成。 可以實(shí)現(xiàn)高內(nèi)聚低耦合的設(shè)計(jì)目的。 能夠保證客戶端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象。 增加新的具體工廠和產(chǎn)品族很方便,無(wú)須修改已有系統(tǒng),符合“開(kāi)閉原則”。 缺點(diǎn): 難以擴(kuò)展抽象工廠來(lái)生產(chǎn)新種類的產(chǎn)品。 開(kāi)閉原則的傾斜性(增加新的工廠和產(chǎn)品族容易,增加新的產(chǎn)品等級(jí)結(jié)構(gòu)麻煩) 適用范圍: 一個(gè)系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實(shí)例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié)。 系統(tǒng)中有多于一個(gè)的產(chǎn)品族,而每次只使用其中某一產(chǎn)品族。 屬于同一個(gè)產(chǎn)品族的產(chǎn)品將在一起使用。

34、 系統(tǒng)提供一個(gè)產(chǎn)品類的庫(kù),所有的產(chǎn)品以同樣的接口出現(xiàn),從而使客戶端不依賴于具體實(shí)現(xiàn)。l 單例模式(Singleton Pattern) 定義: 確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例,這個(gè)類稱為單例類,它提供全局訪問(wèn)的方法。 Ensure a class has only one instance and provide a global point of access to it. 優(yōu)點(diǎn): 提供了對(duì)唯一實(shí)例的受控訪問(wèn)。 可以節(jié)約系統(tǒng)資源 允許可變數(shù)目的實(shí)例。 缺點(diǎn): 單例類的擴(kuò)展有很大的困難。 單例類的職責(zé)過(guò)重。 濫用單例將帶來(lái)一些負(fù)面問(wèn)題。 適用范圍: 系統(tǒng)只需要

35、一個(gè)實(shí)例對(duì)象。 客戶調(diào)用類的單個(gè)實(shí)例只允許使用一個(gè)公共訪問(wèn)點(diǎn)。二、 結(jié)構(gòu)型模式l 適配器模式(Adapter Pattern) 定義: 將一個(gè)接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,適配器模式使接口不兼容的那些類可以一起工作,其別名為包裝器(Wrapper)。適配器模式既可以作為類結(jié)構(gòu)型模式,也可以作為對(duì)象結(jié)構(gòu)型模式。 Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldnt otherwise because of in

36、compatible interfaces.類適配器對(duì)象適配器 優(yōu)點(diǎn): 將目標(biāo)類和適配者類解耦。 增加了類的透明性和復(fù)用性。 靈活性和擴(kuò)展性都非常好。 缺點(diǎn): 類適配器模式的缺點(diǎn)是適配器類在很多編程語(yǔ)言中不能同時(shí)適配多個(gè)適配者類。 對(duì)象適配器模式的缺點(diǎn)是很難置換適配者類的方法。 適用范圍: 系統(tǒng)需要使用現(xiàn)有的類,而這些類的接口不符合系統(tǒng)的需要。 想要建立一個(gè)可以重復(fù)使用的類,用于與一些彼此之間沒(méi)有太大關(guān)聯(lián)的一些類一起工作。l 橋接模式(Bridge Pattern) 定義: 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。 Decouple an abstraction from its

37、 implementation so that the two can vary independently. 優(yōu)點(diǎn): 分離抽象接口及其實(shí)現(xiàn)部分。 橋接模式是比多繼承方案更好的解決方法。 提高了系統(tǒng)的可擴(kuò)充性,在兩個(gè)變化維度中任意擴(kuò)展一個(gè)維度,都不需要修改原有系統(tǒng)。 實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明,可以對(duì)用戶隱藏實(shí)現(xiàn)細(xì)節(jié)。 缺點(diǎn): 會(huì)增加系統(tǒng)的理解與設(shè)計(jì)難度。 其使用范圍具有一定的局限性。 適用范圍: 需要在構(gòu)件的抽象化角色和具體化角色之間增加更多的靈活性,避免在兩個(gè)層次之間建立靜態(tài)的繼承聯(lián)系。 抽象化角色和實(shí)現(xiàn)化角色可以以繼承的方式獨(dú)立擴(kuò)展而互不影響。 一個(gè)類存在兩個(gè)獨(dú)立變化的維度,且這兩個(gè)維度都需要進(jìn)

38、行擴(kuò)展。 設(shè)計(jì)要求需要獨(dú)立管理抽象化角色和具體化角色。 不希望使用繼承或因?yàn)槎鄬哟卫^承導(dǎo)致系統(tǒng)類的個(gè)數(shù)急劇增加的系統(tǒng)。l 組合模式(Composite Pattern) 定義:組合多個(gè)對(duì)象形成樹(shù)形結(jié)構(gòu)以表示“整體-部分”的結(jié)構(gòu)層次。組合模式對(duì)單個(gè)對(duì)象(即葉子對(duì)象)和組合對(duì)象(即容器對(duì)象)的使用具有一致性。Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objec

39、ts uniformly. 優(yōu)點(diǎn): 可以清楚地定義分層次的復(fù)雜對(duì)象。 客戶端可以一致的使用組合結(jié)構(gòu)或其中單個(gè)對(duì)象。 更容易在組合體內(nèi)加入對(duì)象構(gòu)件。 缺點(diǎn): 設(shè)計(jì)變得更加抽象。 很難對(duì)容器中的構(gòu)件類型進(jìn)行限制。 適用范圍: 需要表示一個(gè)對(duì)象整體或部分層次。 客戶端可以針對(duì)抽象構(gòu)件編程,無(wú)須關(guān)心對(duì)象層次結(jié)構(gòu)的細(xì)節(jié)。 對(duì)象的結(jié)構(gòu)是動(dòng)態(tài)的并且復(fù)雜程度不一樣,但客戶需要一致地處理它們。l 外觀模式(Facade Pattern) 定義: 外部與一個(gè)子系統(tǒng)的通信必須通過(guò)一個(gè)統(tǒng)一的外觀對(duì)象進(jìn)行,為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 Prov

40、ide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. 優(yōu)點(diǎn): 對(duì)客戶屏蔽子系統(tǒng)組件,減少了客戶處理的對(duì)象數(shù)目并使得子系統(tǒng)使用起來(lái)更加容易。 實(shí)現(xiàn)了子系統(tǒng)與客戶之間的松耦合關(guān)系。 降低了大型軟件系統(tǒng)中的編譯依賴性,并簡(jiǎn)化了系統(tǒng)在不同平臺(tái)之間的移植過(guò)程。 只是提供了一個(gè)訪問(wèn)子系統(tǒng)的統(tǒng)一入口,并不影響用戶直接使用子系統(tǒng)類。 缺點(diǎn): 不能很好地限制客戶使用子系統(tǒng)類。 在不引

41、入抽象外觀類的情況下,增加新的子系統(tǒng)可能需要修改外觀類或客戶端的源代碼,違背了“開(kāi)閉原則”。 適用范圍: 當(dāng)要為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口時(shí)可以使用外觀模式。 客戶程序與多個(gè)子系統(tǒng)之間存在很大的依賴性。 使用外觀模式定義系統(tǒng)中每一層的入口,層與層之間不直接產(chǎn)生聯(lián)系,而通過(guò)外觀類建立聯(lián)系,降低層之間的耦合度。l 代理模式(Proxy Pattern) 定義: 給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的引用。 Provide a surrogate or placeholder for another object to control access to it. 優(yōu)點(diǎn): 協(xié)調(diào)調(diào)用者

42、和被調(diào)用者。 遠(yuǎn)程代理使得客戶端可以訪問(wèn)在遠(yuǎn)程機(jī)器上的對(duì)象。 虛擬代理通過(guò)使用一個(gè)小對(duì)象來(lái)代表一個(gè)大對(duì)象,可以減少系統(tǒng)資源的消耗,對(duì)系統(tǒng)進(jìn)行優(yōu)化并提高運(yùn)行速度。 保護(hù)代理可以控制對(duì)真實(shí)對(duì)象的使用權(quán)限。 缺點(diǎn): 有些類型的代理模式可能會(huì)造成請(qǐng)求的處理速度變慢。 實(shí)現(xiàn)代理模式需要額外的工作,有些代理模式的實(shí)現(xiàn)非常復(fù)雜。 適用范圍: 遠(yuǎn)程(Remote)代理。 虛擬(Virtual)代理。 Copy-on-Write代理。 保護(hù)(Protect or Access)代理。 緩沖(Cache)代理。 防火墻(Firewall)代理。 同步化(Synchronization)代理。 智能引用(Smart

43、 Reference)代理。三、 行為型模式l 職責(zé)鏈模式(Chain of Responsibility Pattern) 定義:避免請(qǐng)求發(fā)送者與接收者耦合在一起,讓多個(gè)對(duì)象都有可能接收請(qǐng)求,將這些對(duì)象連接成一條鏈,并且沿著這條鏈傳遞請(qǐng)求,直到有對(duì)象處理它為止。Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request a

44、long the chain until an object handles it. 優(yōu)點(diǎn): 降低耦合度。 可簡(jiǎn)化對(duì)象的相互連接。 增強(qiáng)給對(duì)象指派職責(zé)的靈活性。 增加新的請(qǐng)求處理類很方便。 缺點(diǎn): 不能保證請(qǐng)求一定被接收。 系統(tǒng)性能將受到一定影響,而且在進(jìn)行代碼調(diào)試時(shí)不太方便;可能會(huì)造成循環(huán)調(diào)用。 適用范圍: 有多個(gè)對(duì)象可以處理同一個(gè)請(qǐng)求,具體哪個(gè)對(duì)象處理該請(qǐng)求由運(yùn)行時(shí)刻自動(dòng)確定。 在不明確指定接收者的情況下,向多個(gè)對(duì)象中的一個(gè)提交一個(gè)請(qǐng)求。 可動(dòng)態(tài)指定一組對(duì)象處理請(qǐng)求。l 命令模式(Command Pattern) 定義: 將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使我們可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,以及支持可撤銷的操作。 Encapsulate a request as an object, thereby letting you parameterize clients with di

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論