軟件工程導論第10章-面向?qū)ο蠓治稣n件_第1頁
軟件工程導論第10章-面向?qū)ο蠓治稣n件_第2頁
軟件工程導論第10章-面向?qū)ο蠓治稣n件_第3頁
軟件工程導論第10章-面向?qū)ο蠓治稣n件_第4頁
軟件工程導論第10章-面向?qū)ο蠓治稣n件_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十章面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程10.2需求陳述10.3建立對象模型10.4建立動態(tài)模型10.5建立功能模型10.6定義服務10.7小結(jié)1h第十章面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程1h10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓治觯?)其關鍵是識別出問題域內(nèi)的類與對象,并分析它們相互間的關系,最終建立起3種模型。(2)對象模型最基本、最重要、最核心。

2h10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓治?h10.1面向?qū)ο蠓治龅幕具^程3個子模型對所解決問題的描述角度進行劃分:

對象模型(靜態(tài)結(jié)構(gòu))3個子模型動態(tài)模型(交互次序)

功能模型(數(shù)據(jù)變換)

3h10.1面向?qū)ο蠓治龅幕具^程3個子模型3h10.1面向?qū)ο蠓治龅幕具^程5個層次

復雜問題的對象模型的5個層次五個層次像是對象模型的5張水平切片,一層比一層顯示出對象模型的更多細節(jié)。類或?qū)ο箝g的關系指讀者理解大型、復雜模型的一種機制,將一個大型的、復雜的對象模型分解成幾個不同的概念范疇(記憶的7+2原則)4h10.1面向?qū)ο蠓治龅幕具^程5個層次復雜問題的對象模型的面向?qū)ο蠓治龅倪^程尋找類與對象識別結(jié)構(gòu)定義屬性

建立動態(tài)模型

定義服務

10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓治霾豢赡車栏竦匕搭A定順序進行,大型、復雜系統(tǒng)的模型需要反復構(gòu)造多遍才能建成。先構(gòu)造模型的子集,再到完全地理解整個問題,最終建立整個模型。5h面向?qū)ο蠓治龅倪^程10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓?0.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做”問題范圍功能需求性能需求應用環(huán)境假設條件6h10.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做ATM機系統(tǒng)問題描述某銀行擬開發(fā)一個自動取款機系統(tǒng),它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡系統(tǒng)。總行投資購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及分行下屬的各個儲蓄所內(nèi)。該軟件的開發(fā)成本由各分行分攤。儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。10.2需求陳述舉例7h10.2需求陳述舉例7hATM機系統(tǒng)問題描述

銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權(quán)申請領取現(xiàn)金兌換卡,使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金或查詢自己賬戶的信息。將來還可能要求使用ATM辦理轉(zhuǎn)賬、存款等事務。8hATM機系統(tǒng)問題描述

銀行柜員使用柜員終端處理儲戶提交的儲蓄ATM機系統(tǒng)問題描述

一張現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現(xiàn)金兌換卡的可能性。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據(jù)卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現(xiàn)金口吐出現(xiàn)金,并且打印賬單給用戶。9hATM機系統(tǒng)問題描述

9h自動取款機(ATM)系統(tǒng)ATM系統(tǒng)10.2需求陳述10h自動取款機(ATM)系統(tǒng)10.2需求陳述10h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象尋找以下五類客觀事物可感知的物理實體人或組織的角色應該記憶的事件兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì)需要說明的概念11h10.3建立對象模型10.3.1找出候選類與對象11h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象(續(xù))名詞解析法

從陳述中找出所有名詞,作為類和對象的初步候選者銀行,自動取款機(ATM),系統(tǒng),中央計算機,

分行計算機,柜員終端,網(wǎng)絡,總行,分行,軟件,

成本,市,街道,營業(yè)廳,儲蓄所,柜員,儲戶,

現(xiàn)金,支票,賬戶,事物,現(xiàn)金兌換卡,余額,

磁卡,分行代碼,卡號,用戶,副本,信息,密碼,

類型,取款額,賬單,訪問。

12h10.3建立對象模型10.3.1找出候選類與對象12h某銀行擬開發(fā)一個自動取款機系統(tǒng),它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡系統(tǒng)??傂型顿Y購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及分行下屬的各個儲蓄所內(nèi)。該軟件的開發(fā)成本由各分行分攤。儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。從陳述中找出所有名詞,作為類和對象的初步候選者

13h從陳述中找出所有名詞,作為類和對象的初步候選者

13h從陳述中找出所有名詞,作為類和對象的初步候選者

銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權(quán)申請領取現(xiàn)金兌換卡,使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金或查詢自己賬戶的信息(例如,某個指定賬戶上的余額)。將來還可能要求使用ATM辦理轉(zhuǎn)賬、存款等事務。14h從陳述中找出所有名詞,作為類和對象的初步候選者

銀行柜員使用一張現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼,對應總行下的一個分行。卡號確定這張卡可以訪問哪些賬戶。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說,系統(tǒng)應該能夠處理并發(fā)的訪問。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據(jù)卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現(xiàn)金口吐出現(xiàn)金,并且打印賬單給用戶。從陳述中找出所有名詞,作為類和對象的初步候選者

15h從陳述中找出所有名詞,作為類和對象的初步候選者

15h10.3建立對象模型10.3.1找出候選類與對象2.篩選出正確的類與對象篩選時主要依據(jù)下列標準,刪除不正確或不必要的類與對象!!!!(1)冗余(2)無關(3)籠統(tǒng)(4)屬性(5)操作銀行,自動取款機(ATM),系統(tǒng),中央計算機分行計算機,柜員終端,網(wǎng)絡,總行,分行,軟件,成本,市,街道,營業(yè)廳,儲蓄所,柜員,儲戶,

現(xiàn)金,支票,賬戶,事務,現(xiàn)金兌換卡,余額,磁卡,分行代碼,卡號,用戶,副本,信息,密碼,類型,取款額,賬單,訪問。(共34個名詞)從中篩選出正確的類與對象)(儲戶、用戶;現(xiàn)金兌換卡、磁卡和副本)(成本、市、街道、營業(yè)廳和儲蓄所)(銀行、訪問、信息、網(wǎng)絡、系統(tǒng)、軟件)(現(xiàn)金、支票、取款額、賬單、余額、分行代碼、卡號、密碼、類型)注意:在分析階段不應該過早地考慮怎樣實現(xiàn)目標系統(tǒng)。16h10.3建立對象模型10.3.1找出候選類與對象銀行,自動10.3.1找出候選類與對象2.篩選出正確的類與對象(共11個)ATM中央計算機分行計算機柜員終端總行分行柜員儲戶賬戶事務(分為柜員事務和遠程事務)

現(xiàn)金兌換卡17h10.3.1找出候選類與對象2.篩選出正確的類與對象(共1110.3.2確定關聯(lián)1.初步確定關聯(lián)

需求陳述中使用的描述性動詞或動詞詞組,通常表示關聯(lián)關系。(1)直接提取動詞短語得出關聯(lián)(2)需求陳述中隱含的關聯(lián)(3)根據(jù)問題域知識得出的關聯(lián)

18h10.3.2確定關聯(lián)1.初步確定關聯(lián)18h直接提取動詞短語得出的關聯(lián)ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡??傂袚碛卸嗯_ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及儲蓄所內(nèi)。分行分攤軟件開發(fā)成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關聯(lián)總行由各個分行組成。分行保管賬戶??傂袚碛兄醒胗嬎銠C。系統(tǒng)維護事務日志。系統(tǒng)提供必要的安全性。儲戶擁有現(xiàn)金兌換卡。中央計算機與分行通信根據(jù)問題域知識得出的關聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。19h直接提取動詞短語得出的關聯(lián)隱含的關聯(lián)根據(jù)問題域知識得出的關聯(lián)10.3.2確定關聯(lián)2.篩選(1)根據(jù)下述標準刪除候選關聯(lián):已刪去的類之間的關聯(lián)。與問題無關的或在實現(xiàn)階段考慮的關聯(lián)。瞬時事件。派生關聯(lián)。(2)三元關聯(lián):將三元關聯(lián)改造成二元關聯(lián)。20h10.3.2確定關聯(lián)2.篩選20h直接提取動詞短語得出的關聯(lián)ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及儲蓄所內(nèi)。分行分攤軟件開發(fā)成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關聯(lián)總行由各個分行組成。分行保管賬戶??傂袚碛兄醒胗嬎銠C。系統(tǒng)維護事務日志。系統(tǒng)提供必要的安全性。儲戶擁有現(xiàn)金兌換卡。中央計算機與分行通信根據(jù)問題域知識得出的關聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。去掉已刪去類的關聯(lián)去掉與問題無關的或應該在實現(xiàn)階段考慮的關聯(lián)去掉瞬時事件將三元關聯(lián)改造成二元關聯(lián)去掉派生關聯(lián)分行計算機處理針對賬戶的事務。分解為:分行計算機處理事務。事務修改賬戶。柜員輸入針對賬戶的事務。分解為:柜員輸入事務。事務修改賬戶。ATM與中央計算機交換關于事務的信息。分解為:ATM與中央計算機通信。在ATM機上輸入事務。21h直接提取動詞短語得出的關聯(lián)隱含的關聯(lián)根據(jù)問題域知識得出的關聯(lián)10.3.2確定關聯(lián)3.進一步完善正名、分解、補充、標明重數(shù)

ATM系統(tǒng)原始的類圖22h10.3.2確定關聯(lián)3.進一步完善ATM系統(tǒng)原始的類圖22(6)分行提供分行計算機和柜員終端。(7)儲戶擁有賬戶。(8)分行計算機維護賬戶。同2及13-2(9)柜員終端與分行計算機通信。(10)中央計算機確定事務與分行的對應關系。同(5)(13)柜員輸入針對賬戶的事務。分解為:(13-1)柜員輸入事務。(13-2)事務修改賬戶。(14)分行計算機處理針對賬戶的事務。分解為:(14-1)分行計算機處理事務。(14-2)事務修改賬戶。(15)ATM與中央計算機交換關于事務的信息。分解為:(15-1)ATM與中央計算機通信。(15-2)在ATM機上輸入事務。隱含的關聯(lián)(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現(xiàn)金兌換卡。(5)中央計算機與分行通信根據(jù)問題域知識得出的關聯(lián)(11)現(xiàn)金兌換卡訪問賬戶。(12)分行雇用柜員。直接提取動詞短語得出的關聯(lián)23h(6)分行提供分行計算機和柜員終端。隱含的關聯(lián)根據(jù)問題域知識隱含的關聯(lián)(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現(xiàn)金兌換卡。(5)中央計算機與分行通信(6)分行提供分行計算機和柜員終端。(7)儲戶擁有賬戶。(8)分行計算機維護賬戶。同2及13-2(9)柜員終端與分行計算機通信。(10)中央計算機確定事務與分行的對應關系。同(5)(13)柜員輸入針對賬戶的事務。分解為:(13-1)柜員輸入事務。(13-2)事務修改賬戶。(14)分行計算機處理針對賬戶的事務。分解為:(14-1)分行計算機處理事務。(14-2)事務修改賬戶。(15)ATM與中央計算機交換關于事務的信息。分解為:(15-1)ATM與中央計算機通信。(15-2)在ATM機上輸入事務。根據(jù)問題域知識得出的關聯(lián)(11)現(xiàn)金兌換卡訪問賬戶。(12)分行雇用柜員。24h隱含的關聯(lián)(6)分行提供分行計算機和柜員終端。(13)柜員輸10.3.3劃分主題在概念上把系統(tǒng)包含的內(nèi)容分解成若干個范疇應該按問題領域而不是用功能分解的方法來確定主題不同主題內(nèi)的對象相互間依賴和交互最少的原則總行(總行和中央計算機)ATM系統(tǒng)分行(分行、分行計算機、柜員終端、柜員

事務、柜員和賬戶等)ATM(ATM、遠程事務、現(xiàn)金兌換卡和儲戶)25h10.3.3劃分主題在概念上把系統(tǒng)包含的內(nèi)容分解成若干個范10.3.4確定屬性屬性是對象的性質(zhì)或特征注意在分析階段不要用屬性來表示對象間的關系,使用關聯(lián)能夠表示兩個對象間的任何關系,而且把關系表示得更清晰、更醒目。26h10.3.4確定屬性屬性是對象的性質(zhì)或特征26h10.3.4確定屬性選擇在需求陳述中一般用名詞詞組表示屬性需藉助于領域知識和常識才能分析得出屬性屬性對問題域的基本結(jié)構(gòu)影響很小屬性的確定與問題域和目標系統(tǒng)的任務有關。不要考慮那些超出所要解決的問題范圍的屬性。先找最重要的屬性,再逐漸把其余屬性增添進去。分析階段不考慮那些純粹用于實現(xiàn)的屬性。27h10.3.4確定屬性27h經(jīng)過篩選之后,得到ATM系統(tǒng)中各個類的屬性,如圖所示。10.3.4確定屬性28h經(jīng)過篩選之后,得到ATM系統(tǒng)中各個類的屬性,如圖所示。10.建立類間的繼承是為了共享其公共性質(zhì)/屬性。繼承也對類按層次加以組織。繼承關系反映出一定深度的領域知識,需領域?qū)<颐芮信浜喜拍芡瓿伞@^承前人的成果是提高效率的重要方法,也是復用的基礎。10.3.5識別繼承關系建立類間的繼承是為了共享其公共性質(zhì)/屬性。10.3.5兩種建立繼承(即泛化)關系的方式:(1)自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個過程實質(zhì)上模擬了人類歸納思維過程。例如,在ATM系統(tǒng)中,“遠程事務”和“柜員事務”是類似的,可以泛化出父類“事務”;類似地,從“ATM”和“柜員終端”泛化出父類“輸入站”。(2)自頂向下:把現(xiàn)有類細化成更具體的子類或從已知類派生出一個新類,這模擬了人類的演繹思維過程:從一般到特殊。帶有形容詞修飾的名詞詞組往往暗示了一些具體類。分析階段應該避免過度細化。兩種建立繼承(即泛化)關系的方式:增加了繼承關系之后的ATM對象模型增加了繼承關系之后的ATM對象模型一次建模過程很難得到完全正確的對象模型。有些細化工作(例如,定義服務)是在建立了動態(tài)模型和功能模型之后才進行的。由于面向?qū)ο蟮母拍詈头栐谡麄€開發(fā)過程中都是一致的,因此遠比使用結(jié)構(gòu)分析、設計技術更容易實現(xiàn)反復修改、逐步完善的過程。建模的步驟并不一定按照前面講述的次序進行。它給初學者提供了一個指南。下面以ATM系統(tǒng)為例,討論可能做的修改:10.3.6反復修改一次建模過程很難得到完全正確的對象模型。10.3.6反復1.分解“現(xiàn)金兌換卡”類“現(xiàn)金兌換卡”有兩個相對獨立的功能,它既是鑒別儲戶及使用ATM的權(quán)限的卡,又是ATM獲得分行代碼和卡號等數(shù)據(jù)的數(shù)據(jù)載體。因此,把“現(xiàn)金兌換卡”類分解為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類,將使每個類的功能更單一:前一個類標志儲戶訪問賬戶的權(quán)限,后一個類是含有分行代碼和卡號的數(shù)據(jù)載體。多張現(xiàn)金兌換卡可能對應著相同的訪問權(quán)限。1.分解“現(xiàn)金兌換卡”類2.“事務”由“更新”組成一個事務可包含對賬戶的若干次更新。更新指的是對賬戶所做的一個動作(取款、存款或查詢)?!案隆庇凶约旱膶傩?類型、金額等),應該獨立存在,因此應該把它作為類。3.把“分行”與“分行計算機”合并區(qū)分“分行”與“分行計算機”,對于分析這個系統(tǒng)來說,并沒有多大意義,為簡單起見,把它們合并。類似地,應該合并“總行”和“中央計算機”。下圖給出了修改后的ATM對象模型,與修改前比較起來,它更簡單、更清晰。2.“事務”由“更新”組成1、分解“現(xiàn)金兌換卡”類為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類;2、“事務”由“更新”組成;3、把“分行”與“分行計算機”合并修改后的ATM對象模型1、分解“現(xiàn)金兌換卡”類為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類;對于僅存儲靜態(tài)數(shù)據(jù)的系統(tǒng)(例如數(shù)據(jù)庫)來說,動態(tài)模型并沒有什么意義。但是若開發(fā)交互式系統(tǒng)時,動態(tài)模型卻起著很重要的作用。例如:收集輸入信息是目標系統(tǒng)的主要工作。10.4建立動態(tài)模型的方法10.4建立動態(tài)模型對于僅存儲靜態(tài)數(shù)據(jù)的系統(tǒng)(例如數(shù)據(jù)庫)來說,10.4建立遺漏常見的交互行為。建立動態(tài)模型的三步:

編寫典型交互行為的腳本,包括正常情況和異常情況腳本。從腳本中提取出事件,確定觸發(fā)每個事件的動作對象以及接受事件的目標對象。排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關系,并用狀態(tài)圖描繪它們。最后,比較各個對象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。遺漏常見的交互行為。建立動態(tài)模型的三步:腳本:

是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。編寫腳本的目的:

是保證不遺漏重要的交互步驟,有助于確保整個交互過程的正確性的和清晰性。編寫腳本內(nèi)容:

描寫既可以包括系統(tǒng)中發(fā)生的全部事件,也可以只包括由某些特定對象觸發(fā)的事件。對于每個事件,都應該指明觸發(fā)該事件的動作對象(系統(tǒng)、用戶或其他事物)、接受事件的目標對象以及該事件的參數(shù)。編寫步驟:

編寫正常情況的腳本??紤]特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)??紤]出錯情況,例如,輸入的值為非法值或響應失敗。10.4.1編寫腳本腳本:是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。10.4ATM系統(tǒng)正常和異常腳本ATM系統(tǒng)正常事件跟蹤圖有助于畫狀態(tài)圖。它把事件序列以及事件與對象的關系,形象、清晰地表示出來。事件跟蹤圖實質(zhì)上是擴充的腳本,是簡化的UML順序圖。在事件跟蹤圖中,一條豎線代表一個對象,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對象指向接受對象。時間從上向下遞增。10.4.3畫事件跟蹤圖事件跟蹤圖有助于畫狀態(tài)圖。10.4.3畫事件跟蹤圖ATM系統(tǒng)正常情況下的事件跟蹤圖時間對象事件/消息ATM系統(tǒng)正常情況下的事件跟蹤圖時間對象事件/消息一張狀態(tài)圖描繪一類對象的行為,它確定了由事件序列引出的狀態(tài)序列。從豎線射出的箭頭線,常是對象達到某個狀態(tài)時所做的行為(也常是引起另一類對象狀態(tài)轉(zhuǎn)換的事件)。兩個事件之間的間隔就是一個狀態(tài)(也可能不變)。10.4.4畫狀態(tài)圖一張狀態(tài)圖描繪一類對象的行為,它確定了由事件序列引出的狀考慮完正常事件之后再考慮邊界情況和特殊情況.如,用戶要求取消該當前事務,“超時”,停電/機。不能省略對用戶出錯情況的處理。一張覆蓋了腳本中某類對象的全部事件的狀態(tài)圖仍可能會一些遺漏的情況。

