清華大學殷仁昆教授講授《軟件工程》講義-04_第1頁
清華大學殷仁昆教授講授《軟件工程》講義-04_第2頁
清華大學殷仁昆教授講授《軟件工程》講義-04_第3頁
清華大學殷仁昆教授講授《軟件工程》講義-04_第4頁
清華大學殷仁昆教授講授《軟件工程》講義-04_第5頁
已閱讀5頁,還剩123頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件工程軟件工程1 1軟件工程軟件工程第四章第四章 面向對象技術面向對象技術4.1 4.1 面向對象的概念面向對象的概念4.2 Rational4.2 Rational統一開發過程統一開發過程4.3 UML4.3 UML統一建模語言統一建模語言軟件工程軟件工程2 2n客觀世界中的應用問題面對的主體都是物理的或客觀世界中的應用問題面對的主體都是物理的或概念的概念的實體實體。n從這些實體出發,分析實體的從這些實體出發,分析實體的作用作用、責任責任以及它以及它們之間們之間協作協作,從而找出問題的解,是很自然的。,從而找出問題的解,是很自然的。n面向對象技術就是適合用這種方式分析和解決問面向對象技術就

2、是適合用這種方式分析和解決問題的方法。它的基石就是題的方法。它的基石就是問題領域中識別出來的問題領域中識別出來的各種對象各種對象。依賴這些對象提供的服務和對象之間。依賴這些對象提供的服務和對象之間相互的協同(關系),實現期望的功能。相互的協同(關系),實現期望的功能。n面向對象技術能夠在解決方案中直接模擬問題領面向對象技術能夠在解決方案中直接模擬問題領域,并與人類的思維習慣相一致。域,并與人類的思維習慣相一致。4.1 4.1 面向對象的概念面向對象的概念軟件工程軟件工程3 3什么是面向對象什么是面向對象nPeter Coad 和和 Edward Yourdon 提出面向對象方提出面向對象方法的

3、概念:法的概念: 面向對象面向對象 = 對象對象 + 分類分類 + 繼承繼承 + 消息通信消息通信n采用這四個概念開發的軟件系統就是面向對象的采用這四個概念開發的軟件系統就是面向對象的軟件系統。軟件系統。n一個面向對象的程序的每一成份應是一個面向對象的程序的每一成份應是對象對象,計算,計算是通過新的是通過新的對象的建立對象的建立和和對象之間的通信對象之間的通信來執行來執行的。的。軟件工程軟件工程4 4面向對象范型的特點面向對象范型的特點n面向對象系統中的對象是面向對象系統中的對象是數據抽象數據抽象與與過程抽象過程抽象的綜合體。的綜合體。n所謂所謂過程抽象過程抽象是指是指當使用某個過程時,無需關

4、當使用某個過程時,無需關心過程內部的實現細節,只要知道如何調用該心過程內部的實現細節,只要知道如何調用該過程以及該過程完成什么功能即可過程以及該過程完成什么功能即可。n所謂所謂數據抽象數據抽象是是指使用結構或記錄等方式把某指使用結構或記錄等方式把某個實體的數據集中起來,使得使用者能夠以個實體的數據集中起來,使得使用者能夠以單單元為單位元為單位使用數據使用數據。n面向對象范型在數據抽象中組織過程抽象。面向對象范型在數據抽象中組織過程抽象。軟件工程軟件工程5 5n面向對象系統的面向對象系統的狀態狀態分別保存在各個對象的數分別保存在各個對象的數據存儲中,而不是保存在一些全局變量中。據存儲中,而不是保

5、存在一些全局變量中。n系統解決問題的系統解決問題的控制流控制流包含在各個對象中的操包含在各個對象中的操作內。并通過作內。并通過消息傳遞消息傳遞,控制流從一個對象轉,控制流從一個對象轉移到另一個對象。移到另一個對象。n算法被分布到各種實體中。通過執行消息傳遞算法被分布到各種實體中。通過執行消息傳遞和對象中的操作實現算法的功能。和對象中的操作實現算法的功能。軟件工程軟件工程6 6面向對象的特點面向對象的特點n抽象性:對象包含數據抽象和行為抽象;抽象性:對象包含數據抽象和行為抽象;n封裝性:信息隱蔽(使用與實現分開);封裝性:信息隱蔽(使用與實現分開);n共享性:共享性:同一個類中所有對象共享相同的

