您好,登錄后才能下訂單哦!
我是2012年開始接觸到DDD(領(lǐng)域驅(qū)動設(shè)計)的, 后續(xù)陸陸續(xù)續(xù)研讀過幾遍Eric的大作《領(lǐng)域驅(qū)動設(shè)計:軟件核心復雜性應(yīng)對之道》,也使用DDD重構(gòu)過一個項目。總的感受是DDD的一些概念比較晦澀難懂,很難掌握,因此想寫個系列短文,希望能用通俗易懂的語言幫助大家更輕松更深入地理解DDD。文章很多都是我個人體會和理解,難免有錯誤,希望大家能及時指正,共同提高。
本文是系列短文第一篇,介紹DDD的起始概念模型驅(qū)動設(shè)計。
軟件開發(fā)可以看做是一個把用戶需求轉(zhuǎn)換為可正確運行的程序的過程,其中最關(guān)鍵部分是把用戶需求轉(zhuǎn)換成代碼。我們要學習的DDD實際上就是一種軟件開發(fā)方法,它相比之前的軟件開發(fā)方法,能更好地應(yīng)對軟件的核心復雜度。為了能更好的理解它,我們先回顧下之前的軟件開發(fā)方法及其存在問題。
在上世紀60年代,由于需求簡單,軟件開發(fā)以作坊式開發(fā)為主。但是隨著硬件的飛速發(fā)展,軟件復雜度也迅速激增,終于在70年引發(fā)了軟件危機。為了應(yīng)對危機,業(yè)界借鑒成熟生產(chǎn)制造管理方法,發(fā)展出以“過程為中心”的瀑布式開發(fā)方法。
瀑布式開發(fā)把整個軟件開發(fā)過程劃分為需求分析、方案設(shè)計、編碼、測試等階段,希望以這種類似工業(yè)流水線的作業(yè)分工方式來控制軟件開發(fā)的風險和成本。
為了解決瀑布式開發(fā)的開發(fā)效率低下、響應(yīng)需求速度慢的問題,輕量級的,更能適應(yīng)變化的敏捷軟件開發(fā)方法被普遍認可并迅速流行起來,極限編程就是其中的一種。
XP主要由13個實踐構(gòu)成,是一種近螺旋式的開發(fā)方法。它將復雜的開發(fā)過程分解為一個個相對比較簡單的小周期;通過積極的交流、反饋以及其它一系列的方法,開發(fā)人員和客戶可以非常清楚開發(fā)進度、變化、待解決的問題和潛在的困難等,并根據(jù)實際情況及時地調(diào)整開發(fā)過程。
為了與瀑布式開發(fā)做對比,我們把XP簡單理解為下圖:
通過上圖我們可以看到,XP沒有劃分分析、設(shè)計、編碼和測試等階段,需求可以在一個周期為1~2周的迭代中快速交付。XP之所以能做到快速交付,有如下幾個原因:
XP非常反對做預先設(shè)計,需求分析與設(shè)計會被拆分到用戶故事乃至TDD的小步迭代中去做,在每個小迭代中代碼只會根據(jù)當前需求簡單實現(xiàn);當在后續(xù)迭代過程中發(fā)現(xiàn)代碼難以滿足新需求時,需要通過重構(gòu)來增加代碼對新需求的適應(yīng)性,以便能夠快速實現(xiàn)新需求。這種做法固然能帶來很多好處,但是也存在一些缺陷:
為了彌補XP在應(yīng)對軟件核心復雜度的缺陷,eric在2003年提出了一種新的方法,他認為我們需要引入領(lǐng)域模型并圍繞它來做需求分析和軟件設(shè)計,這就是模型驅(qū)動開發(fā)。這一論述有以下幾個要點:
最后總結(jié)下,模型驅(qū)動設(shè)計通過對軟件核心復雜度的統(tǒng)一建模,解決了瀑布式開發(fā)在需求分析、軟件設(shè)計上的溝通、反饋和知識整合上的缺陷,也解決了XP極簡主義設(shè)計存在的缺陷。
文本重點敘述了我們?yōu)槭裁葱枰I(lǐng)域模型,領(lǐng)域模型構(gòu)建需要注意的幾個基本原則,但是具體要怎么來構(gòu)建領(lǐng)域模型呢?請看下一篇《輕松學DD之二:如何高效消化知識》。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。