盡量給每個狀態(tài)取個有意義的名字。10.4.4畫狀態(tài)圖10.4.4畫狀態(tài)圖以ATM系統(tǒng)為例:

“ATM”、“柜員終端”、“總行”和“分行”都是主動對象,它們相互發(fā)送事件;

“現(xiàn)金兌換卡”、“事務”和“賬戶”是被動對象,并不發(fā)送事件。“儲戶”和“柜員”雖然也是動作對象,但是,它們都是系統(tǒng)外部的因素,無須在系統(tǒng)內(nèi)實現(xiàn)它們。以ATM系統(tǒng)為例:ATM的狀態(tài)圖ATM的狀態(tài)圖圖10.10總行類驗證賬戶的狀態(tài)圖圖10.11分行類驗證密碼的狀態(tài)圖總行類分行類圖10.10總行類驗證賬戶的狀態(tài)圖圖10.11分行類驗證圖10.10總行類的處理事務狀態(tài)圖圖10.11分行類的處理事務狀態(tài)圖總行類分行類圖10.10總行類的處理事務狀態(tài)圖圖10.11分行類的處各個類的狀態(tài)圖通過共享事件聯(lián)系(合并)起來,構(gòu)成了系統(tǒng)的動態(tài)模型。應該檢查系統(tǒng)級的完整性和一致性。對于沒有前驅(qū)或沒有后繼的狀態(tài)應該著重審查,如果這個狀態(tài)既不是交互序列的起點也不是終點,則發(fā)現(xiàn)了一個錯誤。10.4.5審查動態(tài)模型各個類的狀態(tài)圖通過共享事件聯(lián)系(合并)起來,構(gòu)成了系統(tǒng)的應該審查每個事件,跟蹤它對系統(tǒng)中各個對象所產(chǎn)生的效果,以保證它們與每個腳本都匹配。例:ATM系統(tǒng)在總行類的狀態(tài)圖中,事件“無效代碼”,是由總行發(fā)出的,但是在ATM類的狀態(tài)圖中并沒有一個狀態(tài)接受這個事件。因此,在ATM類的狀態(tài)圖中應該再補充一個狀態(tài)“do/顯示分行代碼錯信息”,它接受由前驅(qū)狀態(tài)“do/驗證賬戶”發(fā)出的事件“無效代碼”,它的后續(xù)狀態(tài)是“退卡”。10.4.5審查動態(tài)模型應該審查每個事件,跟蹤它對系統(tǒng)中各個對象所產(chǎn)生的效果,以ATM的狀態(tài)圖do/顯示分行代碼錯信息無效代碼無效代碼ATM的狀態(tài)圖do/顯示分無效代碼無效代碼在確定類中應有的服務時,既要考慮該類實體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務。1.常規(guī)行為在分析階段可以認為,類中定義的每個屬性都是可以訪問的,也就是說,假設在每個類中都定義了讀、寫該類每個屬性的操作。但是,通常無需在類圖中顯式表示這些常規(guī)操作。10.6定義服務在確定類中應有的服務時,既要考慮該類實體的常規(guī)行為,又要考慮2.從事件導出的操作!!!狀態(tài)圖中對象接收消息,因此該對象必須有由消息選擇符指定的操作,它啟動相應的服務。在ATM系統(tǒng)中,總行類的“處理分行事務”啟動分行對象的服務“更新賬戶”。所啟動的服務常是接受事件的對象在相應狀態(tài)的行為。(如:圖10.11分行狀態(tài)圖的左圖)2.從事件導出的操作!!!從圖10.9ATM的狀態(tài)圖可導出的ATM類的操作有:

顯示主屏(),要求密碼(),驗證賬戶(),要求類型();要求金額(),處理事務(),吐出現(xiàn)金及請求拿走現(xiàn)金().......。從圖10.10總行的狀態(tài)圖可導出的總行類的操作有:

請求處理分行事務(),驗證分行代碼(),請求分行驗卡()從圖10.11分行的狀態(tài)圖可導出分行類的操作有:

更新賬戶(),驗證卡號(),驗證密碼()從圖10.9ATM的狀態(tài)圖可導出的ATM類的操作有:4.利用繼承減少冗余操作應該盡量利用繼承機制以減少所需定義的服務數(shù)目。只要不違背領域知識和常識,就盡量抽取出相似類的公共屬性和操作,以建立這些類的新父類,并在類等級的不同層次中正確地定義各個服務。4.利用繼承減少冗余操作分析就是提取系統(tǒng)需求并建立問題域精確模型的過程。面向?qū)ο蠓治龅年P鍵工作,是分析、確定問題域中的對象及對象間的關系,并建立起問題域的對象模型、功能模型和動態(tài)模型。大型、復雜系統(tǒng)的對象模型通常由下述5個層次組成:主題層、類與對象層、結(jié)構(gòu)層、屬性層和服務層。它們對應著在建立對象模型的過程中所應完成的5項工作。10.7小結(jié)分析就是提取系統(tǒng)需求并建立問題域精確模型的過程。10.7課后作業(yè):P256第1題課后作業(yè):課堂練習某電話公司決定開發(fā)一個管理所有客戶信息的交互式網(wǎng)絡系統(tǒng),系統(tǒng)的功能如下:(1)瀏覽客戶信息:任何使用Internet的網(wǎng)絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。(2)登錄:電話公司授予每個客戶一個賬戶。擁有授權(quán)賬戶的客戶,可以使用系統(tǒng)提供的頁面設置個人密碼,并使用該賬戶和密碼在系統(tǒng)注冊。(3)修改個人信息:客戶在系統(tǒng)注冊后,可以發(fā)送電子郵件或使用系統(tǒng)提供的頁面對個人信息進行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司服務的客戶信息。系統(tǒng)采用面向?qū)ο蟮姆椒ㄟM行開發(fā),請畫出用例圖和類圖。課堂練習某電話公司決定開發(fā)一個管理所有客戶信息的交互式網(wǎng)絡系用例圖用例圖建立對象模型(類圖)的五個層次

