[專案心得]After Action Review
簡介(點圖可看到清楚的放大圖)
Xmind
3-layer Architecture
這是我第一個使用3-layer Architecture的專案,
SA與SD也都是第一次以切層的方式設計,所以可以改善的空間還有很多。
這個系統使用了Spring.Net來簡化一些design pattern的設計,例如factory與strategy,
也使用了Spring裡的Data模組,讓DAL撰寫SQL statement的部分更加彈性,
也透過Spring裡的RowMapper來達成OR-mapping。
嚴格說起來,這是個貧血的domain model設計,
因為只強調了3 layer之間的垂直關係,而少了真正OO的domain object,物件之間互動的關係。
未來可以在BLL與DAL的位置,增加Domain object的區塊,讓整個Domain object可以互動,
讓使用者可直接針對domain object來進行抽象的行為,
也可以讓domain object重複使用BLL與 DAL的operation。
對整個系統分析的過程,可以更加清楚地看到domain的意義。
3-layer architecture有幾個重點:
- layer只關心上下層,不能跨層存取呼叫,透過interface建立strategy pattern,以Spring的Dependency Injection實作出來。
- layer之間並非一對一的關係,而是一對多的關係。例如一個UI的呈現,可能是呼叫多個service,每個service可能是呼叫多個DAO,回傳多個domain object的集合,最後組織成Presentation layer所關心的domain object,透過UI來呈現。
- transaction的部分做在Service layer,每一個service對資料的存取操作,都是獨立的transaction,由Spring的設定檔來實作transaction的控制。
- Unit Test的部分,針對BLL與DAL的每個method設計NUnit測試程式。
結論
每個專案都會有可取與值得改進的地方,
希望每次的經驗都可以讓自己更加的成長,讓之後的系統有更大的改善。
blog 與課程更新內容,請前往新站位置:http://tdd.best/