【線上課程】領域驅動設計 Domain-Driven Design

開發軟體的目的,是為了解決真實世界中,各種領域(domain)的問題,因此,軟體必須依據特定領域所要處理的問題作設計,在這個前提下才能開發出真正優秀的軟體,然而在資訊科技領域,無論系統分析師,或是程式開發人員,都無法真正瞭解所要處理的問題,我們必須透過問題相關領域(domain)專家的協助,瞭解處理問題所需的專業知識,逐步將這些知識,轉換為軟體架構,例如處理銀行交易的軟體,我們會需要金融領域的專家協助,如果開發的是教學軟體,則需尋求教育領域的專家、老師的合作,以釐清需求,因此軟體開發的成敗,將會有很大的程度取決於是否貼近領域現實,「領域驅動設計 Domain-Driven Design」理論,可以協助開發人員透過各種技巧,實踐領域優先模式的軟體開發流程。

「領域驅動設計」是一套理論,非屬任何語言或平台,主要的目的,是讓軟體能夠依據特定領域知識進行設計,開發出貼近現實的軟體功能,並且根據領域功能切割與群組化設計,降低軟體開發的複雜度。

領域專家並不懂技術,資訊工程人員透過不斷的討論與溝通,抽象化領域知識,進一步轉化成描述領域問題的模型,然後根據模型發展軟體架構,撰寫程式碼,建立解決問題的軟體流程。



「領域驅動設計」中,領域模型是軟體開發最重要的關鍵。

單一模型的設計並不複雜,困難的在於如何透過模型組織領域知識,以利後續撰寫程式碼解決所要處理的問題,在這個過程中,我們必須能夠系統化的組織並且整合獨立模型,進一步群組化,形成聚合模組,這些過程是「領域驅動設計」最大的挑戰。

建構模型的另外一個難題,在於這些模型除了作為軟體開發過程的依據,另外必須同時能夠被用來與非技術背景的領域專家溝通,也因此我們需要可以跨領域的通用語言。

軟體設計有不同的方法邏輯理論,這其中各有不同的優缺點,重點都在降低軟體設計的複雜度,而「領域驅動設計」可以讓我們將其維持在可以控管的程度,無論採用的是何種設計邏輯。

僅透過文字理解「領域驅動設計 」理論,距離真正的實作還有一段距離,這套課程希望以ASP.NET MVC 結合 Entity Framework 為基礎,透過各種範例實際討論「領域驅動設計 」,建構運用「領域驅動設計 」的技術能力,學員必須同時具備物件導向設計原則以及軟體設計樣式等基礎,而這些內容包含快速入門「領域驅動設計」理論與實作的討論,都已經開發在我們的技術圖書《商業級 ASP.NET MVC 樣式與架構實務》,預計 5/30 上市,歡迎選購學習。

此課程未來將進一步專注在「領域驅動設計 」理論的實踐,並探討更複雜的軟體實作。










沒有留言: