[案例研討] 烏龜訂購系統開發與實作 by UML and Java-02

兩階段開發的目標設定

重點說明

本案例的演練區分為兩個釋出 (release)階段。在現實的專案開發,每一個釋出版本都應該是可以滿足使用者的功能需求。兩個釋出版本的重心為:

第一個階段:快速實現功能需求,但保留了可以具延展性的 3-tier MVC框架。
第二個階段:找出穩定的共用元素,讓系統更有彈性。

第一個階段 (release #1)在內部的開發週期分為兩個循環 (iteration)。第一個循環 (iteration #1)快速實現幾個具代表性的使用案例,並打通技術關節。而相關於邏輯處理或欄位細節等,則留待第二個開發循環 ; 所以第二個開發循環 (iteration #2)著重在於對精細度的要求,包括欄位細節、企業規則的邏輯 (business rule logic),以及對於例外事件的處理 (exception handling)。

第二個版本的釋出 (release #2),則除了在於擴展系統功能外,還希望能就維護性、彈性度等議題來作調整。此階段重點在於對系統組成結構的重整 (物件與資料結構),或亦可在程式碼上對其重構 (re-factoring)。結構重整或重構皆為共用性設計議題的整合考量,所耗費的開發成本往往比較高 (但也相對容易提升系統的價值),且須具備相當基礎的軟體設計素養才有能力將軟體做軟 (keeping software soft)。

兩個不同階段時期的釋出版本要能順暢的橋接,至少要能有兩個必要的條件:

  1. 3-tier MVC (Model-View-Controller) 實體IT框架。
  2. 以使用案例為單位的功能性測試程式碼 (function test code)。

** 關於 Release 與 Iteration 的意義與差異,可參考:
http://www.kenming.idv.tw/soft_development_iteration_vs_release-2

閱讀全文 »

[案例研討] 烏龜訂購系統開發與實作 by UML and Java-01 (4/25 新增原始碼下載)

烏龜訂購系統開發實作與心得筆記
-從系統分析設計至實作與結構重整
(UML + Pure Java 版本)

實作目標

  1. 藉由一個極小型的案例,來展示開發階段 (包括 需求分析、結構設計、程式實作)的主要產出 (artifacts),以及這些產出之間的關聯性。
  2. 本案例在需求分析與結構設計面採用 UML Modeling;實作面則使用 pure Java (JSP/Servlet, Java, JDBC) 開發。
  3. 展示目標導向的功能開發 (以使用案例, Use Case 為功能開發單位)方式,如何快速從需求分析流暢地橋接至程式編碼的實作,並保留三層式 (3-tier)分層結構的 MVC (Model-View-Controller) 框架,而可以用最小成本,來應付未來系統結構重整階段 (亦可稱為重構, re-factoring),讓系統更具彈性與延展性。
  4. 了解目標導向的開發方式,應用在學習所謂“新的 IT 技術”,尤其是偏向實作面的 “How-to”,包括工具的操作,與程式的寫碼等,是如何從所設定的主要完成目標 (main-goal),再分解成數個階段性的子目標 (sub-goal),然後一次只克服一小段問題,再往前漸增推進,往下一個階段目標前進。
  5. 從實作練習的過程中,逐漸熟習工具與相關實作技術的使用。「快速學會 How-to (如何做)」的能力,才是技術人員首需具備的技能 (skill)。
  6. 本案例雖然簡單,但它是可以持續“成長”的。所以實作人員也可以將之當成範本,並整理所屬自己的「實作筆記」,以記錄每一階段的實作過程,並可註記自己的筆記心得。

基本設計原則

    閱讀全文 »

大陸深圳軟件課程教學行-食宿篇 (20101205~09)

鑒於去年對岸該企管公司所安排的住宿旅社甚為不滿意 (窄小且周遭環境差,雖然還算乾淨),這次在合約中就有要求起碼要安排有商務級的旅館。所以對方承辦人這次幫我們訂下了這棟位於深圳南山區的「新年酒店」 (大陸好像許多商務級旅館都稱叫做酒店)。
深圳軟件教學行@新年酒店

該飯店應該是有四星級左右的水平吧。整棟大樓高達 31 層樓,而且是位於鬧區內,一轉出去就有許多餐館與百貨公司等,要溜達用餐都很方便。

對方幫我們共租了三間雙人房,而且是位於不同樓層。 (我住 27F, Ringle 15F, Arthur 28F,這樣好,落得清淨。) 房間內擺設也算簡單,一張大床、一台貼壁的液晶電視、一張小辦公桌、一套淋浴的衛浴設備。雖然我住在高達 27樓層,但是晚上俯瞰外面,根本也沒有如台北這樣的燈水馬龍一般,沒有像樣的夜景,所以也不想拍照。
閱讀全文 »

大陸深圳軟件課程教學行-交通篇 (20101205~09)

今年的三日課程,主角當然還是 Ringle (對方是因為他所出版的書籍才找上我們的),我算是當個 "小弟" 賺些教課的零用錢。另外也同時找了 Arthur 一同前往,想說算是另類的教學兼大陸旅遊行。

鑒於去年搭機是從香港入境再搭乘小巴士到深圳,還要多花上快兩個小時,實在相當麻煩,所以今年我們就提早訂購直航深圳往返的班機。而 12/05 (星期日)則只有華航的班次。
深圳軟件教學行@華航班機

我實在不喜歡搭乘華航,但也不得已。結果 14:30 的班次,我們約 13:00 抵達桃園二航廈機場,竟座位已滿,所以櫃台小姐詢問我們意願,是否轉抵達到香港機場再由他們提供的小巴到深圳我們所指定的住宿飯店,同時也免費升等商務艙。Ringle 問我意見,好吧,我還從來沒有坐過商務艙,且又不趕時間,體驗一下商務艙的感覺也不錯。

閱讀全文 »

大陸深圳軟件課程教學行 (20101205~09)

據 Cathy 說,去年我們在大陸深圳教學的品質還算頗獲好評,被學員評分有 90 餘分 (有與該連洽的企管公司簽約,若學員評分不及格,則餘下的一成尾款無法給付)。所以,我們團隊與該大陸對岸的企管顧問公司合作也頗為愉快,今年又再一次續約,至大陸深圳軟件園區、中國最大電信業「中國移動」的子公司教授軟件開發的課程。

這個月初簽妥合約,並確認了本次教授課程的大綱,授課日期為 12/06~08 三日,授課對象與地點均與去年相同 (深圳軟件園區內一棟圓形的建築,好像是北大研究院吧)。

原委由 Cathy 給的課程大綱對方並不太滿意,客戶單位這一次想瞭解互聯網 (Internet)的系統開發模式 (著重在開發流程),以及開發人員角色及相關使用的工具應用與開發產出等。

聽說客戶單位對 Java-based 的實作技術相當純熟,所以這次我重新規劃了本次教學課程的大綱與方向,以 "推特 (twitter)" 微網誌系統的案例 (Case Study),來滿足上述需求,並採用 Java Spring/Hibernate 來實現該系統的實作。

這裡還是不得不佩服 Ringle,我的要求請他實作上述技術並將過程寫成教材。他不眠不休,就在上飛機的前一天,一同與 Arthur 花了三天就真的完成了百多頁的教材,還貼圖展現整個實作的過程。然後再配合我做的使用案例需求模型、類別的結構模型,以及相關技術的理論文件,給予對方的講義內容也將近厚達兩百多頁,並準備於三日共 18 小時的課程教授完成。

(** 由於該案例還挺有示範意義的,可以展現軟體開發過程等相關的步驟與主要產出。所以徵詢 Ringle 的同意,我打算將這些教材整理一下,然後陸續發表在個人的部落格內,以及相關的網站論壇。)

好啦,交代完本次教學行的緣由,就準備撰文並貼圖記述這幾日在大陸深圳的生活囉。 這一次我打算分成「交通篇」、「教學篇」、「食宿購物篇」等主題性的文章。除了分享算是旅遊與授課的經歷,也同時是個人的生活日誌。

※ 延伸參考
 o 深圳軟件三日教學行(2009/12/20~23)-01
 o 深圳軟件三日教學行(2009/12/20~23)-02
 o 深圳軟件三日教學行(2009/12/20~23)-03

[建站日誌] 新增「軟體設計線上教材區」

從事軟體設計教學多年來,除了不定期陸續在我的部落格發表相關的文章,也有其它包括整理在軟體課程的教材內,以及研討會的簡報等。

因為這些文章比較沒有一個結構化的編排整理,有些想學習軟體設計的讀者們可能就不容易得到系統化且循序性的研讀與瞭解。

所以我想要把關於軟體設計領域上多年來所專研的一些主題,甚至包括我現在仍持續研究學習的心得與體會,編排成線上電子書的型態,可方便供許多入門軟體設計的讀者們學習與交流討論。

每一本線上電子書的書名就是一個主題。 例如 「使用案例-需求分析教材」,或是「實戰案例演練 By Java/UML-迷你系統分析/設計與實作」、「物件導向觀念與實作 By C#.NET」、「螺旋式的軟體開發流程與實務」‧‧‧ (這些書名都僅是暫定的)。

這些電子書的主題(書名) 會列在位於部落格 Sidebar (側邊欄)的「軟件線上教材」區塊內。每一本的書名就是一個鏈結 (hyper-link),點擊後就會列出該書的大綱 (outline),其實也就是一篇部落格文章 (blog post)。

大綱的每一個標題 (我大概預計會整理到第三層的標題),同時也是一篇篇的部落格文章鏈結。可能是連結到以前就有發表的文章,也有可能是再修改編輯成符合該標題的文章,當然也會有為了該標題而新增的文章。

所以我覺得最重要「軟件線上教材」最重要的三個元素是 大綱、一篇篇被鏈結的文章 與 持續編排修改等。 喔!還有每篇文章仍舊保留可以讓讀者留言迴響,以作為交流討論與建議。

再來,待某一本主題式的線上教材整理得差不多的時候,我應該是會考慮出版實體書籍。當然等要出版時,會再將整本書的主題內容等作個 "Re-factoring (重構)" 總整理,不過,那是以後的事再說了。

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal