烏龜訂購系統開發實作與心得筆記
-從系統分析設計至實作與結構重整
(UML + Pure Java 版本)
-從系統分析設計至實作與結構重整
(UML + Pure Java 版本)
實作目標
- 藉由一個極小型的案例,來展示開發階段 (包括 需求分析、結構設計、程式實作)的主要產出 (artifacts),以及這些產出之間的關聯性。
- 本案例在需求分析與結構設計面採用 UML Modeling;實作面則使用 pure Java (JSP/Servlet, Java, JDBC) 開發。
- 展示目標導向的功能開發 (以使用案例, Use Case 為功能開發單位)方式,如何快速從需求分析流暢地橋接至程式編碼的實作,並保留三層式 (3-tier)分層結構的 MVC (Model-View-Controller) 框架,而可以用最小成本,來應付未來系統結構重整階段 (亦可稱為重構, re-factoring),讓系統更具彈性與延展性。
- 了解目標導向的開發方式,應用在學習所謂“新的 IT 技術”,尤其是偏向實作面的 “How-to”,包括工具的操作,與程式的寫碼等,是如何從所設定的主要完成目標 (main-goal),再分解成數個階段性的子目標 (sub-goal),然後一次只克服一小段問題,再往前漸增推進,往下一個階段目標前進。
- 從實作練習的過程中,逐漸熟習工具與相關實作技術的使用。「快速學會 How-to (如何做)」的能力,才是技術人員首需具備的技能 (skill)。
- 本案例雖然簡單,但它是可以持續“成長”的。所以實作人員也可以將之當成範本,並整理所屬自己的「實作筆記」,以記錄每一階段的實作過程,並可註記自己的筆記心得。
基本設計原則
- 從系統中間層 (middleware) 提供系統的功能性服務(service),也就是先實作表達功能性需求的控制物件 (control object)。而非從展示層 (presentation)的 UI (user-interface) 表單開始。
- 焦點應該是擺在以服務為導向 (service-oriented)、置於中間層的控制物件;不要再從 UI 開始來開發系統了,那很容易會是資料導向 (data-oriented)的 2-tier 思維,會使得系統僵化難以維護的。
- 實現企業邏輯 (business logic)於中間層的控制物件,而不應該寫在前端 UI scripts (如 JavaScript) 機制,或是後端資料庫的 stored-procedure,否則系統即喪失了延展性。
- 撰寫表達系統功能的控制物件後 (或同時),馬上就應該要撰寫可以測試該控制物件功能的測試程式碼 (functional test code);當控制物件與測試程式碼開發告一段落後,才開始寫 UI 表單來驗證控制物件所提供的功能服務。
- 確實可以滿足使用者所需要的系統功能後 (已經上線使用),下一個階段則可以視系統的再利用度與期望提升價值,來施以結構的重整,也就是重構 (re-factoring)。而重構的前提就是不能影響到已上線的功能。
- 「資料導向 (data-oriented)」 的開發思維會先把資料表格的設計列為是需要優先開發的階段,但因為往往共用性的考量而耗費相當多的時間。
「服務導向 (service-oriented)」的開發思維則是先個別以滿足使用者的需求快速實現出來 (但在實作上保留了可被延展與重構的 MVC 框架)。
至於共用性的考量與資料表格的設計,則可以推遲至稍後的整合階段與未來結構重整階段,可讓開發節奏更為順暢。 (簡單的說,服務導向即先滿足功能性需求,而資料則被 “封裝” 於服務之內,反成為次要的角色。)
筆記說明
- 每一個開發循環 (iteration)會先制定「階段達成目標 (sub-goal)」,以及該階段的主要設計與實作產出 (artifacts);再來就是列出實作步驟,以「手把手 (step by step)」的方式,每實現一小個步驟,即越推進該階段目標的達成。 (事實上,亦可以把每個實作步驟視為是一個個相關聯的特定目的, specific-goal。)
- 每一個步驟內會視需要來註記操作或用圖解說明 (這應該僅算是個參考)。操作說明有可能因為開發工具的不同或版本關係而有所差異。
事實上開發人員不應該拘泥於僵化的步驟,用自己的方法只要能達成該步驟想要達成的特定目的 (specific-goal)即可。 - 每一個階段的開發產出,包括程式碼與UML設計模型 (model)檔,均會儲存在個別的目錄。如此可以很清楚地針對各個階段的產出來作研究與實作練習。
- 在每一段的開發步驟,可以針對自己的實作心得或重點筆記摘錄下來。
開發工具
- EA (Enterprise Architect) 8.x UML Tool。
** 沒有該工具可使用 Free 的 EA Lite 瀏覽 UML Model 檔。
下載免費版: http://www.sparxsystems.com/bin/EALite.exe - Java SE6。
- Eclipse IDE for Java EE 3.6 (Helios)。
- Tomcat 6.0。