自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

正確辨析UML類圖的兩種存在形式

開發(fā) 架構(gòu)
你對UML的九種圖形是否了解,本文就向大家簡單介紹一下UML類圖的相關(guān)知識:如何正確認(rèn)識使用UML中的類圖——辨析UML類圖的兩種存在形式。

本文和大家重點(diǎn)討論一下UML類圖的相關(guān)內(nèi)容,通過對一個(gè)“學(xué)生選課系統(tǒng)”示例的簡要分析與設(shè)計(jì),說明UML圖之一類圖的兩種作用及存在形式,以期借此澄清有些朋友可能對類圖存在的誤解與困惑。

正確認(rèn)識使用UML中的類圖——辨析UML類圖的兩種存在形式

前言

在OOA與OOD大行其道的今天,UML在系統(tǒng)分析與設(shè)計(jì)中得到了廣泛的采用。而在UML的9種圖中,類圖是最重要也是使用最普遍的圖之一。但是,在與一些朋友,特別是初學(xué)者的聊天當(dāng)中,我發(fā)現(xiàn)很多朋友對類圖的作用及使用方法存在一定的誤解和困惑。于是我寫下這篇文章,希望本文能在一定程度上幫助這些朋友更好的認(rèn)識和使用類圖。當(dāng)然,由于我對UML的認(rèn)識并不很深刻,所以在文章中有錯(cuò)誤和疏漏之處,懇請大家批評指正。

AvsD

要想正確認(rèn)識與使用UML類圖,我們首先要正確認(rèn)識兩個(gè)概念——“A”和“D”。
A是Analyse的縮寫,即我們所說的“分析”;而D是Design的縮寫,即“設(shè)計(jì)”。一般來說,一個(gè)系統(tǒng)在編碼前,都要經(jīng)過分析與設(shè)計(jì)兩個(gè)步驟。而對這兩個(gè)概念認(rèn)識的模糊不清,正是導(dǎo)致很多朋友無法正確使用類圖的原因。

分析,我對其的解釋是:根據(jù)用戶的需求,做出一系列與業(yè)務(wù)領(lǐng)域相關(guān)而和計(jì)算機(jī)技術(shù)無關(guān)的整理與識別。
很多朋友有個(gè)錯(cuò)誤的認(rèn)識,認(rèn)為軟件開發(fā)工作一定要由懂計(jì)算機(jī)的人完成,不懂計(jì)算機(jī)的人怎么能進(jìn)行軟件開發(fā)呢?當(dāng)然,對于設(shè)計(jì)和編碼等工作,當(dāng)然是這樣,但是唯有“分析”這一工作,可以由完全不懂計(jì)算機(jī)的人來進(jìn)行,甚至從某種程度上說,不懂計(jì)算機(jī)的人更適合做軟件分析師的工作。因?yàn)橄胍逊治鲎龊?,一定要僅與業(yè)務(wù)相關(guān),而拋開具體技術(shù)。一個(gè)滿腦子計(jì)算機(jī)技術(shù)的程序員去做分析時(shí),很容易想到編碼、實(shí)現(xiàn)、平臺、數(shù)據(jù)庫設(shè)計(jì)等具體細(xì)節(jié),這種思維形式恰恰成為做好分析的最大障礙。
此為誤解一:只有懂計(jì)算機(jī)技術(shù)的人才能做系統(tǒng)分析師。我現(xiàn)在所在的研究所(北京航空航天大學(xué)計(jì)算機(jī)學(xué)院軟件工程研究所)曾經(jīng)接過一個(gè)日本項(xiàng)目,當(dāng)時(shí)日方那邊派來一個(gè)系統(tǒng)分析師對計(jì)算機(jī)就完全是外行,而是一個(gè)領(lǐng)域?qū)<?,但是他很好的完成了系統(tǒng)分析的工作。

另外一個(gè)誤解就是UML圖,特別是UML類圖,就是給開發(fā)人員用的。很多人覺得UML是計(jì)算機(jī)業(yè)內(nèi)專業(yè)語言,不懂計(jì)算機(jī)的怎么能用它呢?用了做什么呢?但是很多不懂計(jì)算機(jī)的系統(tǒng)分析師在進(jìn)行分析工作時(shí),也在使用UML圖,而類圖就是其中一種。一般情況下,分析師在進(jìn)行分析時(shí),確實(shí)會繪制一套類圖。但是,它所畫的類圖不管是從視角還是作用,與設(shè)計(jì)師所做的類圖是不同的,具體將在下面介紹。此為誤解二:只有計(jì)算機(jī)人士才使用UML圖。

分析說完了,下面說設(shè)計(jì)。與分析不同,我對設(shè)計(jì)的解釋是:根據(jù)分析材料與技術(shù)平臺,確定軟件系統(tǒng)的架構(gòu)結(jié)構(gòu)、編碼方式及一切與具體技術(shù)有關(guān)的宏觀問題。
這里可以看到,設(shè)計(jì)與分析不同,它必須由計(jì)算機(jī)方面的人來完成,因?yàn)樗途唧w技術(shù)是息息相關(guān)的。而且,設(shè)計(jì)師在進(jìn)行設(shè)計(jì)時(shí),也會繪制一套類圖。
到這里,我們明確了,原來軟件在分析與設(shè)計(jì)兩個(gè)階段各自會繪制一套類圖,而且是由分析師和設(shè)計(jì)師兩個(gè)不同的角色繪制的。那么這兩套類圖有什么異同呢?下面將解釋這個(gè)問題。

領(lǐng)域UML類圖vs實(shí)現(xiàn)UML類圖

上文提到,在軟件分析與設(shè)計(jì)過程中,會由兩種角色產(chǎn)生兩套類圖。一般情況下,分析師繪制的類圖叫做“領(lǐng)域類圖”,而設(shè)計(jì)師繪制的類圖叫做“實(shí)現(xiàn)類圖”。這里要聲明,這兩個(gè)名詞是我的習(xí)慣性叫法,并不是大家都認(rèn)同的通用叫法。

下面,我對這兩種UML類圖給出我的定義:

領(lǐng)域類圖:產(chǎn)生于分析階段,由系統(tǒng)分析師繪制,主要作用是描述業(yè)務(wù)實(shí)體的靜態(tài)結(jié)構(gòu),包括業(yè)務(wù)實(shí)體、各個(gè)業(yè)務(wù)實(shí)體所具有的業(yè)務(wù)屬性及業(yè)務(wù)操作、業(yè)務(wù)實(shí)體之間具有的關(guān)系。
雖然這個(gè)類圖也叫“類圖”,但是說實(shí)話,它和編程中的“類”實(shí)在是沒啥關(guān)系,因?yàn)樽詈蟮南到y(tǒng)中可能根本沒有類和它們對應(yīng),而且很多最后系統(tǒng)中的類如控制類和界面類這套類圖中也沒有。也就是說這套圖和具體技術(shù)無關(guān),也不是畫給程序員看的,它只是表達(dá)業(yè)務(wù)領(lǐng)域中的一個(gè)靜態(tài)結(jié)構(gòu)。下面給個(gè)例子:


這是一個(gè)選課系統(tǒng)的簡單領(lǐng)域分析UML類圖??梢钥吹?,主要實(shí)體有教師、學(xué)生、課程和開課安排。每個(gè)實(shí)體標(biāo)注了其在業(yè)務(wù)上具有的屬性和方法。而且圖中還標(biāo)明了實(shí)體間的關(guān)系。
但是,最終系統(tǒng)中可能沒有一個(gè)學(xué)生類和其對應(yīng)。因?yàn)樽罱K系統(tǒng)中有哪些類、各個(gè)類有什么屬性、方法依賴于所選擇的平臺和架構(gòu)。例如,如果使用了Struts2,則會存在很多Action類,而使用了ASP.NETMVC,則會有很多Controller類等,所以,領(lǐng)域類圖只于業(yè)務(wù)有關(guān),和具體實(shí)現(xiàn)及編碼等計(jì)算機(jī)技術(shù)無關(guān)。

