UML及面向?qū)ο蠓治?-9-10(教案稿)_第1頁
UML及面向?qū)ο蠓治?-9-10(教案稿)_第2頁
UML及面向?qū)ο蠓治?-9-10(教案稿)_第3頁
UML及面向?qū)ο蠓治?-9-10(教案稿)_第4頁
UML及面向?qū)ο蠓治?-9-10(教案稿)_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程概論1面向?qū)ο蠓椒▽W引論面向?qū)ο蠓椒▽W概述面向?qū)ο蟮幕靖拍頤ML及面向?qū)ο蠓治鼋?面向?qū)ο蠓椒▽W概述面向?qū)ο蠓椒捌浒l(fā)展歷史面向?qū)ο筌浖こ谭椒▽W面向?qū)ο蠓椒▽W優(yōu)點3面向?qū)ο蠓椒捌浒l(fā)展歷史面向?qū)ο蠹夹g發(fā)展歷史(軟件工程領域)初期階段(20世紀60年代) 挪威計算中心和奧斯陸大學共同研制Simula語言,首次引入類、繼承和對象等概念;4面向?qū)ο蠓椒捌浒l(fā)展歷史發(fā)展時期(20世紀80年代) 面向?qū)ο蟪绦蛟O計語言(C+)和面向?qū)ο筌浖O計成熟起來;成熟階段(20世紀90年代) 面向?qū)ο蠓治雠c設計技術成熟,面向?qū)ο蠓椒▽W引入,支持面向?qū)ο蠼5姆椒▽W大戰(zhàn),統(tǒng)一建摸語言(UML)成為標準.

2、5面向?qū)ο蠓椒捌浒l(fā)展歷史面向?qū)ο蠓椒▽W發(fā)展的歷史必然性人與計算機之間的語義斷層存儲單元文檔文件 new() getname():string addreservation(theReservation:Reservation) name:string id:string reservation:Reservationborrowerinfo對象類6面向?qū)ο蠓椒捌浒l(fā)展歷史傳統(tǒng)方法學分析與設計之間的語義斷層結構化分析數(shù)據(jù)流圖 結構化設計轉(zhuǎn)換模塊結構圖 面向?qū)ο蠓治鲱悎D 面向?qū)ο笤O計類圖 7面向?qū)ο筌浖こ谭椒▽W面向?qū)ο蠓治雒嫦驅(qū)ο笤O計面向?qū)ο髮崿F(xiàn)(編程、測試)面向?qū)ο缶S護 8面向?qū)ο筌浖こ谭?/p>

3、法學要點概括地說,面向?qū)ο蠓椒ň哂邢率?個要點:(1) 面向?qū)ο蠓椒ㄓ脤ο蠓纸馊〈藗鹘y(tǒng)方法的功能分解。(2) 把所有對象都劃分成各種對象類(簡稱為類,class),每個對象類都定義了一組數(shù)據(jù)和一組方法。9面向?qū)ο筌浖こ谭椒▽W要點(3) 按照子類與父類的關系,把若干個對象類組成一個層次結構的系統(tǒng)。(4) 對象彼此之間僅能通過傳遞消息互相聯(lián)系。面向?qū)ο蟮姆椒▽W可以用下列方程來概括:面向?qū)ο?對象+類+繼承+通信10面向?qū)ο蠓椒▽W優(yōu)點面向?qū)ο蟮闹饕獌?yōu)點與人類習慣的思維方式一致穩(wěn)定性好可重用性好較易開發(fā)大型軟件產(chǎn)品可維護性好11(1)與人類習慣的思維方法一致 把數(shù)據(jù)和代碼作為分離的實體,反映了計算

4、機的觀點。但是,這樣做的時候總存在使用錯誤的數(shù)據(jù)調(diào)用正確的程序模塊,或使用正確的數(shù)據(jù)調(diào)用錯誤的程序模塊的危險。 傳統(tǒng)的程序設計技術忽略了數(shù)據(jù)和操作之間的內(nèi)在聯(lián)系,用這種方法所設計出來的軟件系統(tǒng)其解空間與問題空間并不一致,令人感到難于理解。 12 面向?qū)ο蟮脑O計方法使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題,它鼓勵開發(fā)者在軟件開發(fā)的絕大部分過程中都用應用領域的概念去思考,從而按照人們習慣的思維方式建立起問題領域的模型,模擬客觀世界,所以這種方法開發(fā)出來的系統(tǒng)容易理解。13(2)穩(wěn)定性好 傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和功能分解。用傳統(tǒng)方法所建立起來的軟件系統(tǒng)的結構緊

5、密依賴于系統(tǒng)所要完成的功能,當功能需求發(fā)生變化時將引起軟件結構的整體修改。事實上,用戶需求變化大部分是針對功能的,因此,這樣的軟件系統(tǒng)是不穩(wěn)定的。 14 面向?qū)ο蠓椒ɑ跇嬙靻栴}領域的對象模型,以對象為中心構造軟件系統(tǒng)。所以,當對系統(tǒng)的功能需求變化時并不會引起軟件結構的整體變化,往往僅需要作一些局部性的修改。 總之,由于現(xiàn)實世界中的實體是相對穩(wěn)定的,因此,以對象為中心構造的軟件系統(tǒng)也是比較穩(wěn)定的。15(3)可重用性好重用是提高生產(chǎn)率的最主要的方法。 傳統(tǒng)的軟件重用技術是利用標準函數(shù)庫。并不是理想的可重用的軟件成分。 對象所固有的封裝性和信息隱藏等機理,使得對象內(nèi)部的實現(xiàn)與外界隔離,具有較強的獨

6、立性。因此,對象類提供了比較理想的模塊化機制和比較理想的可重用的軟件成分。164. 較易開發(fā)大型軟件產(chǎn)品 用面向?qū)ο蠓椒▽W開發(fā)軟件時可以把一個大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨立的小產(chǎn)品來處理,不僅降低了開發(fā)的技術難度,而且也使得對開發(fā)工作的管理變得容易。17(5)可維護性好 用傳統(tǒng)方法和面向過程語言開發(fā)出來的軟件很難維護。 用面向?qū)ο蠓椒ㄋ_發(fā)的軟件可維護性好,原因是: 面向?qū)ο蟮能浖€(wěn)定性比較好 面向?qū)ο蟮能浖容^容易修改。 面向?qū)ο蟮能浖容^容易理解。 易于測試和調(diào)試。類的獨立性好。18面向?qū)ο蟮幕靖拍顚ο箢愊⒎庋b繼承性多態(tài)性重載19面向?qū)ο蟮幕靖拍?1.對象 對象(Object

7、)是系統(tǒng)中描述客觀事物的一個實體,它是構成系統(tǒng)的一個基本單位,由一組屬性和對這組屬性進行操作的一組服務組成。屬性是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項。服務是用來描述對象動態(tài)特征(行為)的一個操作序列。20面向?qū)ο蟮幕靖拍铑?類(Class)是具有相同屬性和服務的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務兩個主要部分。 類代表一個抽象的概念或事物,對象是在客觀世界中實際存在的類的實例。 類體現(xiàn)了人們認識事物的基本思維方法:分類21面向?qū)ο蟮幕靖拍铑惻c對象的比較 : “同類對象具有相同的屬性和服務”是指它們的定義形式相同,而不是說每個對象的屬性值都相同。 類

8、是靜態(tài)的,類的存在、語義和關系在程序執(zhí)行前就已經(jīng)定義好了。 對象是動態(tài)的,對象在程序執(zhí)行時可以被創(chuàng)建和刪除。 在面向?qū)ο蟮南到y(tǒng)分析和設計中,并不需要逐個對對象進行說明,而是著重描述代表一批對象共性的類。22面向?qū)ο蟮幕靖拍?. 消息消息是用來請求對象參與某一處理或回答某一要求的信息,是對象之間建立的一種通信機制。通常一個消息由三部分組成:接收消息的對象消息標識符(即消息名)零個或多個變元 例如:MyCircle.Show(Green)MyCircle是接收消息的對象的名字,Show是消息名,Green是消息的變元。23面向?qū)ο蟮幕靖拍?、 封裝 封裝(Encapsulation)是把對象的

9、屬性和服務結合成一個獨立的系統(tǒng)單位,并盡可能隱藏對象的內(nèi)部細節(jié)。24面向?qū)ο蟮幕靖拍罘庋b的作用(1)使對象形成兩個部分:接口和實現(xiàn)(2)信息隱藏將所聲明的功能(行為)與內(nèi)部實現(xiàn)(細節(jié))分離(3)封裝可以保護對象,避免用戶誤用;也可以保護客戶端,其實現(xiàn)過程的改變不會影響到相應客戶端的改變。25面向?qū)ο蟮幕靖拍?. 繼承性 定義 優(yōu)點A的操作A的變量類A類AA的實例變量A的實例a1從A繼承特性B的操作B的變量類B:A的子類類B繼承來的A的實例變量B的實例變量B的實例b126面向?qū)ο蟮幕靖拍?71、繼承使得相似對象可以共享程序代碼和數(shù)據(jù)結構,大大減少程序中的冗余信息;2、繼承可以把已有的一般性