6、數據結構同一個類中所有對象共享相同的數據結構和行為;和行為;同一應用中的對象通過繼承關系,共享共同一應用中的對象通過繼承關系,共享共同的數據結構和行為;同的數據結構和行為;不同應用中的對象通過復用,共享數據結不同應用中的對象通過復用,共享數據結構和行為。構和行為。軟件工程軟件工程7 7對象(對象(object) 對象是系統中描述客觀事物的實體,是構成系統對象是系統中描述客觀事物的實體,是構成系統的一個基本單元,由一組屬性值和一組對屬性進的一個基本單元,由一組屬性值和一組對屬性進行操作的服務組成。行操作的服務組成。 對象對象 = = 對象名對象名+ +數據數據( (屬性屬性)+)+操作操作( (

7、行為行為) ) 屬性值一般只能通過執行對象的操作來改變。屬性值一般只能通過執行對象的操作來改變。 操作(方法或服務)描述了對象執行的功能,若操作(方法或服務)描述了對象執行的功能,若通過消息傳遞,還可以為其他對象使用。通過消息傳遞,還可以為其他對象使用。 對象可以是對象可以是外部實體外部實體、信息結構信息結構、事件事件、角色角色、組織結構組織結構、地點或位置地點或位置、操作規程操作規程等。等。軟件工程軟件工程8 8計算機窗口中的三個多邊形對象計算機窗口中的三個多邊形對象(50, 60)(50, 85)(35, 60)(35, 85)(50, 45)(60, 35)(56, 10)(46, 37

8、)(10, 50)(20, 20)(23, 30)軟件工程軟件工程9 9表示多邊形的三個對象表示多邊形的三個對象drawmove( x, y)contains?(aPoint)(10, 50)(20, 20)(23, 30)triangledrawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2軟件工程軟件工程1010類(類(classcla

9、ss) 把具有相同屬性(數據結構)和服務(操作)把具有相同屬性(數據結構)和服務(操作)的對象歸在一起就形成了的對象歸在一起就形成了類類。 類的定義包括一組數據屬性和在數據上的一組類的定義包括一組數據屬性和在數據上的一組合法操作。合法操作。 屬于某一個類的各個對象都是該類的實例屬于某一個類的各個對象都是該類的實例(instance),它們都可使用類中的操作。,它們都可使用類中的操作。 類定義了各個實例所共有的數據結構,使用類類定義了各個實例所共有的數據結構,使用類的構造函數,可以在創建該類的實例時初始化的構造函數,可以在創建該類的實例時初始化這個實例的狀態。這個實例的狀態。軟件工程軟件工程11

10、 11由兩個四邊形對象導出一個類由兩個四邊形對象導出一個類drawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2drawmove( x, y)contains?(aPoint)point1point2point3point4quadrilateral軟件工程軟件工程1212消息消息(messagemessage)消息是一個對象向另一個對象傳

11、遞的信息。有消息是一個對象向另一個對象傳遞的信息。有四類消息:發送對象四類消息:發送對象請求接收對象提供服務請求接收對象提供服務、發送對象發送對象激活接收對象激活接收對象、發送對象、發送對象詢問接收對詢問接收對象象、發送對象、發送對象僅傳送信息給接收對象僅傳送信息給接收對象。消息的使用類似于函數調用,消息中指定了某消息的使用類似于函數調用,消息中指定了某一個實例,一個操作名和一個參數表(可能是一個實例,一個操作名和一個參數表(可能是空的),如空的),如quadrilateral1. move(15, 20) 。接收消息的實例執行消息中指定的操作,并將接收消息的實例執行消息中指定的操作,并將形式

12、參數與參數表中相應的值結合起來。形式參數與參數表中相應的值結合起來。軟件工程軟件工程1313繼承(繼承(inheritanceinheritance) 如果某幾個類之間具有共性的東西如果某幾個類之間具有共性的東西 ( (屬性和行屬性和行為為) ),抽取出來放在一個泛化類中,將各個類的,抽取出來放在一個泛化類中,將各個類的特有的東西放在特化類中分別描述,則可建立特有的東西放在特化類中分別描述,則可建立起特化類對泛化類的繼承。起特化類對泛化類的繼承。 繼承是使用已有的類定義做為基礎建立新類的繼承是使用已有的類定義做為基礎建立新類的定義技術。定義技術。 已有的類可當做泛化類(父類)來引用,則新已有的

13、類可當做泛化類(父類)來引用,則新類相應地可當做特化類(子類)來引用。類相應地可當做特化類(子類)來引用。軟件工程軟件工程1414n建立繼承結構的好處:建立繼承結構的好處: 易編程、易理解易編程、易理解 代碼短代碼短, , 結構清晰結構清晰 易修改易修改 共同部分只要在一處修改即可共同部分只要在一處修改即可 易增加新類易增加新類 只須描述不同部分只須描述不同部分n怎樣建立一個好的繼承層次怎樣建立一個好的繼承層次 類可以從父類繼承,父類又可以從它的父類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼承結構。類繼承,形成多層次的繼承結構。 當增加一個新類時,不一定在最低層,可當增加一個新類

14、時,不一定在最低層,可能需要插在中間層,這樣可能需要調整原能需要插在中間層,這樣可能需要調整原來的層次結構。來的層次結構。軟件工程軟件工程1515建立一個新類建立一個新類起重車起重車。它的。它的底底盤盤、發動機發動機、輪胎輪胎、驅動裝置驅動裝置等都在已有類等都在已有類汽車汽車中。關系如中。關系如右圖所示。新類是已有類的特右圖所示。新類是已有類的特殊情形。這時直接讓殊情形。這時直接讓起重車起重車類類作為作為汽車汽車類的子類即可。類的子類即可。起重車起重車類類汽車類汽車類汽車汽車載重車載重車大轎車大轎車救火車救火車起重車起重車軟件工程軟件工程1616增加一個新類增加一個新類拖拉機拖拉機。它的。它的

15、底盤底盤、發動機發動機等與等與汽車汽車不同,但不同,但驅動裝置驅動裝置、輪胎輪胎等與等與汽車汽車相同。相同。調整繼承結構。建立一個新的一般的調整繼承結構。建立一個新的一般的車輛類車輛類,把把拖拉機拖拉機與與汽車類汽車類的共性放到的共性放到車輛類車輛類中,中,拖拉拖拉機機與與汽車類汽車類都成為都成為車輛類車輛類的子類。的子類。車輛車輛是抽象類,相關操作到子類是抽象類,相關操作到子類汽車汽車找找汽車汽車拖拉機拖拉機車輛車輛汽車汽車拖拉機拖拉機軟件工程軟件工程1717另一種情形是在已有類的基礎上加入新類,另一種情形是在已有類的基礎上加入新類,使得新類成為已有類的泛化類。使得新類成為已有類的泛化類。例

16、如,已經存在例如,已經存在三角形類三角形類,四邊形類四邊形類,想加,想加入一個入一個多邊形類多邊形類,并使之成為,并使之成為三角形三角形和和四邊四邊形類形類的泛化類。的泛化類。三角形類三角形類四邊形類四邊形類多多邊邊形形類類六邊形六邊形多邊形多邊形四邊形四邊形三角形三角形軟件工程軟件工程1818前三個情況主要是通過查找(應用領域)類庫,前三個情況主要是通過查找(應用領域)類庫,找到可以找到可以原封不動地繼承的類原封不動地繼承的類或可以或可以通過調整通過調整繼承層次結構繼承的類繼承層次結構繼承的類。但如果在已有的繼承。但如果在已有的繼承層次中找不到可以繼承的已有類,就從新開始層次中找不到可以繼承

17、的已有類,就從新開始完全獨立地建立一個類。完全獨立地建立一個類。n如果一個類需要用到多個現有類的特征,可以如果一個類需要用到多個現有類的特征,可以從多個類中繼承,稱為從多個類中繼承,稱為多繼承多繼承。n例如例如退休教師退休教師是繼承是繼承退休者退休者和和教師教師這兩個類的這兩個類的某些特征或行為而得到的一個新類。某些特征或行為而得到的一個新類。多繼承多繼承軟件工程軟件工程1919多態性和動態綁定多態性和動態綁定n對象互相通信,即一個對象發消息給另一個對對象互相通信,即一個對象發消息給另一個對象,執行某些行為或又發消息給另外的對象,象,執行某些行為或又發消息給另外的對象,從而執行系統的功能。從而

18、執行系統的功能。退休者退休者教師教師退休教師退休教師軟件工程軟件工程2020多態性多態性指同名的函數或操作可在不同類型的指同名的函數或操作可在不同類型的對象中有各自相應的實現。例如對象中有各自相應的實現。例如v 整數整數“+”:整數加法:整數加法v 浮點數浮點數“+”:浮點數加法:浮點數加法v 字符串字符串“+”:字符串連接:字符串連接v 點點“+”:兩個點的坐標位置分別疊加:兩個點的坐標位置分別疊加具有多態的函數或操作在運行時才根據實際具有多態的函數或操作在運行時才根據實際的對象類型,執行相應實現程序的連接,此的對象類型,執行相應實現程序的連接,此即動態綁定。即動態綁定。軟件工程軟件工程21

19、21n例如,想要在屏幕上畫一系列多邊形,例如,想要在屏幕上畫一系列多邊形,多態多態性性允許發送消息允許發送消息draw,根據消息接收對象的,根據消息接收對象的類型不同,畫出不同的多邊形。類型不同,畫出不同的多邊形。ndraw針對的是一系列的類型(類族)而不僅針對的是一系列的類型(類族)而不僅僅是一個類型。僅是一個類型。n多態性的實現有多態性的實現有 2 種:種: 利用利用繼承繼承關系,把所有數據類型當作一個關系,把所有數據類型當作一個抽象數據類型的子類型。抽象數據類型的子類型。軟件工程軟件工程2222 利用利用模板模板機制,把所有可能的數據類型用機制,把所有可能的數據類型用一個參數化的數據類型

20、來代替。一個參數化的數據類型來代替。n動態綁定保證在程序執行時實施與對象動態綁定保證在程序執行時實施與對象 P 連連接的操作。如果接的操作。如果 P 是是矩形類矩形類的實例,則執行的實例,則執行與與矩形矩形連接的操作,如果連接的操作,如果 P 是是三角形類三角形類的實的實例,則執行與例,則執行與三角形三角形連接的操作。連接的操作。n動態綁定把函數調用與目標代碼塊的連接延動態綁定把函數調用與目標代碼塊的連接延遲到運行時進行。這樣,只有發送消息時才遲到運行時進行。這樣,只有發送消息時才與接收消息實例的一個操作綁定。與接收消息實例的一個操作綁定。軟件工程軟件工程23234.2 Rational4.2

21、 Rational統一開發過程統一開發過程最佳軟件開發實踐最佳軟件開發實踐 為了以一種更好的、迭代的、可預測的方式開為了以一種更好的、迭代的、可預測的方式開發軟件產品,總結了軟件開發的最佳實踐:發軟件產品,總結了軟件開發的最佳實踐:迭代式軟件開發;迭代式軟件開發;需求管理;需求管理;基于構件的軟件體系結構;基于構件的軟件體系結構;建立軟件可視化模型;建立軟件可視化模型;不斷驗證軟件質量;不斷驗證軟件質量;控制變更。控制變更。軟件工程軟件工程2424Rational統一開發過程統一開發過程 軟件開發過程的作用是:軟件開發過程的作用是:成為開發組活動順序的向導。成為開發組活動順序的向導。詳細說明需

22、要開發哪些制品,何時開發。詳細說明需要開發哪些制品,何時開發。指導每一個成員及整個開發組的工作。指導每一個成員及整個開發組的工作。提供監控和度量項目產品和活動所依據的提供監控和度量項目產品和活動所依據的準則。準則。如果沒有一個良好定義的過程,開發組將各行如果沒有一個良好定義的過程,開發組將各行其是,開發成功與否完全依賴個別優秀的人才,其是,開發成功與否完全依賴個別優秀的人才,這不是能夠長久的。這不是能夠長久的。軟件工程軟件工程2525nRational統一開發過程(統一開發過程(RUP, Rational Unify Process)描述了如何在軟件開發組織中嚴格分)描述了如何在軟件開發組織中

23、嚴格分配任務和職責的方法。配任務和職責的方法。nRUP 是一個過程產品,是一個過程產品,軟件過程也是軟件。軟件過程也是軟件。nRUP 采用二維的過程結構:采用二維的過程結構:橫軸表明過程的生存周期,它反映了過程被橫軸表明過程的生存周期,它反映了過程被激活時的動態情況,用周期、階段、迭代和激活時的動態情況,用周期、階段、迭代和里程碑表示。里程碑表示。縱軸表明過程的靜態狀況,通過過程構件、縱軸表明過程的靜態狀況,通過過程構件、活動、工作流、制品和工作人員描述過程。活動、工作流、制品和工作人員描述過程。軟件工程軟件工程2626初始初始細化細化構造構造移交移交階階 段段初始化初始化細化細化#1細化細化

24、#2構造構造#1 構造構造#2 構造構造#3 移交移交#1移交移交#2迭代迭代 工作流工作流業務建模業務建模需求需求 分析與設計分析與設計實現實現測試測試實施實施配置和變更管理配置和變更管理項目管理項目管理環境環境沿時間軸的組織結構沿時間軸的組織結構沿內容軸的組織沿內容軸的組織軟件工程軟件工程2727過程的靜態描述:過程模型過程的靜態描述:過程模型 過程模型中的主要模型元素有過程模型中的主要模型元素有 4 種:種:v工作人員:誰做(工作人員:誰做(Who)v活動:怎么做(活動:怎么做(How)v制品:做什么(制品:做什么(what)v工作流:何時做(工作流:何時做(when) 過程的中心概念是

25、工作人員,工作人員不是過程的中心概念是工作人員,工作人員不是指某一個人,而是指完成工作的角色。工作指某一個人,而是指完成工作的角色。工作人員定義人們應履行的行為和職責。人員定義人們應履行的行為和職責。軟件工程軟件工程2828 活動定義了工作人員所執行的工作。有活動定義了工作人員所執行的工作。有 3 類類步驟:步驟:v 思考步驟思考步驟v 執行步驟執行步驟v 評審步驟評審步驟 制品是過程生產、修改或使用的一些信息。制品是過程生產、修改或使用的一些信息。RUP 的制品分為的制品分為 5 個信息集。個信息集。 管理集管理集:計劃制品、操作制品:計劃制品、操作制品 需求集需求集:構想文檔、項目相關人員

26、需求、:構想文檔、項目相關人員需求、用例模型和業務模型用例模型和業務模型軟件工程軟件工程2929v 設計集設計集:設計模型、軟件體系結構描述、:設計模型、軟件體系結構描述、測試模型測試模型v 實現集實現集:源代碼和可執行程序、相關數:源代碼和可執行程序、相關數據結構和數據文檔據結構和數據文檔v 實施集實施集:安裝資料、用戶文檔、培訓材:安裝資料、用戶文檔、培訓材料料v 工作流用來描述生成結果的活動序列,用工作流用來描述生成結果的活動序列,用以描述工作人員之間的交互。在以描述工作人員之間的交互。在 RUP 中中共有共有 9 個核心過程工作流,包括個核心過程工作流,包括 6 個核心個核心工程工作流

27、和工程工作流和 3 個核心支持工作流。個核心支持工作流。軟件工程軟件工程3030v 業務建模工作流業務建模工作流:描述業務過程的本質和:描述業務過程的本質和執行情形。執行情形。v 需求工作流需求工作流:定義系統構想,使用用例模:定義系統構想,使用用例模型和補充規格說明定義系統軟件需求,管型和補充規格說明定義系統軟件需求,管理系統范圍和需求變更。理系統范圍和需求變更。v 分析和設計工作流分析和設計工作流:研究實現環境和系統:研究實現環境和系統構件的效用,定義軟件的組織結構,把需構件的效用,定義軟件的組織結構,把需求獲取結果轉化為實現規格。求獲取結果轉化為實現規格。v 實現工作流實現工作流: 建立

28、代碼的分層結構,實現建立代碼的分層結構,實現類和對象,進行單元測試和系統集成。類和對象,進行單元測試和系統集成。軟件工程軟件工程3131v 測試工作流測試工作流:根據事先定義的度量和準根據事先定義的度量和準則檢查產品,確認產品是否滿足或者超則檢查產品,確認產品是否滿足或者超出事先定義并被一致接受的需求。出事先定義并被一致接受的需求。v 實施工作流實施工作流:在實際使用環境中測試軟在實際使用環境中測試軟件、包裝要交付的軟件、發布軟件產品、件、包裝要交付的軟件、發布軟件產品、培訓最終用戶及銷售人員。培訓最終用戶及銷售人員。n核心支持工作流有核心支持工作流有 項目管理工作流項目管理工作流 配置和變更

29、管理工作流配置和變更管理工作流 環境環境工作流工作流軟件工程軟件工程3232過程的動態描述:迭代開發過程的動態描述:迭代開發 將一個大項目分解為可連續應用瀑布模型將一個大項目分解為可連續應用瀑布模型的幾個小部分。在對一部分進行分析、設的幾個小部分。在對一部分進行分析、設計、實現并確認后,再對下一部分進行分計、實現并確認后,再對下一部分進行分析、設計、實現和確認。以此進行下去,析、設計、實現和確認。以此進行下去,直到整個項目完成。在直到整個項目完成。在 RUP 中,迭代過程中,迭代過程分為幾個階段。分為幾個階段。初始初始細化細化構造構造移交移交生存周期生存周期構架里程碑構架里程碑生存周期生存周期

30、目標里程碑目標里程碑最初運行最初運行能力里程碑能力里程碑產品發布產品發布里程碑里程碑時間時間軟件工程軟件工程3333初始階段初始階段:確定最終產品的構想及其用例,:確定最終產品的構想及其用例,定義項目范圍。定義項目范圍。細化階段細化階段:計劃需完成活動和資源,詳細說:計劃需完成活動和資源,詳細說明產品特性并設計軟件體系結構。明產品特性并設計軟件體系結構。構造階段構造階段:構造整個產品,逐步完善軟件體:構造整個產品,逐步完善軟件體系結構和計劃,直到產品(完整的構想)已系結構和計劃,直到產品(完整的構想)已完全準備好交付給用戶。完全準備好交付給用戶。移交階段移交階段:移交產品給用戶,包括制造,交:

31、移交產品給用戶,包括制造,交付,培訓,支持及維護產品。付,培訓,支持及維護產品。軟件工程軟件工程3434n這這 4 個階段構成開發周期,周期結束時產生個階段構成開發周期,周期結束時產生一代新的軟件產品。一代新的軟件產品。n軟件產品產生于初始開發周期,隨著重復執軟件產品產生于初始開發周期,隨著重復執行同樣的過程,軟件發展到下一代產品,這行同樣的過程,軟件發展到下一代產品,這一時期即為軟件的進化周期。一時期即為軟件的進化周期。 I E C T I E C T I E C T V1V2V3初始開發周期初始開發周期進化周期進化周期軟件工程軟件工程3535Rational統一過程的特點:統一過程的特點:

32、v用例驅動的、以體系結構(架構)為中心用例驅動的、以體系結構(架構)為中心的、迭代和增量的過程。的、迭代和增量的過程。v用例建模技術可以用為大多數項目相關人用例建模技術可以用為大多數項目相關人員理解的形式來表述問題。員理解的形式來表述問題。 參與者(參與者(Actor) 用例(用例(Use Case) 場景場景(scenario) 事件流(事件流(event flow)Actoruse case軟件工程軟件工程3636n用例和參與者的事例用例和參與者的事例 銀行儲戶通過自動取款機(自動柜員機)提款,銀行儲戶通過自動取款機(自動柜員機)提款,轉賬或檢查賬戶余額。用一組用例表達如下:轉賬或檢查賬戶

33、余額。用一組用例表達如下:轉賬轉賬提款提款檢察賬戶余額檢察賬戶余額儲戶儲戶軟件工程軟件工程3737n用例模型用例模型 將整個系統或子系統的所有用例,以及將整個系統或子系統的所有用例,以及與之交互的參與者集合起來構成系統的與之交互的參與者集合起來構成系統的用例模型。用例模型。 用例模型給出系統預期功能模型和系統用例模型給出系統預期功能模型和系統上下文環境模型,它成為開發人員和用上下文環境模型,它成為開發人員和用戶之間的契約。戶之間的契約。 用例模型的目的是確保系統能處理所有用例模型的目的是確保系統能處理所有的功能性需求。的功能性需求。軟件工程軟件工程3838n用例驅動的過程用例驅動的過程 “用例

34、驅動用例驅動” 指開發過程是基于用例,從指開發過程是基于用例,從一個工作流向下一個工作流,逐步前進的。一個工作流向下一個工作流,逐步前進的。 開發初期,人們使用用例獲取用戶需求,開發初期,人們使用用例獲取用戶需求,建立用例模型,描述系統的全部功能。建立用例模型,描述系統的全部功能。 基于用例模型,人們創建一系列實現這些基于用例模型,人們創建一系列實現這些用例的分析模型、設計模型和實現模型。用例的分析模型、設計模型和實現模型。 測試人員測試實現確保系統正確實現了用測試人員測試實現確保系統正確實現了用例。例。軟件工程軟件工程3939n以體系結構為中心的過程以體系結構為中心的過程 用例的選擇不是孤立

35、的,它與軟件的體系結用例的選擇不是孤立的,它與軟件的體系結構是密切相關的。構是密切相關的。 軟件體系結構的作用與一個建筑的體系結構軟件體系結構的作用與一個建筑的體系結構類似。對于一個建筑,可以從框架結構、供類似。對于一個建筑,可以從框架結構、供熱、上下水、供電、天然氣、其他服務管線熱、上下水、供電、天然氣、其他服務管線等不同角度來考察它。使得施工人員在施工等不同角度來考察它。使得施工人員在施工前就能全面了解這個建筑。前就能全面了解這個建筑。 軟件的體系結構也從不同角度描述了即將構軟件的體系結構也從不同角度描述了即將構造的系統,包括系統的造的系統,包括系統的靜態特征靜態特征和和動態特征動態特征。

36、軟件工程軟件工程4040 每一種產品都有功能和表現形式兩個方面。每一種產品都有功能和表現形式兩個方面。用例就是功能用例就是功能,體系結構就是表現形式體系結構就是表現形式。 在開發過程中,必須兼顧功能和表現形式,在開發過程中,必須兼顧功能和表現形式,做出適當權衡,才能得到好的產品。因此,做出適當權衡,才能得到好的產品。因此,用例和體系結構必須在迭代中并行演進用例和體系結構必須在迭代中并行演進。 為了找到可以演進的體系結構,設計師必須為了找到可以演進的體系結構,設計師必須從全面了解系統的主要功能(即主要用例)從全面了解系統的主要功能(即主要用例)入手。入手。軟件工程軟件工程41414.3 4.3

37、統一建模語言統一建模語言UMLUMLnUML 是是Unified Modeling Language的縮寫。的縮寫。 它它是一種標準的語言,以直觀的表述、定義、構造是一種標準的語言,以直觀的表述、定義、構造和文檔化軟件為主的系統的工作制品。和文檔化軟件為主的系統的工作制品。nUML聚集了來自下列建模的精髓:聚集了來自下列建模的精髓: 數據建模(實體關系圖數據建模(實體關系圖ERD) 業務建模業務建模 (工作流)(工作流) 對象建模對象建模 構件建模構件建模n它可用于軟件生命周期各個過程,并適用于各種它可用于軟件生命周期各個過程,并適用于各種不同的實現技術。不同的實現技術。軟件工程軟件工程424

38、2UMLUML的特點的特點n統一標準統一標準 融合了當前一些流行的面向對象開發方法融合了當前一些流行的面向對象開發方法的主要概念和技術,成為一種面向對象的的主要概念和技術,成為一種面向對象的標準化的統一建模語言。標準化的統一建模語言。 提供了標準的面向對象的模型元素的定義提供了標準的面向對象的模型元素的定義和表示法,有標準的語言工具可用。和表示法,有標準的語言工具可用。 已成為工業標準化組織已成為工業標準化組織OMG的正式標準。的正式標準。n面向對象面向對象 支持面向對象的主要概念,提供了一批基支持面向對象的主要概念,提供了一批基本的模型元素的表示圖形和方法。本的模型元素的表示圖形和方法。軟件

39、工程軟件工程4343n可視化,表示能力強大可視化,表示能力強大 一種圖形化語言,系統的邏輯模型和實現一種圖形化語言,系統的邏輯模型和實現模型都能用模型都能用UML的模型圖形清晰地表示。的模型圖形清晰地表示。 可以處理與軟件的說明和文檔有關的問題。可以處理與軟件的說明和文檔有關的問題。 提供了語言的擴展機制,用戶可以根據需提供了語言的擴展機制,用戶可以根據需要增加定義自己的衍型(要增加定義自己的衍型(StereoType)、標)、標記值和約束等。記值和約束等。 可用于各種復雜類型的軟件系統的建模。可用于各種復雜類型的軟件系統的建模。n獨立于過程獨立于過程 系統建模語言,獨立于開發過程。系統建模語

40、言,獨立于開發過程。軟件工程軟件工程4444n容易掌握使用容易掌握使用 概念明確,建模表示法簡潔明了,圖形結構概念明確,建模表示法簡潔明了,圖形結構清晰,容易掌握使用。清晰,容易掌握使用。 著重學習三個方面的主要內容:著重學習三個方面的主要內容: (1) UML的基本模型元素的基本模型元素 (2) 組織模型元素的規則組織模型元素的規則 (3) UML語言的公共機制語言的公共機制n與程序設計語言的關系與程序設計語言的關系 用用Java,C+ 等編程語言可實現一個系統。等編程語言可實現一個系統。 一些一些CASE工具可以根據工具可以根據 UML所建立的系統所建立的系統模型來產生模型來產生Java、

41、C+ 等代碼框架。等代碼框架。軟件工程軟件工程4545UMLUML的定義的定義nUML定義有兩個組成部分:語義和表示法。定義有兩個組成部分:語義和表示法。n語義語義用自然語言描述,用自然語言描述,表示法表示法定義了定義了UML的可的可視化標準表示符號,這決定了視化標準表示符號,這決定了UML是一種可視是一種可視化的建模語言。化的建模語言。n在語義上,模型是元模型的實例。在語義上,模型是元模型的實例。UML定義給定義給出了語法結構的精確定義。出了語法結構的精確定義。n使用使用UML時,要從不同的角度觀察系統,為此時,要從不同的角度觀察系統,為此定義了概念定義了概念“視圖視圖”。視圖是對系統的模型

42、在某。視圖是對系統的模型在某方面的投影,注重于系統的某個方面。方面的投影,注重于系統的某個方面。軟件工程軟件工程4646UMLUML的構成的構成nUML的三個主要組成元素的三個主要組成元素基本構造塊基本構造塊(basic building blocks )組織構造塊的組織構造塊的規則規則(rules)運用于整個運用于整個UML的的公共機制公共機制(common mechanisms)nUML包括三種基本構造塊包括三種基本構造塊:事物(事物(things)關系(關系(relationships)1) 圖(圖(diagrams)軟件工程軟件工程4747UML UML 事物事物 結構事物結構事物Cl

43、ass(類)(類)Interface(接口)(接口) 描述了一個類或構件的描述了一個類或構件的服務(操作)集。服務(操作)集。ISpelling 類名類名屬性屬性操作操作open( )close( )move( )display( )originsizeWindow操作操作屬性屬性類名類名軟件工程軟件工程4848Collaboration(協作)(協作) 合作完成某個特定任務的一組類及其關聯的合作完成某個特定任務的一組類及其關聯的集合,用于對用例的實現建模。集合,用于對用例的實現建模。Use Case(用例)(用例) 表示系統想要實現的行為,不關心這些行為表示系統想要實現的行為,不關心這些行為

44、是怎樣實現的。是怎樣實現的。Place OrderOrderManagement用例用例協作協作實現實現實現實現協作協作用例用例軟件工程軟件工程4949Active Class(主動類)(主動類) 與一般類相同,但它至少擁有一個進程或與一般類相同,但它至少擁有一個進程或線程,故能夠啟動控制活動。線程,故能夠啟動控制活動。Component(構件)(構件) 系統中物理的、可替系統中物理的、可替代的部件。代的部件。Orderform.java suspend()flush()EventManager軟件工程軟件工程5050Node(節點)(節點) 系統在運行時存在的物理元素。系統在運行時存在的物理

45、元素。數據庫數據庫服務器服務器應用應用服務器服務器課程課程管理管理成績成績管理管理軟件工程軟件工程5151UMLUML事物事物 行為事物行為事物Interaction(交互)(交互)n交互由在特定的上下文環境中共同完成一定任交互由在特定的上下文環境中共同完成一定任務的一組對象之間傳遞的消息組成。務的一組對象之間傳遞的消息組成。n交互涉及的元素包括消息、動作序列和鏈。交互涉及的元素包括消息、動作序列和鏈。p:Person:CompanyAssign(development)消息消息有名對象有名對象匿名對象匿名對象有名對象有名對象匿名對象匿名對象消息消息軟件工程軟件工程5252State Mach

46、ine(狀態機)(狀態機) 狀態機描述了一個對象或一個交互在生存狀態機描述了一個對象或一個交互在生存周期內響應事件所經歷的狀態序列。周期內響應事件所經歷的狀態序列。 狀態機涉及的元素包括狀態、轉換、事件狀態機涉及的元素包括狀態、轉換、事件活動等。活動等。initializingcommandidleKeypressFinishedExit軟件工程軟件工程5353UMLUML事物事物 分組事物分組事物package(包)(包) 包是把元素組織成組的機制,結構事物、行包是把元素組織成組的機制,結構事物、行為事物甚至其他分組事物都可以放進包內。為事物甚至其他分組事物都可以放進包內。 包不象構件(僅在

47、運行時存在),它純粹是包不象構件(僅在運行時存在),它純粹是概念上的(即它僅在開發時存在)。概念上的(即它僅在開發時存在)。用戶接口用戶接口包包業務對象業務對象包包應用包應用包軟件工程軟件工程5454UMLUML事物事物 注釋事物注釋事物Note(注釋)(注釋) 依附于一個元素或一組元素之上,對其進依附于一個元素或一組元素之上,對其進行約束或解釋的簡單符號。行約束或解釋的簡單符號。CashAccountpresentValue()See policy8-5-96.doc for details about these algorithms.軟件工程軟件工程5555UML Relationshi

48、psUML Relationships(關系)(關系)nUML中有中有 4 種關系:種關系: 依賴依賴 關聯關聯 泛化泛化 實現實現 n關系特征:關系特征: 這四種關系是這四種關系是UML模型中可以包含的基本模型中可以包含的基本關系。關系。 它們也有變體。例如,依賴的變體有細化、它們也有變體。例如,依賴的變體有細化、跟蹤、包含和延伸。跟蹤、包含和延伸。軟件工程軟件工程5656依賴(依賴(Dependency) 兩個事物之間的語義關系,其中目標事物發兩個事物之間的語義關系,其中目標事物發生變化會影響源事物的語義。生變化會影響源事物的語義。 圖中虛線箭頭從圖中虛線箭頭從源源事物指向事物指向目標目標

49、事物,表示事物,表示源事物依賴于目標事物。源事物依賴于目標事物。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator軟件工程軟件工程5757n兩個類之間的依賴關系可以是:兩個類之間的依賴關系可以是: 源類源類訪問訪問定義在目標類內部的數據值;定義在目標類內部的數據值; 源類的操作源類的操作調用調用了定義在目標類的操作;了定義在目標類的操作; 源類的返回類或參數是目標類的源類的返回類或參數是目標類的實例實例;n如果在順序圖中的兩個對象存在消息的傳送,如果在順序圖中的兩個對象存在消息的傳送,而且它們之間沒有結構方面的連接,可以在類而且它

50、們之間沒有結構方面的連接,可以在類圖上用依賴關系建模。圖上用依賴關系建模。n依賴的變體包含特定的語義,表明類之間的關依賴的變體包含特定的語義,表明類之間的關系、包之間的關系、用例之間的關系、對象之系、包之間的關系、用例之間的關系、對象之間的關系、建模元素與模型之間的關系等。間的關系、建模元素與模型之間的關系等。軟件工程軟件工程5858n類之間的依賴關系類之間的依賴關系可以是:可以是:v 友元依賴友元依賴 v目標類(如二叉樹)視源類(如迭代器)目標類(如二叉樹)視源類(如迭代器)為友元,允許源類訪問目標類的所有私有屬為友元,允許源類訪問目標類的所有私有屬性和操作。性和操作。v 導出依賴導出依賴

51、a.兩個類或對象如果存在導出依賴,則表兩個類或對象如果存在導出依賴,則表明源類(如年齡)可以從目標類(如出生年明源類(如年齡)可以從目標類(如出生年月)通過計算導出。月)通過計算導出。IteratorBinaryTreeAgeBirthDay軟件工程軟件工程5959v 細化依賴細化依賴 在類圖中表示同一模型的不同詳細程度的規在類圖中表示同一模型的不同詳細程度的規格說明,源類比目標類更為詳細。格說明,源類比目標類更為詳細。v 實例化依賴實例化依賴 若要強調一個類的對象是由另一個類的對象若要強調一個類的對象是由另一個類的對象創建的,可用實例化依賴。它表明源類創建創建的,可用實例化依賴。它表明源類創

52、建了目標類的一個實例。了目標類的一個實例。Chessboardfrom optimizedchessboardfrom simpleArrayStack軟件工程軟件工程6060v 使用依賴使用依賴 不加任何修飾的依賴即為使用依賴。也可用不加任何修飾的依賴即為使用依賴。也可用修飾修飾強調源類的語義依賴于目標類強調源類的語義依賴于目標類的具有共有可見性的構成的語義。的具有共有可見性的構成的語義。v 綁定(綁定(Binding)依賴)依賴v這種依賴關系中的目標類是模板類,源這種依賴關系中的目標類是模板類,源類是從模板實例化的類。類是從模板實例化的類。Binary SearchTreeBinary T

53、ree Stack Stack軟件工程軟件工程6161n包之間的依賴關系包之間的依賴關系可以是:可以是:訪問依賴訪問依賴 它表明源包被賦予了可訪問目標包的權它表明源包被賦予了可訪問目標包的權限。限。導入依賴導入依賴 a.它表明了源包可以訪問目標包里的元素,它表明了源包可以訪問目標包里的元素,但各個包有自己獨立的命名空間,這意味著屬但各個包有自己獨立的命名空間,這意味著屬于不同包的兩個元素可以重名。導入依賴可以于不同包的兩個元素可以重名。導入依賴可以使目標包內的公共可見元素進入源包的命名空使目標包內的公共可見元素進入源包的命名空間。間。sourcetargetsourcetarget軟件工程軟件

54、工程6262n用例之間的依賴關系用例之間的依賴關系可以是:可以是:包含依賴包含依賴 它表明源用例顯式地包含目標用例作為它表明源用例顯式地包含目標用例作為其行為的一部分。此時將源用例稱為其行為的一部分。此時將源用例稱為基用例基用例,目標用例稱為目標用例稱為內含用例內含用例。如果兩個用例之間具有包含依賴關系,如果兩個用例之間具有包含依賴關系,則表明基用例的動作序列中有特定的步驟把內則表明基用例的動作序列中有特定的步驟把內含用例的動作序列包含進來。含用例的動作序列包含進來。a.擴展依賴擴展依賴 base use caseinclusion use case軟件工程軟件工程6363它表明源用例擴展了目

55、標用例的行為。此時,它表明源用例擴展了目標用例的行為。此時,源用例稱為源用例稱為基用例基用例,目標用例稱為,目標用例稱為擴展用例擴展用例。擴展用例在特定條件下為基用例提供附加的動擴展用例在特定條件下為基用例提供附加的動態行為。例如,在人機交互過程中出現差錯時態行為。例如,在人機交互過程中出現差錯時進行的異常處理即為擴展動作。進行的異常處理即為擴展動作。擴展依賴與包含依賴的區別在于,如果僅將擴擴展依賴與包含依賴的區別在于,如果僅將擴展從基用例地動作序列中去除,基用例仍然是展從基用例地動作序列中去除,基用例仍然是語義完備的,即它的執行仍將產生有意義的結語義完備的,即它的執行仍將產生有意義的結果。而

56、包含依賴則不然。果。而包含依賴則不然。base use caseextension use case軟件工程軟件工程6464n對象之間的依賴關系對象之間的依賴關系可以是:可以是:v 轉換依賴轉換依賴 v當需要在交互圖上表示對象狀態的轉換當需要在交互圖上表示對象狀態的轉換時可以用轉換依賴。主要強調由于消息而導致時可以用轉換依賴。主要強調由于消息而導致對象狀態的改變。轉換依賴連接的目標對象和對象狀態的改變。轉換依賴連接的目標對象和源對象是同一個對象。源對象是同一個對象。v 調用依賴調用依賴 v當需要在交互圖或對象圖上顯式強調對當需要在交互圖或對象圖上顯式強調對象之間或操作之間的調用關系時要用調用依

57、賴。象之間或操作之間的調用關系時要用調用依賴。它表明源對象引用了目標對象的操作,或源操它表明源對象引用了目標對象的操作,或源操作引用了目標操作。作引用了目標操作。a.復制依賴復制依賴 軟件工程軟件工程6565為了在交互圖或活動圖上描述對象復制的動作為了在交互圖或活動圖上描述對象復制的動作可以采用復制依賴。它連接兩個對象,目標對可以采用復制依賴。它連接兩個對象,目標對象是源對象的完全相同而又獨立的副本。象是源對象的完全相同而又獨立的副本。v 發送依賴發送依賴 它連接一個對象(在源端)和一個消息(在目它連接一個對象(在源端)和一個消息(在目標端),表明源對象在交互過程中發送了一個標端),表明源對象

58、在交互過程中發送了一個消息,可以用在狀態機的描述中。消息,可以用在狀態機的描述中。它針對內嵌有狀態機的對象,可用來描述如何它針對內嵌有狀態機的對象,可用來描述如何通過發送信號以產生某種事件的動作。通過發送信號以產生某種事件的動作。n建模元素與模型之間的依賴關系建模元素與模型之間的依賴關系是:是:v 回溯依賴回溯依賴 d.它連接兩個模型元素,表明目標是源的歷它連接兩個模型元素,表明目標是源的歷史上的前驅。如交互和協作就是從用例導出的。史上的前驅。如交互和協作就是從用例導出的。軟件工程軟件工程6666關聯(關聯(Association) 關聯關聯是一種結構關系,它描述一組鏈,這是一種結構關系,它描

59、述一組鏈,這些鏈是類之間或類與接口之間的連接。通些鏈是類之間或類與接口之間的連接。通過這種連接,一個對象可以訪問另一個對過這種連接,一個對象可以訪問另一個對象的屬性或調用另一個對象的操作。象的屬性或調用另一個對象的操作。 關聯是雙向的,其中的角色代表一個類的關聯是雙向的,其中的角色代表一個類的對象在另一個類中的存在。對象在另一個類中的存在。 聚合(聚合(aggregation)是一種特殊類型的關是一種特殊類型的關聯,它描述了整體和部分間的結構關系。聯,它描述了整體和部分間的結構關系。employeremployee0.1*軟件工程軟件工程6767 聚合關系在整體端有一個菱形作為標記。聚合關系在

60、整體端有一個菱形作為標記。 復合聚合(復合聚合(composite aggregate) 是一種特是一種特殊的聚合關系,它表明整體對象與部分對象殊的聚合關系,它表明整體對象與部分對象具有相同的生存周期。具有相同的生存周期。3)角色的重復度(角色的重復度(Multiplicity)復合聚合復合聚合, ,雙向導航雙向導航0.*0.10.*整體整體 類名類名部分部分 類名類名2部分部分 類名類名1聚合聚合, ,單向導航單向導航0.1軟件工程軟件工程6868表明角色在關聯關系中出現的次數。如表明角色在關聯關系中出現的次數。如1,0.1,1.*,*等。等。 導航(導航(navigation)一般默認關聯

溫馨提示

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

評論

0/150

提交評論