第3篇第7章面向?qū)ο骭第1頁
第3篇第7章面向?qū)ο骭第2頁
第3篇第7章面向?qū)ο骭第3頁
第3篇第7章面向?qū)ο骭第4頁
第3篇第7章面向?qū)ο骭第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、An Introduction to Database System第第3篇面向?qū)ο蟮姆椒▽W(xué)篇面向?qū)ο蟮姆椒▽W(xué)第7章 面向?qū)ο蠓治鯝n Introduction to Database System第第7章章 面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?面向?qū)ο蠓治?通??s寫為OOA)的關(guān)鍵,是識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。在用面向?qū)ο笥^點建立起的三種模型中,對象模型是最基本、最重要、最核心的。An Introduction to Database System第第7章章 面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?.1 7.1 分析過程分析過程 7.2 7.2 需

2、求陳述需求陳述7.3 7.3 建立對象建摸建立對象建摸 7.3 7.3 建立動態(tài)建摸建立動態(tài)建摸7.5 7.5 建立功能模型建立功能模型 7.6 7.6 定定 義義 服服 務(wù)務(wù)7.7 7.7 面向?qū)ο蠓治鰧嵗嫦驅(qū)ο蠓治鰧嵗鼳n Introduction to Database System7.1 分析過程分析過程 7.1.1 概述面向?qū)ο蠓治鰪姆治雒鑼懹脩粜枨蟮奈募_始。面向?qū)ο蠓治鰪姆治雒鑼懹脩粜枨蟮奈募_始。 - -用戶單方書寫的需求;用戶單方書寫的需求; - -系統(tǒng)分析員配合用戶書寫的需求;系統(tǒng)分析員配合用戶書寫的需求; - -項目標(biāo)書中書寫的需求。項目標(biāo)書中書寫的需求。面向?qū)ο蠓治觯?/p>

3、就是抽取和整理用戶需求并建立問題域精確模型的過程。An Introduction to Database System7.1.1 7.1.1 概述概述理解理解-用戶、分析員和領(lǐng)域?qū)<冶磉_表達-需求規(guī)格說明書(對象模型、動態(tài)模型、功能模型)驗證驗證-二義性,完善性 對象模型最基本、最重要、最核心。An Introduction to Database System7.1.2 三個子模型與五個層次 面向?qū)ο蠼5玫降哪P桶齻€要素,即靜態(tài)結(jié)構(gòu)(對象模型),交互次序(動態(tài)模型)和數(shù)據(jù)變換(功能模型)。 解決的問題不同,這三個子模型的重要程度也不同:解決任何一個問題,都需要從客觀世界實體及實體間相互

4、關(guān)系抽象出極有價值的對象模型;當(dāng)問題涉及交互作用和時序時(例如,用戶界面及過程控制等),動態(tài)模型是重要的。解決運算量很大的問題(例如科學(xué)與工程計算等),則涉及重要的功能模型。動態(tài)模型和功能模型中都包含了對象模型中的操作(即服務(wù)或方法)。An Introduction to Database System 復(fù)雜問題(大型系統(tǒng))的對象模型由下述五個層次組成:主題層(也稱為范疇層)、類&對象層、結(jié)構(gòu)層、屬性層和服務(wù)層,如圖7.1所示。圖圖7.1 7.1 復(fù)雜問題的對象模型復(fù)雜問題的對象模型7.1.2 三個子模型與五個層次 An Introduction to Database System 綜上所述

5、,我們在概念上可以認為,面向?qū)ο蠓治龃篌w上按照下列順序進行下列順序進行:尋找類&對象,識別結(jié)構(gòu),識別主題,定義屬性,建立動態(tài)模型,建立功能模型,定義服務(wù)。但是,正如前面已經(jīng)多次強調(diào)指出過的,分析不可能嚴格地按照預(yù)定順序進行,大型、復(fù)雜系統(tǒng)的模型需要反復(fù)構(gòu)造多遍才能建成。通常,先構(gòu)造出模型的子集,然后再逐漸擴充,直到完全、充分地理解了整個問題,才能最終把模型建立起來。7.1.2 三個子模型與五個層次 An Introduction to Database System 分析也不是一個機械的過程。大多數(shù)需求陳述都缺乏必要的信息,所缺少的信息主要從用戶和領(lǐng)域?qū)<夷抢铽@取,同時也需要從分析員對問題域的

6、背景知識中提取。在分析過程中,系統(tǒng)分析員必須與領(lǐng)域?qū)<壹坝脩舴磸?fù)交流,以便澄清二義性,改正錯誤的概念,補足缺少的信息。面向?qū)ο蠼⒌南到y(tǒng)模型,盡管在最終完成之前還是不準確、不完整的,但對做到準確、無歧義的交流仍然是大有益處的。7.1.2 三個子模型與五個層次 An Introduction to Database System7.2 需求陳述需求陳述 7.2.1 書寫要點 通常,需求陳述的內(nèi)容包括:問題范圍,功能需求,性能需求,應(yīng)用環(huán)境及假設(shè)條件等??傊?,需求陳述應(yīng)該闡明“做什么”而不是“怎樣做”。它應(yīng)該描述用戶的需求描述用戶的需求而不是提出解決問題的方法。應(yīng)該指出哪些是系統(tǒng)必要的性質(zhì),哪些是

7、任選的性質(zhì)。書寫需求陳述時,要盡力做到語法正確,而且應(yīng)該慎 重選用名詞、動詞、形容詞和同義詞。An Introduction to Database System圖圖7.2 ATM7.2 ATM系統(tǒng)系統(tǒng)n圖7.2 所示的自動取款機(ATM)系統(tǒng),是本書講述面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計時使用的一個實例。7.2.2 例子An Introduction to Database System下面陳述對ATM系統(tǒng)的需求。某銀行擬開發(fā)一個自動取款機系統(tǒng),它是一個由自動取款機、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)。ATM和中央計算機由總行投資購買??傂袚碛卸嗯_ATM,分別設(shè)在全市各主要街道上。分行負

8、責(zé)提供分行計算機和柜員終端。柜員終端設(shè)在分行營業(yè)廳及分行下屬的各個儲蓄所內(nèi)。該系統(tǒng)的軟件開發(fā)成本由各個分行分攤。7.2 需求陳述需求陳述- 7.2.2 例子An Introduction to Database System銀行柜員使用柜員終端處理儲戶提交的儲蓄事務(wù)。儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款或開新賬戶。儲戶也可以從自己的賬戶中取款。通常,一個儲戶可能擁有多個賬戶。柜員負責(zé)把儲戶提交的存款或取款事務(wù)輸進柜員終端,接收儲戶交來的現(xiàn)金或支票,或付給儲戶現(xiàn)金。柜員終端與相應(yīng)的分行計算機通信,分行計算機具體處理針對某個賬戶的事務(wù)并且維護賬戶。7.2 需求陳述需求陳述- 7.2.2

9、例子An Introduction to Database System 擁有銀行賬戶的儲戶有權(quán)申請領(lǐng)取現(xiàn)金兌換卡。使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息(例如,某個指定賬戶上的余額)。將來可能還要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。7.2 需求陳述需求陳述- 7.2.2 例子An Introduction to Database System 所謂現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號。分行代碼唯一標(biāo)識總行下屬的一個分行,卡號確定了這張卡可以訪問哪些賬戶。通常,一張卡可以訪問儲戶的若干個賬戶,但是不一

10、定能訪問這個儲戶的全部賬戶。每張現(xiàn)金兌換卡僅屬于一個儲戶所有,但是,同一張卡可能有多個副本,因此,必須考慮同時在若干臺ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說,系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問。7.2 需求陳述需求陳述- 7.2.2 例子An Introduction to Database System 當(dāng)用戶把現(xiàn)金兌換卡插入ATM之后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計算機交換關(guān)于事務(wù)的信息。首先,ATM要求用戶輸入密碼,接下來ATM把從這張卡上讀到的信息以及用戶輸入的密碼傳給中央計算機,請求中央計算機核對這些信息并處理這次事務(wù)。7.2 需求陳述需求陳述- 7.2.2

11、 例子An Introduction to Database System 中央計算機根據(jù)卡上的分行代碼確定這次事務(wù)與分行的對應(yīng)關(guān)系,并且委托相應(yīng)的分行計算機驗證用戶密碼。如果用戶輸入的密碼是正確的,ATM就要求用戶選擇事務(wù)類型(取款、查詢等)。當(dāng)用戶選擇取款時,ATM請求用戶輸入取款額。最后,ATM從現(xiàn)金出口吐出現(xiàn)金,并且打印出賬單交給用戶。7.2 需求陳述需求陳述- 7.2.2 例子ATM機系統(tǒng)問題描述機系統(tǒng)問題描述n銀行網(wǎng)絡(luò)中包含柜員和 ATM,ATM 被共享中心所分享。n每家銀行利用自己的計算機維護自己的賬戶并處理賬戶所屬的交易,這些交易包括存款和取款。n某些銀行擁有自己的柜員站,柜員

12、站直接和該銀行的計算機通信,柜員鍵入賬戶數(shù)據(jù)和交易數(shù)據(jù)。nATM 和中心計算機通信,中心計算機再和銀行清賬。nATM 接受金融卡,要求用戶做些操作后和中心計算機通信,執(zhí)行交易給予現(xiàn)金和打印收據(jù)。n系統(tǒng)要求保留交易記錄和嚴守安全規(guī)定。n能同時存取客戶的相同賬戶。10.2 需求陳述需求陳述An Introduction to Database System7.3 建立對象模型建立對象模型面向?qū)ο蠓治鍪滓墓ぷ?,是建立問題域的對象模型。這個模型描述了現(xiàn)實世界中的“類與對象”以及它們之間的關(guān)系,表示了目標(biāo)系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。靜態(tài)數(shù)據(jù)結(jié)構(gòu)對應(yīng)用細節(jié)依賴較少,比較容易確定。當(dāng)用戶的需求變化時,靜態(tài)數(shù)據(jù)結(jié)構(gòu)

13、相對來說比較穩(wěn)定。因此,用面向?qū)ο蠓椒ㄩ_發(fā)絕大多數(shù)軟件時,都首先建立對象模型,然后再建立另外兩個子模型。需求陳述、應(yīng)用領(lǐng)域的專業(yè)知識以及關(guān)于客觀世界的常識,是建立對象模型時的主要信息來源。An Introduction to Database System7.3 建立對象模型建立對象模型建立對象模型典型的步驟:n確定對象類和關(guān)聯(lián),對于大型復(fù)雜問題還要進一步劃分出若干個主題;n給類和關(guān)聯(lián)增添屬性,以進一步描述它們;n利用適當(dāng)?shù)睦^承關(guān)系進一步合并和組織類。An Introduction to Database System7.3.1 確定類與對象 類與對象是在問題域中客觀存在的,系統(tǒng)分析員的主要任

14、務(wù),就是通過分析找出這些類與對象。首先,找出所有候選的類與對象;然后,從候選的類與對象中篩選掉不正確的或不必要的。 對象是對問題域中有意義的事物的抽象,它們既可能是物理實體,也可能是抽象概念。具體地說,大多數(shù) 客觀事物可分為下述 5 類:An Introduction to Database System(1) 可感知的物理實體,例如,汽車、書、房屋 等等。 (2) 人或組織的角色,例如,醫(yī)生、教師、職員、計算機系、財務(wù)處等等。 (3) 應(yīng)該記憶的事件,例如,飛行、演出、訪問、交通 事故等等。 (4) 兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì),例如,購買、納稅、結(jié)婚等等。 (5) 需

15、要說明的概念,例如,保險政策、版權(quán)法 等等。在分析所面臨的問題時,可以參照上列 5 類常見事物,找出在當(dāng)前問題域中的候選類與對象。7.3.1 確定類與對象An Introduction to Database System另一種更簡單的分析方法,是所謂的非正式分析。這種分析方法以用自然語言書寫的需求陳述為依據(jù),把陳述中的名詞作為類與對象的候選者,用形容詞作為確定屬性的線索,把動詞作為服務(wù)(操作)的候選者。7.3.1 確定類與對象An Introduction to Database System以ATM系統(tǒng)為例: 類與對象的候選者: 銀行、自動取款機(ATM)、系統(tǒng)、中央計算機、分行計算機、柜

16、員終端、網(wǎng)絡(luò)、總行、分行、軟件、成本、市、街道、營業(yè)廳、儲蓄所、柜員、儲戶、現(xiàn)金、支票、帳戶、事務(wù)、現(xiàn)金兌換卡、余額、磁卡、分行代碼、卡號、用戶、信息、密碼、類型、取款額、帳單、訪問等。7.3.1 確定類與對象An Introduction to Database System7.3.1 確定類與對象 2. 篩選出正確的類與對象篩選出正確的類與對象 篩選時主要依據(jù)下列標(biāo)準,刪除不正確或不必要的類與對象: (1) 冗余 如果兩個類表達了同樣的信息,則應(yīng)該保留在此問題域中最富于描述力的名稱。 如如“儲戶儲戶”與與“用戶用戶”、“磁卡磁卡”與與“現(xiàn)金兌換現(xiàn)金兌換卡卡”;An Introduction

17、 to Database System 7.3.1 確定類與對象(2) 無關(guān) :現(xiàn)實世界中存在許多對象,不能把它們都納入到系統(tǒng)中去,僅需要把與本問題密切相關(guān)的類與對象放進目標(biāo)系統(tǒng)中。 如如“成本成本”、“街道街道”、“營業(yè)廳營業(yè)廳”、“儲儲蓄所蓄所”;(3) 籠統(tǒng):在需求陳述中常常使用一些籠統(tǒng)的、泛指的名詞 如“銀行”、“網(wǎng)絡(luò)”、“系統(tǒng)”、“軟件”、“信息”; (4) 屬性:在需求陳述中有些名詞描述的是其他對象的屬性,應(yīng)該把這些名詞從候選類與對象中去掉。如“余額”、“分行代碼”、“卡號”、“密碼”、“類型”;An Introduction to Database System(5) 操作 在需

18、求陳述中有時可能使用一些既可作為名詞,又可作為動詞的詞,應(yīng)該慎重考慮它們在本問題中的含 義,以便正確地決定把它們作為類還是作為類中定義的操作。如如“訪問訪問”; (6) 實現(xiàn) 在分析階段不應(yīng)該過早地考慮怎樣實現(xiàn)目標(biāo)系統(tǒng)。因此,應(yīng)該去掉僅和實現(xiàn)有關(guān)的候選的類與對象。 7.3.1 確定類與對象An Introduction to Database System 在ATM實例中,經(jīng)過初步篩選,剩下的類與對象為: ATM、中央計算機、分行計算機、柜員終端、總行、分行、柜員、儲戶、帳戶、事務(wù)、現(xiàn)金兌換卡。7.3.1 確定類與對象An Introduction to Database System7.3.

19、2 確定關(guān)聯(lián) 分析確定關(guān)聯(lián),能促使分析員考慮問題域的邊緣情況,有助于發(fā)現(xiàn)那些尚未被發(fā)現(xiàn)的類與對象。1. 初步確定關(guān)聯(lián) 在需求陳述中使用的描述性動詞或動詞詞組,通常表示關(guān)聯(lián)關(guān)系。因此,在初步確定關(guān)聯(lián)時,大多數(shù)關(guān)聯(lián)可以通過直接提取需求陳述中的動詞詞組而得出。u 直接提取動詞短語得出關(guān)聯(lián)u 需求陳述中隱含的關(guān)聯(lián)u 根據(jù)問題域知識得出的關(guān)聯(lián)以ATM系統(tǒng)為例,經(jīng)過分析初步確定出下列關(guān)聯(lián):(1)直接提取動詞短語得出的關(guān)聯(lián) ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡(luò)。 總行擁有多臺ATM。 ATM設(shè)在主要街道上。 分行提供分行計算機和柜員終端。 柜員終端設(shè)在分行營業(yè)廳及儲蓄所內(nèi)。 分行分攤軟件開發(fā)成本

20、。 儲戶擁有賬戶。 分行計算機處理針對賬戶的事務(wù)。 分行計算機維護賬戶。 、 柜員終端與分行計算機通信。 柜員輸入針對賬戶的事務(wù)。 ATM與中央計算機交換關(guān)于事務(wù)的信息。 中央計算機確定事務(wù)與分行的對應(yīng)關(guān)系。 ATM讀現(xiàn)金兌換卡。 ATM與用戶交互。 ATM吐出現(xiàn)金。 ATM打印賬單。 系統(tǒng)處理并發(fā)的訪問。An Introduction to Database System(2)需求陳述中隱含的關(guān)聯(lián) 總行由各個分行組成。 分行保管賬戶。 總行擁有中央計算機。 系統(tǒng)維護事務(wù)日志。 系統(tǒng)提供必要的安全性。 儲戶擁有現(xiàn)金兌換卡 (3)根據(jù)問題域知識得出的關(guān)聯(lián) 現(xiàn)金兌換卡訪問賬戶。 分行雇用柜員。 7

21、.3.2 確定關(guān)聯(lián)直接提取動詞短語得出的關(guān)聯(lián)直接提取動詞短語得出的關(guān)聯(lián)ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡(luò)??傂袚碛卸嗯_ATM。ATM設(shè)在主要街道上。分行提供分行計算機和柜員終端。柜員終端設(shè)在分行營業(yè)廳及儲蓄所內(nèi)。分行分攤軟件開發(fā)成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務(wù)。分行計算機維護賬戶。柜員終端與分行計算機通信。柜員輸入針對賬戶的事務(wù)。ATM與中央計算機交換關(guān)于事務(wù)的信息。中央計算機確定事務(wù)與分行的對應(yīng)關(guān)系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。隱含的關(guān)聯(lián)隱含的關(guān)聯(lián)總行由各個分行組成。分行保管賬戶??傂袚碛兄醒胗嬎銠C。

22、系統(tǒng)維護事務(wù)日志。系統(tǒng)提供必要的安全性。儲戶擁有現(xiàn)金兌換卡。中央計算機與分行通信根據(jù)問題域知識得出的關(guān)聯(lián)根據(jù)問題域知識得出的關(guān)聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。An Introduction to Database System7.3.2 確定關(guān)聯(lián)2.篩選 經(jīng)初步分析得出的關(guān)聯(lián)只能作為候選的關(guān)聯(lián),還需經(jīng)過進一步篩選,以去掉不正確的或不必要的關(guān)聯(lián)。篩選時主要根據(jù)下述標(biāo)準刪除候選的關(guān)聯(lián):An Introduction to Database System7.3.2 確定關(guān)聯(lián)(1)已刪去的類之間的關(guān)聯(lián) 如果在分析確定類與對象的過程中已經(jīng)刪掉了某個候選類,則與這個類有關(guān)的關(guān)聯(lián)也應(yīng)該刪去,或用其他類重

23、新表達這個關(guān)聯(lián)。 以ATM系統(tǒng)為例,由于已經(jīng)刪去了“系統(tǒng)”、“網(wǎng)絡(luò)”、“市”、“街道”、“成本”、“軟件”、“事務(wù)日志”、“現(xiàn)金”、“營業(yè)廳”、“儲蓄所”、“賬單”等候選類,因此,與這些類有關(guān)的下列8個關(guān)聯(lián)也應(yīng)該刪去: An Introduction to Database System7.3.2 確定關(guān)聯(lián) ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡(luò)。 ATM設(shè)在主要街道上。 分行分攤軟件開發(fā)成本。 系統(tǒng)提供必要的安全性。 系統(tǒng)維護事務(wù)日志。 ATM吐出現(xiàn)金。 ATM打印賬單。 柜員終端設(shè)在分行營業(yè)廳及儲蓄所內(nèi)An Introduction to Database System7.3.2

24、 確定關(guān)聯(lián)(2)與問題無關(guān)的或應(yīng)在實現(xiàn)階段考慮的關(guān)聯(lián) 應(yīng)該把處在本問題域之外的關(guān)聯(lián)或與實現(xiàn)密切相關(guān)的關(guān)聯(lián)刪去。 例如,在ATM系統(tǒng)的例子中,“系統(tǒng)處理并發(fā)的訪問”并沒有標(biāo)明對象之間的新關(guān)聯(lián),它只不過提醒我們在實現(xiàn)階段需要使用實現(xiàn)并發(fā)訪問的算法,以處理并發(fā)事務(wù)。An Introduction to Database System7.3.2 確定關(guān)聯(lián)(3)瞬時事件 關(guān)聯(lián)應(yīng)該描述問題域的靜態(tài)結(jié)構(gòu),而不應(yīng)該是一個瞬時事件。 以ATM系統(tǒng)為例,“ATM讀現(xiàn)金兌換卡”描述了ATM與用戶交互周期中的一個動作,它并不是ATM與現(xiàn)金兌換卡之間的固有關(guān)系,因此應(yīng)該刪去。類似地,還應(yīng)該刪去“ATM與用戶交互”這個候

25、選的關(guān)聯(lián)。 如果用動作表述的需求隱含了問題域的某種基本結(jié)構(gòu),則應(yīng)該用適當(dāng)?shù)膭釉~詞組重新表示這個關(guān)聯(lián)。例如,在ATM系統(tǒng)的需求陳述中,“中央計算機確定事務(wù)與分行的對應(yīng)關(guān)系”隱含了結(jié)構(gòu)上“中央計算機與分行通信”的關(guān)系。 An Introduction to Database System7.3.2 確定關(guān)聯(lián)(4)三元關(guān)聯(lián) 三個或三個以上對象之間的關(guān)聯(lián),大多可以分解為二元關(guān)聯(lián)或用詞組描述成限定的關(guān)聯(lián)。 An Introduction to Database System3.進一步完善:應(yīng)該進一步完善經(jīng)篩選后余下的關(guān)聯(lián),通常從下述幾個方面進行改進: (1) 正名 :好的名字是幫助讀者理解的關(guān)鍵因素之一

26、。因此,應(yīng)該仔細選擇含義更明確的名字作為關(guān)聯(lián)名。(2) 分解 :為了能夠適用于不同的關(guān)聯(lián),必要時應(yīng)該分解以前確定的類與對象。 (3) 補充 :發(fā)現(xiàn)了遺漏的關(guān)聯(lián)就應(yīng)該及時補上。 (4) 標(biāo)明重數(shù) : 應(yīng)該初步判定各個關(guān)聯(lián)的類型,并粗略地確定關(guān)聯(lián)的重數(shù)。 7.3.2 確定關(guān)聯(lián)An Introduction to Database System7.3.2 確定關(guān)聯(lián)An Introduction to Database System 在開發(fā)應(yīng)該按問題領(lǐng)域而不是用功能分解方法來確定主題。此外,應(yīng)該按照使不同主題內(nèi)的對象相互間依賴和交互最少的原則來確定主題。 大型、復(fù)雜系統(tǒng)的過程中,為了降低復(fù)雜程度,人們

27、習(xí)慣于把系統(tǒng)再進一步劃分成幾個不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干個范疇。7.3.3 劃分主題An Introduction to Database Systemn劃分主題劃分主題(總行、分行、總行、分行、ATM機機)。An Introduction to Database System一般說來,確定屬性的過程包括分析和選擇兩個步驟。 1. 1. 分析分析 需求陳述不能得到所有屬性,須借助領(lǐng)域知識和需求陳述不能得到所有屬性,須借助領(lǐng)域知識和常識。常識。 2. 2. 選擇選擇 根據(jù)下述情況,刪除不必要的屬性:根據(jù)下述情況,刪除不必要的屬性: 1 1)誤把對象當(dāng)屬性:)誤把對象當(dāng)屬

28、性:如果某個實體的獨立存在比它的值更重要,則應(yīng)把它作為一個對象而不是對象的屬性 2 ) 誤把關(guān)聯(lián)類的屬性當(dāng)作一般對象的屬性 如果某個性質(zhì)依賴于某個關(guān)聯(lián)鏈的存在,則該性質(zhì)是關(guān)聯(lián)類的屬性,在分析階段不應(yīng)該把它作為一般對象的屬性 7.3.4 確定屬性An Introduction to Database System3) 把限定誤當(dāng)成屬性 正確使用限定詞往往可以減少關(guān)聯(lián)的重數(shù)。如果把某個屬性值固定下來以后能減少關(guān)聯(lián) 的重數(shù),則應(yīng)該考慮把這個屬性重新表述成一個限定詞。 4) 誤把內(nèi)部狀態(tài)當(dāng)成了屬性 如果某個性質(zhì)是對象的非公開的內(nèi)部狀態(tài),則應(yīng)該從對象模型中刪掉這個屬性。 5) 過于細化6) 存在不一致的

29、屬性7.3.4 確定屬性An Introduction to Database System圖圖7.4 ATM7.4 ATM系統(tǒng)對象模型中的屬性系統(tǒng)對象模型中的屬性7.3.4 確定屬性An Introduction to Database System一般說來,可以使用兩種方式建立繼承(即泛化)關(guān)系。(1) 自底向上: 抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個過程實質(zhì)上模擬了人類歸納思維過程。如:如:“遠程事務(wù)遠程事務(wù)”和和“柜員事務(wù)柜員事務(wù)”泛化出泛化出“事務(wù)事務(wù)”; “ “ATM”ATM”和和“柜員終端柜員終端”泛化出泛化出“輸入終端輸入終端”。(2) 自頂向下: 把現(xiàn)有類細化成更具體的子類

30、,這模擬了人類的演繹思維過程。7.3.5 識別繼承關(guān)系A(chǔ)n Introduction to Database System圖圖7.5 7.5 帶有帶有繼承繼承關(guān)系關(guān)系的的ATMATM對象對象模型模型7.3.5 識別繼承關(guān)系A(chǔ)n Introduction to Database System僅僅經(jīng)過一次建模過程很難得到完全正確的對象模型。事實上,軟件開發(fā)過程就是一個多次反復(fù)修改、逐步完善的過程。在建模的任何一個步驟中,如果發(fā)現(xiàn)了模型的缺陷,都必須返回到前期階段進行修改。由于面向?qū)ο蟮母拍詈头栐谡麄€開發(fā)過程中都是一致的,因此遠比使用結(jié)構(gòu)分析、設(shè)計技術(shù)更容易實現(xiàn)反復(fù)修、逐步完善的過程。 實際上,有

31、些細化工作 ( 例如,定義服務(wù) ) 是在建立了動態(tài)模型和功能模型之后才進行的。在實際工作中,建模的步驟并不一定嚴格按照前面講述的次序進行。 7.3.6 反復(fù)修改An Introduction to Database System1. 1. 分解類分解類 如:分解如:分解“現(xiàn)金兌換卡現(xiàn)金兌換卡”類為類為“卡權(quán)限卡權(quán)限”和和“現(xiàn)金現(xiàn)金兌換卡兌換卡”,使每個類功能更單一;,使每個類功能更單一; 2. 2. 合理組織類合理組織類 如:如:“事務(wù)事務(wù)”由由“更新更新”組成,組成,“更新更新”包括包括“取取款款”、“存款存款”、“查詢查詢”等動作。等動作。 3. 3. 合并類合并類 如:合并如:合并“分行

