在領域驅動設計歐洲2016大會上,paul rayner在演講中提出將領域驅動設計(ddd)引入敏捷軟體交付過程。他將敏捷視為一種組織工作的方法,而不是一種界定工作方式的規定。他認為敏捷參與者經常不夠重視設計,建議使用ddd概念作為一種克服這些缺點的方式。更進一步,rayner認為,敏捷與ddd的結合可以加速軟體交付。
\\ 在從事顧問工作的過程中,rayner見過許多踐行敏捷的團隊強調mvp(最小可行產品)的重要性以致損害了設計。他引用了douglas martin關於設計必然性的觀點:「好設計的替代品是壞設計,而不是完全無設計。」避免瀑布方法中的「大量提前設計」,只做最低限度的工作,這些團隊最終獲得了壞設計。實際上,敏捷宣言宣稱,「不斷關注優秀的技能和好的設計會增強敏捷能力」。敏捷的目的不只是速度,而是敏捷性。好的設計可以實現敏捷性。這實際上就是設計的目的,rayner援引venkat subramaniam的話對此進行了佐證:「好的設計不是正確地**了未來的設計,而是讓適應未來的成本不那麼高昂的設計。」
\\ 他指出,設計基本上是迭代的,這樣一來就很容易包含到敏捷中。設計是乙個發現未知並簡潔地表達複雜觀點的過程。由於你永遠無法提前知道所有的一切,所以設計必然會隨著時間變化。花些時間用來發現,並在交付的**中表達新知識,這樣會節省後續過程的時間,因為**本身變得更加敏捷了。一種方法是「旋渦模式探索過程(whirlpool process of model exploration)」。在這個過程中,你反覆使用新場景挑戰已有的領域模型,提出新模型,並編寫**實現它。
\\ rayner還列出了其他一些敏捷團隊使用過的、從ddd的視角來看經常失敗的方法。乙個是認為不斷地重構為好的設計已經夠了。這可能會實現清理**的效果,但ddd強調引入新概念。這些新概念不是從****現的,因此無法僅僅通過重構建立出來,而是要在業務建模中形成。它們會增加業務價值,而重構,根據定義,並不改變軟體的功能。
\\ rayner提到,在scrum中,乙個定義好的「產品經理」角色很容易讓團隊中的其他人將其視為所有業務需求/知識的唯一中轉。ddd倡導,每個人都了解領域。這就是複雜之處,不是在問題的技術層面上。因此,為了實現乙個好的設計,提高敏捷性和價值,交付團隊中的每個人都需要了解領域。
\\檢視英文原文:paul rayner says ddd and agile can coexist
Paul Rayner認為DDD和敏捷可以共存
在領域驅動設計歐洲2016大會上,paul rayner在演講中提出將領域驅動設計 ddd 引入敏捷軟體交付過程。他將敏捷視為一種組織工作的方法,而不是一種界定工作方式的規定。他認為敏捷參與者經常不夠重視設計,建議使用ddd概念作為一種克服這些缺點的方式。更進一步,rayner認為,敏捷與ddd的結...
Paul Rayner認為DDD和敏捷可以共存
在領域驅動設計歐洲2016大會上,paul rayner在演講中提出將領域驅動設計 ddd 引入敏捷軟體交付過程。他將敏捷視為一種組織工作的方法,而不是一種界定工作方式的規定。他認為敏捷參與者經常不夠重視設計,建議使用ddd概念作為一種克服這些缺點的方式。更進一步,rayner認為,敏捷與ddd的結...
Paul Rayner認為DDD和敏捷可以共存
在領域驅動設計歐洲2016大會上,paul rayner在演講中提出將領域驅動設計 ddd 引入敏捷軟體交付過程。他將敏捷視為一種組織工作的方法,而不是一種界定工作方式的規定。他認為敏捷參與者經常不夠重視設計,建議使用ddd概念作為一種克服這些缺點的方式。更進一步,rayner認為,敏捷與ddd的結...