對業務流程建模而不是對實體建模 - poweredbybeard
一直追溯到我上大學的時候,我被教導要為實體或物件建模。對於一個業務問題,我被告知要尋找像 "汽車 "和 "人 "這樣的東西,並在一些美化的層次結構中利用繼承來為它們建模。
這一直持續到我的職業生涯,雖然我個人已經改變了,但我仍然看到這種建模方式隨處可見。對於簡單的系統來說,這很好。但隨著你的領域的複雜性的增加,它往往會導致一個神的物件。
如果你為一個實體建模,從設計上來說,你是在為一個會活得很久的東西建模。例如,在醫院裡,你可以為一個病人建模。但是,你可以對病人執行許多動作,這些動作會導致實體的大小增長。不久之後,你就會在資料庫中發現一個由大型資料圖支援的大型病人物件,這很糟糕。
在你的系統中擁有這樣的大型實體使得事情難以改變。在重構的時候,你會有更多的副作用需要考慮,而且改變設計也很困難。
對業務流程建模
一個更好的選擇是對業務流程進行建模,而不是對實體進行建模。以病人為例,你可以對病人在醫院的旅程進行建模,而不是對其進行建模。你可以把入院或出院作為一個單獨的過程來建模。這些模型有的大,有的小,但它們都有一個共同點:它們是有時間性的。它們有一個開始和一個結束。
這使得控制邊界和阻止它們成為大型神物變得更加容易。它還帶來了其他好處。最值得注意的是,這就是人們的思維方式。企業以流程來思考,如果你能在程式碼中建立模型。
這種方法需要考慮的一點是,你需要對領域有一個很好的理解。你需要有領域專家供你使用,因為否則,沒有他們,你就只是一群開發人員在猜測業務如何運作。
如果你有機會接觸到領域專家,我強烈推薦將Event Storming作為發現這些流程的一種方法。這是領域專家和開發人員互動的一種很好的方式,我推薦你閱讀Ablerto Brandolini關於這個問題的書。
最後,這種思維方式在構建事件源eventsourcing系統時效果非常好,因為這些系統經常受到相同問題的困擾。當開發者對實體進行建模時,他們通常有大量的流,需要很長的時間來融合水化。對流程進行建模將使這些流保持簡短,並在它們不再相關時給你一個處置它們的選項。
相關文章
- UML建模實踐——選“對”企業架構建模視角很關鍵架構
- 軟體需求與分析 業務建模分析
- [全程建模]MDA、全程建模、開源和應用的對話
- EA業務建模實踐之業務用例圖
- 什麼是軟體開發業務建模分析和結構化建模分析
- 敏捷建模對統一過程的改造實踐敏捷
- 根據業務能力實現DDD建模 - trond
- Cordys BOP 4平臺的子流程與嵌入子流程對比以及子流程建模技術
- 為什麼建模技術對業務分析師BA如此重要?- modernanalystNaN
- 利用Data vault對資料倉儲建模
- 對 ForumThread 建模的一點疑問thread
- PowerDesigner 業務流程/資料建模軟體和後設資料管理解決方案
- [全程建模]UML應用與實踐的對話——需求中流程與用例的關係
- 使用使用者故事對映實現領域建模 - pulse
- 業務資料分析和建模薦
- 業務建模:CQRS應用場景
- 使用業務能力方法實現DDD戰略建模 - pulse
- 關係建模ER建模-維度建模
- 財務建模最佳實踐 - DDD相關建模
- 架構師之路 - 業務領域建模架構
- 業務建模:BoundedContext(有界上下文)Context
- Rose與PowerDesigner:兩款建模工具的對比ROS
- 軟體全程建模1
- 軟體專案需求開發過程實踐之業務建模用例圖
- 使用 WebSphere Business Modeler 進行業務建模Web行業
- RUP大講堂(第四講)-業務建模技術實踐
- [全程建模]軟體工程之全程建模實現第二版進展通報軟體工程
- 利用Data Vault對資料倉儲進行建模(二)
- [全程建模]關於Actor與外部系統的對話
- [全程建模]業務建模和用例模型以及需求規格說明書的關係模型
- [全程建模]《軟體工程之全程建模實現》一書第二版簽約公告軟體工程
- Rhinoceros for mac(犀牛建模軟體)ROSMac
- 犀牛建模軟體Rhinoceros for MacROSMac
- 軟體建模有啥用
- [全程建模]全程建模實踐過程指南(2004年)
- IT系統的業務模型分析與系統建模模型
- [技術討論]業務建模和使用者業務的關係
- 實用的3D建模軟體:Metasequoia for Mac3DMac