UML分析、建模與設(shè)計(jì) 來(lái)自現(xiàn)實(shí)世界中的概念的抽象描述方法(摘取自《UML面向?qū)ο蠓治?、建模與設(shè)計(jì)(第2版)》)
創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供臥龍網(wǎng)站建設(shè)、臥龍做網(wǎng)站、臥龍網(wǎng)站設(shè)計(jì)、臥龍網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、臥龍企業(yè)網(wǎng)站模板建站服務(wù),十余年臥龍做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
就我對(duì)UML分析與建模技術(shù)的認(rèn)知,最早可追溯至2019年時(shí)的學(xué)習(xí)。也是在正式開(kāi)發(fā)項(xiàng)目前,最后學(xué)習(xí)的一門(mén)設(shè)計(jì)類(lèi)知識(shí),我認(rèn)為這是軟件開(kāi)發(fā)者描述業(yè)務(wù)邏輯的最佳方式。
寫(xiě)這篇博客,我是希望在未來(lái),我的同事、合作者或者是交流人員,能夠擁有一定的建模習(xí)慣?;蛘咴诨ハ嚓P(guān)注之后,能夠知道我的編程習(xí)慣是怎樣的,能夠擁有更好的默契和愉快的合作。
(代碼注釋?zhuān)?/p>
在項(xiàng)目編碼過(guò)程中,是必不可缺的一個(gè)環(huán)節(jié),也是工作組中合作交流的關(guān)鍵。在中大型項(xiàng)目中,如果個(gè)人的代碼、算法、業(yè)務(wù)處理能力一般,但是注釋完善易懂的話,去請(qǐng)教大佬,還是會(huì)得到善意的幫助。就算在開(kāi)發(fā)的過(guò)程中,遇到了bug,也能快速定位問(wèn)題出現(xiàn)的位置。
但是大篇大論的語(yǔ)言表達(dá)總是蒼白無(wú)力,一個(gè)復(fù)雜的算法或者業(yè)務(wù)邏輯,是很難使用語(yǔ)言(漢語(yǔ)、英語(yǔ)等)去表達(dá)的。就算表達(dá)出來(lái)了,理解這個(gè)邏輯也需要花費(fèi)一定時(shí)間。
我舉兩個(gè)例子。
(第一個(gè))甲和乙是室友,甲回到寢室,突然告訴乙:我丟,今天在路上遇到了一個(gè)腿長(zhǎng)、漂亮(帥氣)的女孩(男孩)。這么說(shuō)乙能夠理解,無(wú)非就是表達(dá)一個(gè)身材好、吸人眼球的女孩(男孩)。可以自動(dòng)將思維帶入短視頻里的某一個(gè)up主或者正能量。
/ *
* 實(shí)現(xiàn)數(shù)據(jù)按某個(gè)要求排列,并自動(dòng)將用戶(hù)愛(ài)好優(yōu)先排列在最上層。(優(yōu)先級(jí):用戶(hù)愛(ài)好>某個(gè)要求)
* @參數(shù)a (什么意思,什么作用,有沒(méi)有關(guān)鍵作用)
...
* @developer [開(kāi)發(fā)者]
* @see [相關(guān)類(lèi)/方法]
* @since [產(chǎn)品/模塊版本]
* @deprecated
*/
public ...
(第二個(gè))甲、乙、丙是室友,甲和乙回到寢室,甲對(duì)丙說(shuō):今天我們兩在商業(yè)街看到一個(gè)小姐姐,身材目測(cè)無(wú)限接近于黃金比例(0.618)、微胖、事業(yè)線驚人。可惜穿搭上有所欠妥,沒(méi)有完全展示出她的優(yōu)點(diǎn),但氣質(zhì)彌補(bǔ)了這一問(wèn)題(然后又描寫(xiě)氣質(zhì))。這樣表達(dá)也確實(shí)詳細(xì),但是關(guān)注點(diǎn)太多,腦海生成出一個(gè)這樣的人,就比較緩慢。這時(shí)乙拿出手機(jī)將拍到的照片給丙看,這一切就明朗了(現(xiàn)實(shí)生活中可不能這么來(lái),乙的行為是錯(cuò)誤的,應(yīng)該大膽上去加微信,大膽訪問(wèn)空間),而個(gè)照片可以看做是UML分析、建模與設(shè)計(jì)。
/ *
* 調(diào)用了(方法1)(方法2)能夠?qū)崿F(xiàn)對(duì)攝像機(jī)內(nèi)頭像的實(shí)時(shí)捕獲,并同步生成什么樣的人臉數(shù)據(jù),這個(gè)數(shù)據(jù)要進(jìn)行什么樣的操作和導(dǎo)出,才能完成對(duì)比
* @參數(shù)a (什么意思,什么作用,有沒(méi)有關(guān)鍵作用)
* @文件b 數(shù)據(jù)是什么類(lèi)型 識(shí)別轉(zhuǎn)換的數(shù)據(jù)排列方式
....
* @developer [開(kāi)發(fā)者]
* @see [相關(guān)類(lèi)/方法] [class1.java、class2.java、class.java]
* @since [產(chǎn)品/模塊版本]
* @deprecated
*/
public ...
(UML分析、建模與設(shè)計(jì))
一般執(zhí)行于項(xiàng)目編碼之前,是對(duì)一個(gè)模塊(功能)的具體(圖像流程)分析與描述。開(kāi)發(fā)過(guò)程能否順利,測(cè)試結(jié)果能否過(guò)關(guān),憑借于UML的設(shè)計(jì)嚴(yán)謹(jǐn)程度。當(dāng)然也有一些厲害的、業(yè)務(wù)邏輯熟練的開(kāi)發(fā)工作者,對(duì)于建模只是一張草圖而已,甚至建模軟件都不用打開(kāi),就能完整的開(kāi)發(fā)出一個(gè)功能來(lái)的,也是非常常見(jiàn)。
就我22年2月份找的那份工作,一個(gè)負(fù)責(zé)金融交接功能模塊的小組,全小組就一個(gè)人。非常厲害的一位大佬,聽(tīng)說(shuō)是上海回來(lái),之后回不去了,只好在本地老家就業(yè)。在一次聚餐時(shí),因?yàn)閮蓚€(gè)人都吃不了辣(我是因?yàn)榇蛄艘呙?,大佬是因?yàn)榱?xí)慣了上海的飲食),有幸結(jié)識(shí)了這位大佬,進(jìn)行了技術(shù)交流。聽(tīng)他說(shuō),他處理這套邏輯已經(jīng)7,8年,兼容不同的開(kāi)發(fā)框架也有五、六種,反正對(duì)業(yè)務(wù)邏輯非常熟悉,全公司就他一個(gè)人熟悉金融交接,注釋隨便寫(xiě),建模就算了。
如果在我的組里,組長(zhǎng)告訴我哪個(gè)功能模塊出現(xiàn)了bug,需要我去修改一下。注釋和建模描述不清,我可能會(huì)出于行內(nèi)禮貌,重新定義一個(gè)方法、接口去取代他那個(gè)有問(wèn)題的模塊。但如果全是黑黢黢的代碼,不好意思,請(qǐng)這位靚仔(靚女)和我進(jìn)行工作銜接時(shí),注意頭上那所剩不多的幾根毛的存在意義。當(dāng)然替換了新方法,有可能回出現(xiàn)連鎖反應(yīng),導(dǎo)致其他方法出現(xiàn)故障,這個(gè)時(shí)候還是要盡量去重新定位和觀察被取代的代碼。貿(mào)然將自己的方法交上去,導(dǎo)致了這個(gè)問(wèn)題,一般公司會(huì)完完整整的將問(wèn)題全算你的頭上。如果只是重構(gòu),問(wèn)題沒(méi)有得到解決,可以拖著這位同事來(lái)分擔(dān)火力,一切的一切都是他不寫(xiě)注釋、不建模而導(dǎo)致我對(duì)這個(gè)問(wèn)題不清楚。
根據(jù)軟件三大生存周期:軟件定義時(shí)期、軟件開(kāi)發(fā)時(shí)期和軟件維護(hù)時(shí)期。
UML分析、建模與設(shè)計(jì)的工作處于軟件定義后期和開(kāi)發(fā)前期,分布于項(xiàng)目說(shuō)明書(shū)的需求分析、總體設(shè)計(jì)、概要設(shè)計(jì)三個(gè)標(biāo)題中。主要作用是為了用戶(hù)(領(lǐng)導(dǎo))能夠淺顯看懂內(nèi)部邏輯(拿了工資,幫他實(shí)現(xiàn)了這個(gè)功能沒(méi),一般都是看頭看尾看大概)、開(kāi)發(fā)期同事兼容其他功能、維護(hù)期維護(hù)人員能夠快速理解內(nèi)部邏輯。