[軟體開發] 敏捷式的平行開發流程模型

前些時候,我們團隊所輔導 (並主導其中的核心開發)某家頗具知名規模的商務網站,該公司經營者總覺得他們原來的開發產出速度緩慢,希望能借重我們在實務開發上的經驗,而能改善開發製程,加速開發上的產出。

我發現到 (應該也可說是意料中事),即使是擁有10幾個以上開發人員的大型網站系統開發,其所謂的系統分析/設計的開發模式仍是採以最典型的 Client/Server 方式。Client 端(也就是 Web 端)主要採以畫面為主的需求分析;Server 端則以資料庫的資料模型為設計核心。

簡單的說,這類開發模式是屬於「資料導向 (data-oritented)」,直覺且簡單,系統規模小且營運需求並不常變動,這樣是行得通的,而且在系統開發的初期會是相當快速的;但當營運規模大得經常會要求系統快速配合商務運作,「資料導向」的開發模式卻往往耗在所謂的「共用性整合」議題上太多等待時間了,那種有著「剪不斷、理還亂」的感覺,不僅讓人苦惱,也是引起紛爭的主要來源。

其實原因也很單純,「資料導向」實際上早已悖離了軟體開發的第一個最基本原則:「封裝 (encapsulation)」。過早揭露資料與邏輯的細節,而使得系統的複雜度提升。

所以,該如何改善開發製程呢?當然就要懂得如何遵守「封裝」的設計原則,而採以 MVC (Model-View-Control)的架構則會是遵循封裝原則的第一個必要手段。

不過要釐清這裡所謂的「MVC」,可不是 Java Struts 或 ASP.NET 的 MVC 框架;系統廠商所提出的 MVC 框架,那是針對 Web 瀏覽器與伺服端如何控管 WebPage 狀態,是關於如何於 Stateless (無狀態)的 UI 設計議題所提出的解決方案 (solution domain)。

而關於企業層級 (enterprise)系統的 MVC 架構,則是回歸到問題領域 (problem domain)上,如何在呈現 (presentation)與業務邏輯 (business logic)兩個層級間,能有效隔離兩者的耦合性 (coupling)。

基於上述的開發原則,我們對開發流程的調整,其實就是在 client (Web UI)與 Server (Model)之間,規劃了控制層 (control layer),藉以隔離中介 Client/Server 的直接耦合;Web UI 團隊與 Model 團隊係以平行分工開發 (parallel development),各自依據其職掌-Web UI 專注畫面呈現與動態技術的實作;Model 專注於系統功能的實現 (realization)。兩者均只與控制層所設計的規格 (也可稱之為功能介面)溝通,所以誰不需等待另一方的產出,如此也就不用初期就耗在所謂共用性議題的等待上。

再者依照敏捷 (agile)的開發精神,整個開發產出係採以 I&I 漸增與漸進 (Iterative & Increment),期待作持續性的整合 (continuous integration,以版本控制系統如 Git 作為整合的儲庫)。最好是每日就作整合,最遲不要超過一個星期。

關於敏捷式的平行開發流程 (agile parallel development process),我們利用 Eriksson-Penker Business Extensions 語法 (俗稱火箭圖)所規劃的開發流程總覽 (overview)如下圖1。然後關於 Web UI、Control、Business Model 這三個層塊,再各自以 UML 活動圖 (activity diagram)來表述它們細部的開發活動,參考下圖 2~3。

敏捷式開發流程模型-Overview
(點擊圖片鏈接看原圖)圖1、敏捷式平行開發流程模型-Overview

繼續閱讀 »

[軟件書推薦] Ringle 著作-UML團隊開發流程與管理第二版
UML團隊開發流程與管理第二版 UML團隊開發流程與管理第二版
-----------------------------------
作者: 賴信仁
出版社:悅知文化
出版日期:2011年07月20日
ISBN:9789866072246

內容簡介
  ■從情境案例學習UML 2.3版中,14張圖形的應用時機
  ■完整分析如何透過UML正確表達軟體設計的精神
  ■可依據不同平台的需求,學習使用Java或C#為軟體開發工具
  ■內含LAB練習單元,可藉由實作確實了解軟體開發的種種面向
  ■使用工具的進階功能,了解團隊合作開發的基本精神

對於軟體設計的初學者來說,面對大量資訊時,往往不知從何處著手。本書作者依據多年教學經驗,以情境案例為教學主軸,適合以下需求的讀者作為學習指引:

  • 想要了解UML及其應用時機
    本書第一篇設計了一個完整案例,並將UML的14張圖形應用在該案例中,利用對話的方式,說明14張圖形的基本精神及應用方式,讓讀者可以透過實際案例了解UML的基礎。
  • 想要了解如何在實際專案中應用UML
    本書第二篇設計了另一個完整案例,搭配工具軟體,並配合UML、MDA及不同平台的程式語言(Java、C#),藉此可學習到如何在實際案例中應用UML,並提供LAB練習單元,讓讀者可以「從做中學」。
  • 想要學習如何充份發揮軟體開發團隊合作模式
    本書第三篇設計了團隊合作的情境案例,透過虛擬專案的進行,讓讀者可以了解團隊中的各個角色,以及如何挑選適合的工具。
  • 想要了解Enterprise Architect 8如何使用
    Enterprise Architect是一套完整的UM L支援工具,完整支援UML 2.3版的14張圖形,並支援多種程式語言及資料庫,且提供了強大的客製化空間。書中範例使用此軟體進行實作,藉此提供軟體操作及客製化之技巧。

去年底 Ringle 的著作-「UML 團隊開發流程與管理 (繁體/簡體版)」第一版就已賣光。原來他答應出版社作些錯誤修正後就準備要在今年初再版,結果他竟然又再整本書內容重寫過一次,足足花了兩個多月的時間,甚至再加上 Java 程式碼的範例 (第一版只有 VB.NET),不得已再版日期也就延宕到七月中旬,總算鋪貨到各經銷書商了。

繼續閱讀 »

第 1 頁 / 共 242 頁123456789101112...203040...最後一頁 »