[編程]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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...