復雜問題的對象模型的5個層次五個層次像是對象模型的5張水平切片,一層比一層顯示出對象模型的更多細節(jié)。類或?qū)ο箝g的關系指讀者理解大型、復雜模型的一種機制,將一個大型的、復雜的對象模型分解成幾個不同的概念范疇(記憶的7+2原則)下列五類客觀事物可作為候選對象:可感知的物理實體人或組織的角色應該記憶的事件兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì)需要說明的概念建立對象模型(類圖)的五個層次復雜問題的對象模型的5個層次五第1步:采用名詞解析法獲取候選的類(1)瀏覽客戶信息:任何使用Internet的網(wǎng)絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。(2)登錄:電話公司授予每個客戶一個賬戶。擁有授權(quán)賬戶的客戶,可以使用系統(tǒng)提供的頁面設置個人密碼,并使用該賬戶和密碼在系統(tǒng)注冊。(3)修改個人信息:客戶在系統(tǒng)注冊后,可以發(fā)送電子郵件或使用系統(tǒng)提供的頁面對個人信息進行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司服務的客戶信息。第1步:采用名詞解析法獲取候選的類(1)瀏覽客戶信息:任何使候選的類如下:(1)瀏覽客戶信息:任何使用Internet的網(wǎng)絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。(2)登錄:電話公司授予每個客戶一個賬戶。擁有授權(quán)賬戶的客戶,可以使用系統(tǒng)提供的頁面設置個人密碼,并使用該賬戶和密碼在系統(tǒng)注冊。(3)修改個人信息:客戶在系統(tǒng)注冊后,可以發(fā)送電子郵件或使用系統(tǒng)提供的頁面對個人信息進行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司服務的客戶信息。(1)客戶信息、Internet、網(wǎng)絡用戶、電話公司、所有的客戶信息、姓名、住址、電話號碼(2)客戶、賬號、系統(tǒng)、頁面、個人密碼(3)個人信息、電子郵件、系統(tǒng)(4)管理人員、信息(1)客戶信息,Internet,網(wǎng)絡用戶,電話公司所有的客戶信息,姓名,住址,電話號碼(2)登錄,客戶,賬戶,系統(tǒng),頁面,個人密碼(3)個人信息,電子郵件(4)公司,管理人員候選的類如下:(1)瀏覽客戶信息:任何使用Internet的第2步:篩選出有用的類(1)客戶信息,Internet,網(wǎng)絡用戶,電話公司所有的客戶信息,姓名,住址,電話號碼(2)登錄,客戶,賬戶,系統(tǒng),頁面,個人密碼(3)個人信息,電子郵件(4)公司,管理人員篩選依據(jù):(1)冗余:客戶信息與個人信息(2)無關:電話公司(3)籠統(tǒng):系統(tǒng)、頁面、公司、Internet(4)屬性:姓名、住址、電話號碼、賬戶、個人密碼、電子郵件(5)操作:登錄第2步:篩選出有用的類(1)客戶信息,Internet,網(wǎng)絡第2步:篩選出有用的類,共去掉13個候選類,剩下5個類:(1)客戶信息,網(wǎng)絡用戶,所有的客戶信息(2)客戶(3)

(4)管理人員第2步:篩選出有用的類,共去掉13個候選類,剩下5個類:(1類的詳細描述:描述類名網(wǎng)絡用戶internetClient公司客戶CompanyCustomer公司的管理人員InternalManager客戶信息(記錄公司單個客戶信息)Customer客戶信息表(記錄公司所有客戶信息)CustomerList類的詳細描述:描述類名網(wǎng)絡用戶internetClient公第3步:獲取并補充隱含的關聯(lián)每個客戶對應著相應的客戶信息客戶信息表由客戶信息組成網(wǎng)絡用戶瀏覽客戶信息表公司管理員和公司客戶是網(wǎng)絡用戶第3步:獲取并補充隱含的關聯(lián)每個客戶對應著相應的客戶信息第4步:畫類圖第4步:畫類圖第十章面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程10.2需求陳述10.3建立對象模型10.4建立動態(tài)模型10.5建立功能模型10.6定義服務10.7小結(jié)67h第十章面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程1h10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓治觯?)其關鍵是識別出問題域內(nèi)的類與對象,并分析它們相互間的關系,最終建立起3種模型。(2)對象模型最基本、最重要、最核心。

68h10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓治?h10.1面向?qū)ο蠓治龅幕具^程3個子模型對所解決問題的描述角度進行劃分:

對象模型(靜態(tài)結(jié)構(gòu))3個子模型動態(tài)模型(交互次序)

功能模型(數(shù)據(jù)變換)

69h10.1面向?qū)ο蠓治龅幕具^程3個子模型3h10.1面向?qū)ο蠓治龅幕具^程5個層次

復雜問題的對象模型的5個層次五個層次像是對象模型的5張水平切片,一層比一層顯示出對象模型的更多細節(jié)。類或?qū)ο箝g的關系指讀者理解大型、復雜模型的一種機制,將一個大型的、復雜的對象模型分解成幾個不同的概念范疇(記憶的7+2原則)70h10.1面向?qū)ο蠓治龅幕具^程5個層次復雜問題的對象模型的面向?qū)ο蠓治龅倪^程尋找類與對象識別結(jié)構(gòu)定義屬性

建立動態(tài)模型

定義服務

10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓治霾豢赡車栏竦匕搭A定順序進行,大型、復雜系統(tǒng)的模型需要反復構(gòu)造多遍才能建成。先構(gòu)造模型的子集,再到完全地理解整個問題,最終建立整個模型。71h面向?qū)ο蠓治龅倪^程10.1面向?qū)ο蠓治龅幕具^程面向?qū)ο蠓?0.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做”問題范圍功能需求性能需求應用環(huán)境假設條件72h10.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做ATM機系統(tǒng)問題描述某銀行擬開發(fā)一個自動取款機系統(tǒng),它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡系統(tǒng)??傂型顿Y購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及分行下屬的各個儲蓄所內(nèi)。該軟件的開發(fā)成本由各分行分攤。儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。10.2需求陳述舉例73h10.2需求陳述舉例7hATM機系統(tǒng)問題描述

銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權(quán)申請領取現(xiàn)金兌換卡,使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金或查詢自己賬戶的信息。將來還可能要求使用ATM辦理轉(zhuǎn)賬、存款等事務。74hATM機系統(tǒng)問題描述

銀行柜員使用柜員終端處理儲戶提交的儲蓄ATM機系統(tǒng)問題描述

一張現(xiàn)金兌換卡就是一張?zhí)刂频拇趴ǎ厦嬗蟹中写a。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現(xiàn)金兌換卡的可能性。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據(jù)卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現(xiàn)金口吐出現(xiàn)金,并且打印賬單給用戶。75hATM機系統(tǒng)問題描述

9h自動取款機(ATM)系統(tǒng)ATM系統(tǒng)10.2需求陳述76h自動取款機(ATM)系統(tǒng)10.2需求陳述10h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象尋找以下五類客觀事物可感知的物理實體人或組織的角色應該記憶的事件兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì)需要說明的概念77h10.3建立對象模型10.3.1找出候選類與對象11h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象(續(xù))名詞解析法

從陳述中找出所有名詞,作為類和對象的初步候選者銀行,自動取款機(ATM),系統(tǒng),中央計算機,

分行計算機,柜員終端,網(wǎng)絡,總行,分行,軟件,

成本,市,街道,營業(yè)廳,儲蓄所,柜員,儲戶,

現(xiàn)金,支票,賬戶,事物,現(xiàn)金兌換卡,余額,

磁卡,分行代碼,卡號,用戶,副本,信息,密碼,

類型,取款額,賬單,訪問。

78h10.3建立對象模型10.3.1找出候選類與對象12h某銀行擬開發(fā)一個自動取款機系統(tǒng),它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡系統(tǒng)??傂型顿Y購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及分行下屬的各個儲蓄所內(nèi)。該軟件的開發(fā)成本由各分行分攤。儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。從陳述中找出所有名詞,作為類和對象的初步候選者

79h從陳述中找出所有名詞,作為類和對象的初步候選者

13h從陳述中找出所有名詞,作為類和對象的初步候選者

銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權(quán)申請領取現(xiàn)金兌換卡,使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金或查詢自己賬戶的信息(例如,某個指定賬戶上的余額)。將來還可能要求使用ATM辦理轉(zhuǎn)賬、存款等事務。80h從陳述中找出所有名詞,作為類和對象的初步候選者

銀行柜員使用一張現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼,對應總行下的一個分行??ㄌ柎_定這張卡可以訪問哪些賬戶。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說,系統(tǒng)應該能夠處理并發(fā)的訪問。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據(jù)卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現(xiàn)金口吐出現(xiàn)金,并且打印賬單給用戶。從陳述中找出所有名詞,作為類和對象的初步候選者

81h從陳述中找出所有名詞,作為類和對象的初步候選者

15h10.3建立對象模型10.3.1找出候選類與對象2.篩選出正確的類與對象篩選時主要依據(jù)下列標準,刪除不正確或不必要的類與對象!!!!(1)冗余(2)無關(3)籠統(tǒng)(4)屬性(5)操作銀行,自動取款機(ATM),系統(tǒng),中央計算機分行計算機,柜員終端,網(wǎng)絡,總行,分行,軟件,成本,市,街道,營業(yè)廳,儲蓄所,柜員,儲戶,

現(xiàn)金,支票,賬戶,事務,現(xiàn)金兌換卡,余額,磁卡,分行代碼,卡號,用戶,副本,信息,密碼,類型,取款額,賬單,訪問。(共34個名詞)從中篩選出正確的類與對象)(儲戶、用戶;現(xiàn)金兌換卡、磁卡和副本)(成本、市、街道、營業(yè)廳和儲蓄所)(銀行、訪問、信息、網(wǎng)絡、系統(tǒng)、軟件)(現(xiàn)金、支票、取款額、賬單、余額、分行代碼、卡號、密碼、類型)注意:在分析階段不應該過早地考慮怎樣實現(xiàn)目標系統(tǒng)。82h10.3建立對象模型10.3.1找出候選類與對象銀行,自動10.3.1找出候選類與對象2.篩選出正確的類與對象(共11個)ATM中央計算機分行計算機柜員終端總行分行柜員儲戶賬戶事務(分為柜員事務和遠程事務)

現(xiàn)金兌換卡83h10.3.1找出候選類與對象2.篩選出正確的類與對象(共1110.3.2確定關聯(lián)1.初步確定關聯(lián)

需求陳述中使用的描述性動詞或動詞詞組,通常表示關聯(lián)關系。(1)直接提取動詞短語得出關聯(lián)(2)需求陳述中隱含的關聯(lián)(3)根據(jù)問題域知識得出的關聯(lián)

84h10.3.2確定關聯(lián)1.初步確定關聯(lián)18h直接提取動詞短語得出的關聯(lián)ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及儲蓄所內(nèi)。分行分攤軟件開發(fā)成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關聯(lián)總行由各個分行組成。分行保管賬戶??傂袚碛兄醒胗嬎銠C。系統(tǒng)維護事務日志。系統(tǒng)提供必要的安全性。儲戶擁有現(xiàn)金兌換卡。中央計算機與分行通信根據(jù)問題域知識得出的關聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。85h直接提取動詞短語得出的關聯(lián)隱含的關聯(lián)根據(jù)問題域知識得出的關聯(lián)10.3.2確定關聯(lián)2.篩選(1)根據(jù)下述標準刪除候選關聯(lián):已刪去的類之間的關聯(lián)。與問題無關的或在實現(xiàn)階段考慮的關聯(lián)。瞬時事件。派生關聯(lián)。(2)三元關聯(lián):將三元關聯(lián)改造成二元關聯(lián)。86h10.3.2確定關聯(lián)2.篩選20h直接提取動詞短語得出的關聯(lián)ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業(yè)廳及儲蓄所內(nèi)。分行分攤軟件開發(fā)成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關聯(lián)總行由各個分行組成。分行保管賬戶??傂袚碛兄醒胗嬎銠C。系統(tǒng)維護事務日志。系統(tǒng)提供必要的安全性。儲戶擁有現(xiàn)金兌換卡。中央計算機與分行通信根據(jù)問題域知識得出的關聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。去掉已刪去類的關聯(lián)去掉與問題無關的或應該在實現(xiàn)階段考慮的關聯(lián)去掉瞬時事件將三元關聯(lián)改造成二元關聯(lián)去掉派生關聯(lián)分行計算機處理針對賬戶的事務。分解為:分行計算機處理事務。事務修改賬戶。柜員輸入針對賬戶的事務。分解為:柜員輸入事務。事務修改賬戶。ATM與中央計算機交換關于事務的信息。分解為:ATM與中央計算機通信。在ATM機上輸入事務。87h直接提取動詞短語得出的關聯(lián)隱含的關聯(lián)根據(jù)問題域知識得出的關聯(lián)10.3.2確定關聯(lián)3.進一步完善正名、分解、補充、標明重數(shù)

ATM系統(tǒng)原始的類圖88h10.3.2確定關聯(lián)3.進一步完善ATM系統(tǒng)原始的類圖22(6)分行提供分行計算機和柜員終端。(7)儲戶擁有賬戶。(8)分行計算機維護賬戶。同2及13-2(9)柜員終端與分行計算機通信。(10)中央計算機確定事務與分行的對應關系。同(5)(13)柜員輸入針對賬戶的事務。分解為:(13-1)柜員輸入事務。(13-2)事務修改賬戶。(14)分行計算機處理針對賬戶的事務。分解為:(14-1)分行計算機處理事務。(14-2)事務修改賬戶。(15)ATM與中央計算機交換關于事務的信息。分解為:(15-1)ATM與中央計算機通信。(15-2)在ATM機上輸入事務。隱含的關聯(lián)(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現(xiàn)金兌換卡。(5)中央計算機與分行通信根據(jù)問題域知識得出的關聯(lián)(11)現(xiàn)金兌換卡訪問賬戶。(12)分行雇用柜員。直接提取動詞短語得出的關聯(lián)89h(6)分行提供分行計算機和柜員終端。隱含的關聯(lián)根據(jù)問題域知識隱含的關聯(lián)(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現(xiàn)金兌換卡。(5)中央計算機與分行通信(6)分行提供分行計算機和柜員終端。(7)儲戶擁有賬戶。(8)分行計算機維護賬戶。同2及13-2(9)柜員終端與分行計算機通信。(10)中央計算機確定事務與分行的對應關系。同(5)(13)柜員輸入針對賬戶的事務。分解為:(13-1)柜員輸入事務。(13-2)事務修改賬戶。(14)分行計算機處理針對賬戶的事務。分解為:(14-1)分行計算機處理事務。(14-2)事務修改賬戶。(15)ATM與中央計算機交換關于事務的信息。分解為:(15-1)ATM與中央計算機通信。(15-2)在ATM機上輸入事務。根據(jù)問題域知識得出的關聯(lián)(11)現(xiàn)金兌換卡訪問賬戶。(12)分行雇用柜員。90h隱含的關聯(lián)(6)分行提供分行計算機和柜員終端。(13)柜員輸10.3.3劃分主題在概念上把系統(tǒng)包含的內(nèi)容分解成若干個范疇應該按問題領域而不是用功能分解的方法來確定主題不同主題內(nèi)的對象相互間依賴和交互最少的原則總行(總行和中央計算機)ATM系統(tǒng)分行(分行、分行計算機、柜員終端、柜員

事務、柜員和賬戶等)ATM(ATM、遠程事務、現(xiàn)金兌換卡和儲戶)91h10.3.3劃分主題在概念上把系統(tǒng)包含的內(nèi)容分解成若干個范10.3.4確定屬性屬性是對象的性質(zhì)或特征注意在分析階段不要用屬性來表示對象間的關系,使用關聯(lián)能夠表示兩個對象間的任何關系,而且把關系表示得更清晰、更醒目。92h10.3.4確定屬性屬性是對象的性質(zhì)或特征26h10.3.4確定屬性選擇在需求陳述中一般用名詞詞組表示屬性需藉助于領域知識和常識才能分析得出屬性屬性對問題域的基本結(jié)構(gòu)影響很小屬性的確定與問題域和目標系統(tǒng)的任務有關。不要考慮那些超出所要解決的問題范圍的屬性。先找最重要的屬性,再逐漸把其余屬性增添進去。分析階段不考慮那些純粹用于實現(xiàn)的屬性。93h10.3.4確定屬性27h經(jīng)過篩選之后,得到ATM系統(tǒng)中各個類的屬性,如圖所示。10.3.4確定屬性94h經(jīng)過篩選之后,得到ATM系統(tǒng)中各個類的屬性,如圖所示。10.建立類間的繼承是為了共享其公共性質(zhì)/屬性。繼承也對類按層次加以組織。繼承關系反映出一定深度的領域知識,需領域?qū)<颐芮信浜喜拍芡瓿伞@^承前人的成果是提高效率的重要方法,也是復用的基礎。10.3.5識別繼承關系建立類間的繼承是為了共享其公共性質(zhì)/屬性。10.3.5兩種建立繼承(即泛化)關系的方式:(1)自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個過程實質(zhì)上模擬了人類歸納思維過程。例如,在ATM系統(tǒng)中,“遠程事務”和“柜員事務”是類似的,可以泛化出父類“事務”;類似地,從“ATM”和“柜員終端”泛化出父類“輸入站”。(2)自頂向下:把現(xiàn)有類細化成更具體的子類或從已知類派生出一個新類,這模擬了人類的演繹思維過程:從一般到特殊。帶有形容詞修飾的名詞詞組往往暗示了一些具體類。分析階段應該避免過度細化。兩種建立繼承(即泛化)關系的方式:增加了繼承關系之后的ATM對象模型增加了繼承關系之后的ATM對象模型一次建模過程很難得到完全正確的對象模型。有些細化工作(例如,定義服務)是在建立了動態(tài)模型和功能模型之后才進行的。由于面向?qū)ο蟮母拍詈头栐谡麄€開發(fā)過程中都是一致的,因此遠比使用結(jié)構(gòu)分析、設計技術更容易實現(xiàn)反復修改、逐步完善的過程。建模的步驟并不一定按照前面講述的次序進行。它給初學者提供了一個指南。下面以ATM系統(tǒng)為例,討論可能做的修改:10.3.6反復修改一次建模過程很難得到完全正確的對象模型。10.3.6反復1.分解“現(xiàn)金兌換卡”類“現(xiàn)金兌換卡”有兩個相對獨立的功能,它既是鑒別儲戶及使用ATM的權(quán)限的卡,又是ATM獲得分行代碼和卡號等數(shù)據(jù)的數(shù)據(jù)載體。因此,把“現(xiàn)金兌換卡”類分解為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類,將使每個類的功能更單一:前一個類標志儲戶訪問賬戶的權(quán)限,后一個類是含有分行代碼和卡號的數(shù)據(jù)載體。多張現(xiàn)金兌換卡可能對應著相同的訪問權(quán)限。1.分解“現(xiàn)金兌換卡”類2.“事務”由“更新”組成一個事務可包含對賬戶的若干次更新。更新指的是對賬戶所做的一個動作(取款、存款或查詢)。“更新”有自己的屬性(類型、金額等),應該獨立存在,因此應該把它作為類。3.把“分行”與“分行計算機”合并區(qū)分“分行”與“分行計算機”,對于分析這個系統(tǒng)來說,并沒有多大意義,為簡單起見,把它們合并。類似地,應該合并“總行”和“中央計算機”。下圖給出了修改后的ATM對象模型,與修改前比較起來,它更簡單、更清晰。2.“事務”由“更新”組成1、分解“現(xiàn)金兌換卡”類為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類;2、“事務”由“更新”組成;3、把“分行”與“分行計算機”合并修改后的ATM對象模型1、分解“現(xiàn)金兌換卡”類為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類;對于僅存儲靜態(tài)數(shù)據(jù)的系統(tǒng)(例如數(shù)據(jù)庫)來說,動態(tài)模型并沒有什么意義。但是若開發(fā)交互式系統(tǒng)時,動態(tài)模型卻起著很重要的作用。例如:收集輸入信息是目標系統(tǒng)的主要工作。10.4建立動態(tài)模型的方法10.4建立動態(tài)模型對于僅存儲靜態(tài)數(shù)據(jù)的系統(tǒng)(例如數(shù)據(jù)庫)來說,10.4建立遺漏常見的交互行為。建立動態(tài)模型的三步:

編寫典型交互行為的腳本,包括正常情況和異常情況腳本。從腳本中提取出事件,確定觸發(fā)每個事件的動作對象以及接受事件的目標對象。排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關系,并用狀態(tài)圖描繪它們。最后,比較各個對象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。遺漏常見的交互行為。建立動態(tài)模型的三步:腳本:

是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。編寫腳本的目的:

是保證不遺漏重要的交互步驟,有助于確保整個交互過程的正確性的和清晰性。編寫腳本內(nèi)容:

描寫既可以包括系統(tǒng)中發(fā)生的全部事件,也可以只包括由某些特定對象觸發(fā)的事件。對于每個事件,都應該指明觸發(fā)該事件的動作對象(系統(tǒng)、用戶或其他事物)、接受事件的目標對象以及該事件的參數(shù)。編寫步驟:

編寫正常情況的腳本??紤]特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)??紤]出錯情況,例如,輸入的值為非法值或響應失敗。10.4.1編寫腳本腳本:是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。10.4ATM系統(tǒng)正常和異常腳本ATM系統(tǒng)正常事件跟蹤圖有助于畫狀態(tài)圖。它把事件序列以及事件與對象的關系,形象、清晰地表示出來。事件跟蹤圖實質(zhì)上是擴充的腳本,是簡化的UML順序圖。在事件跟蹤圖中,一條豎線代表一個對象,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對象指向接受對象。時間從上向下遞增。10.4.3畫事件跟蹤圖事件跟蹤圖有助于畫狀態(tài)圖。10.4.3畫事件跟蹤圖ATM系統(tǒng)正常情況下的事件跟蹤圖時間對象事件/消息ATM系統(tǒng)正常情況下的事件跟蹤圖時間對象事件/消息一張狀態(tài)圖描繪一類對象的行為,它確定了由事件序列引出的狀態(tài)序列。從豎線射出的箭頭線,常是對象達到某個狀態(tài)時所做的行為(也常是引起另一類對象狀態(tài)轉(zhuǎn)換的事件)。兩個事件之間的間隔就是一個狀態(tài)(也可能不變)。10.4.4畫狀態(tài)圖一張狀態(tài)圖描繪一類對象的行為,它確定了由事件序列引出的狀考慮完正常事件之后再考慮邊界情況和特殊情況.如,用戶要求取消該當前事務,“超時”,停電/機。不能省略對用戶出錯情況的處理。一張覆蓋了腳本中某類對象的全部事件的狀態(tài)圖仍可能會一些遺漏的情況。

盡量給每個狀態(tài)取個有意義的名字。10.4.4畫狀態(tài)圖10.4.4畫狀態(tài)圖以ATM系統(tǒng)為例:

“ATM”、“柜員終端”、“總行”和“分行”都是主動對象,它們相互發(fā)送事件;

“現(xiàn)金兌換卡”、“事務”和“賬戶”是被動對象,并不發(fā)送事件?!皟簟焙汀肮駟T”雖然也是動作對象,但是,它們都是系統(tǒng)外部的因素,無須在系統(tǒng)內(nèi)實現(xiàn)它們。以ATM系統(tǒng)為例:ATM的狀態(tài)圖ATM的狀態(tài)圖圖10.10總行類驗證賬戶的狀態(tài)圖圖10.11分行類驗證密碼的狀態(tài)圖總行類分行類圖10.10總行類驗證賬戶的狀態(tài)圖圖10.11分行類驗證圖10.10總行類的處理事務狀態(tài)圖圖10.11分行類的處理事務狀態(tài)圖總行類分行類圖10.10總行類的處理事務狀態(tài)圖圖10.11分行類的處各個類的狀態(tài)圖通過共享事件聯(lián)系(合并)起來,構(gòu)成了系統(tǒng)的動態(tài)模型。應該檢查系統(tǒng)級的完整性和一致性。對于沒有前驅(qū)或沒有后繼的狀態(tài)應該著重審查,如果這個狀態(tài)既不是交互序列的起點也不是終點,則發(fā)現(xiàn)了一個錯誤。10.4.5審查動態(tài)模型各個類的狀態(tài)圖通過共享事件聯(lián)系(合并)起來,構(gòu)成了系統(tǒng)的應該審查每個事件,跟蹤它對系統(tǒng)中各個對象所產(chǎn)生的效果,以保證它們與每個腳本都匹配。例:ATM系統(tǒng)在總行類的狀態(tài)圖中,事件“無效代碼”,是由總行發(fā)出的,但是在ATM類的狀態(tài)圖中并沒有一個狀態(tài)接受這個事件。因此,在ATM類的狀態(tài)圖中應該再補充一個狀態(tài)“do/顯示分行代碼錯信息”,它接受由前驅(qū)狀態(tài)“do/驗證賬戶”發(fā)出的事件“無效代碼”,它的后續(xù)狀態(tài)是“退卡”。10.4.5審查動態(tài)模型應該審查每個事件,跟蹤它對系統(tǒng)中各個對象所產(chǎn)生的效果,以ATM的狀態(tài)圖do/顯示分行代碼錯信息無效代碼無效代碼ATM的狀態(tài)圖do/顯示分無效代碼無效代碼在確定類中應有的服務時,既要考慮該類實體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務。1.常規(guī)行為在分析階段可以認為,類中定義的每個屬性都是可以訪問的,也就是說,假設在每個類中都定義了讀、寫該類每個屬性的操作。但是,通常無需在類圖中顯式表示這些常規(guī)操作。10.6定義服務在確定類中應有的服務時,既要考慮該類實體的常規(guī)行為,又要考慮2.從事件導出的操作!!!狀態(tài)圖中對象接收消息,因此該對象必須有由消息選擇符指定的操作,它啟動相應的服務。在ATM系統(tǒng)中,總行類的“處理分行事務”啟動分行對象的服務“更新賬戶”。所啟動的服務常是接受事件的對象在相應狀態(tài)的行為。(如:

溫馨提示

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

評論

0/150

提交評論