0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UML真的悄悄地消失了?

jf_78858299 ? 來源:前端之巔 ? 作者:前端之巔 ? 2023-05-05 10:38 ? 次閱讀

“CASE 工具為什么會失敗”與“UML 為什么會掛”在很大程度上是一回事。

不久前,Ernesto Garbarino 發(fā)表了一篇《UML 是否就這樣悄悄地消亡了?》的文章。Garbarino 在使用了 9 年的 UML 后發(fā)現(xiàn),不只自己,同行及其咨詢過的《財富》500 強公司都不再使用 UML 了。他認(rèn)為敏捷化給了 UML 致命地打擊,是導(dǎo)致 UML“死亡”的真正元兇。

我知道很多軟件項目都在市場競爭中被淘汰,但 UML 不是。它沒有因太復(fù)雜、嚴(yán)謹(jǐn)而被公司高層所嫌棄,相反,他們很喜歡用少數(shù)幾種新的約定符號完成高效清晰的溝通。IT 人士將 UML 擺上臺面,商務(wù)人士則欣然接受。

所以問題的答案是,死掉的并不是 UML 本身——它只是連帶受害者。這場“大屠殺”波及到整個需求工程領(lǐng)域,包括業(yè)務(wù)分析與設(shè)計等等。下殺手的是“敏捷化”,正是它抹殺掉了 UML 以及關(guān)于它的一切。

Garbarino 認(rèn)為,錯不在 UML,人們只是放棄了業(yè)務(wù)分析與正式規(guī)范的僵化束縛:

數(shù)字化轉(zhuǎn)型專家建議我們直接將方案部署在生產(chǎn)環(huán)境中,由客戶用行動向我們展示實際需求,而非預(yù)先做出假設(shè)。在這樣一套流程下,我們通過反復(fù)試錯來找到正確答案。這就是所謂快速失敗、快速迭代的新方法。

但現(xiàn)實世界很復(fù)雜,答案往往沒那么簡單粗暴。我在幾年前曾想寫篇關(guān)于 UML 誕生、快速發(fā)展到退出公眾視野的文章。為此,我采訪了不少 UML 知名人士,包括 Grady Booch、Bertrand Meyer 和 Ed Seidewitz 等等。但遺憾的是,UML 項目最終走向了消亡,所有的準(zhǔn)備都打了水漂。但我仍記得種種細(xì)節(jié),所以我可以負(fù)責(zé)任地說:事情絕不只是“死于敏捷化”那么簡單。當(dāng)然,這已經(jīng)過去四年了,有些細(xì)節(jié)我可能確實記錯了,歡迎大家邊看邊監(jiān)督。

史前階段

UML 的誕生,源于兩大重要趨勢。

首先是“方法大戰(zhàn)”。在 Smalltalk 與 C++ 成為主流面向?qū)ο蟪绦蛟O(shè)計(OOP)后,人們開始大肆宣傳一種用于設(shè)計軟件系統(tǒng)的終極流程。但語言統(tǒng)一的過程無疑是混亂且“血腥”,一直有不同的設(shè)計方法涌現(xiàn)。Eiffel 語言和按契約設(shè)計(Design by Contract)思想發(fā)明者 Bertrand Meyer 在他寫的《Business Object Notation》一書中列出了 26 種競爭方法,我忘了是在哪里甚至還看到過“50 多種”競爭方法的結(jié)論。

幾乎在同一時期,人們還開發(fā)出第一款計算機輔助軟件工程(CASE)工具。如今,CASE 只是個“小角色”,但當(dāng)初它是有潛力拓展出巨大產(chǎn)業(yè)的,甚至有人認(rèn)為其規(guī)模將遠(yuǎn)超 CAD 或者 IDE。

CASE 工具與方法論結(jié)合,不僅為開發(fā)者,也為測試人員、項目經(jīng)理乃至客戶提供了一種整體性的軟件創(chuàng)建方法。然而,CASE 工具的制作成本極高,而且必須針對特定設(shè)計方案進行定制,因此隨著時間的推移,CASE 供應(yīng)商只能從以下三種方式中選擇其中一個:

  • Grady Booch 的 Object-Oriented Analysis and Design(碸對象分析與設(shè)計,OOAD
  • Ivar Jacobson 的 Object-Oriented Software Engineering(面向?qū)ο筌浖こ蹋琌OSE)
  • James Rumbaugh 的 Object Modeling Technique(對象建模技術(shù),OMT)

Rational 公司有不少的 CASE 產(chǎn)品組合,而且大部分收入來自 Ada 相關(guān)工具。Grady Booch 是 Rational 公司的員工,Booch 與 Rumbaugh 是好朋友,所以兩個人的思路在充分交流之后逐漸趨于一致。所以,兩人也開始嘗試明確協(xié)作,將 CASE 供應(yīng)商需要支持的方法從三種縮減成兩種。之后,隨著其中一種方法優(yōu)于另外兩種,他們買下了 Jacobson 的咨詢公司,逐步放棄了面向?qū)ο筌浖こ蹋∣OSE)。

OOSE、OOAD 與 OMT 都是代表了整體方法,涵蓋到符號表示和過程。由于消除符號差異要比處理差異更容易,所以 Rational 將聯(lián)合體拆分成了兩個部分。

統(tǒng)一建模語言(UML)于 1996 年問世,并被移交給對象管理小組(OMG),Rational Unified Process 則在一年之后誕生。UML 在接下來的十年中大受歡迎,并從 2004 年開始受到人們的普遍關(guān)注。但時間飛逝,轉(zhuǎn)眼就來到“UML 已死”的時代——這中間到底發(fā)生了什么?

理解問題本身

必須承認(rèn)的是,UML 怎么“掛掉”這個問題是有歧義的。

首先,我們說的“掛掉”究竟指什么。程序員們常用這個詞來代表某種事物的“相對市場份額下降”,而非“絕對市場份額下降”。如今,仍有不少意見領(lǐng)袖抱怨開發(fā)者不夠了解底層系統(tǒng),但與 30 年前相比,參與內(nèi)核開發(fā)的開發(fā)者數(shù)量已經(jīng)大幅增加。接觸內(nèi)核開發(fā)的群體在全體開發(fā)者中確實比例很低。同理可知,UML 也許正經(jīng)歷類似的“既增長、又消亡”過程,具體要看大家選擇衡量的標(biāo)準(zhǔn)。所以,我們不妨假設(shè) UML 處于“快掛了”的狀態(tài),再進一步展開討論。

另一個分歧是,我們說的 UML 究竟是什么。首先,UML 包含十幾種不同的圖類型,目前仍有不少人在使用順序圖。其次,人們使用 UML 圖的方式也是多種多樣。UML 與敏捷世界中的杰出人物 Martin Fowler 同樣確定出三種基本用例:草圖、藍(lán)圖與編程。

這兩點很容易解釋。UML 的編程用例在早期發(fā)展階段就已經(jīng)消亡 ,大多數(shù) UML 支持者自己也認(rèn)為這東西沒什么用。UML 草圖的命運也不容樂觀,而且人們發(fā)現(xiàn)草圖符號與 UML 標(biāo)準(zhǔn)很難保持同步,逐漸演變出多種相互間難以理解的“方言”。所以,除非有人刻意保持統(tǒng)一,否則兩者基本毫不相干。

剩下的 UML 藍(lán)圖則是最復(fù)雜的用例。據(jù)我的了解,它應(yīng)該也是 Rational 公司最重視的成果。

UML 藍(lán)圖與 UML 草圖之間有兩個差異。首先,UML 的本意是先讓設(shè)計人員寫藍(lán)圖,再由程序員實現(xiàn)藍(lán)圖,但二者對應(yīng)了不同的技能與工具。其次,UML 藍(lán)圖集成有多種不同的圖類型,我們不僅需要編寫類圖與需求圖,還需要用實現(xiàn)需求圖編寫的工具,即需要在藍(lán)圖設(shè)計當(dāng)中使用 CASE 工具。因此,UML 的人氣往往與 CASE 工具的流行度密切相關(guān)。也正因為如此,我覺得“CASE 工具為什么會失敗”與“UML 為什么會‘掛’”在很大程度上是一回事。

下面咱們開始探究 UML 悲慘命運的根源。我得強調(diào),我只能根據(jù)自己僅有的記憶做出還原和推測,所以給出的理由也許不那么準(zhǔn)確,僅供大家參考。

消亡原因

傳統(tǒng)的約束

在方法大戰(zhàn)爆發(fā)、CASE 工具興起之后,UML 可以說是應(yīng)運而生。市場上已經(jīng)出現(xiàn)大量基于 OOAD、OOSA 以及 OMT 的 CASE 工具,而 UML 必須與這三類工具保持向后兼容,這也在起步階段就埋下了隱患。如果能夠果斷放棄這些,UML 也許可以更簡單地實現(xiàn)概念統(tǒng)一。

規(guī)范化缺失

UML 的規(guī)范太過松散,在圖的交互方式及關(guān)鍵字實際含義等方面都模糊不清。比如,UML 1.3 在類圖中給出了“泛化”箭頭示例,其中 Sailboat 是 WindPoweredVehicle 與 WaterVehicle 的專業(yè)化表達(dá),而后兩者又是 Vehicle 的專業(yè)化表達(dá)。但從設(shè)計角度來看這些的意義是什么呢?我們有必要用專門的方式來實現(xiàn)嗎?這種細(xì)化關(guān)系有什么特別?總之,在具體操作中,一直存在著用戶決定關(guān)系含義、CASE 供應(yīng)商決定實現(xiàn)功能,但兩者長期存在倒錯的問題。

看到這里,很多朋友可能想到了 C 語言。沒錯,當(dāng)初的 C89 之所以要包含大量未定義及用戶定義行為,完全是為了容納大量彼此沖突的編譯器。OMG(UML 1.0 后版本的維護者)也面臨著類似的困境。他們無法對 UML 標(biāo)準(zhǔn)做出任何更新,否則很可能破壞現(xiàn)有供應(yīng)商的決策,這自然拖慢了 UML 的發(fā)展速度,也大大增加了各個版本的修訂復(fù)雜性。

我有一個從朋友那里聽來的“八卦”。當(dāng)時,雖然 OMG 被束縛住了手腳,但還有一定為“更大利益”做出改變的空間。我個人懷疑作為 UML 的原始開發(fā)商以及規(guī)模最大的 CASE 工具供應(yīng)商之一,Rational 其實很想對舊版軟件做出更新。但是,IBM 隨后在 2003 年收購了 Rational,并很快停用了 Rational 的 UML 工具,轉(zhuǎn)而銷售專有 CASE 工具 Rational Software Architect。由于不打算繼續(xù)在 Rational 遺留項目上投入精力,IBM 開始阻止一切可能對 UML 兼容性造成影響的更新,最終導(dǎo)致項目徹底停滯。

而 2003 年也正是 UML 市場戰(zhàn)勝率開始下降的開端,我覺得這應(yīng)該不是純粹的巧合?,F(xiàn)在,我們要探討 UML 的具體問題了。

UML 中包含了非常多種不同的圖和規(guī)則,導(dǎo)致產(chǎn)品太過復(fù)雜。這對任何人都沒有好處,因為 UML 變得越來越難學(xué),配套開發(fā)工具的設(shè)計也陷入困境。

雖然看似會畫幾張圖就能上手,但背后的規(guī)范體系并不簡單,所有工具都必須全面完整。所以,除了“泛化圖”外,其他稍稍復(fù)雜一點的內(nèi)容都需要龐大的團隊和充裕的資金才有可能實現(xiàn),這就限制了生態(tài)系統(tǒng)的增長速度。最終,開源社區(qū)也拿不出豐富的 CASE 工具,用戶實際使用的工具就更少了。

更關(guān)鍵的是,就連商業(yè) CASE 工具也啃不下這塊硬骨頭。表示方法越復(fù)雜,開發(fā)工具的難度就越大,沒有了令人振奮的強大 CASE 工具支撐,UML 自然陷入孤掌難鳴的境地。

沒有文本格式

這是工具體系方面的另一重大缺失。沒有文本格式導(dǎo)致我們無法在自己熟悉的文本編輯器中編輯 UML 圖、無法執(zhí)行 grep 編寫、也無法編寫自己的定制化解析器。

也有人曾嘗試為 UML 提供文本表示形式,例如 PlantUML 或者 Mermaid 等,但它們?nèi)济媾R著兩大難題。首先,這種表示是單向的,我們無法將現(xiàn)有圖轉(zhuǎn)換為文本形式;第二個就是所謂的圖形化問題,文本格式在表現(xiàn)視覺布局方面效果極差。這個問題可以具體分為三個方面:1)系統(tǒng)非常笨拙,不如直接使用圖形編輯器;2)必須調(diào)整設(shè)置才能讓布局引擎更為流暢;3)需要編寫 TikZ。

根本沒有數(shù)據(jù)格式

這個問題看似與“沒有文本格式”類似,但本質(zhì)上截然不同:UML 只有視覺表示這唯一的格式,令 UML 的導(dǎo)入與導(dǎo)出幾乎無法實現(xiàn)。一旦開始使用具體工具,結(jié)果就會被限制在此種工具之內(nèi),這明顯又制約了生態(tài)系統(tǒng)的發(fā)展:無法制作獨立的 UML 工具、驗證品節(jié),也無法開發(fā)出任何 CASE 工具擴展。

OMG 方面也曾嘗試通過 XMI(一種用于 UML 的 XML 格式)糾正這個問題,但據(jù)說效果一直不好,而且各個 XMI 與 UML 版本都不具備向后兼容能力,工作根本推進不下去。

無法逆向

一部分工具可能會采用某些 UML 規(guī)范并生成代碼,也有一些工具可以根據(jù)某些代碼對圖進行逆向操作,但這兩種用例的效果都不太好。因此,與藍(lán)圖類似,UML 與代碼終將不可避免地陷入無法同步的狀況。

在采訪 UML 用戶時,我最常聽到的抱怨就是“UML 太爛了,根本沒法用?!?/p>

文化變革

最后的這一點,我開始跟開頭文章作者的觀念趨于相同。文化變革確實給了 UML 沉重一擊,但我認(rèn)為其中的原因不是那么簡單。

CASE 工具的作用僅限于大型軟件項目,這是因為只有大型軟件項目才有很多人長時間從事相同的工作。這類項目的“官僚化”程度也更高。雖然我們?nèi)缃穸颊J(rèn)同敏捷化正全面取代以往占主導(dǎo)地位的瀑布式開發(fā)方式,但那個時候大多數(shù)開發(fā)者都在遵循“事來忙一陣、亡羊再補牢”的工作思路。因此,CASE 工具最初是由企業(yè)在內(nèi)部強制要求使用的。文章作者也提到,真正喜歡 UML 的其實是企業(yè)高管、而非程序員自己。

上世紀(jì)九十年代,程序員們主要在傳統(tǒng)企業(yè)工作,因此當(dāng)時的技術(shù)趨勢也主要反映傳統(tǒng)企業(yè)管理層的喜好。雖然也正是他們的決策讓 UML 有了一時的輝煌,但近二十年過去了,軟件文化逐漸向大型科技企業(yè)與初創(chuàng)公司傾斜,從歷史上看這兩者都不屬于 CASE 供應(yīng)商的預(yù)設(shè)目標(biāo)受眾。這樣的變化,也讓 CASE 在市場上的地位一降再降。

UML 之后

在開頭提到的文章中,作者 Garbarino 提出了一個問題:如果 UML 沒有了,我們將使用什么?

雖然有些人使用 C4 之類的輕量級建模技術(shù),但目前主流的應(yīng)該還是 masala 圖。為什么要用 masala?Garbarino 認(rèn)為是因為它靈活多變、能夠一次性涵蓋多個維度、既涉及結(jié)構(gòu)又涉及行為、既體現(xiàn)邏輯層面又貫通物理層面,很像是 4+1 架構(gòu)模型視圖的大雜燴產(chǎn)物。

現(xiàn)在生活和財務(wù)所依賴的數(shù)百萬個系統(tǒng),完全是在 masala 圖表的背后設(shè)計、資助和執(zhí)行的,通常除了一堆史詩和用戶故事之外沒有更多的附屬品。不過在特別嚴(yán)謹(jǐn)?shù)臉I(yè)務(wù)系統(tǒng),如銀行抵押系統(tǒng)并不會使用潦草的馬薩拉圖。

