筆記:Domain driven design quickly
http://www.infoq.com/minibooks/domain-driven-design-quickly 什麼是DDD 參與角色:Domain Expert,Analyst,Developer 產品:Domain Model,Software Design Domain:一個會實際存在,被使用的系統。不同的系統有不同的運作邏輯、流程、資料。也是軟體要幫助的對象。Ex:銀行、書籍管理、進銷貨、股票交易,電信,這些是原來就有系統存在,軟體可以幫助這些系統運行。而像是遊戲、作業系統、這些原來沒有存在的系統,軟體就是把系統行為建構起來的基本組件。 Model:把實際存在,運作的事物抽象化就是Model,Ex:經濟模型、數學模型、物理模型...等,Model不是一個特定的圖,Model是一個idea,Model不只是Domain專家的知識,Model是一個嚴格組織與挑選過的,對於Domain專家的知識的抽象化。Model可以用圖來表示,可以用code來表示,可以用文字來描述。對於開發人員而言,Model就代表Domain。 Software Develop花太多的時間在code上,他們認為軟體就只是Object與Method。 建立Model的最主要目的,就是要拿來溝通。 Software Design可以說是整間房子的藍圖,Code Design算是實際蓋房子的方法。 Design Pattern就是Code design的一種方法 Waterfall的缺點就是作到最後沒人敢動 Agile的方式的缺點就是一開始沒有作周詳的設計 To be or not to be? Domain專家講的一定都對?No,Domain專家的語言不見得可以直接拿來做軟體,所以要問清楚,再作Modeling,Model也會不斷做修改。 DDD的目標就是透過與Domain專家溝通,作對應Domain的Mode,再根據Model,來作出Software Design,讓Design可以與Domain對應,而且讓參與製作產品的所有人,都可以透過Model這個共通的語言來溝通 The Ubiquitous Language Software developers腦袋裡面裝的就是Classes,Methods,演算法,Pa...