上課日期:2018/02/10-11 (星期六、日)
週六日上課 (09:30 ~ 16:30),共 12 小時。
上課地點:(確認上課前一週會以電話/電郵通知報名學員並公佈網頁上)
(歡迎來電洽談企業內訓包班課程,課程案例與實作可以採該單位專案內容來規劃)

線上報名

※課程介紹

這絕對是一個可馬上被應用到工作實務的實作範例,讓學員可以知道,只要確立了可滿足使用者特定目的 (specific goal)的系統功能,並大致勾勒出實現功能的主要程序/步驟,就可以馬上導出到控制類別的程式碼。而傳統資料導向的開發模式,卻往往需要等待需求分析的細節與資料庫的表格定義,甚至把表單欄位與資料庫表格耦合一起,難怪乎開發速度與後續的變動維護相當遲緩極難偵錯。

本課程主要讓學員瞭解「目標導向」的開發方式,應用在學習所謂「新的 IT 技術」,尤其是偏向實作面的 「How-to」,包括工具的操作,與程式的寫碼等,是如何從所設定的主要完成目標 (main-goal),再分解成數個階段性的子目標 (sub-goal),然後一次只克服一小段問題,再往前漸增推進,往下一個階段目標前進。

本課程會從實作過程中,讓學員了解 Java/Spring 主要實作技術的應用,包括「Spring Web MVC」、「Hibernate」的 O-R Mapping 技術。然後透過馬上撰寫「單元測試 (unit test)」的把關,後續就可以放心地對程式碼實行「重構(refactoring)」,讓程式碼更簡潔易於維護具彈性度。

從實作練習的過程中,逐漸熟習工具與相關實作技術的使用。「快速學會 How-to (如何做)」的能力,才是技術人員首需具備的技能 (skill)。

※課程目標

  • 藉由一個小型的案例,來展示開發階段 (包括 需求分析、結構設計、程式實作)的主要產出 (artifacts),以及這些產出之間的關聯性。
  • 展示目標導向的功能開發,如何快速從需求分析流暢地橋接至程式寫碼,並配合分層結構的 Enterprise MVC (Model-View-Controller) 框架,而可以應付未來系統重構,讓系統更具彈性與延展性。
  • 了解 JEE(Java Enterprise Edition) 在 Spring Web MVC 與 Spring/Hibernate 兩種關鍵技術的應用,並藉由控制類別隔離兩者之間的耦合。
  • 提供作為開發人員的實作範本,可以馬上應用在工作實務上,並未來可以擴展成為團隊的「實作學習筆記與範本」。

※課程大綱

課程單元 課程大綱
案例描述與實作目標
  • 界定系統開發功能,定義可獨立開發的主題 (Subject)
  • 利用UML系統循序圖描述實現系統功能的程序/工作項目 (Step)
  • 定義精要 (essential)的業務邏輯與資料欄位 (Detail)
  • 快速導出到 POJO(Java Plained-old Object)控制(Control)類型程式
    控制類別 => Subject , method => Step
  • 立即撰寫單元測試程式碼 (unit test code)
  • 連結資料庫與 Web UI 表單畫面
  • 重構 (re-factoring),讓程式碼更簡潔易於延展與維護
Iteration#1-
從需求快速導出到實作,建立程式碼框架
  • 安裝與設定 STS(Spring Tool Suite,內建 Eclipse) & UML 工具的開發環境
  • 說明系統功能的界定與實現方式 (定義可獨立開發的操作目的)
  • 建立 POJO 控制類別程式碼框架,對應系統功能的分析產出
  • 利用 JUnit 立即撰寫單元測試程式
  • 建立 Spring Web MVC 專案,實作可操作系統功能的表單畫面
  • 規劃 DTO(Data Transfer Object)資料物件,作為各類型物件的參數/回傳值的資料傳遞
  • 建立資料庫表格(Table),產出標準 DDL(Data-Defintion Language) SQL
  • 讓控制類別透過 Spring/Hibernate 框架實際存取資料庫
Iteration#2-
更新處理邏輯與加入更多欄位細節,並對共用部分做萃取重構
  • 修改程式碼細節,包括資料欄位與業務邏輯的實作
  • 在程式碼內新增對例外處理(exception handling)的實作
  • 從控制類別萃取共用性/複雜的商務邏輯,並設計共用性的領域物件(domain object)
  • 將原來資料庫的存取邏輯,從控制類別抽離至 DAO(Data Access Object)物件。
  • 新增測試案例,並利用單元測試程式把關,確保每一次程式碼變動的正確性。

※本案例實作效果:UI 完全隔離資料存取與邏輯處理﹔UI/物件模型/資料庫 可以達成各自維護與延展的高度彈性度!

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