编程 Ubuntu google Firefox nginx shell linux centos Android Python 云计算 wordpress Windows 程序员 mysql apache java 开源 微软 php

用戶故事圖譜與領域驅動設計的結合應用

Eriksen Costa 在一篇 博客文章 中討論了在項目設計中結合使用 用戶故事圖譜 (User Story Mapping)與 領域驅動設計 (DDD)所帶來的優勢。在他看來,開發者們往往會由於某個需求特性開發的壓力而忽略一些必要的對話,而這種對話能夠幫助參與者建立起對業務的共識。這些開發者們更願意參與技術性的討論,並直接進入特性的實現階段。這樣一來,他們就喪失了深入學習相關領域,並通過領域的概念對軟件進行建模的機會。

Costa是Wikidu公司的CTO,他表示:雖然我們會通過各種不同的實踐保證軟件系統的質量,例如測試驅動開發(TDD)和持續集成,但並不意味著這樣設計出的系統能夠自然地反映出對應的領域概念。為此,他引用了Eric Evans所編寫的 DDD著作 中的內容:

如果程序員對於領域本身不感興趣,那麽他們所了解的僅限於應用程序所應有的行為,卻丟失了這些行為背後的原則。雖說通過這種方式也能夠創建出實用的軟件,但這樣的項目永遠無法達到一種理想的狀態:即強大的新特性將隨著舊特性的演變而自然地浮現出來。

Costa特別強調,DDD方法為軟件的開發提出了一種新的途徑,它不再關註於技術本身,而是專註於通過開發者與領域專家的交流達成一種共識,在此基礎上打造出一個模型以及通用的語言(即 通用語言 Ubiquitous Language)以描述這一領域。

Costa相信,創建用戶故事圖譜是實現共識的第一步,它有助於促使開發者們采用DDD方法。用戶故事圖譜能夠更清晰地以可視化的方式顯示整個項目的全局信息,幫助開發者確定用戶故事開發的優先級。通過一種協作式的方式進行用戶故事圖譜的創建,能夠模擬出相關的全部信息,並通過這些結果展開有效的對話。而開發者們也能夠通過這一過程更好地理解他們的工作在全局中所扮演的角色。他同時相信,通過采取這種方式,能夠在團隊成員之間建立起更密切的聯系,讓他們更好地理解業務的目標。

Costa在文中通過一個簡短的速成教程解釋了用戶故事圖譜的基本概念。除此之外, Jeff Patton 和 Gojko Adzic 也撰寫了大量有關用戶故事和影響地圖(Impact Mapping)的內容,其中一個示例叫做“ 通過漢堡方法切分用戶故事 ”。

Costa最後的結論是:在處理復雜領域的項目采用DDD方法時,使用用戶故事圖譜是一種簡單而有價值的模式。它將幫助開發者與領域專家創建共享的領域知識,以及項目起始的通用語言詞匯表。

延伸阅读

评论