10、的類具體化來提高軟件的可重用性。3、便于軟件修改維護。繼承性的優(yōu)點28面向?qū)ο蟮幕靖拍?6.多態(tài)性(Polymorphism)是指在父類中定義的屬性或服務被子類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。29面向?qū)ο蟮幕靖拍?. 重載-靜態(tài)聯(lián)編函數(shù)重載運算符重載函數(shù)重載是指在同一作用域內(nèi)(同一類內(nèi)系統(tǒng)內(nèi))的若干個參數(shù)特征不同(可以是個數(shù)也可以是類別)的函數(shù)可以使用相同的函數(shù)名字。運算符重載是指同一個運算符可以施加于不同類型的操作數(shù)上面。如+號可以用來計算兩個整數(shù),也可以用來計算兩個實數(shù)。30統(tǒng)一建模語言(UML) UML是由世界著名的面向?qū)ο蠹夹g專家G.BOOCH、J.RUMBAUG

11、H和I.JACOBSON發(fā)起,在Booch方法、OMT方法、OOSE方法的基礎上,吸取其它面向?qū)ο蠓椒ǖ膬?yōu)點,廣泛征求意見,幾經(jīng)修改而完成的。隨著OMG(Object Management Group)采納UML為標準語言,面向?qū)ο箢I域的方法學大戰(zhàn)也宣告結束,各種方法的提出者很多也開始轉(zhuǎn)向UML方面的研究。UML及面向?qū)ο蠼?1UML發(fā)展歷程UML及面向?qū)ο蠼?2UML的概念1、UML(Unified Modeling Language) 統(tǒng)一建模語言是一種直觀化、明確化、構建和文檔化軟件系統(tǒng)產(chǎn)物的通用可視化建模語言。 不是可視化的程序設計語言,而是可視化的建模語言; 不是工具或知識庫的規(guī)

12、格說明,而是一種建模語言規(guī)格說明,是一種表示的標準; 不是過程,也不是方法,但允許任何一種過程和方法使用它。33UML的概念 2、UML 可以描述開發(fā)所需要的各種視圖 概念視圖:業(yè)務過程和系統(tǒng)功能 具體視圖:程序中的類、數(shù)據(jù)庫模式、可重用的軟件構件。 3、可視化(Visualizing) UML 提供一組具有明確語義的圖形符號,可以建立清晰的模型便于交流,所有開發(fā)人員都可以無歧義地解釋這個模型。 UML代替了傳統(tǒng)的“邊想邊寫”開發(fā)方式。344、詳細描述(Specifying) 詳細描述意味著建立精確的和無歧義的模型。 UML為所有重要的分析、設計和實現(xiàn)決策提供了精確的、無歧義的和完整的描述。U

13、ML的概念355、構造性(Constructing) UML 不是一種可視化的編程語言,但它所描述的模型可以映射成不同的編程語言,如JAVA、C+ 和Visual Basic 等。 正向工程:從UML 模型到編程語言的代碼生成 逆向工程:由編程語言代碼重新構造UML 模型UML的概念366、文檔化的(Documenting) UML 可以建立系統(tǒng)體系結構及其詳細文檔,提供描述需求和用于測試的語言,同時可以對項目計劃和發(fā)布管理的活動進行建模。UML的概念37UML 的構成38事物構造塊 事物構造塊是對模型中最具有代表性的成分的抽象,表示系統(tǒng)中的元素結構事物:UML中的名詞,它是模型的靜態(tài)部分,描

14、述概念或物理元素。行為事物:UML中的動詞,它是模型中的動態(tài)部分,是一種跨越時間、空間的行為。分組事物:UML中的容器,用來組織模型,使模型更加的結構化。注釋事務:UML中的解釋部分,和代碼中的注釋語句一樣,是用來描述模型的。39結構事物類(class)和對象(object)接口(interface)構件(component)40類和對象類是對一組具有相同屬性、相同操作、相同關系和相同語義的對象的共同特征的抽象 。UML中類是用一個矩形方框表示的,它包含三個區(qū)域,最上面是類名、中間是類的屬性、最下面是類的方法 對象則是類的一個實例 對象名類名冒號圖形位置顏色Draw()圖形A : 圖形 41

15、接口 接口是描述某個類或構件的一個服務操作集。 接口描述了一個元素的外部可見行為。 UML 符號42接口43構件構件也稱組件,是指系統(tǒng)設計中的一個相對獨立的軟件部件。構件是系統(tǒng)設計的一個模塊化部分,它把功能實現(xiàn)部分隱藏在內(nèi)部,對外提供了一組外部接口。因此,兩個具有相同接口的構件可以相互替換。 構件名稱 UML 1.0 習慣用法 UML 2.0 習慣用法 構件名稱44節(jié)點為了能夠有效地對部署的結構進行建模,UML引入了節(jié)點這一概念,它可以用來描述實際的PC機、打印機、服務器等軟件運行的基礎硬件。 節(jié)點是運行時存在的物理元素,通常至少有存儲空間和處理能力。 Server 節(jié)點Server的表示方法

16、45行為事物交互(interaction):是在特定語境中,共同完成某個任務的一組對象之間交換的信息集合 。交互的表示法很簡單,就是一條有向直線,并在上面標有操作名。46行為事物狀態(tài)機(state machine):是一個對象或交互在生命周期內(nèi)響應事件所經(jīng)歷的狀態(tài)序列 在UML模型中將狀態(tài)畫為一個圓角矩形,并在矩形內(nèi)寫出狀態(tài)名。等待 “等待”狀態(tài)的表示方法47分組事物對于一個中大型的軟件系統(tǒng)而言,通常會包含大量的類,因此也就會存在大量的結構事物、行為事物,為了能夠更加有效地對其進行整合,就需要對其進行分組。在UML中,提供了“包(Package)”來實現(xiàn)這一目標。 數(shù)據(jù)訪問 “數(shù)據(jù)訪問”包的表

17、示方法48分組事物49注釋事物注釋是依附于一個元素或一組元素之上,對其進行約束或解釋的簡單符號。 注釋符號50關聯(lián)關系關聯(lián)是一種結構關系,它描述了一組對象之間的連接。關聯(lián)兩端的類可以某種角色參與關聯(lián) 角色是關聯(lián)中靠近它的一端的類對另一端的類呈現(xiàn)的職責; 如果關聯(lián)上沒有標出角色名,則隱含地用類的名稱作為角色名。關聯(lián)具有多重性 多重性表示可以有多少個對象參與該關聯(lián) 固定值:3 許多值:n 或者* 區(qū)間:0.1 或者3.n 集合:2,4,851關聯(lián)關系52關聯(lián)關系關聯(lián)(Association)表示兩個類之間存在某種語義上的聯(lián)系。關聯(lián)關系提供了通信的路徑,它是所有關系中最通用、語義最弱的。在UML中,

18、使用一條實線來表示關聯(lián)關系操作屬性類1類2屬性操作關聯(lián)關系人雇傭公司人雇主公司1雇員n53關聯(lián)關系在關聯(lián)關系中,有兩種比較特殊的關系:聚合和組合 聚合關系:聚合(Aggregation)是一種特殊形式的關聯(lián)。聚合表示類之間的關系是整體與部分的關系。 如果發(fā)現(xiàn)“部分”類的存在,是完全依賴于“整體”類的,那么就應該使用“組合”關系來描述 。聚合關系計算機主機顯示器咖啡桌桌面桌腿54泛化、實現(xiàn)、擴展與依賴泛化關系描述了一般事物與該事物中的特殊種類之間的關系,也就是父類與子類之間的關系。實現(xiàn)關系是用來規(guī)定接口和實現(xiàn)接口的類或組件之間的關系。接口是操作的集合,這些操作用于規(guī)定類或組件的服務。 擴展表示將

19、一個構造型附加到一個元類(metaclass)上,使得元類的定義中包括這個構造型。 有兩個元素X、Y,如果修改元素X的定義可能會引起對另一個元素Y的定義的修改,則稱元素Y依賴(Dependency)于元素X。 55父類屬性操作子類泛化關系屬性操作車公交車密碼驗證智能卡驗證身份驗證注冊用戶圖書管理員普通讀者包與包之間也存在泛化關系。泛化、實現(xiàn)、擴展與依賴56泛化、實現(xiàn)、擴展與依賴類屬性操作choice組件類屬性操作實現(xiàn)關系57泛化、實現(xiàn)、擴展與依賴driver.dllIDriverpath.dll類A屬性操作類B屬性操作Interface58泛化、實現(xiàn)、擴展與依賴類1屬性操作add(c:cour

20、se)remove(c:course)Schedulecourse驗證讀者includeinclude查詢讀者查詢圖書登記借書extendextend登記借書登記還書類2屬性操作依賴關系use59UML圖形分類60常用UML圖用例圖類圖狀態(tài)圖順序圖Use caseSequenceClass(Simple)StateCollaborationClass(Complex)ObjectActivityRequirementRequirement階段Analysis階段Design階段61用例圖用例圖是外部參與者所能觀察到的系統(tǒng)功能的模型圖。由一組用例、參與者及它們之間的關系組成。主要用于對系統(tǒng)、子系

21、統(tǒng)或類的功能行為進行建模。參與者是與系統(tǒng)交互的外部實體,可以是人,也可以是其它系統(tǒng)。用例是從用戶的角度描述系統(tǒng)的行為(功能),它將系統(tǒng)的功能描述成一系列事件,這些事件最終對參與者產(chǎn)生可觀察結果。62參與者、用例間的關系類型關系類型說明表示符號關聯(lián)參與者和用例間的關系泛化參與者之間或用例之間的關系包含用例之間的關系擴展用例之間的關系 用例圖63驗證讀者includeinclude查詢讀者查詢圖書登記借書extendextend登記借書登記還書密碼驗證智能卡驗證身份驗證64用例圖確定參與者方法:誰使用系統(tǒng)的主要功能?誰需要系統(tǒng)支持他們的日常工作?誰來維護、管理使系統(tǒng)正常工作?系統(tǒng)需要操縱哪些硬件?

22、系統(tǒng)需要與哪些其它系統(tǒng)交互,包含其它計算機系統(tǒng)和其它應用程序?65用例圖確定用例方法參與者要求系統(tǒng)提供哪些功能?參與者需要做什么?參與者需要讀取、產(chǎn)生、刪除、修改或存儲的某些信息嗎?。 必須提醒參與者的系統(tǒng)事件有哪些?或者參與者必須提醒系統(tǒng)的事件有哪些?系統(tǒng)需要的輸入、輸出信息是什么?這些信息怎么來?其它特殊要求如何滿足?66用例圖的建立確定系統(tǒng)參與者及其關系確定用例及關系編寫用例描述用例圖67用例圖示例68類圖表示系統(tǒng)中類、協(xié)作(類或?qū)ο箝g的協(xié)作)、接口及其關系的圖。類圖中的關系包括:關聯(lián)、泛化、依賴、實現(xiàn)。69類圖類的劃分:邊界類:參與者與系統(tǒng)之間的交互實體類:系統(tǒng)中存儲和管理的永久信息控

23、制類:系統(tǒng)運行中的業(yè)務控制邏輯70類圖邊界類實體類boundary類名類名control類名控制類類名entity類名類名71類圖 在軟件開發(fā)的不同階段使用的類圖具有不同的抽象層次,一般類圖可分為三個層次,概念層、說明層、實現(xiàn)層。概念層類圖:概念層類圖中類內(nèi)只有類名。通常用在需求分析階段,該階段類圖是研究應用領域的概念。72類圖說明層類圖:在設計階段,用說明層類圖描述類與類之間的接口。在說明層類中有屬性和方法,但沒有屬性的類型說明和方法的參數(shù)與返回類型。實現(xiàn)層類圖:在實現(xiàn)階段,類圖描述軟件系統(tǒng)中類的實現(xiàn)。73類圖尋找類的技巧根據(jù)用例描述中的名詞確定類的侯選者。使用CRC(class,respo

24、nsibility,collaboration)分析法尋找類。根據(jù)類所扮演的職責來確定類。根據(jù)邊界類、控制類、實體類的劃分來幫助發(fā)現(xiàn)系統(tǒng)中的類。74類圖類圖的建立(可以有多種方式)分析問題領域,確定用到的類。確定類的含義、職責、確定屬性、操作。確定類之間的聯(lián)系。細化、調(diào)整已經(jīng)得到類之間的關系,并增加相應說明。75類圖示例先看清有哪些類,然后看看類之間存在的關系,并結合多重性來理解類圖的結構特點以及各個屬性和方法的含義 76 讀圖過程讀出類:圖中共有7個類,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcut讀出關系:從

25、圖中關系最復雜(也就是線最密集)的類開始閱讀,本圖中最復雜的就是Order類。1)OrderItem和Order之間是組合關系,根據(jù)箭頭的方向可知Order包含了OrderItem。2)Order類和Customer、Consignee、DeliverOrder是關聯(lián)關系。也就是說,一個訂單和客戶、收貨人、送貨單是相關的。7778 讀圖過程多重性:用來說明關聯(lián)的兩個類之間的數(shù)量關系 源類及多重性目標類及多重性分析Customer(1)Order(0n)訂單是屬于某個客戶的,網(wǎng)站的客戶可以有0個或多個訂單Order(1)Consignee(1)每個訂單只能夠有一個收貨人Order(1)Order

26、Item(1n)訂單是由訂單項組成的,至少要有一個訂單項,最多可以有n個Order(1)DeliverOrder(1n)一個訂單有一個或多個送貨單說明:系統(tǒng)根據(jù)訂單項的產(chǎn)品所屬的商戶,將其分發(fā)給商戶,拆成了多個送貨單!DeliverOrder(1)OrderItem(1n)一張送貨單對應訂單中的一到多個訂單項DeliverOrder(1)Consignee(1)每張送貨單都對應著一個收貨人Peddlery(1)DeliverOrder(0n)每個商戶可以有相關的0個或多個送貨單OrderItem(1)Product(1)每個訂單項中都包含著唯一的一個產(chǎn)品Peddlery(1)Prodcut(0

27、n)產(chǎn)品是屬于某個商戶的,可以注冊0到多個產(chǎn)品7980 讀圖過程理解方法與圖 Order類,有兩個方法:dispatch()和close(),從名字中可以猜出它們分別實現(xiàn)“分拆訂單生成送貨單”和“完成訂單”。而在DeliveOrder()類中則有一個Close()方法,同理它應該表示“完成送貨”。而在OrderItem中有一個stateChange()方法和deliverState,不難猜出它就是用來改變其“是否交給收貨人”的標志位。 先調(diào)用Order的dispatch()方法,它將根據(jù)其包含的OrderItem中產(chǎn)品信息,來按供應商戶分拆成若干個DeliverOrder。商戶登錄系統(tǒng)后就可以

28、獲取其DeliverOrder,并在執(zhí)行完后調(diào)用close()方法。這時,就將調(diào)用OrderItem的stateChange()方法來改為其狀態(tài)。同時再調(diào)用Order的close()方法,判斷該Order的所有的OrderItem是否都已經(jīng)送到了,如果是就將其真正close()掉 81順序圖又稱時序圖,描述對象按照時間順序的消息交換,顯示參與交互的對象及對象之間消息的交互順序。順序圖用來描述用例的實現(xiàn),表明了由哪些對象通過消息相互協(xié)作來實現(xiàn)用例的功能。在用例圖中,標識了消息發(fā)生交互的先后順序。82順序圖建模元素:對象、生命線、控制焦點(激活)、消息。:Driver:CarOper()對象生命線

29、控制焦點消息(調(diào)用)83順序圖順序圖描述的是對象之間的消息發(fā)送關系,而不是類之間的關系。在順序圖中并不包括系統(tǒng)中的所有類的對象。也有可能某些對象屬于同一個類。84順序圖順序圖的建立(可以有多種方式)確定交互過程的上下文。識別參與交互過程的對象。為每個對象設置生命線,即確定哪些對象存在于整個交互過程中,哪些對象在交互過程中被創(chuàng)建和撤銷。85順序圖從引發(fā)這個交互過程的初始消息開始,在生命線之間從頂?shù)较乱来萎嫵鲭S后的各個消息。如果需要表示消息的嵌套,或/和表示消息發(fā)生時的時間點,則采用控制焦點。如果需要說明時間約束,則在消息旁邊加上約束說明。如果需要,可以為每個消息附上前置和后置條件。86順序圖87

30、循環(huán)與分支88狀態(tài)圖狀態(tài)是指在對象生命周期中滿足某些條件、執(zhí)行某些活動或等待某些事件的一個條件和狀況 。狀態(tài)機圖常用來描述業(yè)務或軟件系統(tǒng)中的對象在外部事件的作用下,對象的狀態(tài)從一種狀態(tài)到另一種狀態(tài)的控制流。狀態(tài)機圖的組成元素:初始狀態(tài)、終止狀態(tài)、狀態(tài)和轉(zhuǎn)換,其中,轉(zhuǎn)換將各種狀態(tài)連接在一起,構成一個狀態(tài)圖。 89最簡單的狀態(tài)圖核心元素:一個是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個是在狀態(tài)之間的、包含一些文字描述的有向箭頭,這些箭頭稱為轉(zhuǎn)換。燒水器的狀態(tài)圖90轉(zhuǎn)換的五要素源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)目標狀態(tài):當轉(zhuǎn)換完成后對象的狀態(tài) 觸發(fā)事件:外部作用于一個對象,能夠觸發(fā)對象狀態(tài)改變的一種現(xiàn)象

31、。包括調(diào)用、改變、信號、時間四類事件。監(jiān)護條件:布爾表達式,決定是否激活轉(zhuǎn)換、動作:轉(zhuǎn)換激活時的操作91讀圖小結與狀態(tài)off相關的轉(zhuǎn)換有兩個,其觸發(fā)事件都是turnOn,只不過其監(jiān)護條件不同。如果對象收到事件turnOn,那么將判斷壺中是否有水;如果沒水,則仍然處于off狀態(tài);如果有水則轉(zhuǎn)為on狀態(tài),并執(zhí)行“燒水”動作而與狀態(tài)on相關的轉(zhuǎn)換也有兩個,如果“水開了”就執(zhí)行turnOff,關掉開關;如果燒壞了,就進入了終態(tài)了 92繪制狀態(tài)機圖繪制狀態(tài)機圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉(zhuǎn)換,細化狀態(tài)內(nèi)的活動與轉(zhuǎn)換,用復合狀態(tài)來展開細節(jié)。尋找主要狀態(tài):對于航班機票預訂系統(tǒng)而言,包括的狀態(tài)