32、分行”與與“分行計算機分行計算機”、“總行總行”與與“中央計算機中央計算機”。7.3.6 反復(fù)修改An Introduction to Database System圖圖7.6 7.6 修改后修改后的的ATMATM對象模對象模型型7.3.6 反復(fù)修改An Introduction to Database System7.4 建立動態(tài)模型建立動態(tài)模型的步驟建立動態(tài)模型的步驟:1)第一步,是編寫典型交互行為的腳本。)第一步,是編寫典型交互行為的腳本。2)第二步,從腳本中提取出事件,確定觸發(fā)每個事件的動)第二步,從腳本中提取出事件,確定觸發(fā)每個事件的動作對象,以及接受事件的目標(biāo)對象。作對象,以及接受

33、事件的目標(biāo)對象。3)第三步,排列事件發(fā)生的次序,確定每個對象可能有的)第三步,排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)之間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。狀態(tài)及狀態(tài)之間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。4)第四步,比較各個對象的狀態(tài)圖,檢查它們之間的一致)第四步,比較各個對象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配性,確保事件之間的匹配An Introduction to Database System在建立動態(tài)模型的過程中,腳本是指系統(tǒng)在某一執(zhí)行在建立動態(tài)模型的過程中,腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。期間內(nèi)出現(xiàn)的一系列事件。 腳本描述用戶(或其它外部設(shè)備)與目

34、標(biāo)系統(tǒng)之腳本描述用戶(或其它外部設(shè)備)與目標(biāo)系統(tǒng)之間的一個或多個典型的交互過程。間的一個或多個典型的交互過程。編寫腳本的目的編寫腳本的目的:保證不遺漏重要的交互步驟保證不遺漏重要的交互步驟7.4.1 編寫腳本編寫腳本An Introduction to Database System 腳本描寫的范圍主要由編寫腳本的具體目的決定。腳本描寫的范圍主要由編寫腳本的具體目的決定。 編寫腳本時,首先編寫正常情況的腳本。然后,考慮特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)。最后,考慮出錯情況。腳本描述事件序列。腳本描述事件序列。 對于每個事件,都應(yīng)該指明觸發(fā)事件的動作對象(如:計算機系統(tǒng);用戶;外

35、部事物等)、接受事件的目標(biāo)對象和該事件的參數(shù)。表7.1和表7.2分別給出了ATM系統(tǒng)的正常情況腳本和異常情況腳本。7.4.1 編寫腳本編寫腳本An Introduction to Database System ATM請儲戶插卡;儲戶插入一張現(xiàn)金兌換卡 ATM接受該卡并讀它上面的分行代碼和卡號 ATM要求儲戶輸入密碼;儲戶輸入自己的密碼“1234”等數(shù)字 ATM請求總行驗證卡號和密碼;總行要求“39”號分行核對儲戶密碼,然后通知ATM說這張卡有效 ATM要求儲戶選擇事務(wù)類型(取款、轉(zhuǎn)賬、查詢等);儲戶選擇“取款” ATM要求儲戶輸入取款額;儲戶輸入“880”n表7.1 ATM系統(tǒng)的正常情況正常

36、情況腳本An Introduction to Database System ATM確認取款額在預(yù)先規(guī)定的限額內(nèi),然后要求總行處理這個事務(wù);總行把請求轉(zhuǎn)給分行,該分行成功地處理完這項事務(wù)并返回該賬戶的新余額 ATM吐出現(xiàn)金并請儲戶拿走這些現(xiàn)金;儲戶拿走現(xiàn)金 ATM問儲戶是否繼續(xù)這項事務(wù);儲戶回答“不” ATM打印賬單,退出現(xiàn)金兌換卡,請儲戶拿走它們;儲戶取走賬 單和卡 ATM請儲戶插卡n表7.1 ATM系統(tǒng)的正常情況正常情況腳本An Introduction to Database System表表7.2 ATM7.2 ATM系統(tǒng)的異常情況腳本系統(tǒng)的異常情況腳本 ATM請儲戶插卡;儲戶插入一張

37、現(xiàn)金兌換卡 ATM接受這張卡并順序讀它上面的數(shù)字 ATM要求密碼;儲戶誤輸入“8888” ATM請求總行驗證輸入的數(shù)字和密碼;總行在向有關(guān)分行咨詢 之后拒絕這張卡 ATM顯示“密碼錯”,并請儲戶重新輸入密碼;儲戶輸入 “1234”;ATM請總行驗證后知道這次輸入的密碼正確 ATM請儲戶選擇事務(wù)類型;儲戶選擇“取款” ATM詢問取款額;儲戶改變主意不想取款了,他敲“取消”鍵 ATM退出現(xiàn)金兌換卡,并請儲戶拿走它;儲戶拿走他的卡 ATM請儲戶插卡An Introduction to Database System 在這個階段用戶界面的細節(jié)并不太重要,重要的是在這種界面下的信息交換方式。我們的目的是

