第07章-面向對象的分析和設計-軟件工程電子教案-教學課件
,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,,復旦大學計算機科學與工程系 軟件工程課程,*,/237,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,軟件工程,第7章 面向對象的分析和設計,,1,復旦大學計算機科學與工程系 軟件工程課程,軟件工程第7章 面向對象的分析和設計1復旦大學計算機科學與工,內容摘要,面向對象的基本概念,面向對象的分析和設計過程,UML概述,用況建模,靜態(tài)建模,動態(tài)建模,物理體系結構建模,,2,復旦大學計算機科學與工程系 軟件工程課程,內容摘要面向對象的基本概念2復旦大學計算機科學與工程系,內容摘要,面向對象的基本概念,面向對象的分析和設計過程,UML概述,用況建模,靜態(tài)建模,動態(tài)建模,物理體系結構建模,,3,復旦大學計算機科學與工程系 軟件工程課程,內容摘要面向對象的基本概念3復旦大學計算機科學與工程系,Peter Coad和Edward Yourdon提出用下列等式識認面向對象方法:,面向對象,=,對象,(object),+,分類,(classification),+,繼承,(inheritance),+,通過消息的通信,(communication with messages),可以說,采用這四個概念開發(fā)的軟件系統(tǒng)是面向對象的,,4,復旦大學計算機科學與工程系 軟件工程課程,Peter Coad和Edward Yourdon提出用下列,面向對象方法的出現(xiàn)很快受到計算機軟件界的青睞,并成為20世紀90年代的主流開發(fā)方法。我們可以從下列幾個方面來分析其原因:,從認知學的角度來看,面向對象方法符合人們對客觀世界的認識規(guī)律。,面向對象方法開發(fā)的軟件系統(tǒng)易于維護,其體系結構易于理解、擴充和修改。,面向對象方法中的繼承機制有力支持軟件的復用。,,5,復旦大學計算機科學與工程系 軟件工程課程,面向對象方法的出現(xiàn)很快受到計算機軟件界的青睞,并成,面向對象的基本概念,1.,對象,(object),,對象是指一組屬性以及這組屬性上的專用操作的封裝體。,,屬性,(attribute)通常是一些數(shù)據(jù),有時它也可以是另一個對象。每個對象都有它自己的屬性值,表示該對象的狀態(tài)。對象中的屬性只能通過該對象所提供的操作來存取或修改。,,操作,(operation)(也稱方法或服務)規(guī)定了對象的行為,表示對象所能提供的服務。,,,6,復旦大學計算機科學與工程系 軟件工程課程,面向對象的基本概念 1. 對象(object)6復旦大學計,封裝,(encapsulation)是一種信息隱蔽技術,用戶只能看見對象封裝界面上的信息,對象的內部實現(xiàn)對用戶是隱蔽的。封裝的目的是使對象的使用者和生產者分離,使對象的定義和實現(xiàn)分開。,,一個對象通??捎蓪ο竺?、屬性和操作三部分組成。,,7,復旦大學計算機科學與工程系 軟件工程課程,封裝(encapsulation)是一種信息隱蔽技術,用戶只,2.,類,(class),類是一組具有相同屬性和相同操作的對象的集合。一個類中的每個對象都是這個類的一個實例(instance)。,類是創(chuàng)建對象的模板,從同一個類實例化的每個對象都具有相同的結構和行為。,,8,復旦大學計算機科學與工程系 軟件工程課程,2. 類(class)8復旦大學計算機科學與工程系,轎 車,,型號:字符串,顏色:字符串,牌照號:字符串,....,張經理的轎車,,型號=桑塔納,顏色=紅色,牌照號=滬AN2037,....,類,實例對象,,9,復旦大學計算機科學與工程系 軟件工程課程,轎 車張經理的轎車類實例對象9復旦大學計算機科學與工程系,3.,繼承,(inheritance),繼承是類間的基本關系,它是基于層次關系的不同類共享數(shù)據(jù)和操作的一種機制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對父類(或祖先類)中的操作重新定義其實現(xiàn)方法。,,10,復旦大學計算機科學與工程系 軟件工程課程,3. 繼承(inheritance)10復旦大學計算機科學與,矩形,長,寬,對角線,計算面積,計算對角線,多邊形,頂點數(shù),頂點坐標,計算面積,旋轉,,,11,復旦大學計算機科學與工程系 軟件工程課程,矩形 多邊形11復旦大學計算機科,有時,我們定義一個類,它把一些類組織起來,提供一些公共的行為,但并不需要使用這個類的實例,而僅使用其子類的實例。我們把這種沒有實例的類稱為,抽象類,(abstract class)。在抽象類中可以定義,抽象操作,,抽象操作指:只定義這個類的操作接口,不定義它的實現(xiàn),其實現(xiàn)部分由其子類定義。抽象操作操作名用斜體字表示,也可以在操作特征(signature)后面加上特征字符串{abstract}。,,12,復旦大學計算機科學與工程系 軟件工程課程,有時,我們定義一個類,它把一些類組織起來,提供一些公共的行為,交通工具,飛行器,汽 車,船,轎 車,貨 車,,,,一般,-特殊關系,,13,復旦大學計算機科學與工程系 軟件工程課程,交通工具飛行器汽 車 船轎 車貨 車 一般-特殊關系13復旦,如果一個子類只有唯一一個父類,這個繼承稱為,單一繼承,。如果一個子類有一個以上的父類,這種繼承稱為,多重繼承,。,水上交通工具,陸上交通工具,水陸兩棲交通工具,,,,,多重繼承,,14,復旦大學計算機科學與工程系 軟件工程課程,如果一個子類只有唯一一個父類,這個繼承稱為單一繼承,4.,消息,(message),消息傳遞是對象間通信的手段,一個對象通過向另一個對象發(fā)送消息來請求其服務。一個消息通常包括接收對象名、調用的操作名和適當?shù)膮?shù)(如果有必要的話)。消息只告訴接收對象需要完成什么操作,但并不指示接收者怎樣完成操作。消息完全由接收者解釋,接收者獨立決定采用什么方法完成所需的操作。,,15,復旦大學計算機科學與工程系 軟件工程課程,4. 消息(message)15復旦大學計算機科學與工程系,5.,多態(tài)性,(polymorphism),多態(tài)性是指同一個操作作用于不同的對象上可以有不同的解釋,并產生不同的執(zhí)行結果。例如“畫”操作,作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。也就是說,相同操作的消息發(fā)送給不同的對象時,每個對象將根據(jù)自己所屬類中定義的這個操作去執(zhí)行,從而產生不同的結果。,,16,復旦大學計算機科學與工程系 軟件工程課程,5. 多態(tài)性(polymorphism)16復旦大學計算機科,6.,動態(tài)綁定,(dynamic binding),動態(tài)綁定是指在程序運行時才將消息所請求的操作與實現(xiàn)該操作的方法連接起來。,傳統(tǒng)的程序設計語言的過程調用與目標代碼的連接(即調用哪個過程)放在程序運行前(即編譯時)進行(稱為靜態(tài)綁定),而動態(tài)綁定則是把這種連接推遲到運行時才進行。,動態(tài)綁定是一種在運行時確定被執(zhí)行代碼的技術。,,17,復旦大學計算機科學與工程系 軟件工程課程,6. 動態(tài)綁定(dynamic binding)17復旦大,在一般與特殊關系中,子類是父類的一個特例,所以父類對象可以出現(xiàn)的地方,也允許其子類對象出現(xiàn)。因此在運行過程中,當一個對象發(fā)送消息請求服務時,要根據(jù)接收對象的具體情況將請求的操作與實現(xiàn)的方法進行連接,即動態(tài)綁定。,,,18,復旦大學計算機科學與工程系 軟件工程課程,在一般與特殊關系中,子類是父類的一個特例,所以父類對象可以出,if 條件 then p := t ;,else p := r ;,area := p.getarea ;,getArea {abstract},,polygon,area,,hexagon,getArea,,,rectangle,getArea,length,width,,triangle,getArea,,,Var p : polygon ;,Var t : triangle :=,triangle.new ;,Var r : rectangle :=,rectangle.new ;,,19,復旦大學計算機科學與工程系 軟件工程課程,if 條件 then p := t ;getArea,內容摘要,面向對象的基本概念,面向對象的分析和設計過程,UML概述,用況建模,靜態(tài)建模,動態(tài)建模,物理體系結構建模,,20,復旦大學計算機科學與工程系 軟件工程課程,內容摘要面向對象的基本概念20復旦大學計算機科學與工程系,面向對象分析Object-Oriented Analysis,,面向對象分析的一般步驟,如下:,獲取客戶對系統(tǒng)的需求:包括標識場景(scenario)和用況(use case,也稱用例),以及建造需求模型,用基本的需求為指南,來選擇類和對象(包括屬性和操作)。,定義類的結構和層次。,建造對象—關系模型。,建造對象—行為模型。,利用用況/場景來復審分析模型。,,21,復旦大學計算機科學與工程系 軟件工程課程,面向對象分析Object-Oriented Analysi,1.,獲取客戶對系統(tǒng)的需求,需求獲取必須讓客戶與開發(fā)者充分地交流,這里介紹一種采用用況來收集客戶需求的技術。分析員首先標識使用該系統(tǒng)的不同的執(zhí)行者(actor),這些執(zhí)行者代表使用該系統(tǒng)的不同的角色。每個執(zhí)行者可以敘述他如何使用系統(tǒng),或者說他需要系統(tǒng)提供什么功能。執(zhí)行者提出的每一個使用場景(或功能)都是系統(tǒng)的一個用況的實例,一個用況描述了系統(tǒng)的一種用法(或一個功能),所有執(zhí)行者提出的所有用況構成系統(tǒng)的完整的需求。,,分析過程,,22,復旦大學計算機科學與工程系 軟件工程課程,1. 獲取客戶對系統(tǒng)的需求分析過程22復旦大學計算機科學,注意,執(zhí)行者與用戶是不同的兩個概念,一個用戶可以扮演幾個角色(執(zhí)行者),一個執(zhí)行者可以是用戶,也可以是其他系統(tǒng)(應用程序或設備)。得到的用況必須進行復審,以使需求完整。,,23,復旦大學計算機科學與工程系 軟件工程課程,注意,執(zhí)行者與用戶是不同的兩個概念,一個用戶可以扮演幾個角色,2.,標識類和對象,類和對象來自問題領域。,可以先標識候選類,然后進行篩選,,24,復旦大學計算機科學與工程系 軟件工程課程,2. 標識類和對象24復旦大學計算機科學與工程系,3.,定義類的結構和層次,類的結構主要有兩種:一般—特殊(generalization—specialization)結構和整體—部分(whole—part)結構。,,一般—特殊結構,是一種分類結構,反映了類間的一般與特殊的關系。一般類與特殊類之間是一種“is a”的關系,如:汽車是一種交通工具。同樣,特殊類還可以分為更特殊的類,這樣可形成類的層次結構。,,整體—部分結構,反映了類間的整體與部分關系。值得注意的是,整體—部分關系是對對象而言的,而不是對類的。整體—部分關系是一種“has a ”的關系,如“汽車”有“發(fā)動機”。同樣,整體—部分結構也具有層次結構。,,25,復旦大學計算機科學與工程系 軟件工程課程,3. 定義類的結構和層次25復旦大學計算機科學與工程系,有的面向對象方法中,把互相協(xié)作以完成一組緊密結合在一起的責任的類的集合定義為,主題,(subject)或,子系統(tǒng),(subsystem)。主題和子系統(tǒng)都是一種抽象,從外界觀察系統(tǒng)時,主題或子系統(tǒng)可看作黑盒,它有自己的一組責任和協(xié)作者,觀察者不必關心其細節(jié)。觀察一個主題或子系統(tǒng)的內部時,觀察者可以把注意力集中在系統(tǒng)的某一個方面。因此,主題或子系統(tǒng)實際上是系統(tǒng)更高抽象層次上的一種描述。,,26,復旦大學計算機科學與工程系 軟件工程課程,有的面向對象方法中,把互相協(xié)作以完成一組緊密結合在一起的責任,4.,建造對象——關系模型,對象--關系模型描述了系統(tǒng)的靜態(tài)結構,它指出了類間的關系(relationship)。,類之間的關系有關聯(lián)、依賴、泛化、實現(xiàn)等。,,27,復旦大學計算機科學與工程系 軟件工程課程,4. 建造對象——關系模型27復旦大學計算機科學與工程系,5.,建立對象——行為模型,對象--行為模型描述了系統(tǒng)的動態(tài)行為,它們指明系統(tǒng)如何響應外部的事件或激勵(stimulus)。,建模的步驟如下:,評估所有的用況,以完全理解系統(tǒng)中交互的序列。,標識驅動交互序列的事件,理解這些事件如何和特定的對象相關聯(lián)。,為每個用況創(chuàng)建事件軌跡(event trace)。,為系統(tǒng)建造狀態(tài)機圖。,復審對象--行為模型,以驗證準確性和一致性。,,,28,復旦大學計算機科學與工程系 軟件工程課程,5. 建立對象——行為模型28復旦大學計算機科學與工程系,面向對象設計(Object_Oriented Design),,面向對象設計的一般步驟,如下:,系統(tǒng)設計,將子系統(tǒng)分配到處理器,選擇實現(xiàn)數(shù)據(jù)管理、界面支持和任務管理的設計策略,為系統(tǒng)設計合適的控制機制,復審并考慮權衡(折衷),,29,復旦大學計算機科學與工程系 軟件工程課程,面向對象設計(Object_Oriented Design,對象設計,在過程級別(procedural lavel)設計每個操作,即設計每個操作的實現(xiàn)細節(jié),定義內部類,為類屬性設計內部數(shù)據(jù)結構,消息設計,使用對象間的協(xié)作和對象--關系模型,設計消息模型,復審,復審設計模型并在需要時迭代。,,30,復旦大學計算機科學與工程系 軟件工程課程,對象設計30復旦大學計算機科學與工程系 軟件工程課程,1.,系統(tǒng)設計,1),將分析模型劃分成子系統(tǒng),在OO系統(tǒng)設計中,我們把分析模型中緊密相關的類、關系等設計元素包裝成子系統(tǒng)。,通常,子系統(tǒng)的所有元素共享某些公共的性質,它們可能都涉及完成相同的功能;它們可能駐留在相同的產品硬件中;或者它們可能管理相同的類和資源。子系統(tǒng)由它們的責任所刻畫,即,一個子系統(tǒng)可以通過它提供的服務來標識。在OOD中,這種服務是完成特定功能的一組操作。,,,31,復旦大學計算機科學與工程系 軟件工程課程,1. 系統(tǒng)設計31復旦大學計算機科學與工程系 軟件,,子系統(tǒng)的設計準則是:,(1) 子系統(tǒng)應具有定義良好的接口,通過接口和系統(tǒng)的其它部分通信;,(2) 除了少數(shù)的“通信類” 外,子系統(tǒng)中的類應只和該子系統(tǒng)中的其它類協(xié)作;,(3) 子系統(tǒng)的數(shù)量不宜太多;,(4) 可以在子系統(tǒng)內部再次劃分,以降低復雜性。,,32,復旦大學計算機科學與工程系 軟件工程課程,子系統(tǒng)的設計準則是:32復旦大學計算機科學,2),標識問題本身的并發(fā)性,并為子系統(tǒng)分配處理器,通過對對象--行為模型的分析,可發(fā)現(xiàn)系統(tǒng)的并發(fā)性。如果對象(或子系統(tǒng))不是同時活動的,則它們不需并發(fā)處理,此時這些對象(或子系統(tǒng))可以在同一個處理器上實現(xiàn)。反之,如果對象(或子系統(tǒng))必須對一些事件同時異步地動作,則它們被視為并發(fā)的,此時,可以將并發(fā)的子系統(tǒng)分別分配到不同的處理器,或者分配在同一個處理器,而由操作系統(tǒng)提供并發(fā)支持。,,33,復旦大學計算機科學與工程系 軟件工程課程,2) 標識問題本身的并發(fā)性,并為子系統(tǒng)分配處理器33復旦大學,3),任務管理設計,Coad和Yourdon提出如下管理并發(fā)任務對象的設計策略:,(1) 確定任務的類型;,(2) 必要時,定義協(xié)調者任務和關聯(lián)的對象;,(3) 將協(xié)調者任務和其它任務集成。,通常可通過了解任務是如何被啟動的來確定任務的類型,如事件驅動任務,時鐘驅動任務。每個任務應該定義其優(yōu)先級,并識別關鍵任務。當有多個任務時還可以考慮增加一個協(xié)調者任務,以控制這些任務協(xié)同工作。,,34,復旦大學計算機科學與工程系 軟件工程課程,3) 任務管理設計34復旦大學計算機科學與工程系,4),數(shù)據(jù)管理設計,通常數(shù)據(jù)管理設計成層次模式,其目的是將數(shù)據(jù)的物理存儲及操縱與系統(tǒng)的業(yè)務邏輯加以分離。,數(shù)據(jù)管理的設計包括設計系統(tǒng)中各種數(shù)據(jù)對象的存儲方式(如內部數(shù)據(jù)結構、文件、數(shù)據(jù)庫),以及設計相應的服務,即為要儲存的對象增加所需的屬性和操作。,,35,復旦大學計算機科學與工程系 軟件工程課程,4) 數(shù)據(jù)管理設計35復旦大學計算機科學與工程系,5),資源管理設計,OO系統(tǒng)可利用一系列不同的資源(如磁盤驅動器、處理器、通信線路等外部實體或數(shù)據(jù)庫、對象等抽象資源),很多情況下,子系統(tǒng)同時競爭這些資源,因此要設計一套控制機制和安全機制,以控制對資源的訪問,避免對資源使用的沖突。,,6),人機界面設計,對大多數(shù)應用系統(tǒng)而言,人機界面本身是一個非常重要的子系統(tǒng)。人機界面主要強調人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。它包括窗口、菜單、報告的設計。,,,36,復旦大學計算機科學與工程系 軟件工程課程,5) 資源管理設計36復旦大學計算機科學與工程系,7),子系統(tǒng)間的通信,子系統(tǒng)之間可以通過建立客戶/服務器連接進行通信,也可以通過端對端(peer to peer)連接進行通信。我們必須確定子系統(tǒng)間通信的合約(contract),合約提供了一個子系統(tǒng)和另一個子系統(tǒng)交互的方式。,,,37,復旦大學計算機科學與工程系 軟件工程課程,7) 子系統(tǒng)間的通信37復旦大學計算機科學與工程系,2.,對象設計,對象設計是為每個類的屬性和操作作出詳細的設計,并設計連接類與它的協(xié)作者之間的消息規(guī)約。,1) 對象描述,對象的設計描述可以采取以下形式之一:,(1) 協(xié)議描述:描述對象的接口,即定義對象可以接收的消息以及當對象接收到消息后完成的相關操作;,(2) 實現(xiàn)描述:描述傳送給對象的消息所蘊含的每個操作的實現(xiàn)細節(jié),實現(xiàn)細節(jié)包括有關對象私有部分的信息,即關于描述對象屬性的數(shù)據(jù)結構的內部細節(jié)和描述操作的過程細節(jié)。,對對象的使用者來說,只需要協(xié)議描述就夠了。,,38,復旦大學計算機科學與工程系 軟件工程課程,2. 對象設計38復旦大學計算機科學與工程系 軟,2)設計算法和數(shù)據(jù)結構,為對象中的屬性和操作設計數(shù)據(jù)結構和實現(xiàn)算法。,,3.,設計模式,(design patterns),在許多面向對象系統(tǒng)中,存在一些類和通信對象的重復出現(xiàn)的模式。這些模式求解特定的設計問題,使面向對象設計更靈活,并最終可復用。這些模式幫助設計者復用以前成功的設計,設計者可以把這些模式應用到新的設計中。,,39,復旦大學計算機科學與工程系 軟件工程課程,2)設計算法和數(shù)據(jù)結構39復旦大學計算機科學與工程系,一個設計模式通??捎盟膫€信息來描述:,1)模式名,設計模式名應具有實際的含義,它能反映模式的適用性和意圖。,2)使模式可被應用所必須存在的環(huán)境和條件。,3)設計模式的特征,模式特征指出一些設計的屬性,調整這些屬性使該模式能適應各種不同的問題。這些屬性表示設計的特征,這些特征能被用于檢索(通過數(shù)據(jù)庫)以找到合適的模式。,4)應用設計模式的結果(consequences),對于一個設計模式的使用結果表明設計決策的走向。,,40,復旦大學計算機科學與工程系 軟件工程課程,一個設計模式通常可用四個信息來描述:40復旦大學計算機科學與,典型的面向對象方法,Coad & Yourdon 方法,OMT方法,Booch方法,OOSE方法,,41,復旦大學計算機科學與工程系 軟件工程課程,典型的面向對象方法Coad & Yourdon 方法41復旦,內容摘要,面向對象的基本概念,面向對象的分析和設計過程,UML概述,用況建模,靜態(tài)建模,動態(tài)建模,物理體系結構建模,,42,復旦大學計算機科學與工程系 軟件工程課程,內容摘要面向對象的基本概念42復旦大學計算機科學與工程系,統(tǒng)一建模語言UML,Unified Modeling Language,,43,復旦大學計算機科學與工程系 軟件工程課程,統(tǒng)一建模語言UMLUnified Modeling Lang,UML概述,為何研究UML—結束方法大戰(zhàn),發(fā)展歷史,,1994年Booch和Rumbaugh在Rational Software Corporation開始了UML的工作,其目標是創(chuàng)建一個“統(tǒng)一的方法”,,1995年OOSE的創(chuàng)始人Jacobson加盟到這項工作中,工作重點轉移到創(chuàng)建一種統(tǒng)一的建模語言UML,1996年6月、10月、1997年1月、11月分別推出了UML0.9、 UML0.91、 UML1.0、 UML1.1,,44,復旦大學計算機科學與工程系 軟件工程課程,UML概述 為何研究UML—結束方法大戰(zhàn)44復旦大學計算機科,UML概述,1997年11月,OMG(Object Management Group)批準把UML1.1作為基于面向對象技術的標準建模語言,之后,UML進行了持續(xù)的修訂和改進,先后產生了UML1.2、1.3、1.4、1.5版本,2004年推出了UML2.0,UML2.0對UML1.x作了重大的修改。,,45,復旦大學計算機科學與工程系 軟件工程課程,UML概述 1997年11月,OMG(Obj,模型元素,,模型元素指模型中的實體以及實體間相互連接的關系,,部分模型元素,注解,類,屬性,操作,對象:類,屬性,操作,狀態(tài),用況,結點,,供應接口,包,,依賴,關聯(lián),泛化,,主動類,屬性,操作,,,,請求接口,,,構件,,,,實現(xiàn),,,46,復旦大學計算機科學與工程系 軟件工程課程,模型元素部分模型元素注解類屬性操作對象:類屬性操作狀態(tài)用況,視圖與圖,主題域,視圖 (view),圖(diagram),結構化,靜態(tài)視圖,類圖(class),設計視圖,內部結構(internal structure),協(xié)作圖(collaboration),構件圖(component),用況視圖,用況圖(use case),動態(tài)的,狀態(tài)機視圖,狀態(tài)機圖(state machine),活動視圖,活動圖(activity),交互視圖,順序圖(sequence),通信圖(communication),物理的,部署視圖,部署圖(deployment),模型管理,模型管理視圖,包圖(package),,47,復旦大學計算機科學與工程系 軟件工程課程,視圖與圖主題域視圖 (view)圖(diagram)結構化靜,靜態(tài)視圖,靜態(tài)視圖對應用領域中的概念以及與系統(tǒng)實現(xiàn)有關的內部概念建模,主要由類以及類之間的相互關系組成,在靜態(tài)視圖中不描述依賴于時間的系統(tǒng)行為。靜態(tài)視圖用類圖來展示。,設計視圖,設計視圖對應用自身的設計結構建模,例如,將設計結構擴展成:結構化類元,為實現(xiàn)功能所需的協(xié)作和良定義接口的構件的組裝。設計視圖由內部結構圖、協(xié)作圖和構件圖實現(xiàn)。,,48,復旦大學計算機科學與工程系 軟件工程課程,靜態(tài)視圖48復旦大學計算機科學與工程系 軟件工程課程,用況視圖,用況視圖對被稱為執(zhí)行者的外部代理(他與特定視點的主題交互)所感受到的主題(如系統(tǒng))功能建模。用況視圖的意圖是列出系統(tǒng)中的用況和執(zhí)行者,并顯示哪個執(zhí)行者參與了哪個用況的執(zhí)行。用況的行為用動態(tài)視圖,特別是交互視圖來表示。用況視圖用用況圖來展示。,,49,復旦大學計算機科學與工程系 軟件工程課程,用況視圖49復旦大學計算機科學與工程系 軟件工程課程,狀態(tài)機視圖,狀態(tài)機視圖對一個類的對象的可能生命歷程建模。一個狀態(tài)機包括用遷移連接的狀態(tài),每個狀態(tài)對一個對象在其生命期中滿足某種條件的一個時間段建模。當一個事件發(fā)生時,它會導致觸發(fā)對象的一個狀態(tài)向另一個新狀態(tài)的遷移,附加在遷移上的動作或活動也同時被執(zhí)行。狀態(tài)機視圖用狀態(tài)機圖來展示。,,50,復旦大學計算機科學與工程系 軟件工程課程,狀態(tài)機視圖50復旦大學計算機科學與工程系 軟件工程課,活動視圖,活動展示了包含在執(zhí)行計算或工作流中的計算活動的控制流。一個動作是一個基本的計算步,一個活動結點是一組動作或子活動,一個活動可描述順序的和并發(fā)的計算。活動視圖用活動圖來展示。,交互視圖,交互視圖描述系統(tǒng)各部分中消息交換的順序。交互視圖提供了系統(tǒng)中行為的整體視圖,也就是說,它展示了多個對象間交叉的控制流。交互視圖用順序圖和通信圖來展示。,,51,復旦大學計算機科學與工程系 軟件工程課程,活動視圖51復旦大學計算機科學與工程系 軟件工程課程,部署視圖,部署視圖描述了運行時結點上制品的分布。制品是一個物理實現(xiàn)單元,如一個文件,它也可以表示一或多個構件的實現(xiàn)(一種表現(xiàn)形式)。結點是運行時表示計算資源的物理對象,如,計算機、設備或內存。部署視圖允許對分配的結果和資源分配進行評估。部署視圖用部署圖來展示。,,52,復旦大學計算機科學與工程系 軟件工程課程,部署視圖52復旦大學計算機科學與工程系 軟件工程課程,模型管理視圖,模型管理視圖對模型自身的組織建模。一個模型由一組保存模型元素(如類、狀態(tài)機、用況)的包組成。包還可以包含其它的包,因此,一個模型從一個間接包含所有模型內容的根包(root package)開始。包是操縱模型內容的單元,還是訪問控制和配置控制的單元。每個模型元素可以被一個包或另一個元素擁有。模型管理信息通常展示在包圖中,它是類圖的變種。,,53,復旦大學計算機科學與工程系 軟件工程課程,模型管理視圖53復旦大學計算機科學與工程系 軟件工程,剖面(profile),UML是用一個元模型(metamodel)定義的,元模型是指描述建模語言自身的模型。通常元模型的改變是復雜的,也是危險的。剖面機制允許在不修改基礎元模型的前提下對UML作有限的變化。UML包含三個主要的可擴展結構:約束(constraints)、版型(stereotypes)和標簽值(tagged values)。,約束是以自然語言或特定形式語言的正文表示的語義條件或限制,約束寫在花括號中({}),如{value≥0},{or}。版型是在基于現(xiàn)有各類模型元素的外形中定義模型元素的新類型,它本質上是一種新元類(metaclass)。版型可以擴展語義,但不能擴展原元模型類的結構。用《 》標記版型,如《signal》。標簽值是貼在任何模型元素上的被命名的信息片。下圖給出了版型和標簽值的應用實例。,,54,復旦大學計算機科學與工程系 軟件工程課程,剖面(profile)54復旦大學計算機科學與工程系,版型和標簽值,《authorship》,Scheduling,tagged values,,《authorship》,author=“Frank Martin”,due=Dec.31,2009,,55,復旦大學計算機科學與工程系 軟件工程課程,版型和標簽值《authorship》tagged value,類圖,類圖展示了系統(tǒng)中類的靜態(tài)結構,即類與類之間的相互聯(lián)系。類之間有多種聯(lián)系方式,如關聯(lián)(相互連接)、依賴(一個類依賴或使用另一個類)、泛化(一個類是另一個類的特殊情況)等。可以把若干個相關的類包裝在一起作為一個單元(包),相當于一個子系統(tǒng)。一個系統(tǒng)可以有多張類圖,一個類也可以出現(xiàn)在幾張類圖中。,對象圖,對象圖是類圖的實例,它展示了系統(tǒng)執(zhí)行在某一時間點上的一個可能的快照。對象圖使用與類圖相同的符號,只是在對象名下面加上下劃線,同時它還顯示了對象間的所有實例鏈接(,link,)關系。,,56,復旦大學計算機科學與工程系 軟件工程課程,類圖56復旦大學計算機科學與工程系 軟件工程課程,內部結構圖,內部結構圖展示了類的分解,給出了組成一個結構化類元的相互連接的部分、端口和連接器。,手冊:演出手冊,數(shù)據(jù)庫:演出數(shù)據(jù)庫,售票員:售票員,,,,,售票處,,售票,,,,內部結構圖,,57,復旦大學計算機科學與工程系 軟件工程課程,內部結構圖手冊:演出手冊數(shù)據(jù)庫:演出數(shù)據(jù)庫售票員:售票員售票,協(xié)作圖,協(xié)作圖展示了協(xié)作的定義,是一種合成的結構圖。協(xié)作是為了完成某一目的而一起工作的一組對象間的上下文關系。,劇院售票,* 1,售票亭:售票亭[*],:售票處,1 *,終端:售票終端[*],,協(xié)作圖,,58,復旦大學計算機科學與工程系 軟件工程課程,協(xié)作圖劇院售票* 1售票亭:售票亭[*]:售票處1 *,構件圖,構件圖展示了系統(tǒng)中的構件(即來自應用的軟件單元),構件間通過接口的連接,以及構件之間的依賴關系。構件是一種結構化類元,可以用內部結構圖來定義它的內部結構。,,59,復旦大學計算機科學與工程系 軟件工程課程,構件圖59復旦大學計算機科學與工程系 軟件工程課程,用況圖,用況圖展示了各類外部執(zhí)行者與系統(tǒng)所提供的用況之間的連接。一個用況是系統(tǒng)所提供的一個功能(也可以說是系統(tǒng)提供的某一特定用法)的描述,執(zhí)行者是指那些可能使用這些用況的人或外部系統(tǒng),執(zhí)行者與用況的連接表示該執(zhí)行者使用了那個用況。用況圖給出了用戶所感受到的系統(tǒng)行為,但不描述系統(tǒng)如何實現(xiàn)該功能。用況通常用普通正文描述,也可以用活動圖來描述。,,60,復旦大學計算機科學與工程系 軟件工程課程,用況圖60復旦大學計算機科學與工程系 軟件工程課程,狀態(tài)機圖,狀態(tài)機圖通常是對類描述的補充,它說明該類的對象所有可能的狀態(tài)以及哪些事件將導致狀態(tài)的改變。一個事件可以是另一個對象向它發(fā)送的一條消息,或者是滿足了某些條件。狀態(tài)的改變稱為遷移(,transition,)。一個狀態(tài)遷移還可以有與之相關的動作,該動作指出狀態(tài)遷移時應做什么。,并不是所有的類都要畫狀態(tài)機圖,有些類有一些意義明確的狀態(tài),并且其行為受不同的狀態(tài)所影響和改變,這些類才需要畫狀態(tài)機圖。,,61,復旦大學計算機科學與工程系 軟件工程課程,狀態(tài)機圖61復旦大學計算機科學與工程系 軟件工程課程,活動圖,活動圖展示了連續(xù)的活動流。活動圖通常用來描述完成一個操作所需要的活動。當然它還能用于描述其它活動流,如描述用況。活動圖由動作狀態(tài)組成,它包含完成一個動作的活動的規(guī)約(即規(guī)格說明)。當一個動作完成時,將離開該動作狀態(tài)?;顒訄D中的動作部分還可包括消息發(fā)送和接收的規(guī)約。,,62,復旦大學計算機科學與工程系 軟件工程課程,活動圖62復旦大學計算機科學與工程系 軟件工程課程,順序圖,順序圖展示了幾個對象之間的動態(tài)交互關系。它主要是用來顯示對象之間發(fā)送消息的順序,它還顯示了對象之間的交互,即系統(tǒng)執(zhí)行的某一特定點所發(fā)生的事。,通信圖,通信圖用幾何排列來表示交互作用中的角色,它顯示了有協(xié)作關系的復合結構組成部分或角色范圍內的交互。它明確地顯示元素之間的協(xié)作關系,而不顯示作為獨立維的時間,消息的順序和并發(fā)線程必須由順序號確定。,,63,復旦大學計算機科學與工程系 軟件工程課程,順序圖63復旦大學計算機科學與工程系 軟件工程課程,部署圖,部署圖展示了運行時處理結點和在結點上生存的制品的配置。結點是運行時的計算資源,制品是物理實體,如構件、文件。,部署圖中顯示部署在結點上的制品和它們之間的關系,以及結點之間的連接和通信方式。,,64,復旦大學計算機科學與工程系 軟件工程課程,部署圖64復旦大學計算機科學與工程系 軟件工程課程,包圖,包圖是由包和它們間的關系組成的結構圖,模型是在某一視點給定的精度上對系統(tǒng)的完整描述,一個系統(tǒng)可以從不同的視點(如分析模型、設計模型)存在多個模型。一個模型可看作一個特定類型的包,通常僅顯示包就足夠了(不必顯示包內部的細節(jié))。,下圖給出了劇院系統(tǒng)所細分成的包以及它們之間的依賴關系。,,65,復旦大學計算機科學與工程系 軟件工程課程,包圖65復旦大學計算機科學與工程系 軟件工程課程,,售票處,,計劃,廣告,,時間表,,客戶記錄,,票記錄,,,運作,售票,,工資單,,計算,,購買,,包圖,,66,復旦大學計算機科學與工程系 軟件工程課程,售票處計劃廣告時間表客戶記錄票記錄運作售票工資單計算購買包圖,內容摘要,面向對象的基本概念,面向對象的分析和設計過程,UML概述,用況建模,靜態(tài)建模,動態(tài)建模,物理體系結構建模,,67,復旦大學計算機科學與工程系 軟件工程課程,內容摘要面向對象的基本概念67復旦大學計算機科學與工程系,用況建模,用況建模是用于描述一個系統(tǒng)應該做什么的建模技術,用況建模不僅用于新系統(tǒng)的需求獲取,還可用于已有系統(tǒng)的升級。用況模型用用況圖來描述。,用況圖展示了各類外部執(zhí)行者與系統(tǒng)所提供的用況之間的連接。一個用況是系統(tǒng)所提供的一個功能(也可以說是系統(tǒng)提供的某一特定用法)的描述,執(zhí)行者是指那些可能使用這些用況的人或外部系統(tǒng),執(zhí)行者與用況的連接表示該執(zhí)行者使用了那個用況。用況圖給出了用戶所感受到的系統(tǒng)行為,但不描述系統(tǒng)如何實現(xiàn)該功能。,,用況通常用普通正文描述,也可以用活動圖來描述。,,,68,復旦大學計算機科學與工程系 軟件工程課程,用況建模 用況建模是用于描述一個系統(tǒng)應該做什么的建模技,任何一個涉及到系統(tǒng)功能活動的人都會用到用況模型。,客戶:用況模型指明了系統(tǒng)的功能,描述了系統(tǒng)能如何使用。用況建模時客戶的積極參與是十分重要的。,開發(fā)者:用況模型幫助他們理解系統(tǒng)要做什么,同時為以后的其它模型建模、結構設計、實現(xiàn)等提供依據(jù)。,集成測試和系統(tǒng)測試人員:根據(jù)用況來測試系統(tǒng),以驗證系統(tǒng)是否完成了用況指定的功能。,,69,復旦大學計算機科學與工程系 軟件工程課程,任何一個涉及到系統(tǒng)功能活動的人都會用到用況模型。69,用況建模步驟,創(chuàng)建用況模型的步驟包括:,1.定義系統(tǒng),2.確定執(zhí)行者,3.確定用況,4.描述用況,5.定義用況間的關系,,6.確認模型,,70,復旦大學計算機科學與工程系 軟件工程課程,用況建模步驟創(chuàng)建用況模型的步驟包括:70復旦大學計算機科學與,用況模型由用況圖組成,用況圖展示了執(zhí)行者、用況以及它們之間的關系。用況通常用正文形式來描述。,一個用況模型可由若干幅用況圖組成。一幅用況圖包含的模型元素有系統(tǒng)、執(zhí)行者、用況,以及表示它們間的不同關系,如關聯(lián)、擴展、包含、泛化等。,,71,復旦大學計算機科學與工程系 軟件工程課程,用況模型由用況圖組成,用況圖展示了執(zhí)行者、用況以及它們之間的,用況圖,電話訂購系統(tǒng)用況圖,Telephone Catalog,,,Customer,Salespersonn,Shipping Clerk,supervisor,establish,credit,Fill order,Arrange,Payment,Supply,Customer,Data,order,product,Arrange,Credit,Pay,cash,place,order,Request,Catalog,《include》,《include》,《include》,《extend》,check,status,,,,,,,72,復旦大學計算機科學與工程系 軟件工程課程,用況圖電話訂購系統(tǒng)用況圖Telephone Catalog,一.,,確定執(zhí)行者,執(zhí)行者是指與系統(tǒng)交互的人或其它系統(tǒng),執(zhí)行者代表一種角色,而不是具體的某個人,執(zhí)行者可分成主執(zhí)行者和副執(zhí)行者:,主執(zhí)行者使用系統(tǒng)的主要功能,例如,保險系統(tǒng)中主執(zhí)行者處理保險的注冊和管理,副執(zhí)行者處理系統(tǒng)的輔助功能,例如,管理數(shù)據(jù)庫、通信、備份以及其它管理等系統(tǒng)維護,,73,復旦大學計算機科學與工程系 軟件工程課程,一. 確定執(zhí)行者73復旦大學計算機科學與工程系 軟,執(zhí)行者還可分為主動執(zhí)行者和被動執(zhí)行者:,主動執(zhí)行者開始一個用況,被動執(zhí)行者從不開始用況,只是參與一個或多個用況,,74,復旦大學計算機科學與工程系 軟件工程課程,執(zhí)行者還可分為主動執(zhí)行者和被動執(zhí)行者:74復旦大學計算機科學,我們可以通過回答下列問題來確定執(zhí)行者:,誰使用系統(tǒng)的主要功能(主執(zhí)行者)?,誰需要從系統(tǒng)中得到對他們日常工作的支持?,誰需要維護、管理和維持系統(tǒng)的日常運行(副執(zhí)行者)?,系統(tǒng)需要控制哪些硬件設備?,系統(tǒng)需要與哪些其它系統(tǒng)交互?,哪些人或哪些系統(tǒng)對系統(tǒng)產生的結果(值)感興趣?,,75,復旦大學計算機科學與工程系 軟件工程課程,我們可以通過回答下列問題來確定執(zhí)行者:75復旦大學計算機科學,確定用況,1.,用況的特征,用況總是被執(zhí)行者啟動的(initiated),執(zhí)行者必須直接或間接地指示系統(tǒng)去執(zhí)行用況,用況向執(zhí)行者提供值,這些值必須是可識別的,用況是完整的,一個用況必須是一個完整的描述,,用況是一個類,而不是實例,用況的實例稱為場景(scenario),,76,復旦大學計算機科學與工程系 軟件工程課程,確定用況76復旦大學計算機科學與工程系 軟件工程課程,2.,尋找用況,可以通過讓每個執(zhí)行者回答以下問題來尋找用況:,執(zhí)行者需要系統(tǒng)提供哪些功能?執(zhí)行者需要做什么?,執(zhí)行者是否需要讀、創(chuàng)建、刪除、修改或儲存系統(tǒng)中的某類信息?,執(zhí)行者是否要被系統(tǒng)中的事件提醒,或者執(zhí)行者是否要提醒系統(tǒng)中某些事情?從功能觀點看,這些事件表示什么?,執(zhí)行者的日常工作是否因為系統(tǒng)的新功能(尤其是目前尚未自動化的功能)而被簡化或提高了效率?,,77,復旦大學計算機科學與工程系 軟件工程課程,2. 尋找用況77復旦大學計算機科學與工程系 軟件,另外還有一些不是目前的執(zhí)行者回答的問題:,系統(tǒng)需要哪些輸入/輸出?誰從系統(tǒng)獲取信息?誰為系統(tǒng)提供信息?,與當前系統(tǒng)(可能是人工系統(tǒng)而不是自動化系統(tǒng))的實現(xiàn)有關的主要問題是什么?,,對同一個項目,不同的開發(fā)者選取的用況數(shù)是不一樣的。例如一個10個人年規(guī)模的項目,有人選取了20個用況,而在一個類似的項目中,有人選用了100個用況。,似乎20個太少,而100個太多,希望在項目規(guī)模和用況數(shù)之間保持均衡。,,,78,復旦大學計算機科學與工程系 軟件工程課程,另外還有一些不是目前的執(zhí)行者回答的問題:78復旦大學計算機科,3.,用況的描述,用況通常用正文(text)來描述,也可用活動圖來描述 。,用況的正文描述應包括以下內容:,用況的目的:用況的最終目的是什么?它試圖達到什么?,用況是如何啟動(initiate)的:哪個執(zhí)行者在什么情況下啟動用況的執(zhí)行?,執(zhí)行者和用況之間的消息流:用況與執(zhí)行者之間交換什么消息或事件來通知對方改變或恢復信息?描述系統(tǒng)與執(zhí)行者之間的主消息流是什么?以及系統(tǒng)中哪些實體被使用或修改?,,79,復旦大學計算機科學與工程系 軟件工程課程,3. 用況的描述79復旦大學計算機科學與工程系 軟,用況中可供選擇的流:用況中的活動可根據(jù)條件或異常(exception)有選擇地執(zhí)行。,如何通過給執(zhí)行者一個值來結束用況:描述何時可認為用況已結束.,,80,復旦大學計算機科學與工程系 軟件工程課程,用況中可供選擇的流:用況中的活動可根據(jù)條件或異常(excep,執(zhí)行者的簡要描述,如,客戶,:向公司訂購商品的人,,客戶代表,:公司處理客戶請求的雇員,,庫存系統(tǒng),:記錄公司庫存的軟件,用況的簡要描述,如,訂購貨物,:客戶創(chuàng)建一個新的請求商品的訂單,并為那些商品付費,,取消訂單,:客戶取消一個已經存在的訂單,,81,復旦大學計算機科學與工程系 軟件工程課程,執(zhí)行者的簡要描述81復旦大學計算機科學與工程系 軟件,用況的詳細描述,前置條件和后置條件,前置條件和后置條件表示用況開始和結束的條件,事件流,(flow of events),事件流是一系列陳述句,它是從執(zhí)行者的角度看,列出用況的各個步驟,用況描述中可以包含條件、分支和循環(huán)。,例如:訂購貨物用況的描述如下,,82,復旦大學計算機科學與工程系 軟件工程課程,用況的詳細描述82復旦大學計算機科學與工程系 軟件,用況名稱,:訂購貨物,參與的執(zhí)行者,:客戶、客戶代表,前置條件,:一個合法的客戶已經登錄到這個系統(tǒng),事件流,:,當客戶選擇訂購貨物時,用況開始,客戶輸入他的姓名和地址,如果客戶只輸入郵編,系統(tǒng)將給出州和城市名,當客戶輸入產品代碼,a. 系統(tǒng)給出產品描述和價格,b. 系統(tǒng)往客戶訂單中添加該物品的價格,循環(huán)結束,5. 客戶輸入信用卡支付信息,,83,復旦大學計算機科學與工程系 軟件工程課程,用況名稱:訂購貨物83復旦大學計算機科學與工程系 軟,6. 客戶選擇提交,7. 系統(tǒng)檢驗輸入的信息,把該訂單作為未完成的交易保存,同時向記賬系統(tǒng)轉發(fā)支付信息。如果客戶提交的信息不正確,系統(tǒng)將提示客戶修改。,8. 當支付確認后,訂單就被標記上已經確認,同時返回給客戶一個訂單ID,用況也就結束了。如果支付沒有被確認,系統(tǒng)將提示客戶改正支付信息或者取消。如果客戶選擇修改信息,就回到第5步;如果選擇取消,用況結束。,后置條件,:如果訂單沒有被取消,它將保存在系統(tǒng)中,并做上標記,,84,復旦大學計算機科學與工程系 軟件工程課程,6. 客戶選擇提交84復旦大學計算機科學與工程系 軟,其他需求,在用況中還可描述一些特殊的需求,這些需求常常是非功能性需求,如可用性、安全性、可維護性、負載、性能、自動防故障、數(shù)據(jù)需求等。,如訂購貨物用況的其他需求:,前置條件,:,(略),事件流,:,(略),特殊需求,:,系統(tǒng)必須在一秒內響應客戶的輸入,后置條件,:,(略),,85,復旦大學計算機科學與工程系 軟件工程課程,其他需求85復旦大學計算機科學與工程系 軟件工程課程,事件流可分為兩部分:,基本路徑,基本路徑是運轉正常時的路徑,是一系列沒有分支和選擇的簡單陳述句,可選路徑,可選路徑是指不同于基本路徑而允許不同的事件序列的路徑。,對于明顯有可能隨時發(fā)生的事情來說,可選路徑非常有效。,,86,復旦大學計算機科學與工程系 軟件工程課程,事件流可分為兩部分:86復旦大學計算機科學與工程系,如訂購貨物用況的基本路徑:,事件流,:,基本路徑,當客戶選擇訂購貨物時,用況開始,客戶輸入他的姓名和地址,當客戶輸入產品代碼時,a. 系統(tǒng)給出產品描述和價格,b. 系統(tǒng)往客戶訂單中添加該物品的價格,循環(huán)結束,4. 客戶輸入信用卡支付信息,5. 客戶選擇提交,6. 系統(tǒng)檢驗輸入的信息,把該訂單作為未完成的交易保存,同時向記賬系統(tǒng)轉發(fā)支付信息,7. 當支付確認后,訂單就被標記上已經確認,同時返回給客戶一個訂單ID,用況結束,,87,復旦大學計算機科學與工程系 軟件工程課程,如訂購貨物用況的基本路徑:87復旦大學計算機科學與工程系,如果在訂購貨物用況中,客戶可以在提交訂單前隨時取消訂單,其可選路徑如下:,可選路徑,:,在選擇提交前的任何時候,客戶都可以選擇cancel。這次訂購沒有被保存,用況結束。,在基本路徑第6步,如果有任何不正確的信息,系統(tǒng)提示客戶去修改這些信息。,在基本路徑第7步,如果支付沒有被確認,系統(tǒng)將提示客戶改正支付信息或者取消。如果客戶選擇修改信息,就回到基本路徑第4步;如果選擇取消,用況結束。,,,,88,復旦大學計算機科學與工程系 軟件工程課程,如果在訂購貨物用況中,客戶可以在提交訂單前隨時取消訂,確定用況之間的關系,,關系,說明,記號,關聯(lián),執(zhí)行者與他所參與的一個用況之間的通信路徑,,擴展,擴展的用況到基本用況的一種關系,它指出擴展的用況所定義的行為如何插入到基本用況所定義的行為中。擴展的用況通過模塊化方式增量地修改基本用況,,《extend》,,89,復旦大學計算機科學與工程系 軟件工程課程,確定用況之間的關系關系說明記號關聯(lián)執(zhí)行者與他所參與的一個用況,關系,說明,記號,包含,從基本用況到另一個用況(稱為包含用況,inclusion use case)的一種關系,它指出包含用況定義的行為被包含在基本用況所定義的行為中?;居脹r能看到包含用況,并依賴于執(zhí)行包含用況后的結果,但兩者相互間不能訪問其它屬性,,用況泛化,一個一般用況與一個更特殊的用況之間的關系,特殊用況可繼承一般用況的特征,,,《include》,,90,復旦大學計算機科學與工程系 軟件工程課程,關系說明記號包含從基本用況到另一個用況(稱為包含用況,inc,實例,本實例實現(xiàn)一個簡化了的銀行儲蓄賬戶管理系統(tǒng),該系統(tǒng)是在銀行的柜臺上對客戶辦理活期儲蓄業(yè)務。系統(tǒng)的需求陳述如下:,一個客戶可以在多個銀行中開設賬戶,一個客戶也可在同一銀行中開設多個不同的賬戶??蛻艨梢酝ㄟ^銀行職員進行開戶、存款、取款、轉賬、注銷賬戶等活動。其中轉賬指客戶將自己的某個賬戶上的錢款轉入同一銀行的不同賬戶(稱為銀行內轉賬)或轉入不同銀行的賬戶(稱為銀行間轉賬)。系統(tǒng)管理員負責系統(tǒng)的賬戶管理及業(yè)務報表的生成。,,91,復旦大學計算機科學與工程系 軟件工程課程,實例本實例實現(xiàn)一個簡化了的銀行儲蓄賬戶管理系統(tǒng),該系統(tǒng)是在銀,識別執(zhí)行者,客戶:到銀行辦理儲蓄業(yè)務的人,負責輸入密碼,銀行職員(客戶代理):銀行工作人員,代表客戶進行儲蓄業(yè)務的操作,銀行職員(管理人員):銀行工作人員,根據(jù)客戶的儲蓄業(yè)務更新賬戶,管理員:銀行計算機的管理人員,負責賬戶的管理和業(yè)務報表的生成,,92,復旦大學計算機科學與工程系 軟件工程課程,識別執(zhí)行者92復旦大學計算機科學與工程系 軟件工程課,識別用況,從系統(tǒng)的需求陳述可知,銀行職員(客戶代理)需要系統(tǒng)提供開戶、存款、取款、轉賬、注銷賬戶等功能,這些功能都包含了校驗密碼的功能。系統(tǒng)管理員需要系統(tǒng)提供賬戶管理和報表生成功能。銀行職員(管理人員)則參與了賬戶管理中的更新賬戶的功能。此外,轉賬功能可分為銀行內轉賬和銀行間轉賬,我們可將它們設計成三個用況,其中銀行內轉賬用況和銀行間轉賬用況都繼承了基本轉賬用況。據(jù)此分析,得到該系統(tǒng)的用況圖如下圖所示。,,93,復旦大學計算機科學與工程系 軟件工程課程,識別用況93復旦大學計算機科學與工程系 軟件工程課程,銀行儲蓄賬戶管理系統(tǒng),《包含》,《包含》,《包含》,,銀行職員,(用戶代理),,賬戶管理,銀行間轉賬,開戶,取款,銀行內轉賬,注銷,存款,校驗密碼,轉賬,報表生成,,,,,,其它銀行,賬戶管理系統(tǒng),客戶,系統(tǒng)管理員,銀行職員,(管理人員),,,94,復旦大學計算機科學與工程系 軟件工程課程,銀行儲蓄賬戶管理系統(tǒng)《包含》《包含》《包含》銀行職員賬戶管理,開戶用況描述,用況名稱:開戶,參與的執(zhí)行者:銀行職員(客戶代理),客戶,前置條件:一個合法的銀行職員(客戶代理)已登錄到該系統(tǒng),事件流:,1.當選擇開戶功能時用況開始,2.輸入客戶信息(姓名、地址、身份證號等),3.從賬戶管理系統(tǒng)獲取新的賬號,4.請客戶輸入密碼,5.請客戶再次輸入密碼,6.如果兩次密碼不一致則回到第4步,否則繼續(xù),7.在賬戶庫中添加新賬戶,8.打印存折,用況結束,后置條件:在賬戶庫中增加了一個新賬戶,得到一張新存折,,95,復旦大學計算機科學與工程系 軟件工程課程,開戶用況描述95復旦大學計算機科學與工程系 軟件工程,取款用況描述,用況名稱:取款,參與的執(zhí)行者:銀行職員(客戶代理),前置條件:一個合法的銀行職員(客戶代理)已登錄到該系統(tǒng),事件流:,基本路徑:,1.當選擇取款功能時用況開始,2.當輸入客戶信息(姓名、賬號等)后,a)如果客戶信息與賬戶不一致,顯示錯誤信息,可以重新輸入或結束用況,b)如果該賬戶被凍結(如因掛失而凍結),顯示凍結信息并結束用況,3.輸入并校驗密碼,,96,復旦大學計算機科學與工程系 軟件工程課程,取款用況描述96復旦大學計算機科學與工程系 軟件工程,4.輸入取款金額,如果該賬戶的余款小于取款金額,顯示錯誤信息,要求重新輸入,5.打印取款單,交客戶簽字,6.建立取款事件記錄,更新賬戶信息,7. 打印存折,用況結束,可選路徑:,1.在第5步客戶簽字之前的任何時刻,客戶可以取消本次取款,用況結束,2.第3步校驗密碼時,如發(fā)現(xiàn)密碼不一致,則重新輸入密碼,或用況結束,后置條件:如果取款成功,客戶賬戶中的余額被更新(減少),否則