業務分析和領域建模致力於「Do the RIGHT thing」,而設計和實現致力於「Do the thing RIGHT」。前者遠比後者重要。若是你已經南轅北轍了,那麼,你跑的越快,離目標就越遠。數據庫
可是國內大多數的軟件公司、團隊和開發者,在業務分析和領域建模方面作得不夠好,究其緣由,大概是由於:安全
- 認識錯誤。覺得軟件開發就是數據建模,以及針對數據的增刪改查,徹底沒想到須要領域建模。這樣的開發模式每每是從現有數據庫或報表入手,實現客戶的表層需求,遺漏業務的本質機制。
- 對業務分析和領域建模的重要性認識不足,把大部分資源和精力投放在編碼實現上。 缺少領域建模方面的指導和訓練,沒法快速而深入地洞察業務領域的本質,所以造成的領域模型充滿各類誤解和缺陷。
- 開發人員偏心鑽研具體軟件技術,不敢或不肯踏足業務領域分析。
若是建模不足(不夠全面,不夠深入,不夠抽象),會產生下面的後果:編碼
- 你的軟件不符合或不徹底符合客戶的須要。
- 你的軟件只符合客戶的淺層須要和當前須要,當客戶須要有變化時(必然如此!),根本沒法進行擴展和變動,或者須要對你的代碼基作傷筋動骨的改動。
- 你的軟件只符合當前客戶的須要,當須要移植給同行業的其餘客戶使用時,須要對你的代碼基作傷筋動骨的改動。
- 你的概念模型和技術實現緊密耦合,當須要技術升級或更換技術實現時,須要對你的代碼基作傷筋動骨的改動。
好的領域模型深入反映了業務領域的本質,它不只知足客戶的淺層須要,還能知足客戶的深層須要;它不只知足客戶的當前須要,還能知足客戶的將來須要;它不只知足單一客戶的須要,還能知足相同領域其餘客戶的須要。它使得軟件能夠快速、安全、低成本地進行擴展和修改,而不影響系統的主體結構。好的領域模型獨立於軟件技術實現,在軟件技術快速升級換代的同時恆久地發揮做用。設計