在今年早些時間舉辦的領域驅動設計歐洲大會上,Vaughn Vernon舉辦了一場演講,闡述了他所遇到的各種軟件開發方面的嚴重問題,但也為這些問題提出了應對的方案。在他看來,大量的項目與開發團隊都深陷設計糟糕的系統中難以擺脫,無數開發者在不停地為系統打補丁,只為系統能夠繼續運行下去。這使軟件開發文化在很大程度上遭受了嚴重的破壞。
以Vernon的經驗來看,有一種問題是最突出的,即IT部門被視為一個成本中心,業務部門將軟件開發視為一種負面的因素,它在逐漸地榨干組織的資源,是一種金錢上的浪費。這樣的業務部門不可能將軟件視為一種改變游戲規則的因素,而是視為一種他們不得不忍受的東西。
在Vernon看來,讓業務人員花費大量時間在協作工具中編寫規格說明是一種毫無意義的浪費。大多數開發者都不會在意這些規格說明,因為其中缺少他們所需要的信息,反而只會造成低效的協作。正確的做法是讓業務人員與開發者進行對話交流,從而在更短的時間之內推出一份能夠滿足業務需求的扎實的設計。
Vernon提到了一種被他稱為任務板洗牌的做法:將某個便簽從待辦事項欄目里挪動至開發中欄目中就被視為軟件設計的完成。這會導致每次挪動便簽就帶來一種隨機的設計方案,造成系統缺乏所必需的、經過沉思熟慮的設計。有太多的人認為無設計是一種對代碼或開發者時間上的節約,但Vernon認為這種節約是一種錯誤的做法,只會造成糟糕的設計。
Vernon堅定地相信,為了克服他所描述的這些問題,我們必須提高團隊中的開發者成熟度。業務部門對于軟件開發部門的看法只是某些對于業務有興趣的人員,為了改變這種看法,我們需要通過創建解決方案,進一步促進業務發展的方式幫助業務部門實現卓越。而實現這一點的一種方案就是開始與業務部門進行合作。圍繞著工作內容的上下文與模型建立團隊,并設立統一語言。
事件風暴是一種領域建模的輔助工具,Vernon將其描述為發現邊界上下文的一種極度實用與重要的工具。經過幾個小時的討論,或許就能夠建立一種統一語言,并且理解領域中的邊界上下文。在事件風暴會議中所產生的結果也可用于某種基于指標的估算過程的估算單元,其結果將接近于真實的數字。
微服務是時下的熱門話題,Vernon認為它與領域驅動設計中的邊界上下文有著相似之處。但在Vernon看來,以單一組件的粒度部署微服務似乎太細了,他認為以邊界上下文的規模創建微服務是一種更為有效的途徑。
Vernon隨后提到了Actor模型,他確信這是一種非常重要的工具,開發人員 —— 甚至是多數開發人員都應當開始使用這種工具。隨著服務器的內核與內存的不斷升級,Actor模型也表現為一種能夠有效地利用這些新資源的方式。Vernon提出了一項建議,開發者可使用Actor模型,圍繞著單一的邊界上下文構建微服務。他認為Actor模型往往能夠極大地簡化系統的設計,這種設計表現出優秀的簡潔性。與之形成鮮明對比的是,當今的企業軟件往往會使用復雜的技術棧,其中包含大量不同的機制,哪怕是高級開發者也需要幾個月的時間才能完全掌握。
Vernon在結語中表示,大量的團隊都深陷設計糟糕的系統中難以擺脫,但隨著開發者成熟度的提高以及DDD的普及,將對這一現狀產生很大的改變。
明年的領域驅動設計歐洲大會預計將于2017年1月底舉辦。
查看英文原文: Vaughn Vernon: Challenges in Software Development of Today