§ 課程介紹:
本次夏季班課程的關鍵重點為 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. 軟體團隊,強調的是「虛」與「實」兩者調和的『知行合一』...。
================================================================
§ 課程大綱:
o 第一階段課程目標 (24 Hrs):
o 利用 UML 工具實作 使用案例/類別/循序 圖。
o 有效組織與整理系統功能需求 (Backlog/Use Case)。
o 快速設計、建立系統 MVC (Model-View-Control)框架。
o 產出程式碼骨幹,打通從 UI-中間層-資料庫 管道。
一、方法論-開發流程與UML塑模 (6 hrs)
o 敏捷式的開發流程
o 介紹 Agile/SCRUM 核心原則與開發方法。
o 比較 瀑布式 vs. I&I (Increment & Iteration)的開發模式
o 專案開發各階段(SA/SD/Coding)的主要產出(artifacts)範本
o 軟體開發的最佳實務 (Best Practices)導引
o 軟體塑模 - 統一塑模語言(UML, Unified Modeling Language)的綜觀介紹
o 利用完整案例導引 UML 的十三種圖形 (Overview)
o 說明 需求面/結構面/實作面 等三大構面的設計圖
o UML 工具的示範操作
o 完整 UML Model 範本 (附於課程操作光碟內)
二、需求面的系統功能分析與設計 (12 hrs)
o 觀念導引-規劃與分析 SCRUM 的 Backlog
o 如何定義 Backlog
o 如何以 Use Case 實現 Backlog
o 如何分解 Sprint Backlog,成為有效的開發週期
o 分析何謂企業流程與系統功能
o 利用火箭圖/活動圖記錄企業流程
o 利用使用案例圖捕捉系統功能
o 從企業流程的活動圖導出到使用案例圖的步驟
o 建構使用案例模型
o 利用使用案例圖表達系統的功能需求
o 如何界定系統範圍(System Boundary)
o 如何找出使用案例與參與者(Actor)
o 使用案例之間的關係— include and extend
o 利用使用案例圖表達架構觀點
o 使用案例敘述(Description)的寫作實務
o 如何寫出高品質的使用案例敘述
o 如何依據使用案例範本完成使用案例敘述的撰寫
o 如何表達正常、替代、擴充與例外事件流程的敘述
o 寫好每一條動作步驟陳述的要領
o 使用案例的重點補充與資深SA的經驗分享
o 資深 SA 現身份享在業界的實務分析經驗談
o 針對每一個使用案例,撰寫測試案例 (Test Case)
o 利用 EA "Document Generation" 機制產出美輪美奐的需求報表文件
三、案例分析與實作 #1 (6 hrs) by UML 三劍客
o 說明三劍客的應用時機- 使用案例模型、類別圖、物件合作循序圖
o 使用案例的實現(Realization)與實作
o 軟體開發的至高原則-MVC (Model-View-Control)設計樣式
o 利用類別圖設計與創建 Use Case 控制物件,實現使用案例的功能需求
o 利用循序圖表達程式碼物件的互動設計
o 利用 EA UML 工具
o 實做使用案例模型(Use Case Model)、類別圖、循序圖
o 利用 Code-Generator 機制,產出 Java 程式碼框架
o 設計控制 (Control)物件,實現使用案例所分析的功能需求
o 規劃 JavaBean Value Object,成為 UI 與控制物件 間的參數傳遞型別
o 利用虛擬碼(Pseudo Code)撰寫程式碼內部的細節
o 利用 Java Eclipse IDE 撰寫
o Java Struts Web 表單
o Java 控制(Control) 物件 by JavaBean
o Java 資料存取物件(DAO) by Hibernate
o 利用 JUnit 撰寫功能與單元測試程式碼
o 測試先行—在 IDE 工具內撰寫該控制物件的測試程式碼
o 應用程式的部署(Deploy) - Apache Tomcat & Derby DB.
o 實際執行應用程式碼的部署與執行功能測試
--------------------------------------------------------------------
o 第二階段課程目標 (24 Hrs):
o 系統延展、彈性、可重用性的設計原則
o 如何重構程式碼 (類別結構)
o 物件與設計樣式 (Design Pattern)的基礎觀念
一、物件導向觀念養成與應用 (6 hrs)—觀念、模型與程式碼的三面表達
o 瞭解「類別(class)」與「物件(object)」的區別與關係
o 結合(association)、組合(aggregiation) 關係
o 一般-特殊化(generalize-specialize)關係
o 封裝(encapsulation)與多型(polymorphism)的設計觀與應用
o 繼承(Inheritence)與介面(Interface)」的設計原理
o 程式碼範例—
o 利用 Java 程式碼表達類別的結構關係(結合,組合,一般-特殊化)
o 利用 Java 程式碼呈現介面與多型的設計實作
二、軟體結構面的分析與設計 (9 hrs)
o 建構領域 (Domain)至物件模型的技巧與方法
o 從使用案例的敘述中找出潛在的概念物件。
o 運用交易樣式(Transaction Patterns)找出核心交易物件
o 資料庫表格的設計
o E-R (Entity-Relationship) Model 的分析與設計
o 利用 EA UML 工具設計 E-R 圖,並轉為可以匯入資料庫的 DDL SQL 敘述檔
o 實體 (Entity)物件的設計
o 物件的責任分派(responsibility assign) — 屬性與行為的分析
o 利用類別圖建構問題領域的物件模型 (Problem Domain Object Model)
o 活用設計樣式(design pattern)
o Design Pattern Overview - 生成類、結構類、行為類 總覽介紹
o 合成(composite)樣式的設計 — 樹狀結構/BOM 表的最佳呈現
o Facade and Adapter 樣式,表達在 Control and Boundary 物件的設計原則
o 分析類別(Analysis Class)的設計
o Control 物件
o Entity (Business)物件
o Boundary 物件
三、案例分析與實作 #1 (6 hrs)
o 程式碼重構的設計原則
o 分析程式碼冗長的 method,撰寫 Clean Code
o 找出程式碼重複多餘 (redoundant)的部分,設計共用物件
o 確實釐清物件的責任分派 (Responsibility Assign)
o 分析類別在中間層 (Middleware)的實現
o 實現 Controller by POJO (pure Java object)
o 實現 O-R Mapping by Spring Framework
o 實現 實體 (Entity)物件 by POCO
o 利用 Eclipse 重構程式碼結構
o 利用 EA 更新類別與E-R圖,並重新部署 DDL DB Schema 至 Database
o 利用 EA 實現正反向工程,達成程式碼與 Model 的同步
o 利用 Iteration #1 所撰寫的測試碼驗證與修正被重構的程式碼
--------------------------------------------------------------------
§ 整體開發流程總複習
o 檢視兩個階段的開發所產出的設計圖與程式碼
o 回顧每一個流程開發階段的產出與所運用的設計、技術與技能
o 學員課程中的問題提問與回答總整理
================================================================
§ 補充相關資訊:
§課程費用:
o 大學/研究所 資訊相關科系講師、助教或教授,出示相關證明,我們會以建教合作方式計費。(請另以電話聯絡)
o 清貧或由家扶中心推薦,請出示相關證明,所有費用 免費!!
o 授課講師:
o 賴信仁(Ringle Lai)、王克明(Kenming Wang)、陳亞瑟(Arthur Chen)等。
o 具有在業界十年以上的顧問輔導、教學與實際大型系統開發經驗;
擅長以非常淺顯易懂的比喻及說明,將複雜的系統抽絲剝繭,重新釐清脈絡,
讓學員一清二楚,並善於引導學員具備設計應有的反思能力。
o 備註:
o 教室設備包括白板與投影機,由講師親自說明與操作示範。(學員可攜帶錄音筆)
o 學員最好能攜帶 Notebook(可無線上網),可以於課程中實際操作與練習。
o 上過本課程(.NET/Java 均可)學員,仍可免費旁聽本課程。(每次保留5名旁聽名額。)
o 若未達上課人數(原則以15人以上)則延期至下一梯次開課,已報名學員,本中心會電話通知,並主動辦理退費(或可保留至下一梯次)。
o 開課前一週會以電子郵件聯絡與通知學員。
o 遇國定假日或颱風等因素,則延至下一週上課日(本中心會主動通知學員),以此類推。
----------------------------------------------------------------------- o 諮詢專線:TEL: 092236977
o 服務信箱:gnimnek168@gmail.com
o FB社團:軟體設計鮮思維