[軟體課程] 系統結構設計塑模與實作 – 使用 UML 與 C#/Java (2020/12/19~,24Hrs)

報名資訊

上課日期:2020/12/19,20,26,27 (六、日)
週六日上課 (09:30 ~ 16:30),共 24 小時。招生中 (滿三人即開課!)
上課地點:上課前一週公布 (台北市區近捷運站)。
(歡迎來電洽談企業內訓包班課程,課程案例與實作可以採該單位專案內容來規劃)
均一特優惠價 (慶祝疫情年的結束):NT$10,500 (含稅)
線上報名

課程介紹

軟體唯一不變的真理就是一直在變!

開發人員往往面臨的問題不在於如何寫出來 (實作技術議題),而是在於如何保持系統的「彈性、延展、可重用性」的應變設計,而這就是軟體結構設計的根本,如何把軟體作軟 (keeping software soft)。

OOD/OOP (Object-oriented Design/Programming)有別於傳統程序 (procedural)導向的開發模式,就在於如何運用「封裝、介面、多型」等已運用於其它成熟產業乃至生活面的應變思維與技能。對比軟體系統而言,即是基於以 "類 (class)"為單位的組織設計與實作。

本課程涵蓋兩個構面的結構設計-巨觀 (macro view)與微觀 (micro view)。

巨觀結構設計是基於現實系統的分散議題-Web UI端、實體資料庫,來提出不相依於特定實體元件的解決方案。這裡推出最實用具應變與重構的實體分層框架-Enterprise MVC (Model-View-Control)模式 (並非是廠商針對 Web 端提出的 Web MVC 技術),讓系統主結構 (業務邏輯/資料存取)有效隔離UI端與資料庫元件的耦合。

微觀結構設計則是傳統物件導向所談及從領域概念模型 ,導出到軟體物件與資料模型。課程會介紹如何捕捉軟體主結構核心的技巧,運用「交易模式 (transaction pattern)」。有別於古典OO一開始就要求較完整的設計 (太過理想化),現今系統開發則更為務實-運用重構 (re-factoring)的技巧,持續逐漸地重整系統,效果即是簡潔的程式碼 (clean code)。而伴隨著重構的一項必要機制與紀律就必然要求一開始就要撰寫單元測試程式碼 (unit test code)。

上述兩個構面是互補的。軟體主結構一開始就不會實作於特定的UI/資料庫端,以最純淨的 POCO/POJO (plain-old CLR/Java Object)物件來實作,如此才有機會得以實施後續的重構,而重構則取決於某一功能的複雜度與價值來評估,進而創造出系統整體的再利用價值。

本課程在結構設計的塑模會採以 UML 類別(Class)/循序(Sequence)圖,進而運用元件(component)/複合結構(composite structure)圖來表達上述巨觀與微觀的設計;而實作部份的案例程式碼則會同時採以 C#.NET 與 Java/Spring 並整理成專案範例檔可以透過IDE工具執行與參考。

課程目標

  • 活用 UML 塑模表達結構設計,並讓設計圖形力求簡潔與層次感。
  • 了解 UML 工具於結構面的設計應用。
  • 了解 UML結構設計與實作程式碼之間的對應關係。
  • 了解為何/如何實作分層結構框架,並以重構的態度逐漸導入到微觀的結構實作。
  • 實作案例過程會帶領學員,把學習與作業成果,利用 Git 版控與重構程式碼。

課程對象

  • 專職系統設計師(SD),想提昇在結構設計領域上所需的技能。
  • 技術職開發人員,想知道如何有效組織程式碼結構。
  • 對以物件導向設計與實務應用有興趣者。
  • IT 與產品開發單位,想瞭解如何讓系統開發/維護更具彈性、可重用、延展性等特性。

課程大綱

課程單元 課程大綱
結構設計基本功—
物件導向 (Object-oriented)思維
  • 釐清物件(object)與類別(class)的關係
  • 類別之間的關係 (使用 UML 類別圖)
    • 關聯 (association)
    • 整體/局部 (whole-parts)
    • 一般化/特殊化 (generalize-specialize)
  • 解決軟體複雜度的三大思維
    • 封裝 (encapsulation)
    • 繼承 (正確應為擴展,extend)
    • 介面 (interface)與多型 (polymorphism)
  • 範例展示-UML 類別設計與C#.NET 與 Java 程式碼
巨觀 (Macro View)的結構設計
  • 使用UML元件 (component)與複合結構 (coposite-structure)圖
  • 單一系統的分層結構設計—採用 Enterprise MVC 框架
    • View-負責UI的呈現 (present)與接收外部系統的呼叫
    • Control-負責問題領域 (problem)資料存取與業務邏輯的控制邏輯
    • Model-作為各類型物件之間資料傳遞的參數與回傳值的資料模型
    • UI/資料庫/業務邏輯 有效隔離並分而治之的高彈性與易於維護延展的設計
  • SOA (Service Oriented Architecture) 異質系統間的架構設計與POC
    • 利用複合結構圖表達異質系統的架構設計
    • 案例實作-C#.NET與Java/Spring 系統之間的整合範例,使用Restful/JSON Web Service 實作
  • 微服務 (micro service) 的系統架構設計
    • 比較微服務與元件 (component) 及 功能模組 (module) 間的差異
    • 如何有效界定 Bounded Area 並實現微服務的分層設計與微服務之間的整合。
微觀 (Micro View)的結構設計
  • 使用 UML 類別與物件合作 (循序)圖
  • 中間層(middle-tier)的物件模型 (object model)結構設計
    • Control→封裝問題領域的資料存取與業務邏輯,並擔任控制邏輯的責任
    • Boundary→負責連結資料庫 (如 DAO 類別)或外部系統 (如 Adapter 類別)
    • Entity→專司核心業務邏輯的處理 (如 Order、Product 等領域類型類別)
  • 運用交易模式 (transaction pattern)有效捕捉問題領域的核心物件
    • 中間層的Entity 物件模型
    • 資料庫的資料模型
  • 進階運用-使用設計模式 (Design Pattern)針對行為面的設計
    • Facade → 封裝的運用,如 Domain Controller 封裝資料存取與業務邏輯。
    • Strategy → 針對單一行為卻有多種條件判斷處理運算邏輯的設計。
    • Composite → 複合物件的結構設計。
實作案例研討
  • 從系統功能的分析導出到實做程式碼的控制類別
    • 使用 POCO/POJO (plain-old CLR/Java object)實作功能類別與單元測試程式
    • 採用 Web MVC 框架實作 UI 表達層,並可以確實連接功能類別
    • 設計 DAO(Data Access Object)物件,實作 OR Mapping 框架(E.F/Hibernate Framework)存取資料庫
    • 設計 DTO(Data Transfer Object)資料物件,成為各層物件傳遞的參數/回傳值
  • 符合 Enterprise MVC 分層結構框架,具有平行分工與可重構程式碼的特點
  • Clean Code 簡潔程式碼的原則—採逐漸迭代重構 (refactoring)的開發原則
    • 每一個 method 不超過 30 行
    • 傳遞的參數不超過五個以上
    • 隨時保持程式碼在正確的狀態下(透過單元測試程式把關)
  • 軟體彈性/延展的設計原則-低耦合(low coupling)與高內聚力 (high cohesion)

課程費用

  • 均一特別優惠價:10,500 (慶祝疫情年的結束,滿3人即開課)
  • 原價: NT$24,000元(含稅);線上報名並預繳報名費用者優惠:NT$12,000 (含稅)。
  • 早鳥優惠 (至 03/31 前止)價:NT$10,800 (含稅)。
  • 舊生優惠:NT$10,800元(含稅)。
  • 兩人同行,費用再折抵95折、四人同行則折抵為9折。
  • 本系列課程若期再次旁聽,原價三折 (NT$3,600)。
  • 清貧或由家扶中心推薦,可留言說明或電話聯繫,所有費用 免費!
**備註**
  • 上述課程費用已含電子教材檔、UML Model檔、程式源碼 (含版控)。
  • 為確保報名足額人數,煩請報名完成後再以 ATM 轉帳預約費用 ($1000,當然也可一次繳清)。
  • ATM 轉帳帳號請參考報名表單內匯款帳號。並請於報名確認信所附鏈結點選編輯,可於報名表備註欄位內,註明您的轉帳帳號末 5 碼與轉帳金額。
******

參考產出

備註資訊

授課講師:
 Kenming Wang
 o 具有近20年豐富教學與顧問輔導經驗。
 o 擅長引導學員反思並找出答案。
 o 專長大型系統架構規劃、企業/系統流程與系統分析、
  巨觀/微觀結構設計、精通 .NET/Java 兩大平台技術應用。
 o 專職軟體設計顧問/講師。

備註:
 o 教室設備包括白板與投影機,由講師親自說明與操作示範。
 o 學員最好能攜帶筆電(可無線上網),可於課程中實際操作與練習。
 o 若未達上課人數(原則以5人以上)則延期至下一梯次開課;
  已報名學員可申請退費(或可保留至下一梯次)。
 o 開課前一週會以電子郵件/電話聯絡通知學員。
 o 遇颱風等天候因素,則延至下一週上課日(會主動通知學員)。


如有課程相關問題,歡迎來信或來電洽詢
---------------------------------------------------
電郵: gnimnek168@gmail.com
Blog: http://www.kenming.idv.tw
軟體設計鮮思維:
https://www.facebook.com/groups/softthinking/
聯繫電話: 0922236977

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *