這是明年 (2015)元月份與資策會「數位教育研究所」所合作規劃,課程主題就定為「軟體架構師培訓班」。
綜觀軟體架構的三大構面-需求分析、結構設計、程式設計,軟體架構師要能有足夠的高度與相關技能來調和這三大面向。幾年前寫的幾篇文章,可以參考-「從軟體架構師(Architect)的觀點來看軟體開發流程」。
原來課程時數為24小時,不過整個內容規劃後時間實在有些勉強,所以協調後再調整為28個小時。兩個星期假日 (星期六、日)上完,共四天時間。
當然,短短幾十個小時也不可能窮盡涵蓋到軟體各層面的細節,所以內容的規劃係以整體性軟體架構的框架 (skeleton)為主。從介紹三大構面所各應具備的相關核心技能與技術外,再佐以實際的案例並透過實作產出得以當為範本。至於如何培養出快速聚焦的能力、有效調和各個構面的開發與相關產出,這就需要有志於往軟體架構師一職者,所應長期修鍊與學習的方向所在。
課程內容的比重,我把主軸擺在「實作性的架構設計」。這仍是比較現實的問題,在中小型系統,實作面的技術,還是決定系統開發成敗的主要關鍵。所以課程會以實際的案例演練,第一期的課程係以 Java Spring Framework 當為實作的技術與架構設計的標的 (當然再下一季的課程會考量改以 C#.NET Framework)。一致性的架構設計與規劃的理論基礎,而可以套用在不同的實作技術。
這裡我列出所規劃的課程大綱。若想瞭解更多細節或欲報名本課程的學員,可以至本文開頭所列的資策會網址瀏覽報名;另外,若讀者有一些想法與建議或問題,也歡迎在此留言討論。
課程單元 | 課程內容大綱 |
---|---|
軟體架構導論 | 。What and Why Architecture? 。瞭解架構的三大面向-需求分析、結構設計、程式實作 。比較 Architecture/Structure/Framework 的區別與定義 。以架構為中心的開發模式 。架構的 POC (Proof of Concept)與主要產出(UML Template) |
需求分析 | 。定義系統開發範圍 (System Boundary) 。系統需求架構設計-利用使用案例模型 。 從使用案例橋接到實作的關鍵-界定使用者期望與需求陳述 。UML 產出-使用案例、功能類別 (Class)與物件合作循序 (Sequence)圖 (Diagram) |
結構設計 | 。定義Enterprise MVC (Model-View-Control)的分層架構規劃與設計 。展示層 (Presentation Layer)-UI 與 SOA 。領域層 (Domain Layer)-企業Domain的商務邏輯 。永續層 (Persistence Layer)-Data Access 與 Adapter 。UML 產出-類別與元件 (Component)圖 |
Java Spring 實作 | 。 Spring Framework 的核心觀念-IoC (Inversion of Control) 。Spring MVC-Web UI 的架構設計與實作 。JPA (Java Persistence API) with Hibernate-透過 JEE 標準介面實現資料存取與交易處理 |
案例研討 | 。以 推特 (Twitter)系統架構設計與開發為例 --利用使用案例建立需求架構模型 --Pure Web-tier UI 設計-隔離商業邏輯與資料存取 --領域物件與資料庫的結構設計 --Java Spring 的實作程式碼 |