下面該說說實(shí)現(xiàn)UML類圖了:

實(shí)現(xiàn)類圖:產(chǎn)生于設(shè)計(jì)階段,由系統(tǒng)設(shè)計(jì)師繪制,其作用是描述系統(tǒng)的架構(gòu)結(jié)構(gòu)、指導(dǎo)程序員編碼。它包括系統(tǒng)中所有有必要指明的實(shí)體類、控制類、界面類及與具體平臺有關(guān)的所有技術(shù)性信息。
就像上面的領(lǐng)域UML類圖,如果你把它交給程序員編碼,我想程序員會瘋掉,因?yàn)樗鼪]有提供任何編碼的依據(jù)。假如我們使用的是.NET平臺分層架構(gòu),并使用ASP.NETMVC,則設(shè)計(jì)師應(yīng)該在實(shí)現(xiàn)類圖中繪制出所有的實(shí)體類、數(shù)據(jù)訪問類、業(yè)務(wù)邏輯類和界面類,界面類又分為視圖類、控制器類等等,還要表示出IoC和Aop等信息,并明確指出各個(gè)類的屬性、方法,不能有遺漏,因?yàn)樽罱K程序員實(shí)現(xiàn)程序的依據(jù)就是實(shí)現(xiàn)類圖。

總結(jié)

最后,我們總結(jié)一下本文的要點(diǎn):
1.軟件分析與設(shè)計(jì)是編碼前的兩個(gè)階段,其中分析僅與業(yè)務(wù)有關(guān),而與技術(shù)無關(guān)。設(shè)計(jì)以分析為基礎(chǔ),主要與具體技術(shù)有關(guān)。
2.分析階段由分析師繪制領(lǐng)域類圖,設(shè)計(jì)階段由設(shè)計(jì)師繪制實(shí)現(xiàn)UML類圖。
3.領(lǐng)域類圖表示系統(tǒng)的靜態(tài)領(lǐng)域結(jié)構(gòu),其中的類不與最終程序中的類對應(yīng);設(shè)計(jì)類圖表示系統(tǒng)的技術(shù)架構(gòu),是程序員的編碼依據(jù),其中的類與系統(tǒng)中的類對應(yīng)。
4.領(lǐng)域類圖中類的屬性與操作僅關(guān)注與業(yè)務(wù)相關(guān)的部分,實(shí)現(xiàn)類圖中的屬性與操作要包括最終需要實(shí)現(xiàn)的全部方法與操作。

【編輯推薦】

  1. 設(shè)計(jì)模式之UML類圖
  2. UML類圖中四大關(guān)系詳解
  3. 繪制UML圖時(shí)應(yīng)避免的六大問題
  4. 術(shù)語匯編 解析UML類圖建模
  5. 技術(shù)分享 UML類圖轉(zhuǎn)化成XML文檔模式方法揭秘

 

責(zé)任編輯:佚名 來源: kuqin.com
相關(guān)推薦

2010-10-11 10:31:51

MySQL分區(qū)

2010-09-09 20:26:34

2010-06-29 09:08:15

UML類圖關(guān)系

2011-03-02 10:29:43

SBS 2011

2010-07-28 09:29:36

Flex DataGr

2010-06-30 14:37:20

UML類圖

2010-06-12 18:12:34

UML類圖關(guān)系

2010-11-12 11:48:15

2010-07-12 10:25:44

UML類圖

2025-01-26 00:00:25

限流組件HTTP

2010-06-11 17:18:26

UML精粹

2010-11-24 08:54:33

2010-07-12 09:37:26

UML建模

2020-09-23 09:24:01

堆棧開發(fā)實(shí)現(xiàn)

2010-06-29 11:00:25

UML類圖實(shí)例

2010-06-12 18:30:57

UML類圖關(guān)系

2010-07-02 10:25:50

UML模型圖

2009-09-14 19:25:09

Ruby form

2013-05-27 14:31:34

Hadoop 2.0

2010-06-18 14:56:15

UML綜合實(shí)例
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號