對業務流程建模而不是對實體建模 - poweredbybeard
一直追溯到我上大學的時候,我被教導要為實體或物件建模。對於一個業務問題,我被告知要尋找像 "汽車 "和 "人 "這樣的東西,並在一些美化的層次結構中利用繼承來為它們建模。
這一直持續到我的職業生涯,雖然我個人已經改變了,但我仍然看到這種建模方式隨處可見。對於簡單的系統來說,這很好。但隨著你的領域的複雜性的增加,它往往會導致一個神的物件。
如果你為一個實體建模,從設計上來說,你是在為一個會活得很久的東西建模。例如,在醫院裡,你可以為一個病人建模。但是,你可以對病人執行許多動作,這些動作會導致實體的大小增長。不久之後,你就會在資料庫中發現一個由大型資料圖支援的大型病人物件,這很糟糕。
在你的系統中擁有這樣的大型實體使得事情難以改變。在重構的時候,你會有更多的副作用需要考慮,而且改變設計也很困難。
對業務流程建模
一個更好的選擇是對業務流程進行建模,而不是對實體進行建模。以病人為例,你可以對病人在醫院的旅程進行建模,而不是對其進行建模。你可以把入院或出院作為一個單獨的過程來建模。這些模型有的大,有的小,但它們都有一個共同點:它們是有時間性的。它們有一個開始和一個結束。
這使得控制邊界和阻止它們成為大型神物變得更加容易。它還帶來了其他好處。最值得注意的是,這就是人們的思維方式。企業以流程來思考,如果你能在程式碼中建立模型。
這種方法需要考慮的一點是,你需要對領域有一個很好的理解。你需要有領域專家供你使用,因為否則,沒有他們,你就只是一群開發人員在猜測業務如何運作。
如果你有機會接觸到領域專家,我強烈推薦將Event Storming作為發現這些流程的一種方法。這是領域專家和開發人員互動的一種很好的方式,我推薦你閱讀Ablerto Brandolini關於這個問題的書。
最後,這種思維方式在構建事件源eventsourcing系統時效果非常好,因為這些系統經常受到相同問題的困擾。當開發者對實體進行建模時,他們通常有大量的流,需要很長的時間來融合水化。對流程進行建模將使這些流保持簡短,並在它們不再相關時給你一個處置它們的選項。
相關文章
- 財務建模最佳實踐 - DDD相關建模
- 軟體需求與分析 業務建模分析
- 為什麼建模技術對業務分析師BA如此重要?- modernanalystNaN
- 什麼是軟體開發業務建模分析和結構化建模分析
- 根據業務能力實現DDD建模 - trond
- PowerDesigner 業務流程/資料建模軟體和後設資料管理解決方案
- 利用Data vault對資料倉儲建模
- 使用使用者故事對映實現領域建模 - pulse
- 使用業務能力方法實現DDD戰略建模 - pulse
- 關係建模ER建模-維度建模
- 架構師之路 - 業務領域建模架構
- 數學建模作業
- 利用Data Vault對資料倉儲進行建模(二)
- MAR:針對動作識別的影片掩碼建模
- 專業三維建模軟體:Modo 16 for MacMac
- 工業資料分析之數倉建模 | 正規化建模和維度建模,你pick誰?
- 犀牛建模軟體Rhinoceros for MacROSMac
- Rhinoceros for mac(犀牛建模軟體)ROSMac
- 業務流程對映的10個技巧 - modernanalystNaN
- 領域建模的啟發,不同行業對模型的破壞力不同 - Mathias Verraes行業模型
- The Foundry Modo 16 for Mac 專業三維建模軟體Mac
- 招聘中說道的業務建模能力怎麼去學習實踐?
- 實用的3D建模軟體:Metasequoia for Mac3DMac
- 對於複雜系統只能採用模擬性建模? - Cilliers
- 資料治理一體化實踐之體系化建模
- mac建模軟體哪個好?Mac
- BricsCAD 22 for Mac(CAD建模軟體)Mac
- StarUML mac UML軟體建模器Mac
- CSiXRevit 2022,建築建模軟體
- 面向NLP場景應用的智慧輔助建模(二)--本體樹建模
- 為什麼業務知識會嚴重影響建模效果?
- 學習3D建模很難嗎,是不是很辛苦?3D
- VISION for mac(3D建模軟體)Mac3D
- 資料建模
- 建模調參
- 三維建模
- 數學建模
- 維度建模