38、確保能夠完成全部必要的信息交換,而不會丟失重要的信息。 不經(jīng)過實際使用很難評價一個用戶界面的優(yōu)劣,因此,軟件開發(fā)人員往往快速地建立起用戶界面的原,供用戶試用與評價。 7.4.2 設(shè)想用戶界面An Introduction to Database System7.4.2 設(shè)想用戶界面An Introduction to Database System為了有助于建立動態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖事件跟蹤圖。為此首先需要進一步明確事件及事件與對象的關(guān)系。1.確定事件 應(yīng)該仔細分析每個腳本,以便從中提取出所有外部事件。經(jīng)過分析,應(yīng)該區(qū)分出每類事件的發(fā)送對象和接受對象。2.畫出事件跟蹤圖

39、事件跟蹤圖實質(zhì)上是擴充的腳本,而且可以把它看作是簡化的UML順序圖。7.4.3 畫事件跟蹤圖An Introduction to Database System對象:豎線;對象:豎線;事件:水平箭頭。事件:水平箭頭。An Introduction to Database System7.4.4 畫狀態(tài)圖畫狀態(tài)圖 狀態(tài)圖描繪事件與對象狀態(tài)的關(guān)系。狀態(tài)圖描繪事件與對象狀態(tài)的關(guān)系。通常,用一張狀態(tài)圖描繪一類對象的行為,它確定了由事件序列引出的狀態(tài)序列。但是,也不是任何一個類都需要有一張狀態(tài)圖描繪它的行為。 根據(jù)一張事件跟蹤圖畫出狀態(tài)圖后,再把其他腳本的事件跟蹤圖合并到已畫出的狀態(tài)圖中??紤]完正常事件

40、后考慮邊界情況和特殊情況,當(dāng)所有腳本都被狀態(tài)圖反映出來,該類的狀態(tài)圖就構(gòu)造好了。An Introduction to Database System吐出現(xiàn)金吐出現(xiàn)金 ATMAn Introduction to Database SystemAn Introduction to Database System 各個類的狀態(tài)圖通過共享事件合并起來,構(gòu)成了系統(tǒng)的動態(tài)模型。在完成了每個具有重要交互行為的類的狀態(tài)圖之后,應(yīng)該檢查系統(tǒng)級的完整性和一致性。 一 般說來,每個事件都應(yīng)該既有發(fā)送對象又有接受對象,當(dāng)然,有時發(fā)送者和接受者是同一個對象。對于 沒有前驅(qū)或沒有后繼的狀態(tài)應(yīng)該著重審查,如果這個狀態(tài)既不是

41、交互序列的起點也不是終點,則發(fā)現(xiàn)了一 個錯誤。 7.4.5 審查動態(tài)模型An Introduction to Database System7.5 建立功能模型建立功能模型 通常在建立了對象模型和動態(tài)模型之后再建立功能模型。功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。其中的處理功能可以用 IPO 圖 ( 或表 ) 在UML中,功能模型也可以由用例圖表達An Introduction to Database System圖圖7.12 ATM7.12 ATM系統(tǒng)的基本系統(tǒng)模型系統(tǒng)的基本系統(tǒng)模型1 、畫出基本系統(tǒng)模型圖、畫出基本系統(tǒng)模型圖An Introdu

42、ction to Database System圖圖7.13 ATM7.13 ATM系統(tǒng)的功能級數(shù)據(jù)流圖系統(tǒng)的功能級數(shù)據(jù)流圖2、畫出功能級數(shù)據(jù)流圖、畫出功能級數(shù)據(jù)流圖An Introduction to Database System3 描述處理框功能描述處理框功能An Introduction to Database System7.6 定定 義義 服服 務(wù)務(wù) 需要等到建立了動態(tài)模型和功能模型之后,才能最終確定類中應(yīng)有的服務(wù),因為這兩個子模型更明確地描述了每個類中應(yīng)該提供哪些服務(wù)。事實上,在確定類中應(yīng)有的服務(wù)時,既要考慮該類實體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務(wù)。7.6.1 常規(guī)行

43、為 在分析階段可以認為,類中定義的每個屬性都是可以訪問的。An Introduction to Database System7.6.2 從事件導(dǎo)出的操作 狀態(tài)圖中發(fā)往對象的事件也就是該對象接收到的消息,因此該對象必須有由消息選擇符指定的操作,這個操作修改對象狀態(tài)(即屬性值)并啟動相應(yīng)的服務(wù)。7.6.3 與數(shù)據(jù)流圖中處理框?qū)?yīng)的操作 數(shù)據(jù)流圖中的每個處理框都與一個對象(也可能是若干個對象)上的操作相對應(yīng)。7.6.4 利用繼承減少冗余操作 應(yīng)該盡量利用繼承機制以減少所需定義的服務(wù)數(shù)目。7.6 定定 義義 服服 務(wù)務(wù)An Introduction to Database System7.7 面向?qū)?/p>

44、象分析實例面向?qū)ο蠓治鰧嵗?7.7.1 需求陳述 我們將要討論的是電梯的控制問題,下面給出對這個問題的描述。在一幢有m層樓的大廈中需要一套控制n部電梯的產(chǎn)品,要求這n部電梯根據(jù)下列約束條件在樓層間移動。 An Introduction to Database SystemC1:每部電梯有m個按鈕,每個按鈕代表一個樓層。當(dāng)按下一個按鈕時該按鈕指示燈亮,同時電梯駛向相應(yīng)的樓層,當(dāng)?shù)竭_由按鈕指定的樓層時指示燈熄滅。C2:除了大廈的最低層和最高層之外,每層樓都有兩個按鈕分別指示電梯上行和下行。當(dāng)這兩個按鈕之一被按下時相應(yīng)的指示燈亮,當(dāng)電梯到達此樓層時燈熄滅,電梯向要求的方向移動。C3:當(dāng)電梯無升降動作

45、時,關(guān)門并停在當(dāng)前樓層。7.7.1 需求陳述An Introduction to Database System 面向?qū)ο蠓治龅牡谝徊绞菢?gòu)造對象模型。在這個步驟中將抽象出類和它的屬性,并用對象模型圖描繪類&對象及它們彼此之間的關(guān)系。類所提供的服務(wù)將在面向?qū)ο蠓治龊笃诨蛎嫦驅(qū)ο笤O(shè)計階段再確定下來。 為了抽象出問題域中包含的類,可以用下述三個過程產(chǎn)生候選類,并對所得到的結(jié)果加以精化。 7.7.2 建立對象模型An Introduction to Database System 1. 精確地定義問題 應(yīng)該盡可能簡潔地定義所需要的產(chǎn)品,最好只用一句話來描述目標(biāo)系統(tǒng)。例如,對電梯系統(tǒng)可以像下面那樣描述。

46、 在一個在一個m m層樓的大廈里,用每層樓的按鈕和電梯內(nèi)的按層樓的大廈里,用每層樓的按鈕和電梯內(nèi)的按鈕來控制鈕來控制n n部電梯的移動。部電梯的移動。2. 提出非形式化策略 為了提出一種解決上述問題的非形式化策略,必須確定問題的約束條件。在7.7.1小節(jié)中已經(jīng)對電梯問題提出了三種約束。7.7.2 建立對象模型An Introduction to Database System 最好能用一小段文字把非形式化策略清楚地表達出來,對電梯問題來說,解決問題的非形式化策略可表達如下。在一幢有在一幢有m m層樓的大廈里,用電梯內(nèi)的和每個樓層的按鈕來層樓的大廈里,用電梯內(nèi)的和每個樓層的按鈕來控制控制n n部

47、電梯的運動。當(dāng)按下電梯按鈕以請求在某一指定部電梯的運動。當(dāng)按下電梯按鈕以請求在某一指定樓層停下時,按鈕指示燈亮;當(dāng)請求獲得滿足時,指示燈樓層停下時,按鈕指示燈亮;當(dāng)請求獲得滿足時,指示燈熄滅。當(dāng)電梯無升降操作時,關(guān)門并停在當(dāng)前樓層。熄滅。當(dāng)電梯無升降操作時,關(guān)門并停在當(dāng)前樓層。 7.7.2 建立對象模型An Introduction to Database System 3. 把策略形式化 在以上這段描述非形式化策略的文字中,共有八個不同的名詞:按鈕、電梯、樓層、運動、大廈、指示燈、請求和門。這些名詞所代表的事物可作為類的初步候選者。 其中,樓層和大廈是處于問題邊界之外的,因此可以忽略;運動、

48、指示燈、請求和門可以作為其他類的屬性,例如,指示燈(的狀態(tài))可作為按鈕類的屬性,門(的狀態(tài))可作為電梯類的屬性。7.7.2 建立對象模型An Introduction to Database System 經(jīng)過上述篩選后只剩下兩個候選類,即電梯和按鈕。 補充了電梯控制器類之后,得到了圖7.16所示的對象模型。7.7.2 建立對象模型An Introduction to Database System圖圖7.14 7.14 電梯系統(tǒng)對象模型的第一次迭代電梯系統(tǒng)對象模型的第一次迭代7.7.2 建立對象模型An Introduction to Database System圖圖7.15 7.15 電

49、梯系統(tǒng)對象模型的第二次迭代電梯系統(tǒng)對象模型的第二次迭代7.7.2 建立對象模型An Introduction to Database System1. 編寫腳本 這一步的目的是,決定每一個類應(yīng)該做的操作。達到這個目的的一種有效的方法,是列出用戶和系統(tǒng)之間相互作用的互作用的典型情況,即寫出腳本(包括正常情況腳本和異常情況腳本)。表7.4和表7.5分別是正常情況腳本和異常情況腳本。7.7.3 建立動態(tài)模型An Introduction to Database System表表7.4 7.4 電梯系統(tǒng)正常情況腳本電梯系統(tǒng)正常情況腳本 用戶A在3樓按上行按鈕呼叫電梯,用戶A希望到7樓去 上行按鈕指示燈

50、亮 一部電梯到達3樓,電梯內(nèi)的用戶B已按下了到9樓的按鈕 上行按鈕指示燈熄滅 電梯開門 用戶A進入電梯 用戶A按下電梯內(nèi)到7樓的按鈕 7樓按鈕指示燈亮 電梯關(guān)門An Introduction to Database System 電梯到達7樓 7樓按鈕指示燈熄滅 電梯開門 用戶A走出電梯 電梯在等待時間到后關(guān)門 電梯載著用戶B繼續(xù)上行到達9樓續(xù)表續(xù)表7.47.4An Introduction to Database System表表7.5 7.5 電梯系統(tǒng)異常情況腳本電梯系統(tǒng)異常情況腳本用戶A按下電梯內(nèi)到1樓的按鈕 用戶A在3樓按上行按鈕呼叫電梯,但是用戶A希望到1樓 上行銨鈕指示燈亮 一部電梯到達3樓,電梯內(nèi)用戶B已按下了到9樓的按鈕 上行按鈕指示燈熄滅 電梯開門 用戶A進入電梯用戶A按下電梯內(nèi)到1樓的按鈕An Introduction to Database System續(xù)表續(xù)表7.57.5 電梯內(nèi)1樓按鈕指示燈亮

溫馨提示

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

評論

0/150

提交評論