日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

《UML用户指南第二版》再次温读笔记(一)(downmoon)

發(fā)布時(shí)間:2025/1/21 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《UML用户指南第二版》再次温读笔记(一)(downmoon) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  前言:最近,花點(diǎn)時(shí)間重讀(也不知道是第幾遍了)《UML用戶指南第二版》這本書,感覺(jué)雖然對(duì)WEB程序開(kāi)發(fā)而言,UML的應(yīng)用是一個(gè)極大的挑戰(zhàn),然而,其中蘊(yùn)含的基本原理和指導(dǎo)性卻是歷久彌新,耐人回味。

  在此,特地摘錄了部分讓邀月留下印象的章節(jié),以作備忘。
  首先,先重復(fù)幾個(gè)老掉牙的觀點(diǎn)。

?

?建模的重要性?
   如果你想搭一個(gè)狗窩,你備好木料、釘子和一些基本工具(如錘子、鋸和卷尺)?,就可以開(kāi)始工作。從制定一點(diǎn)初步的計(jì)劃到完成一個(gè)滿足適當(dāng)功能的狗窩,你 可能不用別人幫助,在幾個(gè)小時(shí)內(nèi)就能夠?qū)崿F(xiàn)。只要狗窩夠大且不太漏水,你的狗就可以安居。如果不制定一個(gè)計(jì)劃你總是可以返工,或是讓你的狗受些委屈。
  如果你想為你的家庭建造一所房子,你備好木料、釘子和一些基本工具,也能開(kāi)始工作。但這將需要較多的時(shí)間,并且你家庭對(duì)于房子的需求肯定比狗對(duì)于狗窩的需求 要多。在這種情況下,除非你曾經(jīng)多次建造過(guò)房子,否則就需要事先制定出一些詳細(xì)的計(jì)劃,再開(kāi)始動(dòng)工,你才能夠成功。至少你應(yīng)該繪制一些表明房子是什么樣子 的簡(jiǎn)圖。如果你想建造一所能滿足你家庭的需要并符合當(dāng)?shù)亟ㄖ?guī)范的合格房屋,你就需要畫一些建筑圖,使你能想清楚房間的使用目的以及照明、取暖和水管裝置 等實(shí)際細(xì)節(jié)問(wèn)題。作出這些計(jì)劃后,你就能對(duì)這項(xiàng)工作所需的時(shí)間和物料作出合理的估計(jì)。你自己也可能建造出這樣的房屋,但若有其他人協(xié)作(可能要將工程中的 許多關(guān)鍵部分轉(zhuǎn)包出去或購(gòu)買預(yù)制的材料)?,效率就會(huì)高得多。只要你按計(jì)劃行事,不超出時(shí)間和財(cái)務(wù)的預(yù)算,你的新房就可能非常令人滿意。如果不制定計(jì)劃, 新房就不會(huì)完全令人滿意。因此,最好在早期就制定計(jì)劃,并謹(jǐn)慎地處理好所發(fā)生的變化。
  如果你要建造一座高層辦公大廈,若還是先備好木料、釘子 和一些基本工具就開(kāi)始工作,那將是非常愚蠢的。因?yàn)槟闼褂玫馁Y金可能是別人的,他們會(huì)對(duì)建筑物的規(guī)模、形狀和風(fēng)格作出要求。同時(shí),他們經(jīng)常會(huì)改變想法, 甚至是在工程已經(jīng)開(kāi)工之后。由于失敗的代價(jià)太高了,因此你必須要做大量的計(jì)劃。負(fù)責(zé)建筑物設(shè)計(jì)和施工的組織機(jī)構(gòu)是龐大的,你只是其中的一個(gè)
組成部 分。這個(gè)組織將需要各種各樣的設(shè)計(jì)圖和模型,以供各方相互溝通。只要你得到了合適的人員和工具,并對(duì)把建筑概念轉(zhuǎn)換為實(shí)際建筑的過(guò)程進(jìn)行積極的管理,你將 會(huì)建成這座滿足使用要求的大廈。如果你想繼續(xù)從事建筑工作,那么你將一定要在使用要求和實(shí)際的建筑技術(shù)之間做好平衡,并且處理好組員們的休息問(wèn)題,既不能 把他們置于風(fēng)險(xiǎn)之中,也不能驅(qū)使他們
過(guò)份辛苦地工作以至于精疲力盡。

  
奇怪的是,很多軟件開(kāi)發(fā)組織開(kāi)始想建造一座大廈式的軟件,而在動(dòng)手處理時(shí)卻好像他們正 在倉(cāng)促地造一個(gè)狗窩。有時(shí)你是幸運(yùn)的。如果你在恰當(dāng)?shù)臅r(shí)間有足夠的合適人員,并且其他的事情都很如意,你可能(僅是可能)使你的團(tuán)隊(duì)推出一個(gè)令用戶眼花繚 亂的軟件產(chǎn)品。然而,一般的情況是:你不能得到所有的合適人員(這樣的人員經(jīng)常供不應(yīng)求)?,時(shí)間并不總是恰當(dāng)?shù)?#xff08;昨天可能更好)?,其他的事情也并不盡 如人意(常常由不得自己)?。在因特網(wǎng)時(shí)代,對(duì)軟件開(kāi)發(fā)的要求正在日益增加,而開(kāi)發(fā)團(tuán)隊(duì)卻還是經(jīng)常單純地依靠他們唯一真正知道如何做好的一件事—產(chǎn)生程序 代碼。英雄式的編程努力成為這一行業(yè)的傳奇,人們似乎經(jīng)常認(rèn)為:更努力地工作是面對(duì)開(kāi)發(fā)中出現(xiàn)的各種危機(jī)的正常反映。然而這未必能產(chǎn)生正確的程序代碼,而 且一些項(xiàng)目是非常巨大的,無(wú)論怎樣延長(zhǎng)工作時(shí)間,也不足以完成所需的工作。
  如果你真正想建造一個(gè)相當(dāng)于房子或大廈類的軟件系統(tǒng),問(wèn)題可不是僅僅要寫許多軟件。事實(shí)上,關(guān)鍵是要編出正確的軟件,并考慮怎樣少寫軟件。要生產(chǎn)合格的軟件 就要有一套關(guān)于體系結(jié)構(gòu)、過(guò)程和工具的規(guī)范。即使如此,很多項(xiàng)目開(kāi)始看起來(lái)像狗窩,但隨后發(fā)展得像大廈,原因很簡(jiǎn)單,它們是自己成就的犧牲品。如果對(duì)體系結(jié)構(gòu)、過(guò)程或工具的規(guī)范沒(méi)有作任何考慮,總有一天狗窩會(huì)膨脹成大廈,并會(huì)由于其自身的重量而倒塌。狗窩的倒塌可能會(huì)使你的狗惱怒,同理不成功的大廈將會(huì)對(duì)大廈的擁有者造成嚴(yán)重的影響。不成功的軟件項(xiàng)目失敗的原 因各不相同,而所有成功的項(xiàng)目的成功原因在很多方面都是相似的。一個(gè)成功的軟件組織有很多成功的因素,其中共同的一點(diǎn)就是對(duì)建模的采用。
  建模是一項(xiàng)經(jīng)過(guò)檢驗(yàn)并被廣為接受的工程技術(shù)。我們建立的房屋和大廈的建筑模型能幫助用戶得到實(shí)際建筑物的印像。為了分析大風(fēng)或地震對(duì)建筑物造成的影響,我們甚至可以建立數(shù)學(xué)模型。
建 模不只是用于建筑業(yè)。如果不首先構(gòu)造模型(從計(jì)算機(jī)模型到物理風(fēng)洞模型以及與實(shí)物大小一樣的原型)?,就裝配新型的飛機(jī)或汽車,那簡(jiǎn)直是難以想像的。為了 更好地了解系統(tǒng)并與他人交流思想,開(kāi)發(fā)新型的電氣設(shè)備(從微處理器到電話交換系統(tǒng))都需要一定程度的建模。在電影業(yè)里,劇本是產(chǎn)品的核心,這也是建模的一 種形式。在社會(huì)學(xué)、經(jīng)濟(jì)學(xué)和商業(yè)管理領(lǐng)域中,為了證實(shí)理論或用最小限度的風(fēng)險(xiǎn)和代價(jià)實(shí)驗(yàn)新的理論,我們也要建模。
那么,模型是什么?簡(jiǎn)單地說(shuō),模型是對(duì)現(xiàn)實(shí)的簡(jiǎn)化。
   模型提供了系統(tǒng)的藍(lán)圖。模型既可以包括詳細(xì)的計(jì)劃,也可以包括從很高的層次考慮系統(tǒng)的總體計(jì)劃。一個(gè)好的模型包括那些有廣泛影響的主要元素,而忽略那些 與給定的抽象水平不相關(guān)的次要元素。每個(gè)系統(tǒng)都可以從不同的方面用不同的模型來(lái)描述,因而每個(gè)模型都是一個(gè)在語(yǔ)義上閉合的系統(tǒng)抽象。模型可以是結(jié)構(gòu)性的, 強(qiáng)調(diào)系統(tǒng)的組織;它也可以是行為性的,強(qiáng)調(diào)系統(tǒng)的動(dòng)態(tài)方面。
  我們?yōu)槭裁匆?#xff1f;一個(gè)基本理由是:我們建模是為了能夠更好地理解我們正在開(kāi)發(fā)的系統(tǒng)。
  通過(guò)建模,要達(dá)到四個(gè)目的:
1)模型幫助我們按照實(shí)際情況或按照我們所需要的樣式對(duì)系統(tǒng)進(jìn)行可視化。
2)模型允許我們?cè)敿?xì)說(shuō)明系統(tǒng)的結(jié)構(gòu)或行為。
3)模型給出了一個(gè)指導(dǎo)我們構(gòu)造系統(tǒng)的模板。
4)模型對(duì)我們作出的決策進(jìn)行文檔化。
【后面討論U?M?L如何完成這四項(xiàng)事情。?】
  建模并不只是針對(duì)大的系統(tǒng)。甚至像狗窩那樣的軟件也能從一些建模中受益。然而,可以明確地講,系統(tǒng)越大、越復(fù)雜,建模的重要性就越大,一個(gè)很簡(jiǎn)單的原因是:因?yàn)槲覀儾荒芡暾乩斫庖粋€(gè)復(fù)雜的系統(tǒng),所以我們要對(duì)它建模。
  人對(duì)復(fù)雜問(wèn)題的理解能力是有限的。通過(guò)建模,縮小所研究問(wèn)題的范圍,一次只著重研究它的一個(gè)方面。這就是Edsger?Dijkstra幾年前講的“各個(gè)擊 破”的基本方法,即先把一個(gè)要解決的難題劃分成一系列小問(wèn)題,解決了這些小問(wèn)題也就解決了這個(gè)難題。
  此外,通過(guò)建模可以增強(qiáng)人的智力。一個(gè)適當(dāng)選擇的模型 可以使建模人員在較高的抽象層次上工作。
  任何情況下都應(yīng)該建模的說(shuō)法也未必盡然。事實(shí)上,一些研究指出:大多數(shù)軟件組織沒(méi)有做正規(guī)的建模,即使做了也很少。按項(xiàng)目的復(fù)雜性劃分一下建模的使用情況,你還會(huì)發(fā)現(xiàn):項(xiàng)目越簡(jiǎn)單,采用正規(guī)建模的就越少。這 里強(qiáng)調(diào)的是“正規(guī)化”這個(gè)詞。雖然很不正規(guī),但實(shí)際上,開(kāi)發(fā)者甚至對(duì)一些非常簡(jiǎn)單的項(xiàng)目也要做一些建模工作。開(kāi)發(fā)者可能在一塊黑板上或一小片紙上勾畫出他 的想法,以對(duì)部分系統(tǒng)進(jìn)行可視化表示,或者開(kāi)發(fā)組可能使用C?R?C卡片描述一個(gè)劇本或機(jī)械設(shè)計(jì)。使用任何一種這樣的模型都沒(méi)有什么錯(cuò)。如果它能行得通, 就有理由使用它。然而,這些非正規(guī)的模型經(jīng)常是太特別了,它沒(méi)有提供一種容易讓他人理解的共同語(yǔ)言。建筑業(yè)、電機(jī)工程業(yè)和數(shù)學(xué)建模都有通用的建模語(yǔ)言,在 軟件開(kāi)發(fā)中使用一種共同的建模語(yǔ)言進(jìn)行軟件建模也能使開(kāi)發(fā)組織獲益匪淺。
   每個(gè)項(xiàng)目都能從一些建模中受益。即使在可隨意使用軟件的領(lǐng)域里,由于可視化編程語(yǔ)言的效率,有時(shí)扔掉不適合的軟件是更有效的,建模能幫助開(kāi)發(fā)組更好地對(duì) 系統(tǒng)計(jì)劃進(jìn)行可視化,這有助于他們正確地實(shí)施工作,使開(kāi)發(fā)工作進(jìn)展得更快。如果根本不建模,項(xiàng)目越復(fù)雜,就越有可能失敗或做錯(cuò)事情。有一個(gè)自然趨勢(shì):隨著 時(shí)間的推移,所有引人關(guān)注的實(shí)用系統(tǒng)都變得越來(lái)越復(fù)雜。雖然你今天可能認(rèn)為不需要建模,但隨著你的系統(tǒng)的演化,你會(huì)對(duì)這個(gè)決定感到后悔,但那時(shí)為時(shí)已晚。

????? 再來(lái)溫習(xí)一下,建模原理
  各種工程學(xué)科都有其豐富的建模使用歷史。這些經(jīng)驗(yàn)形成了建模的四項(xiàng)基本原理,分別敘述如下。
  第一,選擇要?jiǎng)?chuàng)建什么模型對(duì)如何動(dòng)手解決問(wèn)題和如何形成解決方案有著意義深遠(yuǎn)的影響。
換句話說(shuō),就是要好好地選擇模型。正確的模型將清楚地闡明難以對(duì)付的開(kāi)發(fā)問(wèn)題,提供不能輕易地從別處獲得的洞察力;錯(cuò)誤的模型將誤導(dǎo)你,使你把精力花在不相關(guān)的問(wèn)題上。對(duì)于軟件而言,你所選擇的模型將在很大程度上影響你對(duì)世界的看法。如果你以數(shù)據(jù)庫(kù)開(kāi)發(fā)者的觀點(diǎn)建造一個(gè)系統(tǒng),你將可能注意實(shí)體 -關(guān)系模型,該模型把行為放入觸發(fā)器和存儲(chǔ)過(guò)程中如果你以結(jié)構(gòu)化開(kāi)發(fā)者的觀點(diǎn)建造一個(gè)系統(tǒng),你將可能得到以算法為中心的模型,即從處理到處理的數(shù)據(jù)流。如果你以面向?qū)ο箝_(kāi)發(fā)者的觀點(diǎn)建造一個(gè)系統(tǒng),你將可能得到這樣一個(gè)系統(tǒng),它的體系結(jié)構(gòu)以眾多的類及交互模式(描述了類間的協(xié)同工作)為中心。對(duì)于一個(gè)給定的應(yīng)用系統(tǒng)和開(kāi)發(fā)氛圍使用上述的任何一種方法都可能是正確的。經(jīng)驗(yàn)表明,在需求易變的系統(tǒng)中面向?qū)ο蟮姆椒ū憩F(xiàn)得更為出眾,甚至對(duì)使用大型數(shù)據(jù)庫(kù)或計(jì)算單元的系統(tǒng)也是如此。盡管事實(shí)如此,但要強(qiáng)調(diào)一點(diǎn),不同的方法將導(dǎo)致不同種類的系統(tǒng),并且代價(jià)和受益也是不同的。
  第二,每一種模型可以在不同的精度級(jí)別上表示。
 如果你正在建造一座大廈,有時(shí)你需要從宏觀上讓投資者看到大廈的樣子,感覺(jué)到大廈的總體效果。而有時(shí)你又需要認(rèn)真考慮細(xì)節(jié)問(wèn)題,例如,對(duì)復(fù)雜棘手的管道的鋪設(shè),或?qū)ι僖?jiàn)的結(jié)構(gòu)件的安置等。對(duì)于軟件模型也是如此。有時(shí)一個(gè)快速簡(jiǎn)潔且是可執(zhí)行的用戶接口模型正是你所需要的,而有時(shí)你必須耐著性子對(duì)付比特,例如,描述跨系統(tǒng)接口或解決網(wǎng)絡(luò)瓶頸問(wèn)題就是如此。在任何情況下,最好的模型應(yīng)該是這樣的:它可以讓你根據(jù)觀察的角色以及觀察的原因選擇它的詳細(xì)程度。分析人員或最終用戶主要考慮“做什么”的問(wèn)題;開(kāi)發(fā)人員主要考慮“怎樣做”的問(wèn)題。這兩類人員都要在不同的時(shí)間以不同的詳細(xì)程度對(duì)系統(tǒng)進(jìn)行可視化。
  第三,最好的模型是與現(xiàn)實(shí)相聯(lián)系的。
  如果一所建筑的物理模型不能以與真實(shí)的建筑相同的方式作出反映,則它的價(jià)值是很有限的。一架飛機(jī)的數(shù)學(xué)模型,如果只是假定了理想條件和完美制造,可能會(huì)掩蓋一些潛在的、致命的現(xiàn)實(shí)特征。最好是有一個(gè)能夠清晰地聯(lián)系實(shí)際的模型,而當(dāng)聯(lián)系很薄弱時(shí)能夠精確地知道這些模型怎樣與現(xiàn)實(shí)相脫離。所有的模型都對(duì)現(xiàn)實(shí)進(jìn)行了簡(jiǎn)化,但有一點(diǎn)要記住,不能簡(jiǎn)化掉任何重要的細(xì)節(jié)。對(duì)軟件領(lǐng)域結(jié)構(gòu)化分析的唯一致命弱點(diǎn)是在分析模型和系統(tǒng)設(shè)計(jì)模型之間沒(méi)有基本的聯(lián)系。隨著時(shí)間的推移,這個(gè)不可填充的裂縫會(huì)使系統(tǒng)構(gòu)思階段和實(shí)施階段出現(xiàn)不一致。在面向?qū)ο蟮南到y(tǒng)中,可以把各個(gè)幾乎獨(dú)立的系統(tǒng)視圖連結(jié)成一個(gè)完整的語(yǔ)義整體。
  第四,單個(gè)模型是不充分的。對(duì)每個(gè)重要的系統(tǒng)最好用一組幾乎獨(dú)立的模型去處理。
  如果你正在建造一所建筑物,你會(huì)發(fā)現(xiàn)沒(méi)有任何一套單項(xiàng)設(shè)計(jì)圖能夠描述該建筑的所有細(xì)節(jié)。至少你需要基礎(chǔ)計(jì)劃、電梯計(jì)劃、電氣計(jì)劃、供熱計(jì)劃和水管裝置計(jì)劃。在這里的重要短語(yǔ)是“幾乎獨(dú)立的” 。在這個(gè)語(yǔ)境中,它意味著各種模型能夠被分別進(jìn)行研究和構(gòu)造,但它們?nèi)匀皇窍嗷ヂ?lián)系的。如同搞建筑一樣,你能夠單獨(dú)地研究電氣計(jì)劃,但你也能看到它與之對(duì)照的基礎(chǔ)計(jì)劃,甚至它與水管裝置計(jì)劃中的管子排布的相互影響。
  面向?qū)ο蟮能浖到y(tǒng)也如此。為了理解系統(tǒng)的體系結(jié)構(gòu),你需要幾個(gè)互補(bǔ)和連鎖的視圖:用況視圖(揭示系統(tǒng)的需求) 、設(shè)計(jì)視圖(捕獲問(wèn)題空間和解空間里的詞匯) 、進(jìn)程視圖(對(duì)系統(tǒng)的進(jìn)程和線程的分布建模) 、實(shí)現(xiàn)視圖(描述系統(tǒng)的物理實(shí)現(xiàn))和實(shí)施視圖(著重于系統(tǒng)的工程方面的組織) 。每一種視圖都可能有結(jié)構(gòu)方面和行為方面。這些視圖一起從整體上描繪了軟件藍(lán)圖。
  根據(jù)系統(tǒng)的性質(zhì),一些模型可能比另一些模型要重要。例如,對(duì)于數(shù)據(jù)密集型系統(tǒng),表達(dá)靜態(tài)設(shè)計(jì)視圖的模型將占主導(dǎo)地位。對(duì)于圖形用戶接口密集型系統(tǒng),靜態(tài)和動(dòng)態(tài)用況視圖就顯得相當(dāng)重要。在實(shí)時(shí)系統(tǒng)中,動(dòng)態(tài)進(jìn)程視圖尤為重要。在分布式系統(tǒng)中,例如Web密集型的應(yīng)用,實(shí)現(xiàn)模型和實(shí)施模型是最重要的。

  當(dāng)然, 我們要了解的最重要的一點(diǎn)是“面向?qū)ο蟮慕?/span>” 。
  對(duì)于軟件,有幾種建模的方法。最普通的兩種方法是從算法的角度建模和從面向?qū)ο蟮慕嵌冉!?br />傳統(tǒng)的軟件開(kāi)發(fā)是從算法的角度進(jìn)行建模,所有的軟件都用過(guò)程或函數(shù)作為其主要構(gòu)造塊。現(xiàn)代的軟件開(kāi)發(fā)采用面向?qū)ο蟮慕嵌冗M(jìn)行建模,所有軟件系統(tǒng)都用對(duì)象或類作為其主要構(gòu)造塊。簡(jiǎn)單地講,通常要從問(wèn)題空間或解空間的詞匯中找出對(duì)象;類是對(duì)具有共同性質(zhì)的一組對(duì)象的描述。每一個(gè)對(duì)象都有標(biāo)識(shí)(你能夠?qū)λ?#xff0c;以區(qū)別于其他對(duì)象) 、狀態(tài)(通常有一些數(shù)據(jù)與它相聯(lián)系)和行為(使你能對(duì)該對(duì)象做某些事,它也能為其他對(duì)象做某些事) 。
  例如,可考慮把一個(gè)簡(jiǎn)單的計(jì)賬系統(tǒng)的體系結(jié)構(gòu)分成三層:用戶接口層、中間件層和數(shù)據(jù)庫(kù)層。在用戶層,你將找出具體的對(duì)象,如按鈕、菜單和對(duì)話框。在數(shù)據(jù)庫(kù)層,你將找出具體的對(duì)象,如從問(wèn)題域中找出描述實(shí)體的表,它包含顧客、產(chǎn)品和訂單項(xiàng)。在中間件層,你將找出諸如交易、商業(yè)規(guī)則等對(duì)象,以及更高層次上的問(wèn)題實(shí)體,如顧客、產(chǎn)品和訂單。
  可以肯定地說(shuō),面向?qū)ο蠓椒ㄊ擒浖_(kāi)發(fā)方法的主流部分,其原因很簡(jiǎn)單,因?yàn)槭聦?shí)已經(jīng)證明,它適合于在各種問(wèn)題域中建造各種規(guī)模程度和復(fù)雜度的系統(tǒng)。此外,當(dāng)前的大多數(shù)程序語(yǔ)言、操作系統(tǒng)和工具在一定的方式上都是面向?qū)ο蟮?#xff0c;并給出更多按對(duì)象來(lái)觀察世界的理由面向?qū)ο蟮拈_(kāi)發(fā)為使用構(gòu)件技術(shù)(如Java Beans或 C O M +)裝配系統(tǒng)提供了概念基礎(chǔ)。
  選擇按面向?qū)ο蟮姆绞接^察世界,會(huì)產(chǎn)生一系列的問(wèn)題:什么是優(yōu)秀的面向?qū)ο蟮捏w系結(jié)構(gòu)?項(xiàng)目會(huì)創(chuàng)造出什么樣的制品?誰(shuí)創(chuàng)造它們?怎樣度量它們?
  對(duì)面向?qū)ο笙到y(tǒng)進(jìn)行可視化、詳述、構(gòu)造和文檔化正是統(tǒng)一建模語(yǔ)言( U M L)的目的。

  明天繼續(xù)讀,呵呵

 

總結(jié)

以上是生活随笔為你收集整理的《UML用户指南第二版》再次温读笔记(一)(downmoon)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。