32、主要有: - 在剛確定飛機計劃時,顯然是沒有任何預訂的,并且在有人預訂機票之前都將處于這種“無預訂”狀態(tài) - 對訂座而言顯然有“部分預訂”和“預訂完”兩種狀態(tài) - 而當航班快要起飛時,顯然要“預訂關閉”總結一下,主要有四種狀態(tài):無預訂、部分預訂、預訂完以及預訂關閉 93確定狀態(tài)間轉(zhuǎn)換源目標無預訂部分預訂預訂完預訂關閉無預訂預訂()不直接轉(zhuǎn)換關閉()部分預訂退訂(),使預訂人=0預訂(),無空座關閉()預訂完不直接轉(zhuǎn)換退訂()關閉()預訂關閉無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換94繪制狀態(tài)機圖細化狀態(tài)內(nèi)的活動與轉(zhuǎn)換95繪制狀態(tài)機圖使用復合狀態(tài)96活動圖活動圖和交互圖是UML中對系統(tǒng)動態(tài)方面建模的兩種主要形式交互圖

33、強調(diào)的是對象到對象的控制流,而活動圖則強調(diào)的是從活動到活動的控制流 活動圖是一種表述過程基理、業(yè)務過程以及工作流的技術。它可以用來對業(yè)務過程、工作流建模,也可以對用例實現(xiàn)甚至是程序?qū)崿F(xiàn)來建模 97閱讀簡單活動圖98活動圖的主要元素初始節(jié)點和活動終點:用一個實心圓表示初始節(jié)點,用一個圓圈內(nèi)加一個實心圓來表示活動終點活動節(jié)點:是活動圖中最主要的元素之一,它用來表示一個活動 轉(zhuǎn)換:當一個活動結束時,控制流就會馬上傳遞給下一個活動節(jié)點,在活動圖中稱之為“轉(zhuǎn)換”,用一條帶箭頭的直線來表示 99活動圖的主要元素分支與監(jiān)護條件:分支是用菱形表示的,它有一個進入轉(zhuǎn)換(箭頭從外指向分支符號),一個或多個離開轉(zhuǎn)換

34、(箭頭從分支符號指向外)。而每個離開轉(zhuǎn)換上都會有一個監(jiān)護條件,用來表示滿足什么條件的時候執(zhí)行該轉(zhuǎn)換。分岔與匯合:100修改后的簡單活動圖101帶泳道的活動圖102帶對象流的活動圖103繪制活動圖“活動圖” 比較直觀易懂;與傳統(tǒng)的流程圖十分的相近,只要能夠讀懂活動圖,就不難畫出活動圖繪制時首先決定是否采用泳道:主要根據(jù)活動圖中是否要體現(xiàn)出活動的不同實施者然后盡量使用分支、分岔和匯合等基本的建模元素來描述活動控制流程如果需要,加入對象流以及對象的狀態(tài)變化,利用一些高級的建模元素(如輔助活動圖、匯合描述、發(fā)送信號與接收信號、引腳、擴展區(qū))來表示更多的信息活動圖的建模關鍵是表示出控制流,其它的建模元素

35、都是圍繞這一宗旨所進行的補充104部署圖105閱讀基本部署圖106部署圖的主要元素節(jié)點:它代表一個運行時的計算資源,例如一臺計算機、一個工作站等其它設備 節(jié)點的概念和構件有許多相同之處,例如二者有多名稱,都可以參與依賴、泛化和關聯(lián)關系,都可以被嵌套,都可以有實例,都可以參與交互。但它們之間也存在明顯的區(qū)別:構件是參與系統(tǒng)執(zhí)行的事物,而節(jié)點是執(zhí)行構件的事物;構件表示邏輯元素的物理打包,而節(jié)點表示構件的物理部署本圖中建模了四個節(jié)點:B/S客戶端、C/S客戶端、IIS服務器和數(shù)據(jù)庫服務器 107部署圖的主要元素連接:節(jié)點之間最常見的關系就是關聯(lián)關系(用一根實線表示)。為了更好地表示兩個節(jié)點之間的關系

36、,我們可以通過“約束”來對連接進行描述。源節(jié)點目標節(jié)點約束含義B/S客戶端IIS服務器HTTP+Network網(wǎng)絡連接,使用HTTP協(xié)議C/S客戶端IIS服務器HTTP+SOAP+Network網(wǎng)絡連接,通過Web Service訪問服務IIS服務器數(shù)據(jù)庫服務器ADO.NET.NET提供的數(shù)據(jù)庫訪問解決方案108部署圖的補充元素處理器(process):具有處理能力的節(jié)點,即可以執(zhí)行構件設備(device):沒有處理能力的節(jié)點,至少是不關心其處理能力的節(jié)點。例如打印機、IC卡讀寫器,如果我們的系統(tǒng)不考慮它們內(nèi)部的芯片,就可建模為設備節(jié)點屬性和操作:可以為一個節(jié)點提供處理器速度、內(nèi)存容量、網(wǎng)卡數(shù)

