與資策會合作規劃的「軟體架構師」培訓課程

這是明年 (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 的實作程式碼

[軟體課程] 設計模式(Design Patterns)實務與應用-使用 C# 與 UML (11/8,30 Hrs)

 o 日期:2014/11/08 起,每週六白天。
  每次上課為六個小時(AM 9:30~PM 4:30),共八個星期。
 o 預定上課日期:11/08, 11/15, 11/22, 11/29, 12/06
 o 上課地點:上課前一週以電郵/電話通知學員。

§ 課程介紹:

微軟提出 Web 的 MVC 解決方案,並利用 EF (Entity Framework)將 View 的 Model 與 資料庫緊密結合在一起。這讓系統開發會更形容易,但反之也造成 10數年前 4GL 盛行時代的 Client/Server 架構-無法有效設計具彈性的結構,來解決多變複雜邏輯的議題。

回歸到軟體人員應具有的基礎功-軟性的設計能力。而這能力的培養,並非由現實對 Web, 資料庫等存取實務技術就可以理解;而是需要研讀大量設計性書籍並具獨立思考的能力,方能設計出某個解決方案 (solution)的結構並應用於實務系統的運作上。

的確,從無到有或沒有方向的摸索是相當不容易的,所以我們會期望能借重軟體先輩們的智慧結晶與設計法則 (Design Patterns),解決現實設計所面臨的困境與難題;甚而更進一步,能進而活用與創造出所屬自己與團隊的 "設計模式"!

四人幫 (GoF, Gang of Four) 著作的「設計模式 (Design Patterns)」,可以說是軟體領域的孫子兵法。書中介紹的 23 個設計模式,已被大量運用在系統框架(Framework)及應用領域上;不過該書其實艱奧難懂,如同金庸小說中的「九陰真經」上卷一般,充斥的儘是心法,若沒有真經下卷功法的實務修練,是極難打通任督二脈的。

HSDc. 顧問團隊累積了10數年在軟體設計領域上持續研究學習 (大量研讀名家著作/論文)以及實務的經驗 (大型系統開發、顧問/授課輔導、產品開發...),期能以所累積的心得與實務,並配合現實的實務技術 (以 .NET 為例,會搭配 ASP.NET MVC 與 EF Framework 框架),把每一個設計樣式,寫成淺顯易懂的案例,讓有志於從事軟體設計業的學員們,可以理解設計模式所揭露的目的與意義,更能應用在現實的工作專案上。

===============================================================================
§ 課程特色:
 o 採 "問題-解決方案(Problem-Solution)" 的說明並佐以生活化的案例,進而帶出程式碼的實作與執行。
 o 以 UML 類別 (Class)圖說明各設計模式內的類別結構關係
 o 透過 HSDc 所開發的 Sequence Generator 工具,產出 UML 循序圖,以展現程式碼動態執行期間的物件呼叫關係。
 o 所有案例均採 ASP.NET MVC 5 框架最新規格,透過 Web UI 來呈現執行的結果。
 o 以四人幫「物件導向設計模式」典藏版一書 (葉秉哲 譯)為授課藍本;並再另以講師所提供的案例說明暨程式碼作成簡報講義教材。

閱讀全文 »

[課程]系統分析設計與實作—活用 UML/SCRUM 與 Java/Spring (8/23開課)

§ 課程介紹:

本次夏季班課程的關鍵重點為 SCRUM / Use Case / MVC / Spring ; 強調的是「敏捷、務實性的設計,以及可具重構的程式碼框架」。

 o 符合 Agile/SCRUM 的敏捷快速開發精神,快速從分析導出到實作,實踐 I&I (漸增與循環)精髓。
 o 說明如何規劃 SCRUM 的 BackLog 存貨觀念的需求分析,並如何以 Use Case 實現之。
 o 說明如何將存貨分解為 Sprint BackLog,規劃衝刺、亦即 iteration 的開發週期。
 o 界定功能需求,建立 MVC 程式碼框架,打通從 UI->中間層->資料庫的管道。
 o 說明如何將開發階段期間的分析設計,以標準的 UML 語法與便宜好用的 EA UML 工具記錄之。
 o 強調實作的設計,以 Spring Framework IoC 實作性設計,撰寫「無暇」的 Java 程式碼,並使之與系統服務分離。
  (系統服務包括:交易處理、永續性 (O-R Mapping)、安全性、分散性 ...等。)
 o 利用實作案例,演練如何重構程式碼,並列舉重構的判斷原則與主要技巧。

HSDc. 顧問開發團隊綜合多年來的大型系統實務輔導與開發經驗,並結合大量研究的理論知識與平台技術,所推出關於完整的系統分析、設計至實作的課程,期能協助軟體開發人員在現實的工作中,能瞭解完整的開發流程與各個角色的工作執掌與產出。

在基於以架構為中心來建立團隊具共識的整體觀下,能聚焦在適切開發單位的功能點內,快速地從需求分析導出到實作,找出並克服開發過程中,包括溝通、技能與技術等風險因子。而後基於這樣的框架目標內,得以對系統的結構作重整,卻又不至於影響已有的功能前提下,得以對程式碼施以重構的技巧,讓系統更有延展度與彈性。

觀念的傳授、設計的圖形化塑模表達、程式碼的實作三層次,是我們對於系統分析設計與實作課程的基本原則與態度。

修習本次系統分析的學員們,也必然可以拿到完整的教材、完整案例的 Model 檔與實作程式碼的對應,帶回去自行練習,並能對映於工作上,如此才會有顯著且實質的效益。

HSDc. 軟體團隊,強調的是「虛」與「實」兩者調和的『知行合一』...。
================================================================

§ 課程大綱:

閱讀全文 »

[課程通知]系統分析設計與實作—活用 UML/SCRUM 與 C# (4/19 開課)

「系統分析設計與實作—活用 UML/SCRUM 與 C#」,已確定於 4/19 (星期六)開課。

上課地點:台北市中山區建國北路二段3巷17號1F
交通地圖:可搭乘捷運至松江南京或南京東路站。

=================================================================

課程說明與課程大綱

http://www.javaworld.com.tw/jute/post/view?bid=14&id=318031&sty=1

o 日期:2014/04/19 起,每週六白天。每次上課為六個小時(AM 9:30~PM 4:30),共八個星期。
o 預定上課日期:04/19, 04/26, 05/03, 05/10, 05/17, 05/24, 05/31, 06/07
o 上課地點:上課前一週以電郵/電話通知學員。
o 附贈完整系統分析文件案例與歷屆技術研討會簡報 DVD 光碟。
o 同課程可保留再旁聽乙次的權利 (.NET/J2EE 系統分析課程均可。報名時註明舊生旁聽即可)。
o 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
=================================================================

閱讀全文 »

[課程] 系統分析設計與實作—活用 UML/SCRUM 與 C# (4/19,48Hrs)

§ 課程介紹:

2014 新的一年我們把課程焦點專注為「敏捷、務實性的設計,以及可具重構的程式碼框架」。

 o 符合 Agile/SCRUM 的敏捷快速開發精神,快速從分析導出到實作,實踐 I&I (漸增與循環)精髓。
 o 界定功能需求,建立 MVC 程式碼框架,打通從 UI->中間層->資料庫的管道。
 o 強調實作的設計,應用如微軟的 Entity Framework 與 Object Model,建立中間層與資料庫系統的 Mapping。
 o 利用實作案例,演練如何重構程式碼,並列舉重構的判斷原則與主要技巧。

HSDc. 顧問開發團隊綜合多年來的大型系統實務輔導與開發經驗,並結合大量研究的理論知識與平台技術,所推出關於完整的系統分析、設計至實作的課程,期能協助軟體開發人員在現實的工作中,能瞭解完整的開發流程與各個角色的工作執掌與產出。

在基於以架構為中心來建立團隊具共識的整體觀下,能聚焦在適切開發單位的功能點內,快速地從需求分析導出到實作,找出並克服開發過程中,包括溝通、技能與技術等風險因子。而後基於這樣的框架目標內,得以對系統的結構作重整,卻又不至於影響已有的功能前提下,得以對程式碼施以重構的技巧,讓系統更有延展度與彈性。

觀念的傳授、設計的圖形化塑模表達、程式碼的實作三層次,是我們對於系統分析設計與實作課程的基本原則與態度。

修習本次系統分析的學員們,也必然可以拿到完整的教材、完整案例的 Model 檔與實作程式碼的對應,帶回去自行練習,並能對映於工作上,如此才會有顯著且實質的效益。

HSDc. 軟體團隊,強調的是「虛」與「實」兩者調和的『知行合一』...。

==================================================================================================

課程大綱

閱讀全文 »

[課程通知] 系統分析-活用 UML 塑模與 Java (07/20, 48 Hrs,NT$10800)


[緊急通知] 由於蘇力颱風於星期六來襲,原定本週六 (7/13)開課不得以順延乙週,改為 7/20 星期六開課。

因金華街教室滿班,故 7/20 開課地點暫改為:
加爾第咖啡莊敬店。北市信義區吳興街269巷1弄21號
電話:(02) 2345-1136
http://kaldi-coffee.com.tw/mainwebsite/about4_a.html

(我們會免費提供高單價單品咖啡與甜點免費暢飲,以示補償。)

後續課程則改回金華街教室,地址:台北市金華街26號。

=================================================================
  (同等課程原價學費為 $30,000 以上)
 o 附贈完整系統分析文件範本 (Word 格式)與可執行的 C# 程式原始碼。
 o 已預繳報名費用學員,亦可選擇另 UML 著書:「「UML 團隊開發流程與管理」」。
  o 第二版整本重寫,比原第一版新增 100 餘頁,並同時附 Java 可執行的原始程式碼。
 o 同課程可保留再旁聽乙次的權利
  (.NET/J2EE 系統分析課程均可。報名時註明舊生旁聽即可)。
 o 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
 o 附免費茶點 (最後一日結業時附外訂精緻下午蛋糕咖啡等茶點)。
=================================================================

§ 課程大綱
閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal