[編程]UML語言:理論之光與實踐之惑

来源:https://www.cnblogs.com/Chinese-xu/archive/2023/11/27/17858567.html
-Advertisement-
Play Games

這是一本比較冷門的書《設計規則:模塊化的力量》,雖然豆瓣上只有58個評價,但是確實能學到很多東西。 這本書對我非常深遠。不是是投資,創業,還是其他領域,模塊化思想都能幫上你。這本書告訴我們生萬物的規則。 書籍電子版PDF(建議及時保存,避免被和諧):https://pan.quark.cn/s/aa ...


UML介紹及現狀

UML(統一建模語言)是軟體工程領域中具有悠久歷史的一種模型化語言工具。它通過標準化的圖形符號體系,使得軟體系統的藍圖能夠被更直觀地表達出來。UML誕生於20世紀90年代,經過多年積累,已擁有完備的理論體系和廣泛的實踐應用。

在理論上,UML被公認為是描述軟體結構和處理流程的有效工具。它使複雜的軟體系統能夠被視覺化地呈現出來,有利於開發人員之間的交流與理解,也使得系統的靈活改變成為可能。正因如此,UML工具理應大放異彩,成為軟體工程師的“必備武器”。

但實際情況卻並非如此美好。在技術社群和商業項目中,UML工具的評價向來兩極分化。其擁護者積極推崇其效用,宣稱UML帶來了軟體可維護性的巨大改進;而其批評者則指出,UML在實踐中收效甚微,反而因為額外的學習和維護成本成為許多項目的負擔。

這樣的對立評價並存的局面在UML誕生多年後依然持續,這反映了一個頗為奇特的悖論:一個在理論上被公認是正確、有效的工具,為何在實踐中飽受非議和拋棄?這在其他技術領域是不多見的。一項技術要麼被逐步淘汰,要麼在應用中不斷完善與發展,而鮮有像UML這樣“雙重標準”並存的情況。

面對UML現狀的種種疑問,我們有必要展開深入分析,釐清這一頗受爭議的模型化語言工具在軟體工程實踐中表現不佳的原因。也只有這樣,才能對UML工具的未來提供依據,判斷其前景是否被歷史淘汰,或仍具有革新突破的可能。

UML使用情況分析

面對UML實踐表現不佳的現狀,我們有必要展開使用情況調查,判斷其中的原因所在。

第一,UML過於複雜,大多數工程師並未真正掌握。UML作為一個模型化語言,擁有數十種圖形符號及其組合規則。完整掌握UML體系需要投入大量時間,這對許多項目團隊來說都缺乏對應的動力。因此,現實中使用UML的工程師中,能夠熟練運用各圖例準確表達意圖的僅占少數;更多的工程師對UML理解粗疏,繪製的圖例也不精確。這直接影響了UML在團隊中的實際應用效果。

第二,UML的維護成本過高,不符合大部分項目的特點。首先,現有的UML繪圖工具普遍不夠智能和便利,修改一個複雜的UML圖本身就是項艱巨的任務。其次,持續維護UML圖的工作量大且重覆,不太適合精簡的中小型團隊,因為他們無法負擔專人承擔這部分工作。最後,大多數實際項目規模較小、更新迭代頻繁,沒必要為了項目藍圖承受UML的學習和維護成本。

第三,UML所追求的目標可以通過其他途徑實現。例如,代碼註釋、文字描述甚至口頭溝通,都可在一定程度上完成信息交流和系統理解的效果。換言之,UML並非實現項目協作與管理的必需品。鑒於中小型項目對資源敏感,團隊往往選擇更輕量和易用的工具,來完成大部分目標。

UML之所以無法在實踐中大放異彩,關鍵在於它自身的複雜性以及維護成本,與大多數項目的特征不相匹配。這使得開發團隊以更低的學習和Labor成本,通過其他工具獲取相當一部分UML帶來的協作效果。對團隊和企業來說,這種情況下放棄UML是理性選擇。

UML工具破局之道

通過對UML使用情況的分析和評估,我們明確了它在實踐中的表現不佳有其內在原因。一個理論效果卓著的模型化語言工具,最終落得兩極分化評價的下場。那麼,在AI時代來臨的今天,我們是否應宣告這個曾經備受爭議的工具已經徹底失去應用的機會和前景?答案似乎是否定的。

伴隨著人工智慧技術的進步,UML圖的繪製、修改及維護完全可以通過智能演算法實現自動化。到那時,我們不再需要工程師手工控制每一個符號的變化,繁瑣而重覆地更新圖例細節。這將極大減輕使用UML的成本,也不再需要每個團隊成員全部掌握這門專業語言。

同時進一步思考會發現,UML自動繪製並不能根本解決問題。因為UML複雜的並不僅在於圖形生成,而在於所要表達的模型及信息量本身。面對複雜軟體系統,人腦同樣很難直觀描述且不重覆地給出指令。這恰恰反映了人類思維的局限,即不擅長系統化、邏輯嚴密地表達複雜想法。

所以,UML工具意義的核心在於輔助人類理解和認知複雜的軟體系統,而非強制人腦按照UML規範構建模型。我們需要UML從“表達工具”轉變為“認知工具”。到那時,人工智慧將承擔繁重的信息轉化工作:它輸入人類使用自然語言描述的原始設計思路,並輸出一個完整、規範的UML模型。具有更低學習門檻的UML智能助理,將能直接解讀用戶的項目設計意圖,接受非UML領域語言的項目概念描述,轉而用最貼切的UML圖形和標記進行不同層次的概念可視化表達,反饋給用戶進行設計意圖的確認。

在人工智慧的大力支撐下,UML將重現昔日榮光,成為連接人類思維和機器運算的橋梁。它輔助人腦認知,又使系統自動化成為可能。如果說過去UML之所以艱難,是因為工程師既要學會需求分析,又要懂得代碼設計,還要額外學習UML的各種標記,又要親自承擔繁瑣的繪製和重覆修改過程,那麼未來,這種多重負擔將成為歷史。將由自動化的模型完成繁重工作,讓自然語言編程的架構重構軟體開發流程。

作者:徐少俠
出處:http://www.cnblogs.com/Chinese-xu/

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
如有問題,可以通過 [email protected] 聯繫我,非常感謝。

分享家:Addthis中文版
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 負載均衡 此處的負載均衡指的是FE層的負載均衡. 當部署多個 FE 節點時,用戶可以在多個 FE 之上部署負載均衡層來實現 Doris 的高可用。官方文檔描述: 負載均衡 。 實現方式 實現方式有多種,如下列舉。 開發者在應用層自己進行重試與負載均衡。 JDBC Connector 發現一個連接掛掉 ...
  • 閱讀 Doris SQL 原理解析,總結下Doris中SQL解析流程: 詞法識別:解析原始SQL文本,拆分token 語法識別:將token轉換成AST 單機邏輯查詢計劃:將AST經過一系列的優化(比如,謂詞下推等)成查詢計劃,提高執行性能與效率。 分散式邏輯查詢計劃:根據分散式環境(數據分佈信息、 ...
  • 本文分享自華為雲社區《多模歸一,一生萬物——華為雲多模資料庫GeminiDB架構與應用實踐》,作者: GaussDB 資料庫 。 在這個信息爆炸的時代,數據的管理和應用變得越來越重要。互聯網用戶的規模化使得業務數據也呈現出多樣性,包括社交關係、系統日誌、Json、KV等。同時,越來越多的軟體開發團隊 ...
  • 以前對非同步刪除幾個參數的作用比較模糊,包括網上的很多資料都是一筆帶過,語焉不詳。 所以這次從源碼(基於 Redis 7.0.5)的角度來深入分析下這幾個參數的具體作用: lazyfree-lazy-user-del lazyfree-lazy-user-flush lazyfree-lazy-ser ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 一、前言 最近 推特上 一位懂設計和寫代碼的大神一個兩個瀏覽器之間 星球粒子交互的動畫火了, 讓人看了大呼腦洞大開, 瀏覽器竟然還能這麼玩!!! 準備自己也搞搞玩一下 二、實現 原作者的粒子動畫非常炫酷, 但是不是我們本文重點, 我們通過 ...
  • 一、webpack簡介 webpack 是當下十分流行的一款靜態模塊打包工具,將JS、CSS、HTML、圖片等各種靜態資源視為一個個模塊,通過一個或者多個入口文件通過解析依賴關係生成一個依賴圖,最終打包成一個或者多個bundles,webpack本身只能打包JS文件,但是通過配置的loader和pl ...
  • 如果你想要實現自己的夢想,就必須先擁有勇氣去追求它。 1. React Props 屬性 props 主要解決兩個問題:復用性問題以及可以讓組件之間通信。 屬性 props 正常是外部傳入的,組件內部也可以通過一些方式來初始化的設置,屬性不能被組件自己更改(屬性是描述性質、特點的,組件自己不能隨意更 ...
  • 簡介 本章節從精准定位、分層設計、非同步組件、拖拽四個方面分析飛碼畫布設計。 一、精准定位設計 飛碼畫布是一個套件,可對外提供畫布能力。精准定位有兩種情況,一是目標組件無子組件,而是目標組件有子組件。 無子組件:目標組件分為支持與不支持放子組件兩種情況。 有子組件:滑鼠相對於子組件(目標組件)對角線位 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...