




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十章面向對象分析10.1面向對象分析的基本過程10.2需求陳述10.3建立對象模型10.4建立動態模型10.5建立功能模型10.6定義服務10.7小結1h第十章面向對象分析10.1面向對象分析的基本過程1h10.1面向對象分析的基本過程面向對象分析(1)其關鍵是識別出問題域內的類與對象,并分析它們相互間的關系,最終建立起3種模型。(2)對象模型最基本、最重要、最核心。
2h10.1面向對象分析的基本過程面向對象分析2h10.1面向對象分析的基本過程3個子模型對所解決問題的描述角度進行劃分:
對象模型(靜態結構)3個子模型動態模型(交互次序)
功能模型(數據變換)
3h10.1面向對象分析的基本過程3個子模型3h10.1面向對象分析的基本過程5個層次
復雜問題的對象模型的5個層次五個層次像是對象模型的5張水平切片,一層比一層顯示出對象模型的更多細節。類或對象間的關系指讀者理解大型、復雜模型的一種機制,將一個大型的、復雜的對象模型分解成幾個不同的概念范疇(記憶的7+2原則)4h10.1面向對象分析的基本過程5個層次復雜問題的對象模型的面向對象分析的過程尋找類與對象識別結構定義屬性
建立動態模型
定義服務
10.1面向對象分析的基本過程面向對象分析不可能嚴格地按預定順序進行,大型、復雜系統的模型需要反復構造多遍才能建成。先構造模型的子集,再到完全地理解整個問題,最終建立整個模型。5h面向對象分析的過程10.1面向對象分析的基本過程面向對象分10.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做”問題范圍功能需求性能需求應用環境假設條件6h10.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做ATM機系統問題描述某銀行擬開發一個自動取款機系統,它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網絡系統。總行投資購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及分行下屬的各個儲蓄所內。該軟件的開發成本由各分行分攤。儲戶可以用現金或支票向自己擁有的某個賬戶內存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。10.2需求陳述舉例7h10.2需求陳述舉例7hATM機系統問題描述
銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權申請領取現金兌換卡,使用現金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現金兌換卡在ATM上提取現金或查詢自己賬戶的信息。將來還可能要求使用ATM辦理轉賬、存款等事務。8hATM機系統問題描述
銀行柜員使用柜員終端處理儲戶提交的儲蓄ATM機系統問題描述
一張現金兌換卡就是一張特制的磁卡,上面有分行代碼。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現金兌換卡的可能性。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現金口吐出現金,并且打印賬單給用戶。9hATM機系統問題描述
9h自動取款機(ATM)系統ATM系統10.2需求陳述10h自動取款機(ATM)系統10.2需求陳述10h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象尋找以下五類客觀事物可感知的物理實體人或組織的角色應該記憶的事件兩個或多個對象的相互作用,通常具有交易或接觸的性質需要說明的概念11h10.3建立對象模型10.3.1找出候選類與對象11h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象(續)名詞解析法
從陳述中找出所有名詞,作為類和對象的初步候選者銀行,自動取款機(ATM),系統,中央計算機,
分行計算機,柜員終端,網絡,總行,分行,軟件,
成本,市,街道,營業廳,儲蓄所,柜員,儲戶,
現金,支票,賬戶,事物,現金兌換卡,余額,
磁卡,分行代碼,卡號,用戶,副本,信息,密碼,
類型,取款額,賬單,訪問。
12h10.3建立對象模型10.3.1找出候選類與對象12h某銀行擬開發一個自動取款機系統,它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網絡系統。總行投資購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及分行下屬的各個儲蓄所內。該軟件的開發成本由各分行分攤。儲戶可以用現金或支票向自己擁有的某個賬戶內存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。從陳述中找出所有名詞,作為類和對象的初步候選者
13h從陳述中找出所有名詞,作為類和對象的初步候選者
13h從陳述中找出所有名詞,作為類和對象的初步候選者
銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權申請領取現金兌換卡,使用現金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現金兌換卡在ATM上提取現金或查詢自己賬戶的信息(例如,某個指定賬戶上的余額)。將來還可能要求使用ATM辦理轉賬、存款等事務。14h從陳述中找出所有名詞,作為類和對象的初步候選者
銀行柜員使用一張現金兌換卡就是一張特制的磁卡,上面有分行代碼,對應總行下的一個分行。卡號確定這張卡可以訪問哪些賬戶。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現金兌換卡的可能性。也就是說,系統應該能夠處理并發的訪問。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現金口吐出現金,并且打印賬單給用戶。從陳述中找出所有名詞,作為類和對象的初步候選者
15h從陳述中找出所有名詞,作為類和對象的初步候選者
15h10.3建立對象模型10.3.1找出候選類與對象2.篩選出正確的類與對象篩選時主要依據下列標準,刪除不正確或不必要的類與對象!!!!(1)冗余(2)無關(3)籠統(4)屬性(5)操作銀行,自動取款機(ATM),系統,中央計算機分行計算機,柜員終端,網絡,總行,分行,軟件,成本,市,街道,營業廳,儲蓄所,柜員,儲戶,
現金,支票,賬戶,事務,現金兌換卡,余額,磁卡,分行代碼,卡號,用戶,副本,信息,密碼,類型,取款額,賬單,訪問。(共34個名詞)從中篩選出正確的類與對象)(儲戶、用戶;現金兌換卡、磁卡和副本)(成本、市、街道、營業廳和儲蓄所)(銀行、訪問、信息、網絡、系統、軟件)(現金、支票、取款額、賬單、余額、分行代碼、卡號、密碼、類型)注意:在分析階段不應該過早地考慮怎樣實現目標系統。16h10.3建立對象模型10.3.1找出候選類與對象銀行,自動10.3.1找出候選類與對象2.篩選出正確的類與對象(共11個)ATM中央計算機分行計算機柜員終端總行分行柜員儲戶賬戶事務(分為柜員事務和遠程事務)
現金兌換卡17h10.3.1找出候選類與對象2.篩選出正確的類與對象(共1110.3.2確定關聯1.初步確定關聯
需求陳述中使用的描述性動詞或動詞詞組,通常表示關聯關系。(1)直接提取動詞短語得出關聯(2)需求陳述中隱含的關聯(3)根據問題域知識得出的關聯
18h10.3.2確定關聯1.初步確定關聯18h直接提取動詞短語得出的關聯ATM、中央計算機、分行計算機及柜員終端組成網絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及儲蓄所內。分行分攤軟件開發成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現金兌換卡。ATM與用戶交互。ATM吐出現金。ATM打印賬單。系統處理并發的訪問。隱含的關聯總行由各個分行組成。分行保管賬戶。總行擁有中央計算機。系統維護事務日志。系統提供必要的安全性。儲戶擁有現金兌換卡。中央計算機與分行通信根據問題域知識得出的關聯現金兌換卡訪問賬戶。分行雇用柜員。19h直接提取動詞短語得出的關聯隱含的關聯根據問題域知識得出的關聯10.3.2確定關聯2.篩選(1)根據下述標準刪除候選關聯:已刪去的類之間的關聯。與問題無關的或在實現階段考慮的關聯。瞬時事件。派生關聯。(2)三元關聯:將三元關聯改造成二元關聯。20h10.3.2確定關聯2.篩選20h直接提取動詞短語得出的關聯ATM、中央計算機、分行計算機及柜員終端組成網絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及儲蓄所內。分行分攤軟件開發成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現金兌換卡。ATM與用戶交互。ATM吐出現金。ATM打印賬單。系統處理并發的訪問。隱含的關聯總行由各個分行組成。分行保管賬戶。總行擁有中央計算機。系統維護事務日志。系統提供必要的安全性。儲戶擁有現金兌換卡。中央計算機與分行通信根據問題域知識得出的關聯現金兌換卡訪問賬戶。分行雇用柜員。去掉已刪去類的關聯去掉與問題無關的或應該在實現階段考慮的關聯去掉瞬時事件將三元關聯改造成二元關聯去掉派生關聯分行計算機處理針對賬戶的事務。分解為:分行計算機處理事務。事務修改賬戶。柜員輸入針對賬戶的事務。分解為:柜員輸入事務。事務修改賬戶。ATM與中央計算機交換關于事務的信息。分解為:ATM與中央計算機通信。在ATM機上輸入事務。21h直接提取動詞短語得出的關聯隱含的關聯根據問題域知識得出的關聯10.3.2確定關聯3.進一步完善正名、分解、補充、標明重數
ATM系統原始的類圖22h10.3.2確定關聯3.進一步完善ATM系統原始的類圖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機上輸入事務。隱含的關聯(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現金兌換卡。(5)中央計算機與分行通信根據問題域知識得出的關聯(11)現金兌換卡訪問賬戶。(12)分行雇用柜員。直接提取動詞短語得出的關聯23h(6)分行提供分行計算機和柜員終端。隱含的關聯根據問題域知識隱含的關聯(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現金兌換卡。(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機上輸入事務。根據問題域知識得出的關聯(11)現金兌換卡訪問賬戶。(12)分行雇用柜員。24h隱含的關聯(6)分行提供分行計算機和柜員終端。(13)柜員輸10.3.3劃分主題在概念上把系統包含的內容分解成若干個范疇應該按問題領域而不是用功能分解的方法來確定主題不同主題內的對象相互間依賴和交互最少的原則總行(總行和中央計算機)ATM系統分行(分行、分行計算機、柜員終端、柜員
事務、柜員和賬戶等)ATM(ATM、遠程事務、現金兌換卡和儲戶)25h10.3.3劃分主題在概念上把系統包含的內容分解成若干個范10.3.4確定屬性屬性是對象的性質或特征注意在分析階段不要用屬性來表示對象間的關系,使用關聯能夠表示兩個對象間的任何關系,而且把關系表示得更清晰、更醒目。26h10.3.4確定屬性屬性是對象的性質或特征26h10.3.4確定屬性選擇在需求陳述中一般用名詞詞組表示屬性需藉助于領域知識和常識才能分析得出屬性屬性對問題域的基本結構影響很小屬性的確定與問題域和目標系統的任務有關。不要考慮那些超出所要解決的問題范圍的屬性。先找最重要的屬性,再逐漸把其余屬性增添進去。分析階段不考慮那些純粹用于實現的屬性。27h10.3.4確定屬性27h經過篩選之后,得到ATM系統中各個類的屬性,如圖所示。10.3.4確定屬性28h經過篩選之后,得到ATM系統中各個類的屬性,如圖所示。10.建立類間的繼承是為了共享其公共性質/屬性。繼承也對類按層次加以組織。繼承關系反映出一定深度的領域知識,需領域專家密切配合才能完成。繼承前人的成果是提高效率的重要方法,也是復用的基礎。10.3.5識別繼承關系建立類間的繼承是為了共享其公共性質/屬性。10.3.5兩種建立繼承(即泛化)關系的方式:(1)自底向上:抽象出現有類的共同性質泛化出父類,這個過程實質上模擬了人類歸納思維過程。例如,在ATM系統中,“遠程事務”和“柜員事務”是類似的,可以泛化出父類“事務”;類似地,從“ATM”和“柜員終端”泛化出父類“輸入站”。(2)自頂向下:把現有類細化成更具體的子類或從已知類派生出一個新類,這模擬了人類的演繹思維過程:從一般到特殊。帶有形容詞修飾的名詞詞組往往暗示了一些具體類。分析階段應該避免過度細化。兩種建立繼承(即泛化)關系的方式:增加了繼承關系之后的ATM對象模型增加了繼承關系之后的ATM對象模型一次建模過程很難得到完全正確的對象模型。有些細化工作(例如,定義服務)是在建立了動態模型和功能模型之后才進行的。由于面向對象的概念和符號在整個開發過程中都是一致的,因此遠比使用結構分析、設計技術更容易實現反復修改、逐步完善的過程。建模的步驟并不一定按照前面講述的次序進行。它給初學者提供了一個指南。下面以ATM系統為例,討論可能做的修改:10.3.6反復修改一次建模過程很難得到完全正確的對象模型。10.3.6反復1.分解“現金兌換卡”類“現金兌換卡”有兩個相對獨立的功能,它既是鑒別儲戶及使用ATM的權限的卡,又是ATM獲得分行代碼和卡號等數據的數據載體。因此,把“現金兌換卡”類分解為“卡權限”和“現金兌換卡”兩個類,將使每個類的功能更單一:前一個類標志儲戶訪問賬戶的權限,后一個類是含有分行代碼和卡號的數據載體。多張現金兌換卡可能對應著相同的訪問權限。1.分解“現金兌換卡”類2.“事務”由“更新”組成一個事務可包含對賬戶的若干次更新。更新指的是對賬戶所做的一個動作(取款、存款或查詢)。“更新”有自己的屬性(類型、金額等),應該獨立存在,因此應該把它作為類。3.把“分行”與“分行計算機”合并區分“分行”與“分行計算機”,對于分析這個系統來說,并沒有多大意義,為簡單起見,把它們合并。類似地,應該合并“總行”和“中央計算機”。下圖給出了修改后的ATM對象模型,與修改前比較起來,它更簡單、更清晰。2.“事務”由“更新”組成1、分解“現金兌換卡”類為“卡權限”和“現金兌換卡”兩個類;2、“事務”由“更新”組成;3、把“分行”與“分行計算機”合并修改后的ATM對象模型1、分解“現金兌換卡”類為“卡權限”和“現金兌換卡”兩個類;對于僅存儲靜態數據的系統(例如數據庫)來說,動態模型并沒有什么意義。但是若開發交互式系統時,動態模型卻起著很重要的作用。例如:收集輸入信息是目標系統的主要工作。10.4建立動態模型的方法10.4建立動態模型對于僅存儲靜態數據的系統(例如數據庫)來說,10.4建立遺漏常見的交互行為。建立動態模型的三步:
編寫典型交互行為的腳本,包括正常情況和異常情況腳本。從腳本中提取出事件,確定觸發每個事件的動作對象以及接受事件的目標對象。排列事件發生的次序,確定每個對象可能有的狀態及狀態間的轉換關系,并用狀態圖描繪它們。最后,比較各個對象的狀態圖,檢查它們之間的一致性,確保事件之間的匹配。遺漏常見的交互行為。建立動態模型的三步:腳本:
是指系統在某一執行期間內出現的一系列事件。編寫腳本的目的:
是保證不遺漏重要的交互步驟,有助于確保整個交互過程的正確性的和清晰性。編寫腳本內容:
描寫既可以包括系統中發生的全部事件,也可以只包括由某些特定對象觸發的事件。對于每個事件,都應該指明觸發該事件的動作對象(系統、用戶或其他事物)、接受事件的目標對象以及該事件的參數。編寫步驟:
編寫正常情況的腳本。考慮特殊情況,例如輸入或輸出的數據為最大值(或最小值)。考慮出錯情況,例如,輸入的值為非法值或響應失敗。10.4.1編寫腳本腳本:是指系統在某一執行期間內出現的一系列事件。10.4ATM系統正常和異常腳本ATM系統正常事件跟蹤圖有助于畫狀態圖。它把事件序列以及事件與對象的關系,形象、清晰地表示出來。事件跟蹤圖實質上是擴充的腳本,是簡化的UML順序圖。在事件跟蹤圖中,一條豎線代表一個對象,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發送對象指向接受對象。時間從上向下遞增。10.4.3畫事件跟蹤圖事件跟蹤圖有助于畫狀態圖。10.4.3畫事件跟蹤圖ATM系統正常情況下的事件跟蹤圖時間對象事件/消息ATM系統正常情況下的事件跟蹤圖時間對象事件/消息一張狀態圖描繪一類對象的行為,它確定了由事件序列引出的狀態序列。從豎線射出的箭頭線,常是對象達到某個狀態時所做的行為(也常是引起另一類對象狀態轉換的事件)。兩個事件之間的間隔就是一個狀態(也可能不變)。10.4.4畫狀態圖一張狀態圖描繪一類對象的行為,它確定了由事件序列引出的狀考慮完正常事件之后再考慮邊界情況和特殊情況.如,用戶要求取消該當前事務,“超時”,停電/機。不能省略對用戶出錯情況的處理。一張覆蓋了腳本中某類對象的全部事件的狀態圖仍可能會一些遺漏的情況。
盡量給每個狀態取個有意義的名字。10.4.4畫狀態圖10.4.4畫狀態圖以ATM系統為例:
“ATM”、“柜員終端”、“總行”和“分行”都是主動對象,它們相互發送事件;
“現金兌換卡”、“事務”和“賬戶”是被動對象,并不發送事件。“儲戶”和“柜員”雖然也是動作對象,但是,它們都是系統外部的因素,無須在系統內實現它們。以ATM系統為例:ATM的狀態圖ATM的狀態圖圖10.10總行類驗證賬戶的狀態圖圖10.11分行類驗證密碼的狀態圖總行類分行類圖10.10總行類驗證賬戶的狀態圖圖10.11分行類驗證圖10.10總行類的處理事務狀態圖圖10.11分行類的處理事務狀態圖總行類分行類圖10.10總行類的處理事務狀態圖圖10.11分行類的處各個類的狀態圖通過共享事件聯系(合并)起來,構成了系統的動態模型。應該檢查系統級的完整性和一致性。對于沒有前驅或沒有后繼的狀態應該著重審查,如果這個狀態既不是交互序列的起點也不是終點,則發現了一個錯誤。10.4.5審查動態模型各個類的狀態圖通過共享事件聯系(合并)起來,構成了系統的應該審查每個事件,跟蹤它對系統中各個對象所產生的效果,以保證它們與每個腳本都匹配。例:ATM系統在總行類的狀態圖中,事件“無效代碼”,是由總行發出的,但是在ATM類的狀態圖中并沒有一個狀態接受這個事件。因此,在ATM類的狀態圖中應該再補充一個狀態“do/顯示分行代碼錯信息”,它接受由前驅狀態“do/驗證賬戶”發出的事件“無效代碼”,它的后續狀態是“退卡”。10.4.5審查動態模型應該審查每個事件,跟蹤它對系統中各個對象所產生的效果,以ATM的狀態圖do/顯示分行代碼錯信息無效代碼無效代碼ATM的狀態圖do/顯示分無效代碼無效代碼在確定類中應有的服務時,既要考慮該類實體的常規行為,又要考慮在本系統中特殊需要的服務。1.常規行為在分析階段可以認為,類中定義的每個屬性都是可以訪問的,也就是說,假設在每個類中都定義了讀、寫該類每個屬性的操作。但是,通常無需在類圖中顯式表示這些常規操作。10.6定義服務在確定類中應有的服務時,既要考慮該類實體的常規行為,又要考慮2.從事件導出的操作!!!狀態圖中對象接收消息,因此該對象必須有由消息選擇符指定的操作,它啟動相應的服務。在ATM系統中,總行類的“處理分行事務”啟動分行對象的服務“更新賬戶”。所啟動的服務常是接受事件的對象在相應狀態的行為。(如:圖10.11分行狀態圖的左圖)2.從事件導出的操作!!!從圖10.9ATM的狀態圖可導出的ATM類的操作有:
顯示主屏(),要求密碼(),驗證賬戶(),要求類型();要求金額(),處理事務(),吐出現金及請求拿走現金().......。從圖10.10總行的狀態圖可導出的總行類的操作有:
請求處理分行事務(),驗證分行代碼(),請求分行驗卡()從圖10.11分行的狀態圖可導出分行類的操作有:
更新賬戶(),驗證卡號(),驗證密碼()從圖10.9ATM的狀態圖可導出的ATM類的操作有:4.利用繼承減少冗余操作應該盡量利用繼承機制以減少所需定義的服務數目。只要不違背領域知識和常識,就盡量抽取出相似類的公共屬性和操作,以建立這些類的新父類,并在類等級的不同層次中正確地定義各個服務。4.利用繼承減少冗余操作分析就是提取系統需求并建立問題域精確模型的過程。面向對象分析的關鍵工作,是分析、確定問題域中的對象及對象間的關系,并建立起問題域的對象模型、功能模型和動態模型。大型、復雜系統的對象模型通常由下述5個層次組成:主題層、類與對象層、結構層、屬性層和服務層。它們對應著在建立對象模型的過程中所應完成的5項工作。10.7小結分析就是提取系統需求并建立問題域精確模型的過程。10.7課后作業:P256第1題課后作業:課堂練習某電話公司決定開發一個管理所有客戶信息的交互式網絡系統,系統的功能如下:(1)瀏覽客戶信息:任何使用Internet的網絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。(2)登錄:電話公司授予每個客戶一個賬戶。擁有授權賬戶的客戶,可以使用系統提供的頁面設置個人密碼,并使用該賬戶和密碼在系統注冊。(3)修改個人信息:客戶在系統注冊后,可以發送電子郵件或使用系統提供的頁面對個人信息進行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司服務的客戶信息。系統采用面向對象的方法進行開發,請畫出用例圖和類圖。課堂練習某電話公司決定開發一個管理所有客戶信息的交互式網絡系用例圖用例圖建立對象模型(類圖)的五個層次
復雜問題的對象模型的5個層次五個層次像是對象模型的5張水平切片,一層比一層顯示出對象模型的更多細節。類或對象間的關系指讀者理解大型、復雜模型的一種機制,將一個大型的、復雜的對象模型分解成幾個不同的概念范疇(記憶的7+2原則)下列五類客觀事物可作為候選對象:可感知的物理實體人或組織的角色應該記憶的事件兩個或多個對象的相互作用,通常具有交易或接觸的性質需要說明的概念建立對象模型(類圖)的五個層次復雜問題的對象模型的5個層次五第1步:采用名詞解析法獲取候選的類(1)瀏覽客戶信息:任何使用Internet的網絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。(2)登錄:電話公司授予每個客戶一個賬戶。擁有授權賬戶的客戶,可以使用系統提供的頁面設置個人密碼,并使用該賬戶和密碼在系統注冊。(3)修改個人信息:客戶在系統注冊后,可以發送電子郵件或使用系統提供的頁面對個人信息進行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司服務的客戶信息。第1步:采用名詞解析法獲取候選的類(1)瀏覽客戶信息:任何使候選的類如下:(1)瀏覽客戶信息:任何使用Internet的網絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。(2)登錄:電話公司授予每個客戶一個賬戶。擁有授權賬戶的客戶,可以使用系統提供的頁面設置個人密碼,并使用該賬戶和密碼在系統注冊。(3)修改個人信息:客戶在系統注冊后,可以發送電子郵件或使用系統提供的頁面對個人信息進行修改。(4)刪除客戶信息:只有公司的管理人員才能刪除不再受公司服務的客戶信息。(1)客戶信息、Internet、網絡用戶、電話公司、所有的客戶信息、姓名、住址、電話號碼(2)客戶、賬號、系統、頁面、個人密碼(3)個人信息、電子郵件、系統(4)管理人員、信息(1)客戶信息,Internet,網絡用戶,電話公司所有的客戶信息,姓名,住址,電話號碼(2)登錄,客戶,賬戶,系統,頁面,個人密碼(3)個人信息,電子郵件(4)公司,管理人員候選的類如下:(1)瀏覽客戶信息:任何使用Internet的第2步:篩選出有用的類(1)客戶信息,Internet,網絡用戶,電話公司所有的客戶信息,姓名,住址,電話號碼(2)登錄,客戶,賬戶,系統,頁面,個人密碼(3)個人信息,電子郵件(4)公司,管理人員篩選依據:(1)冗余:客戶信息與個人信息(2)無關:電話公司(3)籠統:系統、頁面、公司、Internet(4)屬性:姓名、住址、電話號碼、賬戶、個人密碼、電子郵件(5)操作:登錄第2步:篩選出有用的類(1)客戶信息,Internet,網絡第2步:篩選出有用的類,共去掉13個候選類,剩下5個類:(1)客戶信息,網絡用戶,所有的客戶信息(2)客戶(3)
(4)管理人員第2步:篩選出有用的類,共去掉13個候選類,剩下5個類:(1類的詳細描述:描述類名網絡用戶internetClient公司客戶CompanyCustomer公司的管理人員InternalManager客戶信息(記錄公司單個客戶信息)Customer客戶信息表(記錄公司所有客戶信息)CustomerList類的詳細描述:描述類名網絡用戶internetClient公第3步:獲取并補充隱含的關聯每個客戶對應著相應的客戶信息客戶信息表由客戶信息組成網絡用戶瀏覽客戶信息表公司管理員和公司客戶是網絡用戶第3步:獲取并補充隱含的關聯每個客戶對應著相應的客戶信息第4步:畫類圖第4步:畫類圖第十章面向對象分析10.1面向對象分析的基本過程10.2需求陳述10.3建立對象模型10.4建立動態模型10.5建立功能模型10.6定義服務10.7小結67h第十章面向對象分析10.1面向對象分析的基本過程1h10.1面向對象分析的基本過程面向對象分析(1)其關鍵是識別出問題域內的類與對象,并分析它們相互間的關系,最終建立起3種模型。(2)對象模型最基本、最重要、最核心。
68h10.1面向對象分析的基本過程面向對象分析2h10.1面向對象分析的基本過程3個子模型對所解決問題的描述角度進行劃分:
對象模型(靜態結構)3個子模型動態模型(交互次序)
功能模型(數據變換)
69h10.1面向對象分析的基本過程3個子模型3h10.1面向對象分析的基本過程5個層次
復雜問題的對象模型的5個層次五個層次像是對象模型的5張水平切片,一層比一層顯示出對象模型的更多細節。類或對象間的關系指讀者理解大型、復雜模型的一種機制,將一個大型的、復雜的對象模型分解成幾個不同的概念范疇(記憶的7+2原則)70h10.1面向對象分析的基本過程5個層次復雜問題的對象模型的面向對象分析的過程尋找類與對象識別結構定義屬性
建立動態模型
定義服務
10.1面向對象分析的基本過程面向對象分析不可能嚴格地按預定順序進行,大型、復雜系統的模型需要反復構造多遍才能建成。先構造模型的子集,再到完全地理解整個問題,最終建立整個模型。71h面向對象分析的過程10.1面向對象分析的基本過程面向對象分10.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做”問題范圍功能需求性能需求應用環境假設條件72h10.2需求陳述需求陳述是闡明“做什么”,而不是“怎樣做ATM機系統問題描述某銀行擬開發一個自動取款機系統,它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網絡系統。總行投資購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及分行下屬的各個儲蓄所內。該軟件的開發成本由各分行分攤。儲戶可以用現金或支票向自己擁有的某個賬戶內存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。10.2需求陳述舉例73h10.2需求陳述舉例7hATM機系統問題描述
銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權申請領取現金兌換卡,使用現金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現金兌換卡在ATM上提取現金或查詢自己賬戶的信息。將來還可能要求使用ATM辦理轉賬、存款等事務。74hATM機系統問題描述
銀行柜員使用柜員終端處理儲戶提交的儲蓄ATM機系統問題描述
一張現金兌換卡就是一張特制的磁卡,上面有分行代碼。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現金兌換卡的可能性。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現金口吐出現金,并且打印賬單給用戶。75hATM機系統問題描述
9h自動取款機(ATM)系統ATM系統10.2需求陳述76h自動取款機(ATM)系統10.2需求陳述10h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象尋找以下五類客觀事物可感知的物理實體人或組織的角色應該記憶的事件兩個或多個對象的相互作用,通常具有交易或接觸的性質需要說明的概念77h10.3建立對象模型10.3.1找出候選類與對象11h10.3建立對象模型10.3.1找出候選類與對象1.找出候選的類與對象(續)名詞解析法
從陳述中找出所有名詞,作為類和對象的初步候選者銀行,自動取款機(ATM),系統,中央計算機,
分行計算機,柜員終端,網絡,總行,分行,軟件,
成本,市,街道,營業廳,儲蓄所,柜員,儲戶,
現金,支票,賬戶,事物,現金兌換卡,余額,
磁卡,分行代碼,卡號,用戶,副本,信息,密碼,
類型,取款額,賬單,訪問。
78h10.3建立對象模型10.3.1找出候選類與對象12h某銀行擬開發一個自動取款機系統,它是由自動取款機ATM、中央計算機、分行計算機及柜員終端組成的網絡系統。總行投資購買多臺ATM和中央計算機,ATM分別設在全市各主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及分行下屬的各個儲蓄所內。該軟件的開發成本由各分行分攤。儲戶可以用現金或支票向自己擁有的某個賬戶內存款、取款或開新賬戶。通常一個儲戶擁有多個賬戶。從陳述中找出所有名詞,作為類和對象的初步候選者
79h從陳述中找出所有名詞,作為類和對象的初步候選者
13h從陳述中找出所有名詞,作為類和對象的初步候選者
銀行柜員使用柜員終端處理儲戶提交的儲蓄事務,柜員負責把儲戶提交的存款或取款事務輸進柜員終端。柜員終端與相應的分行計算機通信,分行計算機具體處理針對某個賬戶的事務并且維護賬戶。擁有銀行賬戶的儲戶有權申請領取現金兌換卡,使用現金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現金兌換卡在ATM上提取現金或查詢自己賬戶的信息(例如,某個指定賬戶上的余額)。將來還可能要求使用ATM辦理轉賬、存款等事務。80h從陳述中找出所有名詞,作為類和對象的初步候選者
銀行柜員使用一張現金兌換卡就是一張特制的磁卡,上面有分行代碼,對應總行下的一個分行。卡號確定這張卡可以訪問哪些賬戶。一張磁卡可以訪問儲戶的若干個賬戶,但僅屬于一個儲戶所有。但是同一張卡可以有多個副本,因此必須考慮同時在若干臺ATM上使用同樣的現金兌換卡的可能性。也就是說,系統應該能夠處理并發的訪問。當用戶將磁卡插入ATM后,ATM就與用戶交互,以獲取有關這次事務的信息,并與中央計算機交換關于事務的信息。ATM要求用戶輸入密碼,ATM將密碼和卡上的信息傳給中央計算機,請求中央計算機核對這些信息并處理這次事務。中央計算機根據卡的分行代碼委托分行驗證用戶密碼,若密碼正確,則ATM要求用戶選擇事務類型(取款,查詢等)。當用戶選擇取款時,ATM請求用戶輸入取款額。最后ATM從現金口吐出現金,并且打印賬單給用戶。從陳述中找出所有名詞,作為類和對象的初步候選者
81h從陳述中找出所有名詞,作為類和對象的初步候選者
15h10.3建立對象模型10.3.1找出候選類與對象2.篩選出正確的類與對象篩選時主要依據下列標準,刪除不正確或不必要的類與對象!!!!(1)冗余(2)無關(3)籠統(4)屬性(5)操作銀行,自動取款機(ATM),系統,中央計算機分行計算機,柜員終端,網絡,總行,分行,軟件,成本,市,街道,營業廳,儲蓄所,柜員,儲戶,
現金,支票,賬戶,事務,現金兌換卡,余額,磁卡,分行代碼,卡號,用戶,副本,信息,密碼,類型,取款額,賬單,訪問。(共34個名詞)從中篩選出正確的類與對象)(儲戶、用戶;現金兌換卡、磁卡和副本)(成本、市、街道、營業廳和儲蓄所)(銀行、訪問、信息、網絡、系統、軟件)(現金、支票、取款額、賬單、余額、分行代碼、卡號、密碼、類型)注意:在分析階段不應該過早地考慮怎樣實現目標系統。82h10.3建立對象模型10.3.1找出候選類與對象銀行,自動10.3.1找出候選類與對象2.篩選出正確的類與對象(共11個)ATM中央計算機分行計算機柜員終端總行分行柜員儲戶賬戶事務(分為柜員事務和遠程事務)
現金兌換卡83h10.3.1找出候選類與對象2.篩選出正確的類與對象(共1110.3.2確定關聯1.初步確定關聯
需求陳述中使用的描述性動詞或動詞詞組,通常表示關聯關系。(1)直接提取動詞短語得出關聯(2)需求陳述中隱含的關聯(3)根據問題域知識得出的關聯
84h10.3.2確定關聯1.初步確定關聯18h直接提取動詞短語得出的關聯ATM、中央計算機、分行計算機及柜員終端組成網絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及儲蓄所內。分行分攤軟件開發成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現金兌換卡。ATM與用戶交互。ATM吐出現金。ATM打印賬單。系統處理并發的訪問。隱含的關聯總行由各個分行組成。分行保管賬戶。總行擁有中央計算機。系統維護事務日志。系統提供必要的安全性。儲戶擁有現金兌換卡。中央計算機與分行通信根據問題域知識得出的關聯現金兌換卡訪問賬戶。分行雇用柜員。85h直接提取動詞短語得出的關聯隱含的關聯根據問題域知識得出的關聯10.3.2確定關聯2.篩選(1)根據下述標準刪除候選關聯:已刪去的類之間的關聯。與問題無關的或在實現階段考慮的關聯。瞬時事件。派生關聯。(2)三元關聯:將三元關聯改造成二元關聯。86h10.3.2確定關聯2.篩選20h直接提取動詞短語得出的關聯ATM、中央計算機、分行計算機及柜員終端組成網絡。總行擁有多臺ATM。ATM設在主要街道上。分行提供分行計算機和柜員終端。柜員終端設在分行營業廳及儲蓄所內。分行分攤軟件開發成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務。ATM與中央計算機交換關于事務的信息。中央計算機確定事務與分行的對應關系。ATM讀現金兌換卡。ATM與用戶交互。ATM吐出現金。ATM打印賬單。系統處理并發的訪問。隱含的關聯總行由各個分行組成。分行保管賬戶。總行擁有中央計算機。系統維護事務日志。系統提供必要的安全性。儲戶擁有現金兌換卡。中央計算機與分行通信根據問題域知識得出的關聯現金兌換卡訪問賬戶。分行雇用柜員。去掉已刪去類的關聯去掉與問題無關的或應該在實現階段考慮的關聯去掉瞬時事件將三元關聯改造成二元關聯去掉派生關聯分行計算機處理針對賬戶的事務。分解為:分行計算機處理事務。事務修改賬戶。柜員輸入針對賬戶的事務。分解為:柜員輸入事務。事務修改賬戶。ATM與中央計算機交換關于事務的信息。分解為:ATM與中央計算機通信。在ATM機上輸入事務。87h直接提取動詞短語得出的關聯隱含的關聯根據問題域知識得出的關聯10.3.2確定關聯3.進一步完善正名、分解、補充、標明重數
ATM系統原始的類圖88h10.3.2確定關聯3.進一步完善ATM系統原始的類圖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機上輸入事務。隱含的關聯(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現金兌換卡。(5)中央計算機與分行通信根據問題域知識得出的關聯(11)現金兌換卡訪問賬戶。(12)分行雇用柜員。直接提取動詞短語得出的關聯89h(6)分行提供分行計算機和柜員終端。隱含的關聯根據問題域知識隱含的關聯(1)總行由各個分行組成。(2)分行保管賬戶。(3)總行擁有中央計算機。(4)儲戶擁有現金兌換卡。(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機上輸入事務。根據問題域知識得出的關聯(11)現金兌換卡訪問賬戶。(12)分行雇用柜員。90h隱含的關聯(6)分行提供分行計算機和柜員終端。(13)柜員輸10.3.3劃分主題在概念上把系統包含的內容分解成若干個范疇應該按問題領域而不是用功能分解的方法來確定主題不同主題內的對象相互間依賴和交互最少的原則總行(總行和中央計算機)ATM系統分行(分行、分行計算機、柜員終端、柜員
事務、柜員和賬戶等)ATM(ATM、遠程事務、現金兌換卡和儲戶)91h10.3.3劃分主題在概念上把系統包含的內容分解成若干個范10.3.4確定屬性屬性是對象的性質或特征注意在分析階段不要用屬性來表示對象間的關系,使用關聯能夠表示兩個對象間的任何關系,而且把關系表示得更清晰、更醒目。92h10.3.4確定屬性屬性是對象的性質或特征26h10.3.4確定屬性選擇在需求陳述中一般用名詞詞組表示屬性需藉助于領域知識和常識才能分析得出屬性屬性對問題域的基本結構影響很小屬性的確定與問題域和目標系統的任務有關。不要考慮那些超出所要解決的問題范圍的屬性。先找最重要的屬性,再逐漸把其余屬性增添進去。分析階段不考慮那些純粹用于實現的屬性。93h10.3.4確定屬性27h經過篩選之后,得到ATM系統中各個類的屬性,如圖所示。10.3.4確定屬性94h經過篩選之后,得到ATM系統中各個類的屬性,如圖所示。10.建立類間的繼承是為了共享其公共性質/屬性。繼承也對類按層次加以組織。繼承關系反映出一定深度的領域知識,需領域專家密切配合才能完成。繼承前人的成果是提高效率的重要方法,也是復用的基礎。10.3.5識別繼承關系建立類間的繼承是為了共享其公共性質/屬性。10.3.5兩種建立繼承(即泛化)關系的方式:(1)自底向上:抽象出現有類的共同性質泛化出父類,這個過程實質上模擬了人類歸納思維過程。例如,在ATM系統中,“遠程事務”和“柜員事務”是類似的,可以泛化出父類“事務”;類似地,從“ATM”和“柜員終端”泛化出父類“輸入站”。(2)自頂向下:把現有類細化成更具體的子類或從已知類派生出一個新類,這模擬了人類的演繹思維過程:從一般到特殊。帶有形容詞修飾的名詞詞組往往暗示了一些具體類。分析階段應該避免過度細化。兩種建立繼承(即泛化)關系的方式:增加了繼承關系之后的ATM對象模型增加了繼承關系之后的ATM對象模型一次建模過程很難得到完全正確的對象模型。有些細化工作(例如,定義服務)是在建立了動態模型和功能模型之后才進行的。由于面向對象的概念和符號在整個開發過程中都是一致的,因此遠比使用結構分析、設計技術更容易實現反復修改、逐步完善的過程。建模的步驟并不一定按照前面講述的次序進行。它給初學者提供了一個指南。下面以ATM系統為例,討論可能做的修改:10.3.6反復修改一次建模過程很難得到完全正確的對象模型。10.3.6反復1.分解“現金兌換卡”類“現金兌換卡”有兩個相對獨立的功能,它既是鑒別儲戶及使用ATM的權限的卡,又是ATM獲得分行代碼和卡號等數據的數據載體。因此,把“現金兌換卡”類分解為“卡權限”和“現金兌換卡”兩個類,將使每個類的功能更單一:前一個類標志儲戶訪問賬戶的權限,后一個類是含有分行代碼和卡號的數據載體。多張現金兌換卡可能對應著相同的訪問權限。1.分解“現金兌換卡”類2.“事務”由“更新”組成一個事務可包含對賬戶的若干次更新。更新指的是對賬戶所做的一個動作(取款、存款或查詢)。“更新”有自己的屬性(類型、金額等),應該獨立存在,因此應該把它作為類。3.把“分行”與“分行計算機”合并區分“分行”與“分行計算機”,對于分析這個系統來說,并沒有多大意義,為簡單起見,把它們合并。類似地,應該合并“總行”和“中央計算機”。下圖給出了修改后的ATM對象模型,與修改前比較起來,它更簡單、更清晰。2.“事務”由“更新”組成1、分解“現金兌換卡”類為“卡權限”和“現金兌換卡”兩個類;2、“事務”由“更新”組成;3、把“分行”與“分行計算機”合并修改后的ATM對象模型1、分解“現金兌換卡”類為“卡權限”和“現金兌換卡”兩個類;對于僅存儲靜態數據的系統(例如數據庫)來說,動態模型并沒有什么意義。但是若開發交互式系統時,動態模型卻起著很重要的作用。例如:收集輸入信息是目標系統的主要工作。10.4建立動態模型的方法10.4建立動態模型對于僅存儲靜態數據的系統(例如數據庫)來說,10.4建立遺漏常見的交互行為。建立動態模型的三步:
編寫典型交互行為的腳本,包括正常情況和異常情況腳本。從腳本中提取出事件,確定觸發每個事件的動作對象以及接受事件的目標對象。排列事件發生的次序,確定每個對象可能有的狀態及狀態間的轉換關系,并用狀態圖描繪它們。最后,比較各個對象的狀態圖,檢查它們之間的一致性,確保事件之間的匹配。遺漏常見的交互行為。建立動態模型的三步:腳本:
是指系統在某一執行期間內出現的一系列事件。編寫腳本的目的:
是保證不遺漏重要的交互步驟,有助于確保整個交互過程的正確性的和清晰性。編寫腳本內容:
描寫既可以包括系統中發生的全部事件,也可以只包括由某些特定對象觸發的事件。對于每個事件,都應該指明觸發該事件的動作對象(系統、用戶或其他事物)、接受事件的目標對象以及該事件的參數。編寫步驟:
編寫正常情況的腳本。考慮特殊情況,例如輸入或輸出的數據為最大值(或最小值)。考慮出錯情況,例如,輸入的值為非法值或響應失敗。10.4.1編寫腳本腳本:是指系統在某一執行期間內出現的一系列事件。10.4ATM系統正常和異常腳本ATM系統正常事件跟蹤圖有助于畫狀態圖。它把事件序列以及事件與對象的關系,形象、清晰地表示出來。事件跟蹤圖實質上是擴充的腳本,是簡化的UML順序圖。在事件跟蹤圖中,一條豎線代表一個對象,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發送對象指向接受對象。時間從上向下遞增。10.4.3畫事件跟蹤圖事件跟蹤圖有助于畫狀態圖。10.4.3畫事件跟蹤圖ATM系統正常情況下的事件跟蹤圖時間對象事件/消息ATM系統正常情況下的事件跟蹤圖時間對象事件/消息一張狀態圖描繪一類對象的行為,它確定了由事件序列引出的狀態序列。從豎線射出的箭頭線,常是對象達到某個狀態時所做的行為(也常是引起另一類對象狀態轉換的事件)。兩個事件之間的間隔就是一個狀態(也可能不變)。10.4.4畫狀態圖一張狀態圖描繪一類對象的行為,它確定了由事件序列引出的狀考慮完正常事件之后再考慮邊界情況和特殊情況.如,用戶要求取消該當前事務,“超時”,停電/機。不能省略對用戶出錯情況的處理。一張覆蓋了腳本中某類對象的全部事件的狀態圖仍可能會一些遺漏的情況。
盡量給每個狀態取個有意義的名字。10.4.4畫狀態圖10.4.4畫狀態圖以ATM系統為例:
“ATM”、“柜員終端”、“總行”和“分行”都是主動對象,它們相互發送事件;
“現金兌換卡”、“事務”和“賬戶”是被動對象,并不發送事件。“儲戶”和“柜員”雖然也是動作對象,但是,它們都是系統外部的因素,無須在系統內實現它們。以ATM系統為例:ATM的狀態圖ATM的狀態圖圖10.10總行類驗證賬戶的狀態圖圖10.11分行類驗證密碼的狀態圖總行類分行類圖10.10總行類驗證賬戶的狀態圖圖10.11分行類驗證圖10.10總行類的處理事務狀態圖圖10.11分行類的處理事務狀態圖總行類分行類圖10.10總行類的處理事務狀態圖圖10.11分行類的處各個類的狀態圖通過共享事件聯系(合并)起來,構成了系統的動態模型。應該檢查系統級的完整性和一致性。對于沒有前驅或沒有后繼的狀態應該著重審查,如果這個狀態既不是交互序列的起點也不是終點,則發現了一個錯誤。10.4.5審查動態模型各個類的狀態圖通過共享事件聯系(合并)起來,構成了系統的應該審查每個事件,跟蹤它對系統中各個對象所產生的效果,以保證它們與每個腳本都匹配。例:ATM系統在總行類的狀態圖中,事件“無效代碼”,是由總行發出的,但是在ATM類的狀態圖中并沒有一個狀態接受這個事件。因此,在ATM類的狀態圖中應該再補充一個狀態“do/顯示分行代碼錯信息”,它接受由前驅狀態“do/驗證賬戶”發出的事件“無效代碼”,它的后續狀態是“退卡”。10.4.5審查動態模型應該審查每個事件,跟蹤它對系統中各個對象所產生的效果,以ATM的狀態圖do/顯示分行代碼錯信息無效代碼無效代碼ATM的狀態圖do/顯示分無效代碼無效代碼在確定類中應有的服務時,既要考慮該類實體的常規行為,又要考慮在本系統中特殊需要的服務。1.常規行為在分析階段可以認為,類中定義的每個屬性都是可以訪問的,也就是說,假設在每個類中都定義了讀、寫該類每個屬性的操作。但是,通常無需在類圖中顯式表示這些常規操作。10.6定義服務在確定類中應有的服務時,既要考慮該類實體的常規行為,又要考慮2.從事件導出的操作!!!狀態圖中對象接收消息,因此該對象必須有由消息選擇符指定的操作,它啟動相應的服務。在ATM系統中,總行類的“處理分行事務”啟動分行對象的服務“更新賬戶”。所啟動的服務常是接受事件的對象在相應狀態的行為。(如:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 今天山西高考語文作文
- 5-7MSI同步計數器2-74161實現模長小于16任意進制計數器
- 湖北省部分重點中學2023~2024學年高二數學下學期五月聯考試卷含答案
- 上海閔行區2025屆高三高考化學試題系列模擬卷(4)含解析
- 吉林省松原市扶余第一中學2025屆高三下學期第二次階段考試數學試題含解析
- 山西醫科大學晉祠學院《中西醫臨床診療技術》2023-2024學年第一學期期末試卷
- 吉林省長春市第151中學2025屆高三下學期線上周語文試題含解析
- 泉州醫學高等專科學校《軟件項目》2023-2024學年第二學期期末試卷
- 上海市華師大二附中2025屆高三下學期第二次診斷性測驗生物試題試卷含解析
- 南通大學《DSP原理與應用》2023-2024學年第二學期期末試卷
- 中國椎管內分娩鎮痛專家共識(2020版)
- 2023-2024學年天津市紅橋區八年級(下)期中數學試卷(含解析)
- 國開2024年《機械設計基礎》形考任務1-4答案
- ifix培訓教程課件
- 社會單位消防安全風險自查評估報告表模板
- 精神科出院康復指導
- 2024年貴州建筑安全員B證考試題庫及答案(推薦)
- sls打印工藝流程
- PHQ-15軀體癥狀群健康評定量表
- 中醫針灸美容技術操作規范2023版
- 汽車保險防災防損課件
評論
0/150
提交評論