實用軟件工程-第7章-軟件建模_第1頁
實用軟件工程-第7章-軟件建模_第2頁
實用軟件工程-第7章-軟件建模_第3頁
實用軟件工程-第7章-軟件建模_第4頁
實用軟件工程-第7章-軟件建模_第5頁
已閱讀5頁,還剩127頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實用軟件工程第7章軟件建模實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第1頁。

軟件開發(fā)的主要工作是軟件需求和軟件設(shè)計,軟件需求和軟件設(shè)計的關(guān)鍵問題是軟件建模。建模的工具很多,最時尚的是UML提供的九種圖:類圖、對象圖、用例圖、時序圖、協(xié)作圖、狀態(tài)圖、活動圖、構(gòu)件圖和實施圖,重點是建立系統(tǒng)的用例圖、時序圖和類圖。

UML不是一種建模方法,而只是一種建模語言或建模工具而已。本章導(dǎo)讀:實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第2頁。提出了“業(yè)務(wù)模型、功能模型、數(shù)據(jù)模型”三個模型的建模思想與建模方法,以及這三個模型的描述方式與“用例圖、時序圖和類圖”之間的關(guān)系。論述數(shù)據(jù)庫設(shè)計的理論、方法、技巧與藝術(shù),即數(shù)據(jù)模型的設(shè)計方法與藝術(shù)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第3頁。軟件建模

要求了解

(1)軟件建模的概念

(2)UML的建模思想

要求理解

(1)UML的支撐環(huán)境Rose(2)UML建模思想的優(yōu)缺點

(3)三個模型建模思想的優(yōu)缺點要求掌握

(1)業(yè)務(wù)模型的概念及表示方式

(2)功能模型的概念及表示方式

(3)數(shù)據(jù)模型的概念及表示方式

(4)數(shù)據(jù)庫設(shè)計的方法、技巧實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第4頁。7.1三個模型的建模思想

7.1.1三個模型概論

功能模型FM(FunctionModel)描述系統(tǒng)能做什么,即對系統(tǒng)的功能、性能、接口和界面進行定義。

業(yè)務(wù)模型OM(OperationModel)對系統(tǒng)的操作流程進行定義(怎么做)。

數(shù)據(jù)模型DM(DataModel)對系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進行定義(數(shù)據(jù)怎么組織)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第5頁。三個模型概論(續(xù))

數(shù)據(jù)模型:PowerDesigner、ERwin、OracleDesigner或ClassDiagram

功能模型:功能點列表、UseCaseDiagram

業(yè)務(wù)模型:自然語言加上流程圖、SequenceDiagram

1、建模時機:功能模型和業(yè)務(wù)模型(需求分析時建模)數(shù)據(jù)模型(軟件設(shè)計)2、三個模型建模工具實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第6頁。思考:三種模型建模思想是否適合系統(tǒng)軟件建模?

問題:

1.操作系統(tǒng)的三個模型是什么?

2.編譯系統(tǒng)的三個模型是什么?

3.解釋系統(tǒng)的三個模型是什么?

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第7頁。7.1.2業(yè)務(wù)模型

系統(tǒng)的業(yè)務(wù)流程圖加上相應(yīng)的業(yè)務(wù)規(guī)則。這里的業(yè)務(wù)流程圖,是指企業(yè)在業(yè)務(wù)流程再造BPR(BusinessProcessReengineering)之后形成的操作流程和業(yè)務(wù)規(guī)則。1、業(yè)務(wù)模型:2、業(yè)務(wù)模型的范圍:企業(yè)的組織結(jié)構(gòu),部門職責(zé)及崗位(或角色)職能,崗位操作流程,崗位業(yè)務(wù)規(guī)則,每個流程的輸入、響應(yīng)、輸出。3、業(yè)務(wù)模型的描述方法:組織結(jié)構(gòu)圖,崗位(或角色)職能表,業(yè)務(wù)流程圖加上業(yè)務(wù)規(guī)則說明。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第8頁。4、業(yè)務(wù)流程圖

業(yè)務(wù)流程圖也可以用業(yè)務(wù)操作步驟來描述,還可以用類似于程序流程圖的圖形來表達。

在UML中,完整的業(yè)務(wù)模型由用例圖、時序圖、交互圖、狀態(tài)圖、活動圖來表述。但是,時序圖在表述中起到核心作用。業(yè)務(wù)模型有時稱為動態(tài)模型或操作模型。業(yè)務(wù)模型的作用,既是功能模型設(shè)計的基礎(chǔ),又是用戶操作手冊編寫的依據(jù)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第9頁。取100元人民幣的時序圖

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第10頁。

取100元人民幣的交互圖

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第11頁?!伴_戶”的活動圖

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第12頁。7.1.3功能模型1、功能模型是什么?■系統(tǒng)功能需求列表(用戶角度)■系統(tǒng)內(nèi)部功能模塊(功能部件)的有機排列和組合(設(shè)計者)■系統(tǒng)的用例的集合(ROSE)■用戶操作手冊(產(chǎn)品)■功能菜單(操作菜單)

總之,功能模型描述系統(tǒng)能做什么,是系統(tǒng)所有功能的集合,具體表現(xiàn)在系統(tǒng)的功能、性能、接口和界面上。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第13頁。2、功能模型的表示方法系統(tǒng)功能需求列表性能需求列表接口需求列表界面需求列表UML規(guī)定采用用例圖來描述功能模型。3、功能模型的設(shè)計實現(xiàn)方法

將相同的功能歸并,設(shè)計為構(gòu)件或組件(部件),將不同的功能設(shè)計成模塊,然后用面向?qū)ο蟮恼Z言將這些離散的部件或模塊組裝起來,形成一個完整的系統(tǒng),供最終用戶使用。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第14頁。4、功能模型的特點

功能模型既是動態(tài)的,又是靜態(tài)的。因為有的功能與系統(tǒng)運行的時間序列有關(guān)。5、功能模型的作用

功能模型既是數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)設(shè)計的基礎(chǔ),又是功能模塊(功能部件)設(shè)計、編程實現(xiàn)和測試驗收的依據(jù)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第15頁。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第16頁。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第17頁。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第18頁。7.1.4數(shù)據(jù)模型

企業(yè)信息系統(tǒng)中的數(shù)據(jù)模型,是指它的E-R圖及其相應(yīng)的數(shù)據(jù)字典。這里的數(shù)據(jù)字典,包括實體字典、屬性字典、關(guān)系字典。1、數(shù)據(jù)模型是什么?

數(shù)據(jù)模型分為概念數(shù)據(jù)模型CDM和物理數(shù)據(jù)模型PDM兩個層次。CDM就是數(shù)據(jù)庫的邏輯設(shè)計,即E-R圖。PDM就是數(shù)據(jù)庫的物理設(shè)計,即物理表。

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第19頁。2、數(shù)據(jù)模型的表示方法

系統(tǒng)的概念數(shù)據(jù)模型CDM和物理數(shù)據(jù)模型PDM,加上相應(yīng)的表結(jié)構(gòu)。

UML規(guī)定,用類圖加上對象圖來表述數(shù)據(jù)模型。在UML的實現(xiàn)工具Rose2003中,可以建立系統(tǒng)的數(shù)據(jù)模型。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第20頁。3、數(shù)據(jù)模型的特點

數(shù)據(jù)模型本身是靜態(tài)的,但是在設(shè)計者心目中,應(yīng)該盡量將它由靜態(tài)變成動態(tài)。設(shè)計者可以想象數(shù)據(jù)(或記錄)在相關(guān)表上的流動過程,即增加、刪除、修改、傳輸與處理等。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第21頁。圖書銷售系統(tǒng)數(shù)據(jù)庫CDM實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第22頁。7.2數(shù)據(jù)模型設(shè)計概論

“以不變應(yīng)萬變”,就是當(dāng)用戶的功能需求發(fā)生某些變化時,數(shù)據(jù)庫設(shè)計的框架不需要做任何改動,就可以適應(yīng)用戶的功能需求。1、什么是好的數(shù)據(jù)模型?(1)一是滿足功能需求

(2)二是滿足性能需求

(3)三是該模型能長期穩(wěn)定,盡量做到“以不變應(yīng)萬變”。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第23頁。

數(shù)據(jù)庫設(shè)計的難易程度取決于兩個要素:

(1).“數(shù)據(jù)關(guān)系的復(fù)雜程度”

(2).“數(shù)據(jù)量的大小”。2、數(shù)據(jù)庫設(shè)計的主要工作

設(shè)計數(shù)據(jù)庫的表,表的結(jié)構(gòu)就是數(shù)據(jù)的存儲結(jié)構(gòu)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第24頁。7.2.1數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)

管理用戶的數(shù)據(jù)庫及其在數(shù)據(jù)庫上的各種操作,以及數(shù)據(jù)庫對外的各種接口。1、兩者區(qū)別?

數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)是有區(qū)別的,前者是應(yīng)用軟件,后者是系統(tǒng)軟件。2、數(shù)據(jù)庫管理系統(tǒng)基本功能

關(guān)系數(shù)據(jù)庫管理系統(tǒng)RDBMS自帶許多編程語句(命令),這些語句可分為三大類:數(shù)據(jù)定義語言DDL,如CREATE,ALTER,DROP;數(shù)據(jù)操縱語言DML,如SELECT,UPDATE,INSERT,DELETE;數(shù)據(jù)控制語言DCL,如分支語句、循環(huán)語句。

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第25頁。7.2.2數(shù)據(jù)庫的組成

數(shù)據(jù)庫是表的集合,表由字段組成,表中存放著記錄。由于記錄的數(shù)據(jù)可以是原始數(shù)據(jù)、信息代碼數(shù)據(jù)、統(tǒng)計數(shù)據(jù)和臨時數(shù)據(jù)4種,所以又可將表劃分為基本表、代碼表、中間表和臨時表4種。

1、組成

一個數(shù)據(jù)庫由一臺數(shù)據(jù)庫服務(wù)器、一個數(shù)據(jù)庫管理系統(tǒng)DBMS、一個數(shù)據(jù)庫管理員DBA、多張表(每張表中有許多條記錄)、表上的視圖和索引、許多用戶和角色所組成。2、表的劃分實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第26頁。

原始數(shù)據(jù)和信息代碼數(shù)據(jù),統(tǒng)稱為基礎(chǔ)數(shù)據(jù)。本表和代碼表,統(tǒng)稱為基表。數(shù)據(jù)庫設(shè)計主要是指基本表設(shè)計,包括代碼表、中間表、臨時表和視圖的設(shè)計,基本表的設(shè)計較難,代碼表、中間表、臨時表和視圖的設(shè)計較易。3、數(shù)據(jù)庫的表(1)存放原始數(shù)據(jù)的表,稱為基本表。

(2)存放信息代碼數(shù)據(jù)的表,稱為代碼表。

(3)存放統(tǒng)計數(shù)據(jù)的表,稱為中間表。

(4)存放臨時數(shù)據(jù)的表,稱為臨時表。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第27頁。

基本表與中間表、臨時表不同,有如下4個特性:(1)原子性?;颈碇械淖侄问遣豢稍俜纸獾?。(2)原始性。基本表中的記錄是原始數(shù)據(jù)的記錄。(3)演繹性。由基本表與代碼表中的數(shù)據(jù),可以派生出所有的輸出數(shù)據(jù)。(4)穩(wěn)定性。基本表的結(jié)構(gòu)是相對穩(wěn)定的,表中的記錄是需要長期保存的。4、基本表的性質(zhì)實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第28頁。

基表和中間表由DBA維護,臨時表由程序員自己用程序自動維護。5、其他表

代碼表又稱為“數(shù)據(jù)字典”,它是存放單位代碼、物資代碼、人員代碼、科目代碼等等信息編碼的表。

中間表是存放統(tǒng)計數(shù)據(jù)的表,它是為數(shù)據(jù)倉庫、輸出報表或查詢結(jié)果而設(shè)計的。

臨時表是程序員個人設(shè)計的,存放臨時記錄,為個人所用。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第29頁。

視圖是一種虛表,它依賴數(shù)據(jù)源的實表而存在,這些實表是基本表和代碼表。6、數(shù)據(jù)庫視圖

視圖是供程序員使用數(shù)據(jù)庫的一個窗口,是基表數(shù)據(jù)綜合的一種形式,是數(shù)據(jù)處理的一種方法,是用戶數(shù)據(jù)保密的一種手段。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第30頁。7.2.3數(shù)據(jù)庫設(shè)計的內(nèi)容與步驟

(三項內(nèi)容,十大步驟)數(shù)據(jù)庫需求分析的步驟:

(1)收集系統(tǒng)所有的原始單據(jù)(信息源產(chǎn)生的數(shù)據(jù))和統(tǒng)計報表

(2)弄清楚兩者之間的關(guān)系,寫明輸出數(shù)據(jù)項中的數(shù)據(jù)來源與算法

(3)若原始單據(jù)覆蓋了所有需要的業(yè)務(wù)內(nèi)容,并且能滿足所有統(tǒng)計報表的輸出數(shù)據(jù)要求,則需求分析完畢

(4)反之繼續(xù)分析,重復(fù)步驟(1)----(3)。1、數(shù)據(jù)庫需求分析實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第31頁?!纠?-1】“姓名,性別,身高,體重,民族”這一組相關(guān)元數(shù)據(jù)的集合,就組成人這個實體。而“張三,男,1.8,90,漢族”就是人這個實體的一次表現(xiàn),它不是一個實體,而是一個實例。如果將“體重”改為“毛重”,則“姓名,性別,身高,毛重,民族”就不是一個實體,因為人不能用毛重、凈重描述,豬和貨物可以用毛重、凈重描述。概念設(shè)計的特點是:與具體的數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)無關(guān),它就是數(shù)據(jù)庫的邏輯設(shè)計。2、數(shù)據(jù)庫概念設(shè)計

數(shù)據(jù)庫概念設(shè)計是指設(shè)計出數(shù)據(jù)庫的概念數(shù)據(jù)模型CDM,以及相應(yīng)的數(shù)據(jù)字典(DD)。所謂實體,就是一組相關(guān)元數(shù)據(jù)的集合。所謂實例,就是實體的一次表現(xiàn)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第32頁。數(shù)據(jù)庫物理設(shè)計的方法是:(1)確定關(guān)系數(shù)據(jù)庫管理系統(tǒng)平臺,即選定具體的RDBMS。(2)利用數(shù)據(jù)庫提供的命令和語句,建立表、索引、觸發(fā)器、存儲過程、視圖等。(3)列出表與功能模塊之間的關(guān)系矩陣,便于詳細設(shè)計。

3、數(shù)據(jù)庫物理設(shè)計

數(shù)據(jù)庫物理設(shè)計是指設(shè)計出數(shù)據(jù)庫的物理數(shù)據(jù)模型PDM,包括數(shù)據(jù)庫服務(wù)器物理空間上的表、字段、索引、視圖、儲存過程、觸發(fā)器,以及相應(yīng)的數(shù)據(jù)字典。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第33頁。數(shù)據(jù)庫設(shè)計十大步驟設(shè)計步驟設(shè)計內(nèi)容第1步

將原始單據(jù)分類整理,理清原始單據(jù)與輸出報表之間的數(shù)據(jù)轉(zhuǎn)換關(guān)系及算法,澄清一切不確定的問題第2步

從原始單據(jù)出發(fā),劃分出各個實體,給實體命名,初步分配屬性,標(biāo)識出主鍵或外鍵,理清實體之間的關(guān)系第3步

進行數(shù)據(jù)庫概念數(shù)據(jù)模型CDM設(shè)計,畫出實體關(guān)系圖ERD,定義完整性約束第4步

進行數(shù)據(jù)庫物理數(shù)據(jù)模型PDM設(shè)計,將概念數(shù)據(jù)模型CDM轉(zhuǎn)換為物理數(shù)據(jù)模型PDM第5步

在特定的數(shù)據(jù)庫管理系統(tǒng)上定義表空間,物理建表與建索引第6步

定義觸發(fā)器與存儲過程第7步

定義視圖,說明數(shù)據(jù)庫與應(yīng)用程序之間的關(guān)系第8步

數(shù)據(jù)庫加載測試第9步

數(shù)據(jù)庫性能優(yōu)化第10步

數(shù)據(jù)庫設(shè)計評審實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第34頁。7.3數(shù)據(jù)庫設(shè)計的理論與方法

原始單據(jù)與實體之間關(guān)系在一般是一對一的關(guān)系,即一張原始單據(jù)對應(yīng)且只對應(yīng)一個實體。在特殊情況下,它們可能是一對多或多對一的關(guān)系。這里的實體可以理解為基本表。

【例7-2】在人力資源信息系統(tǒng)中,一份員工履歷對應(yīng)三個基本表:員工基本情況表、社會關(guān)系表、工作簡歷表。這就是“一張原始單據(jù)對應(yīng)多個實體”的典型例子。

1、數(shù)據(jù)庫原始單據(jù)與實體之間的關(guān)系

實體在哪兒呢?即如何發(fā)現(xiàn)、找到、抽象出實體呢?其實,實體就蘊涵在原始單據(jù)中!實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第35頁。

主張主鍵原子化,即只用一個字段做主鍵。其中外鍵必須對應(yīng)主鍵。2、主鍵與外鍵

一個實體不能既無主鍵(PK),又無外鍵(FK)。在E-R圖中,處于葉子部位的實體,可以不定義主鍵(因為它無子孫),但必須要有外鍵(因為它有父親)。

PK是供程序員使用的表間連接工具,可以是一個無物理意義的數(shù)字串,由程序自動加1來實現(xiàn);也可以是有物理意義的字段名或字段名的組合,不過前者比后者好。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第36頁。

第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。3、通俗地理解范式理論

第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解。

第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標(biāo)識,即實體的惟一性。在數(shù)據(jù)庫設(shè)計時,作為惟一性標(biāo)志的主鍵,最好是一個字段,而不是組合字段,這就是主鍵的原子性。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第37頁。

數(shù)據(jù)庫設(shè)計規(guī)范化理論的實質(zhì),就是引導(dǎo)并幫助設(shè)計人員實現(xiàn)“實體、屬性、主鍵的原子化”!

其他更高級的范式:BCF、4NF、5NF等各級范式,研究的內(nèi)容是解決實體本身的原子性問題。

“只要實現(xiàn)了屬性、主鍵、實體三者的原子化,就從根本上符合了各級范式的要求了”。這就是范式理論的實質(zhì)!實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第38頁。

降低范式就是增加字段,允許冗余。常稱“降低范式的過程”為“反規(guī)范化設(shè)計過程”。沒有冗余的數(shù)據(jù)庫設(shè)計

為了提高運行效率,必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù),這就是用空間換時間。具體做法是:在概念數(shù)據(jù)模型設(shè)計時遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計時考慮。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第39頁。低級冗余和高級冗余

主鍵與外鍵在多表中的重復(fù)出現(xiàn),不屬于數(shù)據(jù)冗余。非鍵字段的重復(fù)出現(xiàn),才是數(shù)據(jù)冗余,而且是一種低級冗余,即重復(fù)性的冗余。高級冗余不是字段的重復(fù)出現(xiàn),而是字段的派生出現(xiàn)。低級冗余會導(dǎo)致數(shù)據(jù)的不一致!

【例7-3】有一張存放商品的基本表,如P163表7-3所示?!敖痤~”這個字段的存在,表明該表的設(shè)計不滿足第三范式,因為“金額”可以由“單價”乘以“數(shù)量”得到,說明“金額”是冗余字段。但是,增加“金額”這個冗余字段,可以提高查詢統(tǒng)計的速度,這就是以空間換時間的做法。

在Rose2002中,規(guī)定列有兩種類型:數(shù)據(jù)列和計算列?!敖痤~”這樣的列被稱為“計算列”,而“單價”和“數(shù)量”這樣的列被稱為“數(shù)據(jù)列”。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第40頁。4.?dāng)?shù)據(jù)庫設(shè)計中的兩大竅門

竅門之二:要建立穩(wěn)定的數(shù)據(jù)模型,就要掌握“以不變應(yīng)萬變”的設(shè)計技巧,這個技巧就是“列變行”。

站在IT企業(yè)的數(shù)據(jù)庫開發(fā)上講,數(shù)據(jù)庫設(shè)計的核心竅門只有兩個:

竅門之一:如果兩個實體(或多個實體)之間的關(guān)系非常復(fù)雜,那么它們之間就可能存在多對多的關(guān)系。對于這種情況,我們不但要善于認(rèn)別它,而且要正確處理它(增加第三者)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第41頁。

增加第三者的實質(zhì),是解決關(guān)系的原子化問題。在現(xiàn)實生活中,到處存在多對多的關(guān)系。例如:老師與課程、學(xué)生與課程、讀者與圖書、旅客與客房、司機與車輛、船舶與貨物、飛機與機場、運動員與項目等。增加第三者

尋找“笛卡爾積的子集”的竅門,就是“要善于認(rèn)別與正確處理實體之間的多對多關(guān)系”。兩者之間增加第三個實體。這樣,原來一個多對多的關(guān)系,現(xiàn)在變?yōu)閮蓚€一對多的關(guān)系。剩下的問題是:要將原來兩個實體的共同屬性分配到第三個實體中去,還要將原來兩個實體的主鍵當(dāng)作第三個實體的外鍵。這里的第三個實體,就是“笛卡爾積的子集”,它是一個實體,對應(yīng)一張基本表。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第42頁。多對多關(guān)系實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第43頁。多對多關(guān)系實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第44頁。

具體做法,請看P165【例7-7】學(xué)生成績單的管理,就是一個“列變行”的例子。

列變行

所謂“列變行”,就是將第一個表中的某些列,變?yōu)榈诙€表中的某些行。將原來設(shè)計不科學(xué)的一個表,變?yōu)楝F(xiàn)在設(shè)計很科學(xué)的兩個表:其中一個為主表或父表,另一個為從表或子表(又稱明細表),通過主鍵與外鍵,兩個表進行連接,共同完成相關(guān)的操作。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第45頁。(1).“列變行”之前的表結(jié)構(gòu)

學(xué)號姓名性別電話地址Email課程1成績1……課程30成績300501張晶女………英語88……數(shù)據(jù)庫850502劉路男………英語98……數(shù)據(jù)庫900503……………………………實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第46頁。(2).“列變行”之后的表結(jié)構(gòu)

學(xué)號姓名性別電話地址Email0501張晶女………0502劉路男………0503……………學(xué)號課程成績0501英語880501哲學(xué)780501……0501……………0501數(shù)據(jù)庫850501日語900501法語96實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第47頁。列變行之后的輸出方案----

建立“學(xué)生成績表”視圖CreateView學(xué)生成績表

AsSelect學(xué)生表

.學(xué)號,姓名,課程名稱,成績

From學(xué)生表,成績表

Where學(xué)生表

.學(xué)號=成績表.學(xué)號實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第48頁。“列變行”的實質(zhì)

“列變行”的實質(zhì)是解決實體的原子性問題。在現(xiàn)實生活中,到處存在需要“列變行”的例子,因為到處有主表與明細表的關(guān)系。例如:部門與員工、員工基本情況與個人簡歷、月基本工資與月補貼、訂單頭與訂單體等等。

“列變行”之后的表結(jié)構(gòu)設(shè)計中的優(yōu)點,就是“實事求是”。第一,在四年級之前,他們沒有學(xué)完三十門課程,這種設(shè)計也不會浪費一點存儲空間;第二,到四年級時,即使個別學(xué)生修了兩個學(xué)位,共計有三十多門課程,這種設(shè)計也不需要改動表結(jié)構(gòu),達到了“以不變應(yīng)萬變”的目的。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第49頁。5.西瓜理論和西瓜方法【定義7-5】所謂西瓜方法,就是在數(shù)據(jù)庫設(shè)計時,如果將屬性比作芝麻,將主要實體比作大西瓜,將次要實體比作小西瓜,那么在用CASE工具設(shè)計E-R圖時,應(yīng)先畫出大西瓜,后畫出小西瓜,用西瓜統(tǒng)帥芝麻,用大西瓜統(tǒng)帥小西瓜。

【定義7-4】所謂西瓜理論,就是在數(shù)據(jù)庫分析時,如果將屬性比作芝麻,將主要實體比作大西瓜,將次要實體比作小西瓜,那么芝麻必須圍繞西瓜轉(zhuǎn),小西瓜必須圍繞大西瓜轉(zhuǎn)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第50頁。

“西瓜理論和西瓜方法”排除了“屬性主導(dǎo)型”方法,主張“實體主導(dǎo)型”方法。

“實體主導(dǎo)型”方法只是提出了“以實體統(tǒng)帥屬性”的思想,在數(shù)據(jù)庫分析與設(shè)計時,首先要抓住實體,從實體出發(fā)去尋找、發(fā)現(xiàn)、確定屬性,而不要采取本末倒置的“屬性主導(dǎo)型”方法,即從屬性出發(fā),通過屬性的分解與歸約,來尋找、發(fā)現(xiàn)、確定實體。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第51頁。(1)在數(shù)據(jù)庫需求分析和設(shè)計時,一方面要以實體去統(tǒng)帥屬性,另一方面要以主要實體去統(tǒng)帥次要實體;

(2)不但要使屬性圍繞實體轉(zhuǎn),而且要使次要實體圍繞主要實體轉(zhuǎn);

(3)在任何信息系統(tǒng)的全局E-R圖中,其主要實體的數(shù)目都是有限的,數(shù)據(jù)庫分析與設(shè)計的任務(wù),就是善于發(fā)現(xiàn)、捕獲主要實體,并用主要實體去組織、規(guī)劃、設(shè)計全局E-R圖。

“西瓜理論和西瓜方法”除了繼承“實體主導(dǎo)型”方法的特點之外,還更進一步地提出:實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第52頁。畫E-R圖的步驟

在西瓜理論和西瓜方法的指導(dǎo)下,利用CASE工具畫E-R圖的步驟是:

(1)先畫主要實體(抓大西瓜),用大西瓜來統(tǒng)帥中小西瓜;

(2)再畫次要實體(抓中西瓜),使中西瓜圍繞大西瓜轉(zhuǎn);

(3)后畫代碼實體(抓小西瓜),使小西瓜圍繞中西瓜轉(zhuǎn);

(4)最后分配或補充實體的屬性(撿芝麻);

(5)畫關(guān)系,調(diào)整E-R圖的部署,檢查數(shù)據(jù)庫設(shè)計是否實現(xiàn)了四化(屬性、實體、主鍵、關(guān)系的原子化)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第53頁。6.完整性約束表現(xiàn)在三個方面(3)用戶定義完整性:它是用戶單位規(guī)定的一些業(yè)務(wù)規(guī)則,這些業(yè)務(wù)規(guī)則有時用存儲過程實現(xiàn),有時用觸發(fā)器來實現(xiàn),有時用定義域(對字段的取值范圍進行定義)來實現(xiàn)。業(yè)務(wù)規(guī)則反映用戶單位的業(yè)務(wù)邏輯,必須在數(shù)據(jù)庫需求分析時徹底搞清。(1)實體完整性:每個實體必須有唯一性標(biāo)志,這個唯一性標(biāo)志是用實體的主鍵(PK)來實現(xiàn)。(2)參照完整性。就是由主表到從表的方向是參照關(guān)系,由從表到主表的方向是依賴關(guān)系。參照和依賴關(guān)系,是通過主鍵(PK)、外鍵(FK)和觸發(fā)器來加以實現(xiàn)。關(guān)系數(shù)據(jù)庫的本質(zhì),就是分析、研究、處理主表與從表的關(guān)系,即主鍵與外鍵的關(guān)系。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第54頁。7.防止數(shù)據(jù)庫設(shè)計打補丁的方法是“三少原則”

(3)一個表中的字段個數(shù)越少越好。只有字段的個數(shù)少,才能說明系統(tǒng)中不存在數(shù)據(jù)重復(fù),且很少有數(shù)據(jù)冗余,學(xué)會“列變行”,這樣就防止了將子表中的字段拉入到主表中去,在主表中留下許多空余的字段。

