明年度 (2017) 設計模式 (design patterns)課程的規劃與課程大綱

明年度關於 HSDc. 所開設之「設計模式 (Design Patterns)」課程,已確定與資策會數位教育研究所合作。招生與場地 (均為電腦教室可上機操作)由資策會負責;課程內容 (包括課程大綱與教材製作)與講師由 HSDc. 負責。

課程時間初步規劃為 30 小時,分為 3個星期 (兩週星期六、日,最後一週為星期六)教授完畢。整年度會開設四次課程,C#.NET 與 Java 各兩次輪流開設,也就是約一季開設乙次。第一次課程預計為 3/18-3/19、3/25-3/26、4/9(日),相關課程時程與報名資訊屆時均會同步公佈於 FB社團:軟體設計鮮思維

與原來 HSDc 所規劃的設計模式課程內容,有作過一些調整:

  • 增加物件與軟體設計基礎觀念介紹。
  • 增加對設計模式的結構框架說明。
  • 將 GoF 23 個設計模式分為數個性質相近的主題,每一個主題作系統性的說明。

課程簡介

.NET&Java 所提出 Web MVC (Model-View-Control) 係為 Web 端的解決方案,但並非對整個 Enterprise 系統架構的 MVC 方案-如何設計 具高度彈性具延展性的結構,來解決多變複雜 (包括實體系統的變動與業務邏輯的頻繁變更)的議題。

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

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

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

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

閱讀全文 »

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

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

又是資策會的課程@關稅總局

與「資策會」幾年來沒有往來,結果這個月反而教授了「資策會」兩個單位的 UML 基礎培訓課程。上一次那個課程是在資策會的教育訓練中心,而這次反而是到其客戶單位-關稅總局 授課。

只有三個小時、應該算是基礎性的概念與工具介紹。地點是在塔城街那邊,導航設定到達地點後才知道原來是那個「串珠街」的隔壁街。

中午在塔城、長安西路旁,有家「四川麵王」,點了紅油抄手與小菜。小辣 (可以指定)的抄手很好吃耶,讓我有些訝異,長這麼大竟然沒吃過這種東西啦。

提早了半個小時到,沒想到進到大樓後 (當然有辦證件),還被某一個看來應該較高層級的老主管叫住做身分盤查。挖哩,我到過許多軍方單位也從來沒有被這樣質詢過哩。

結果害我被驚嚇到,所以一開始上課時正襟危坐,認真的授課。問題是,當我認真時,就會很容易照本宣科、依照教材唸著給學員們聽。這樣的氣氛最沉悶了,其實學員也不容易得到想知道的。這樣經過了 30 分鐘,總算慢慢放開,再透過互動的過程中以了解關鍵學員的需求,再來調整授課內容。

喔,與上一次授課的團隊也有些類似,客戶單位已有了具國際標準的 XML 資料交換規格,他們希望了解如何透過 UML 工具自動轉換至類別 (class)的結構圖。

閱讀全文 »

到資策會教授資策會團隊 UML 課程~

我教授軟體設計相關課程至少有六、七年以上了吧?稍有些意外的是上個星期五才是第一次教授到資策會的團隊。教授的課程只是基礎的 UML 與 EA 工具使用的觀念引導。

這算是企業包班的課程,所以上課地點就是位於在資策會復興南、信義路口的教育訓練中心。距離上次來此已有四年了,因為四年前就是來這裡考 UML OCUP 認證,詳見:通過 OMG UML OCUP Fundamental 認證考試。不過,才上個月就已來過該棟大樓,拜訪位於樓上的「手機王」洽談專案開發的輔導事宜。

一整天的課程,早上我開車到位於「大安高工」後面的巷道內找車位。才 8:40 就找到車位,9:30 才上課,所以就到了馬路對面的 StarBucks 吃早餐。

早餐有雜糧麵包、沙拉,以及我喜愛的榛果拿鐵,大概花上 NT$100 餘元。到了 2F 坐下來用餐,乖乖,幾乎是客滿耶!這個時候該算是上班時間吧?所以看來悠哉的人也多了。在這裡用餐,一口一口的麵包,啜飲著咖啡,聽著音樂 (喔,還有幾個蠻時尚的女孩 😉 ),感覺上這樣的品味生活、步調不要那麼快急,也比較自在愉快的。

快到上課時就過去2F的教育中心,已經有幾個學員在裡面了。學員們大部都很年輕,甚而還有國防役的。我教課算是比較容易與學員打成一片,然後在課程教授的過程中,會調整內容與上課的節奏。期間才逐漸知道,原來他們不僅希望了解基礎的開發流程概念,同時也希望講師可以協助他們解讀國外某一個電訊交換領域的 UML 模型,是利用 EA 工具所設計規範的類別 (Class)圖模型。

閱讀全文 »

軟體思維顧問

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

Personal