不過,在 Garbarino 看來,馬薩拉圖也有作用。masala 圖本質(zhì)上并不是規(guī)范,更多的是一種情感共鳴的載體。根據(jù) Marie Kondo 提出的原則,masala 圖的核心目標(biāo),是在利益相關(guān)者心中激起認(rèn)同與積極情緒。能做到這一點的,就是好 masala 圖。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IT
    IT
    +關(guān)注

    關(guān)注

    2

    文章

    847

    瀏覽量

    63449
  • UML
    UML
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    30839
收藏 人收藏

    評論

    相關(guān)推薦

    蘋果一直在悶聲大發(fā)財,悄悄地在背后不吭聲地發(fā)力

    羞答答的玫瑰靜悄悄地開! 2017年,蘋果看似毫無動靜!然而,今天一切揭曉時,大家才發(fā)現(xiàn),原來,蘋果一直在悶聲大發(fā)財,悄悄地在背后不吭聲地發(fā)力!
    發(fā)表于 08-17 10:46 ?1180次閱讀

    UML中類圖詳解

    UML
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月14日 10:12:47

    呃,悄悄地問下,上次那個在線研討會抽獎,木有下文

    呃,悄悄地問下,上次那個在線研討會抽獎,木有下文么????為什么也沒看到獲獎名單公布呢
    發(fā)表于 04-16 12:38

    MPLABX IDE消失

    突然,MPLABX IDE消失。解決方法:只使用一個監(jiān)視器。然后它的穩(wěn)定。一旦第二個(或更多)監(jiān)視器被添加/啟用,崩潰再次出現(xiàn)。真討厭!
    發(fā)表于 03-12 08:11

    GOOP怎么操作能順利將UML生成代碼

    我是用GOOP內(nèi)的UML編輯器編輯一個UML圖,然后希望生成對應(yīng)代碼,然后呢,GOOP讓我選擇一個項目,我選擇后工具就崩潰,有沒有大神對這方面了解的,或者有沒有相關(guān)的使用說明,中英
    發(fā)表于 10-26 09:23

    UML教程設(shè)計核心技術(shù)

    UML教程設(shè)計核心技術(shù):UML的產(chǎn)生和成長,什么是UMLUML與面向?qū)ο蟮能浖治雠c設(shè)計,UML的應(yīng)用領(lǐng)域。Component-Based
    發(fā)表于 02-08 17:42 ?0次下載

    什么是UML

    什么是UML UML是一種標(biāo)準(zhǔn)的圖形化建模語言,它是面向?qū)ο蠓治雠c設(shè)計的一種標(biāo)準(zhǔn)表示。它:不是一種可視化的程序設(shè)計語言而是一種
    發(fā)表于 02-08 17:47 ?3595次閱讀
    什么是<b class='flag-5'>UML</b>

    AMD悄悄更新入門款產(chǎn)品:Radeon Pro WX3100與Radeon Pro WX2100登場

    AMD 悄悄地更新 Radeon Pro WX 產(chǎn)品線,但這屬于入門款產(chǎn)品。
    發(fā)表于 06-16 17:38 ?9881次閱讀

    Novellus正在悄悄地開發(fā)用于銅的旋轉(zhuǎn)低k,以防萬一

    應(yīng)用,Novellus正在悄悄地開發(fā)用于銅的旋轉(zhuǎn)低k,以防萬一 慕尼黑 - 您認(rèn)為IBM公司周一宣布在0.13微米銅IC中使用旋涂低k電介質(zhì)材料將是Applied Materials
    的頭像 發(fā)表于 02-12 12:20 ?3462次閱讀

    Spotify推出了一個更新,悄悄地添加了新功能

    最終,Spotify推出了一個更新,悄悄地添加了這項新功能。就像Engadget首先注意到的那樣 ,該功能使用戶能夠假設(shè)新用戶選擇啟用此選項,從而獲得新情節(jié)的推送通知。
    的頭像 發(fā)表于 09-24 17:26 ?2541次閱讀

    基于實時UML的雷達(dá)軟件設(shè)計

    實時統(tǒng)一建模語言 (UML)和面向?qū)ο蟮慕<夹g(shù)代表著雷達(dá)軟件設(shè)計的一個發(fā)展方向。文中介紹使用UML的用例圖、狀態(tài)圖、順序圖等進行系統(tǒng)分析、設(shè)計、實現(xiàn)和測試 ,并討論了如何選擇 UML
    發(fā)表于 03-26 14:06 ?24次下載

    UML簡介與類圖詳解

    本篇介紹UML類圖的基礎(chǔ)知識,包括2種和6種關(guān)系,并通過visio軟件,演示如何畫出一個UML類圖
    的頭像 發(fā)表于 05-05 09:07 ?3982次閱讀
    <b class='flag-5'>UML</b>簡介與類圖詳解

    UML統(tǒng)一建模語言

    UML-Unified Modeling Language 統(tǒng)一建模語言,又稱標(biāo)準(zhǔn)建模語言。是用來對軟件密集系統(tǒng)進行可視化建模的一種語言。UML的定義包括UML語義和UML表示法兩個元
    的頭像 發(fā)表于 05-05 10:15 ?842次閱讀
    <b class='flag-5'>UML</b>統(tǒng)一建模語言

    UML狀態(tài)圖詳解

    本篇介紹UML狀態(tài)圖的基礎(chǔ)知識,并通過visio繪制一個全自動洗衣機的UML狀態(tài)圖實例,來介紹UML狀態(tài)圖的畫法與所表達(dá)的含義。
    的頭像 發(fā)表于 05-09 09:00 ?3012次閱讀
    <b class='flag-5'>UML</b>狀態(tài)圖詳解

    UML時序圖詳解

    本篇介紹UML時序圖的基礎(chǔ)知識,并通過visio繪制一個物聯(lián)網(wǎng)設(shè)備WIFI配網(wǎng)的UML時序圖實例,來介紹UML時序圖的畫法與所表達(dá)的含義。
    的頭像 發(fā)表于 05-16 09:09 ?2105次閱讀
    <b class='flag-5'>UML</b>時序圖詳解