37、量等屬性,可以為其提供啟動、關機等操作 109部署圖的補充元素自定義構造型圖標110確定所需的節(jié)點和節(jié)點間的連接關系IC卡讀卡器:提供給員工刷卡用,它將收集刷卡的時間信息,傳給應用系統(tǒng),并存入數(shù)據(jù)庫中應用服務器:用來負責從IC卡讀卡器中收集信息,并對管理人員提供員工設置、考勤查詢等功能數(shù)據(jù)庫服務器:用來存儲考勤數(shù)據(jù),由于該系統(tǒng)比較小,因此在物理上可以與應用服務器合并客戶端軟件:提供給管理人員使用,連接應用服務器,完成相應操作 111根據(jù)實現(xiàn)描述節(jié)點客戶端:需使用Windows操作系統(tǒng),安裝客戶端軟件(假設名為KaoQing.exe)服務器:包含一個用Delphi開發(fā)的服務端軟件(設為KqSer

38、ver.exe),它需要與Access數(shù)據(jù)庫交互(設為KaoQing.mdb),并且需要通過IC卡讀卡器的驅(qū)動程序(假設名為cardReader.dll)來實現(xiàn)與IC卡讀卡器通信IC卡讀寫器:對于本系統(tǒng)而言,它是不執(zhí)行構件的設備,不過為了方便員工,安裝了3個。112作業(yè)解答教材購銷系統(tǒng)主要功能根據(jù)學校的教學計劃,向選課的學生及時供應所需教材審查學生購書單有效性,對有效書單發(fā)售教材對屬于計劃供應但暫時缺貨的教材進行登記根據(jù)缺書登記補充采購所缺的教材,通知學生補購將缺書登記表匯總為待購教材計劃待購教材到貨后,及時通知學生補購113采購進書通知產(chǎn)生補售書單 1.6學生F1教材存量表開發(fā)票 1.2登記

39、售書和打印領書單 1.4有效購書單暫缺書單登記缺書 1.5補售書單購書單F2 缺書登記表審查有效性 1.1無效書單學生F3學生用書表F4售書登記表打印發(fā)票 1.3發(fā)票發(fā)票領書單114進書通知 2.1按書號匯總書庫保管員F1教材存量表按出版社匯總 2.2修改教材庫存和待購量 2.3銷售F5待購教材表F6教材一覽表缺書單F2 缺書登記表進書通知115使用SD方法給出教材購銷系統(tǒng)中銷售子系統(tǒng)的軟件結構圖.細化并修改DFD圖116產(chǎn)生補售書單 1.6學生F1教材存量表開發(fā)票 1.2登記售書 1.4有效購書單暫缺書單登記缺書 1.5補售書單購書單F2 缺書登記表審查有效性 1.1無效書單學生F3學生用書

40、表F4售書登記表打印發(fā)票 1.3發(fā)票發(fā)票領書單打印領書單 1.7F7 進書登記表117 2.1按書號匯總書庫保管員F1教材存量表按出版社匯總 2.2修改教材庫存和待購量 2.3F5待購教材表F6教材一覽表缺書單F2 缺書登記表進書通知F7 進書登記表118 1.6學生F1 1.2 1.4 1.5F2 1.1學生F3F4 1.3 1.7F7+119銷售初售補售審查有效性開發(fā)票售書登記缺書登記售書打印發(fā)票打印領書單產(chǎn)生補售書單獲得有效性購書單獲得補售書單120 1.語句覆蓋: X=85,Y=85(路徑A-E); X=95,Y=50 (路徑B-C-E); X=75,Y=75 (路徑B-D-E);習題

41、五參考答案判斷1判斷2條件1條件2條件3條件4條件51212. 判斷覆蓋: X =85, Y=85 (判斷1成立,判斷2不成立) A-E; X=95, Y=50 (判斷1不成立,判斷2成立) B-C-E; X=75, Y=75 (判斷1、判斷2都不成立) B-D-E;3. 條件覆蓋: X=85,Y=85(判斷1兩條件成立) A-E ; X=95,Y=50 (判斷2中條件3、條件4成立) B-C-E; X=50,Y=90 (判斷2中條件3、條件5成立) B-C-E ; X=60,Y=60(判斷1、判斷2各個條件都不成立) B-D-E;122 4. 判斷/條件覆蓋: X=85,Y=85(判斷1為Y 且兩條件成立) A-E; X=95,Y=50 (判斷2為Y 且條件3、條件4成立)B-C-E; X=50,Y=95 (判斷2為Y 且條件3、條件5成立)B-C-E; X=60,Y=60(判斷1、判斷2為N 且各個條件都不成立) B-D-E;

溫馨提示

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

評論

0/150

提交評論