(1)一個數(shù)據(jù)庫中表的個數(shù)越少越好。只有表的個數(shù)少了,才能說明系統(tǒng)的E-R圖少而精,去掉了重復(fù)的、多余的實體,形成了對客觀世界的高度抽象。

(2)一個表中組合主鍵的字段個數(shù)越少越好,最好是用一個字段做主鍵,即主鍵原子化。因為主鍵的作用,一是建立主鍵索引,二是作為從表的外鍵,所以組合主鍵的字段個數(shù)少了,不僅節(jié)省了運行時間,而且節(jié)省了索引存儲空間。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第55頁。7.4信息系統(tǒng)建模實例分析

省級新華書店信息系統(tǒng)建模案例

以上面三個主要實體為中心,并將所有的次要實體統(tǒng)帥起來,使所有的次要實體都以這三個實體為中心,形成一個完整的新華書店信息系統(tǒng)數(shù)據(jù)模型。1.?dāng)?shù)據(jù)模型分析從全局實體關(guān)系圖中,CDM有以下3個主要實體:(1)圖書:它存放了新華書店歷年來發(fā)行的全部圖書信息。(2)倉庫圖書:它存放了儲運中心倉庫現(xiàn)有的全部圖書信息。(3)門市圖書:它存放了書城或連鎖書店各自現(xiàn)有的全部圖書信息。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第56頁。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第57頁。

數(shù)據(jù)模型分析(續(xù))

每個實體的名稱、主鍵、屬性在CDM圖上顯示得很清楚。根據(jù)概念數(shù)據(jù)模型CDM,利用PowerDesignerDataArchitect工具,就可自動生成物理數(shù)據(jù)模型PDM。

在省級新華書店信息系統(tǒng)的概念數(shù)據(jù)模型CDM中,與“圖書”直接關(guān)聯(lián)的實體有:出版社、倉庫圖書、書城入庫、訂購單體、書城訂單、圖書警戒線。

與“倉庫圖書”直接關(guān)聯(lián)的實體有:現(xiàn)貨批銷、付退貨、圖書報廢、入庫單、倉庫貨位、市外調(diào)撥、內(nèi)部遷移、內(nèi)退入庫、市內(nèi)配送、圖書。

與“門市圖書”直接關(guān)聯(lián)的實體有:市內(nèi)配送、內(nèi)退入庫、銷售記錄、書店、書城入庫。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第58頁。2.功能模型分析

(1)“輸入內(nèi)容”是用戶對信息系統(tǒng)的錄入。

(2)“輸出內(nèi)容”是信息系統(tǒng)對外的顯示或打印。

(3)“系統(tǒng)響應(yīng)”是系統(tǒng)對用戶操作的處理過程。

省級新華書店信息系統(tǒng)的功能模型具有16項功能,用“功能點列表”的方式來描述和分析,現(xiàn)將分析結(jié)果列在表7-7之中。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第59頁。3.業(yè)務(wù)模型分析

步驟1:制作訂購單操作流程。步驟2:制作訂單操作流程。步驟3:圖書期貨入庫操作流程。步驟4:圖書配送操作流程。步驟5:圖書銷售操作流程。步驟6:圖書退貨操作流程。步驟7:圖書調(diào)撥操作流程。步驟8:圖書現(xiàn)貨批銷操作流程。步驟9:查詢統(tǒng)計。步驟10:制作記賬憑證。

業(yè)務(wù)模型屬于動態(tài)模型,本實例分析中用“業(yè)務(wù)操作步驟”來描述。省級新華書店信息系統(tǒng)的業(yè)務(wù)模型由下列10大步驟組成。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第60頁。4.分析結(jié)論

在此基礎(chǔ)上,再對新華書店信息系統(tǒng)進行概要設(shè)計和詳細設(shè)計。當(dāng)詳細設(shè)計評審?fù)ㄟ^(不符合項為零)后,再利用PowerBuilder,Delphi,C++等語言進行實現(xiàn),加上面向功能的測試和面向過程的管理,系統(tǒng)按計劃(進度、成本、質(zhì)量)實現(xiàn)。

對上述“三個模型”研究分析之后,完成了需求分析的主要工作量及概要設(shè)計中的主要內(nèi)容──數(shù)據(jù)庫設(shè)計。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第61頁。7.5三個模型建模思想總結(jié)

(2)符合客觀事物的發(fā)展規(guī)律。做什么?系統(tǒng)“功能模型”的任務(wù)。怎么做?系統(tǒng)“業(yè)務(wù)模型”的任務(wù)。在什么地方做?做事的原材料在什么地方?做完后的產(chǎn)品放到什么地方?這就是系統(tǒng)“數(shù)據(jù)模型”的任務(wù)。1.三個模型建模思想的優(yōu)點(1)符合中國人的心理:系統(tǒng)有什么功能?對應(yīng)系統(tǒng)的“功能模型”。系統(tǒng)怎么操作?對應(yīng)系統(tǒng)的“業(yè)務(wù)模型”。系統(tǒng)的數(shù)據(jù)怎樣組織?對應(yīng)系統(tǒng)的“數(shù)據(jù)模型”。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第62頁。(4)符合“簡單、方便、直觀”的原則。

“功能模型”看得見:菜單、界面、報表。

“業(yè)務(wù)模型”摸得著:操作說明書、業(yè)務(wù)流程圖、業(yè)務(wù)規(guī)則。

“數(shù)據(jù)模型”聽得懂:實體、屬性、關(guān)系、表、字段、記錄、數(shù)據(jù)字典、原始數(shù)據(jù)、統(tǒng)計數(shù)據(jù)、臨時數(shù)據(jù)。(3)符合將復(fù)雜問題簡單化的哲學(xué)思想。項目經(jīng)理主要負責(zé)“三抓”:抓系統(tǒng)的“功能模型”。,抓系統(tǒng)的“業(yè)務(wù)模型”,抓系統(tǒng)的“數(shù)據(jù)模型”。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第63頁。(6)三個模型的建模思想既適合應(yīng)用軟件建模,又適合系統(tǒng)軟件建模。

(5)符合節(jié)省成本降低費用的經(jīng)濟效益目標(biāo)。中國軟件的開發(fā)方法與文檔標(biāo)準(zhǔn),不應(yīng)該完全與發(fā)達國家相同,而結(jié)合中國的國情來做。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第64頁。

(3)只能覆蓋需求分析和設(shè)計兩個階段,不能覆蓋整個軟件生存周期。業(yè)務(wù)模型和功能模型主要適合在軟件需求階段建模,數(shù)據(jù)模型主要適合在軟件設(shè)計階段建模。2.三個模型建模思想的缺點

(1)功能模型表述不規(guī)范:目前,功能模型還只能用“功能點列表、性能點列表、接口列表”這三個列表來表示,或者用UML的用例圖和用況規(guī)約來描述,其他還沒有找到更好的方法。(2)業(yè)務(wù)模型表述不規(guī)范:目前,業(yè)務(wù)模型還只能從“業(yè)務(wù)操作步驟、業(yè)務(wù)流程圖、用戶操作手冊”這三個方面來表示。在UML中,完整的業(yè)務(wù)模型由用例圖、時序圖、交互圖、狀態(tài)圖、活動圖來表述,其他還沒有找到更好的辦法。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第65頁。(2)數(shù)據(jù)模型能否可以用類圖來創(chuàng)建呢?不可以。

UML中新增加了數(shù)據(jù)模型的語法,其實現(xiàn)工具Rose2003支持這一功能。在Rose2003的邏輯視圖中,可以創(chuàng)建表以及表中的字段、約束、主鍵、外鍵、關(guān)系、索引、觸發(fā)器和存儲過程。這樣,就將Rose的建模方式與三個模型的建模思想結(jié)合在一起。3.值得思考的問題(1)業(yè)務(wù)模型和功能模型描述方法的改進和提高,是三個模型建模思想的發(fā)展方向。UML只是一種建模語言,不是一種方法論,它獨立于過程,不包括過程中的方法與步驟。方法論與語言工具是不同的,三個模型的建模思想屬于方法論,UML屬語言工具。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第66頁。

(4)“三個模型”的思想,加上“五個面向”的實施理論,就構(gòu)成了一個完整的方法論,該方法論不僅適合信息系統(tǒng)建設(shè),而且也適合其他應(yīng)用軟件和系統(tǒng)軟件的建設(shè)。

(3)三個模型應(yīng)以數(shù)據(jù)模型為中心,以業(yè)務(wù)模型和功能模型為兩個基本點。尤其是在企業(yè)信息系統(tǒng)的分析、設(shè)計和實現(xiàn)中,因為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)RDBMS仍然是其支撐平臺,所以應(yīng)該這樣去理解三個模型的建模思想。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第67頁。*7.6UML的建模思想

7.6.1UML對軟件工程的重大影響UML不是一種建模思想,只是一種建模語言或工具。

UML和Rose的組合已構(gòu)成了一種新的軟件建模思想和開發(fā)方式,勢必會對軟件工程的發(fā)展與創(chuàng)新產(chǎn)生重大影響,這種影響將主要表現(xiàn)在如下四個方面:UML是RationalRose的理論基礎(chǔ),RationalRose是UML的建模實現(xiàn)途徑,即Rose是UML的實現(xiàn)工具。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第68頁。UML對軟件工程的重大影響(1)軟件生存周期:UML用統(tǒng)一的軟件開發(fā)生存周期RUP來替代原有的軟件生存周期。(2)軟件建模方式:UML用可視化的語言實現(xiàn)軟件整個生存周期各個階段的建模。(3)軟件文檔規(guī)范:正向工程和逆向工程的文檔全部由UML建模工具自動產(chǎn)生。(4)軟件人員分工:UML使得分析、設(shè)計、實現(xiàn)、維護的崗位界線逐漸趨向模糊。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第69頁。7.6.2UML的概念模型(1)面向?qū)ο蟮幕尽皹?gòu)造塊”(積木塊)(2)支配這些構(gòu)造塊放在一起建模的“規(guī)則”(建模的粘合劑)(3)運用于整個UML的“公共機制”(模型的圖紙說明

)

使用UML的關(guān)鍵是用它來簡明、準(zhǔn)確地建立模型。為了理解UML的建模元素,關(guān)鍵是要學(xué)習(xí)它的三個要素:實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第70頁。第1種構(gòu)造塊:事物。事物是構(gòu)造塊,UML中有4種事物,它們分別是結(jié)構(gòu)事物、行為事物、分組事物和注釋事物。(1)結(jié)構(gòu)事物(StructuralThing),它是UML模型中的靜態(tài)元素,包括類、接口、協(xié)作、用況、主動類、構(gòu)件和節(jié)點7種元素。1.UML的“構(gòu)造塊”

UML中有3種基本構(gòu)造塊,分別是“事物”、“關(guān)系”和“圖”,它們是UML建模中的積木元素或積木組合體。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第71頁。

(4)注釋事物(AnnotationalThing),它是UML模型的解釋元素,主要是注解(Note),用一個包含注解內(nèi)容的右上角為折角的矩形表示。

(2)行為事物(BehavioralThing),它是UML模型中的動態(tài)元素,包括交互和狀態(tài)機2種元素。

(3)分組事物(GroupingThing),它是UML模型的組織元素,主要是包(Package),用一個包含名稱的左上角帶有一個小矩形的大矩形表示。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第72頁。UML事物—

結(jié)構(gòu)事物Class(類)Interface(接口)描述了一個類或構(gòu)件的服務(wù)(操作)集。ISpelling

類名屬性操作open()close()move()display()originsizeWindow實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第73頁。Collaboration(協(xié)作)合作完成某個特定任務(wù)的一組類及其關(guān)聯(lián)的集合,用于對Usecase的實現(xiàn)建模。UseCase(用例)表示系統(tǒng)想要實現(xiàn)的行為,不關(guān)心這些行為是怎樣實現(xiàn)的。吃飯吃炒菜用例協(xié)作泛化實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第74頁。ActiveClass(主動類)與一般類相同,但它至少擁有一個進程或線程,故能夠啟動控制活動。Component(構(gòu)件)系統(tǒng)中物理的、可替代的部件。Orderform.java

suspend()flush()EventManager實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第75頁。Node(節(jié)點)系統(tǒng)在運行時存在的物理元素。數(shù)據(jù)庫服務(wù)器應(yīng)用服務(wù)器課程管理成績管理實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第76頁。UML事物—

行為事物Interaction(交互)由在特定環(huán)境中共同完成一定任務(wù)的一組對象之間交換的消息組成。p:Person:CompanyAssign(development)消息有名對象匿名對象實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第77頁。StateMachine(狀態(tài)機)描述了一個對象或一個交互在生存期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。initializingcommandidleKeypressFinishedExit實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第78頁。UML事物—

分組事物package(包)用戶接口包業(yè)務(wù)對象包數(shù)據(jù)庫包應(yīng)用包實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第79頁。UML事物—

注釋事物Note(注釋)依附于一個元素或一組元素之上,對其進行約束或解釋的簡單符號。CashAccountpresentValue()Seepolicy8-5-96.docfordetailsaboutthesealgorithms.實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第80頁。

關(guān)系也是構(gòu)造塊,UML中有5種關(guān)系,利用這些關(guān)系可以設(shè)計出結(jié)構(gòu)良好的模型。

(1)依賴(Dependency)

(2)關(guān)聯(lián)(Association)

(3)泛化(Generalization)

(4)實現(xiàn)(Realization)

第2種構(gòu)造塊:關(guān)系。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第81頁。UMLRelationships(關(guān)系)Dependency(依賴)兩個事物之間的語義關(guān)系,其中一個事物發(fā)生變化會影響另一個事物的語義。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator<<friend>>實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第82頁。Association(關(guān)聯(lián))一種描述一組對象之間連接的結(jié)構(gòu)關(guān)系。聚合是一種特殊類型的關(guān)聯(lián),描述了整體和部分間的結(jié)構(gòu)關(guān)系。Generalization(泛化)一種一般化—特殊化的關(guān)系。employeremployee0..1*實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第83頁。EventConsoleWindowDialogBoxControl依賴泛化關(guān)聯(lián)

Windowopen()close()move()display()handleEvent()實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第84頁。Realization(實現(xiàn))類之間的語義關(guān)系,其中的一個類元指定了由另一個類保證執(zhí)行的契約。兩種情況出現(xiàn)實現(xiàn)關(guān)系:(1)在接口和實現(xiàn)它們的類或構(gòu)件之間;(2)在用例和它們的協(xié)作之間。PlaceOrderOrderManagement用例協(xié)作實現(xiàn)實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第85頁。(1)類圖(ClassDiagram)

(2)對象圖(ObjectDiagram)

(3)用況圖(UseCaseDiagram)

(4)順序圖(SequenceDiagram)

(5)協(xié)作圖(Collaborationdiagram)

(6)狀態(tài)圖(StatechartDiagram)

(7)活動圖(ActivityDiagram)

(8)構(gòu)件圖(ComponentDiagram)

(9)實施圖(DeploymentDiagram)

第3種構(gòu)造塊:圖。圖也是構(gòu)造塊,UML中有9種圖。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第86頁。類屬性操作對象屬性操作接口用例構(gòu)件節(jié)點狀態(tài)機包注釋依賴關(guān)聯(lián)泛化實現(xiàn)聚合復(fù)合

模型中主要的圖形元素實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第87頁。UML模型的圖形UseCaseDiagramsUseCaseDiagrams用例圖ScenarioDiagramsScenarioDiagrams協(xié)作圖StateDiagramsStateDiagrams構(gòu)件圖ComponentDiagramsComponentDiagrams部署圖StateDiagramsStateDiagrams對象圖ScenarioDiagramsScenarioDiagrams狀態(tài)圖UseCaseDiagramsUseCaseDiagrams順序圖StateDiagramsStateDiagrams類圖活動圖模型實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第88頁。1.用例圖(usecasediagram)用例圖展現(xiàn)了一組用例、參與者以及它們間的關(guān)系??梢杂糜美龍D描述系統(tǒng)的靜態(tài)使用情況,它定義了系統(tǒng)的功能需求,但這是從系統(tǒng)的外部觀看系統(tǒng)功能,并不描述系統(tǒng)內(nèi)部對功能的具體實現(xiàn)。在對系統(tǒng)行為組織和建模方面,用例圖是相當(dāng)重要的。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第89頁。查詢商品價格顧客庫存系統(tǒng)售貨員總賬系統(tǒng)查詢商品信息預(yù)售商品網(wǎng)上銷售商品打折銷售商品出售商品查詢商品成分商品查詢售貨管理實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第90頁。說明顧客持所欲購買的商品至收銀臺結(jié)帳,店員刷商品條碼后,根據(jù)數(shù)量及單價計算總金額。商品售出后,商品編碼、單價、總金額存入電腦,數(shù)據(jù)記載到“庫存系統(tǒng)”和“總帳系統(tǒng)”中(含預(yù)售、網(wǎng)絡(luò)購物、打折銷售)。事件流基本事件流刷條碼結(jié)算金額付款扣庫存記入日記賬打印發(fā)票異常事件流

第一異常事件流顧客結(jié)帳后更換商品

第二異常事件流顧客將已售商品退回特殊需求

第一個特殊需求允許退貨,并將退回商品加回庫存

第二個特殊需求記錄顧客的性別,年齡,供后續(xù)統(tǒng)計分析用用例規(guī)格說明:銷售商品實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第91頁。2.類圖(classdiagram)類圖展示了一組類、接口和協(xié)作及它們間的關(guān)系。類圖沒有時間概念,是概念數(shù)據(jù)模型(如E-R圖)的一種延伸。用類圖說明系統(tǒng)的靜態(tài)結(jié)構(gòu)視圖,包含主動類的類圖—專注于系統(tǒng)的靜態(tài)處理視圖。系統(tǒng)可有多個類圖,單個類圖僅表達了系統(tǒng)的一個方面。要在高層給出類的主要職責(zé),在低層給出類的屬性和操作。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第92頁。類圖是從系統(tǒng)構(gòu)成的角度來描述正在開發(fā)的系統(tǒng)。類的表示類的名稱屬性屬性:數(shù)據(jù)類型屬性:數(shù)據(jù)類型=初值操作操作(參數(shù)表):結(jié)果類型實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第93頁。限定關(guān)聯(lián)類1類2限定詞關(guān)聯(lián)名稱角色1角色2聚合、引用和重復(fù)度0..*0..10..*整體類名部分類名2部分類名10..1聚合簡單引用復(fù)合聚合雙方捆綁實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第94頁。關(guān)聯(lián)名類1類2關(guān)聯(lián)類名屬性操作角色1角色2關(guān)聯(lián)類實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第95頁。泛化關(guān)系超類子類1子類2操作抽象類操作實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第96頁。雇員雇員標(biāo)識:char姓名:char職務(wù):char工資:long項目項目標(biāo)識項目名稱參與開始日期結(jié)束日期任務(wù)任務(wù)標(biāo)識任務(wù)名稱任務(wù)費用技能技能標(biāo)識技能名稱團隊團隊標(biāo)識承擔(dān)工作部門部門標(biāo)識部門名稱客戶客戶標(biāo)識客戶名稱客戶地址客戶電話客戶代表0..*0..*10..*1..*10..*1..*1..*110..*11..*0..*1..*實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第97頁。3.對象圖(objectdiagram)對象圖展示了一組對象及它們間的關(guān)系。用對象圖說明類圖中類的對象實例的數(shù)據(jù)結(jié)構(gòu)和靜態(tài)快照,即在某一時刻,一組對象的狀態(tài)及其關(guān)系。對象圖表達了系統(tǒng)的靜態(tài)設(shè)計視圖或靜態(tài)過程視圖,除了現(xiàn)實和原型的方面的因素外,它與類圖作用是相同的。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第98頁。c:公司名稱=“研發(fā)”d2:部門d1:部門名稱=“銷售”d3:部門名稱=“打印機銷售”

:聯(lián)系信息地址=“清華產(chǎn)業(yè)樓411”p:人員姓名=“鄭人杰”雇員標(biāo)識=6037職務(wù)=“銷售副總”經(jīng)理連接link屬性值對象匿名對象實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第99頁。4.包圖(packagediagram)嚴(yán)格地講,包圖只是表明包及其之間的依賴的類圖。包是對模型中涉及的元素分組所得的結(jié)果,是具有特定語義的一個子集,必須保證低耦合、高內(nèi)聚。廣義地講,包可以包含類、接口、構(gòu)件、節(jié)點、協(xié)作、用例等,還可以內(nèi)嵌其他子包。包之間的訪問權(quán)限通過輸出(Export)和導(dǎo)入(Import)設(shè)置,虛箭頭從源包到目標(biāo)包。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第100頁。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第101頁。5.構(gòu)件圖(componentdiagram)構(gòu)件圖展現(xiàn)了一組構(gòu)件之間的組織和依賴,用于對源代碼、可執(zhí)行的發(fā)布、物理數(shù)據(jù)庫等的系統(tǒng)建模。構(gòu)件圖表示系統(tǒng)的靜態(tài)實現(xiàn)視圖。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第102頁。CourseCourseOfferingStudentProfessorCourse.dllPeople.dll課程用戶Register.exeBilling.exe課表系統(tǒng)實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第103頁。6.部署圖(DeploymentDiagram)部署圖展現(xiàn)了對運行時處理節(jié)點以及其中構(gòu)件的配置。每一節(jié)點代表一個計算單元。它描述系統(tǒng)硬件的物理拓撲結(jié)構(gòu)(包括網(wǎng)絡(luò)布局和構(gòu)件在網(wǎng)絡(luò)上的位置),以及在此結(jié)構(gòu)上執(zhí)行的軟件(即運行時軟構(gòu)件在節(jié)點中的分布情況)。用部署圖說明系統(tǒng)結(jié)構(gòu)的靜態(tài)環(huán)境視圖,即說明分布、交付和安裝的物理系統(tǒng)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第104頁。注冊服務(wù)器數(shù)據(jù)庫宿舍客戶機圖書館客戶機主排課客戶機實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第105頁。8.活動圖(ActivityDiagram)活動圖是一種特殊的狀態(tài)圖,描述需要做的活動、執(zhí)行這些活動的順序(多為并行的)以及工作流(完成工作所需要的步驟)。它對于系統(tǒng)的功能建模特別重要,強調(diào)對象間的控制流程。高層活動圖用于表示任務(wù),即用于分析用例,理解涉及多個用例的工作流、多線程及并行,顯示相互聯(lián)系的行為整體,還可用于業(yè)務(wù)過程建模,對系統(tǒng)的功能建模。低層活動圖用于表示類的方法。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第106頁。按訂單供貨接訂單開發(fā)票結(jié)清訂單快速交付正常交付收款起點分叉活動分支合并匯合結(jié)束[緊急訂單][非緊急訂單]變遷實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第107頁。9.狀態(tài)圖(StatechartDiagram)狀態(tài)圖展示了一個特定對象的所有可能狀態(tài)以及由于各種事件的發(fā)生而引起的狀態(tài)間的轉(zhuǎn)移。一個狀態(tài)圖描述了一個狀態(tài)機,用狀態(tài)圖說明系統(tǒng)的動態(tài)視圖。狀態(tài)圖對于接口、類或協(xié)作的行為建模尤為重要,可用它描述用例實例的生存期。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第108頁。project對象的狀態(tài)圖注冊預(yù)售開發(fā)系統(tǒng)分析系統(tǒng)設(shè)計程序編碼軟件測試系統(tǒng)部署單元測試與調(diào)試維護新projectproject完開始結(jié)束實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第109頁。10.交互圖(interactiondiagram)交互圖展現(xiàn)了按一定的目的進行的一種交互,它由在一個上下文中的一組對象及它們之間交互的信息組成。交互圖可用于描述一個用例的行為。順序圖和協(xié)作圖都是交互圖,它們可以相互轉(zhuǎn)換。如果希望查看單個對象跨用例的行為,要使用狀態(tài)圖。如果希望查看跨用例跨線程的行為,要使用活動圖。

實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第110頁。10-1順序圖(SequenceDiagram

)順序圖展現(xiàn)了一組對象和由這組對象收發(fā)的消息,用于按時間順序?qū)刂屏鹘!ο蟊硎鰹樘摯咕€頂端的矩形小框。垂線是對象的生命線,說明對象的生命。生命線之間的箭頭表示消息。消息出現(xiàn)的次序自上而下。消息箭頭可以回到同一條生命線,指明自調(diào)用,即對象發(fā)給自己的消息。用[…]可表示條件,用*[…]表明迭代依據(jù)。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第111頁。移動電話系統(tǒng)的用例圖移動用戶移動網(wǎng)絡(luò)與對方通話下載圖符下載鈴聲管理電話本實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第112頁。移動電話系統(tǒng)的順序圖:移動用戶:移動按鍵:移動顯示:移動手機:移動基站按數(shù)字鍵顯示按鍵號碼按發(fā)送鍵連接基站建立連接連接成功顯示連接成功實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第113頁。10-2協(xié)作圖(CollaborationDiagram)協(xié)作圖展現(xiàn)了一組對象,這組對象之間的連接以及這組對象收發(fā)的消息。它強調(diào)收發(fā)消息的對象的結(jié)構(gòu)組織,按組織結(jié)構(gòu)對控制流建模。協(xié)作圖中的協(xié)作不是參與者與系統(tǒng)之間的交互,而是系統(tǒng)內(nèi)部某一個用例中各個對象之間信息傳遞的方式。消息上所附編號指明執(zhí)行順序。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第114頁。移動電話系統(tǒng)的協(xié)作圖:移動用戶1:按數(shù)字鍵3:按發(fā)送鍵

:移動按鍵2:顯示按鍵號碼

:移動顯示

:移動手機

:移動基站4:連接基站5:建立連接6:連接成功7:顯示連接成功實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第115頁。順序圖與協(xié)作圖的比較順序圖和協(xié)作圖都是表示在某一個用例中一條執(zhí)行路徑上的執(zhí)行情況,表明這時各個對象之間的交互。順序圖強調(diào)順序,易于看出其中出現(xiàn)的時間的順序。協(xié)作圖可以利用布局指明各個對象是如何連接的。對于有多個可供選擇的情況,使用交互圖太不方便,可用CRC卡片代替,描述“類–職責(zé)–協(xié)作”。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第116頁。

為了將UML的構(gòu)造塊有機地組裝在一起形成一個結(jié)構(gòu)良好的模型,UML需要描述下列事物的5種語義規(guī)則。

(1)命名:為事物、關(guān)系和圖命名

(2)范圍:給一個名字以特定含義的語境,即范圍

(3)可見性:怎樣使用或看見名字,即可見性

(4)完整性:事物如何正確、一致地相互聯(lián)系

(5)執(zhí)行:運行或模擬動態(tài)模型的含義是什么,即執(zhí)行2.UML運用構(gòu)造塊的“規(guī)則”實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第117頁。UML的規(guī)則命名(names)為事物、關(guān)系和圖起名。如:“student”、“PersonInfo::student”作用域(scope)把施于類而不是施于實例的操作和屬性說明為類作用域。相當(dāng)于C++靜態(tài)變量。訂單getNumbergetNewNumber類作用域加下劃線者實例作用域?qū)嵱密浖こ?第7章-軟件建模全文共132頁,當(dāng)前為第118頁。可見性(visibility)

對類中任一屬性或操作定義存取權(quán)限。加前綴:+(公用)、-(私用)、#(保護)完整性(integrity)

保持事物之間聯(lián)系的正確性和一致性。單個模型是不充分的,應(yīng)建立互補的連鎖的模型,從整體描述軟件的藍圖。保持模型與現(xiàn)實的一致性。執(zhí)行(execution)

通過運行或模擬動態(tài)模型,才能真正理解和領(lǐng)會程序代碼的含義是什么。實用軟件工程-第7章-軟件建模全文共132頁,當(dāng)前為第119頁。3.UML的“公共機制”UML有4種在整個語言中一致應(yīng)用的機制,使得該語言變得

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論