「UML 協同團隊合作開發」問題與內容勘誤回覆

讀者 Pogi 很細心地在 「Ringle 即將出版的新書─ UML 協同團隊合作開發」一文中,提出他對閱讀了該書之後所發現的問題。 在此我也特請原作者 Ringle 在此針對所提的問題作回覆。

請問有提供勘誤表回饋網址或mail嗎?

  • 43頁:
    一般化關係:是不是應該說明一般、特殊化關係的方向性?
    整體-局部關係:聚合跟組合的圖看起來都是實心的。
  • 44頁:
    相依性關係:圖示錯了。
  • 45頁:
    圖3-2的內容跟前面訪談結果不一致,特助有說跟住院事件相關的人員:醫生、護士、櫃台人員,但是類別圖卻沒有櫃台人員。

Ringle 的回覆如下:

謝謝你那麼仔細地看這本書,有關您所問的問題,分別說明如下:

  1. 43頁:
    一般化關係:是不是應該說明一般、特殊化關係的方向性?
    照您所說的,我會在下一版中加入一個說明:「病床」類別是「非健保病床」與「健保病床」類別的一般化。
    另,聚合的部分應該為實心,這是在校稿時忽略掉了。
  2. 相依關係的部分也是一樣的。這幾個部分,主要是由於書籍的美編重新改過了原來的稿子所造成的,不過我在校稿時也沒有發現,謝謝你的指正。
  3. 有關類別圖與訪談結果並沒有不一致。「櫃臺人員」主要是屬於「Actor」的性質,並不屬於類別圖中所需關心的問題。
    對於特助來說,他並非軟體設計人員,因此,他只是忠實地說明他所看到的現象,但設計人員應該要針對他的回答加以思考並過濾,而非全盤接收。

「UML 團隊開發流程與管理」新書正式出版(6/12)

Ringle 的新書:「UML 團隊開發流程與管理」確定於 6/12 由「悅知文化」正式出版。 現在有活動優惠,在 6/12 前預購均享有 7 折優惠。

UML團隊開發流程與管理 UML團隊開發流程與管理
-----------------------------------
作者: 賴信仁
出版社:悅知文化
ISBN:978-986-6761-90-4

本書特色:
這是一本將理論與實務作完美結合的書。以案例分析的方式,告訴讀者如何透過UML正確表達軟體設計的精神,同時搭配工具軟體與Lab單元,讓讀者可以從做中學,在練習的過程中,確實瞭解軟體開發的過程。

內容簡介:
對於軟體設計的初學者來說,面對大量的資訊,往往不知從何處開始下手。本書係根據作者多年的授課經驗寫作而成,特別針對有以下需求的讀者,提供學習的指引:

■ 想要瞭解UML及其應用時機的讀者:
本書第一部份,設計了一個完整的案例,並且將UML的十三張圖應用在該案例中,利用Q&A的方式,深入淺出地說明UML 13張圖的基本精神及其應用,讓剛開始接觸UML的讀者可以透過實際案例瞭解UML。

■ 想要知道如何在實際專案中應用UML的讀者:
本書的第二部分,設計了另一個完整的案例,並搭配工具軟體,配合UML、MDA以及實際的程式碼,讓進階的讀者可以瞭解,應該如何在實際的專案中應用UML。而且在每個章節中,都提供LAB練習,讓讀者可以「從做中學」。

■ 想要知道軟體開發團隊如何合作的讀者:
本書的第三部分,作者設計了一個團隊合作的情境,透過一個虛擬專案的進行,讓讀者可以瞭解團隊中的各個角色,以及如何挑選適合的工具來幫助自己完成工作,以及如何善用工具,讓團隊合作能夠更簡單、更順利。

■ 想瞭解Enterprise Architect如何使用:
Enterprise Architect是一套完整的UML支援工具,完整支援UML 2.1的13張圖形,並且Support多種程式語言及資料庫,且提供了非常多的客製化空間。本書主要使用該套工具進行實作,並介紹該軟體的操作及客製化技巧。

「UML 團隊開發流程與管理」新書封面完稿
(點擊圖片鏈接看原圖)「UML 團隊開發流程與管理」新書封面完稿

※ 延伸參考:
o 「UML 協同開發管理」新書序言 Preview
o Ringle 即將出版的新書─「UML 協同團隊合作開發」

「UML 協同開發管理」新書序言 Preview

Ringle 的新書 ─ 「UML 協同開發管理」,順利的話,應該是這個月就會出版了。 本書的序言還特別邀請我們曾經輔導過,包括企業 IT 資訊部門主管,以及軟體開發公司教育課程培訓承辦人、專案經理等。 由於先前輔導時的合作均相當愉快,且對 Ringle 嚴謹且甚為專業的能力給予相當肯定,所以請之協助寫序時,都相當樂意來背書。

我這裡就先列出該書部份的序言內容。 其中也有美女好朋友們的加持,而且好不容易獲得她們的首肯,願意提供美美的照片放在序言內。不過不知道新書出版時會不會有含照片? 有的話也算創舉,想必銷路會賣得更好。 😉

Vivi 為 Ringle 新書的序言背書
~序的開始~該怎麼開始才好呢?

生平以來第一次很榮幸的接到Ringle老師的邀請,幫忙推薦~ 以小女子我的經驗:

公司在去年 (2008 年)針對技術同仁們進行一系列的Java 與UML技術培訓課程,聘請了Ringle與其顧問團隊擔任課程的專業講師,規劃長達七個月的訓練。

過程中在每次上課時看到他們用心教學及互動,課前或課後也都會互相溝通關於學員的學習狀況及如何改正微調後續的教學方向,讓我在執行時非常順利及安心。 課程結束後學員們對課程的滿意度平均值也是相當不錯,所以在此特別謝謝他們對課程的用心。

同時也恭喜Ringle將教材、專案開發與顧問輔導時的經驗等等撰寫成書,對於期望應用物件導向原理於開發實務的朋友來說,一定會是一本很好的重要學習指南喔。

HiTrust 教育訓練培訓專員 Vivi Wang

閱讀全文 »

Ringle 即將出版的新書─「UML 協同團隊合作開發」

我的超人 Partner Ringle,最近正主導開發 "Sequence Generator" 工具之餘,在我喋喋不休、半強迫的威脅下,利用兩個餘月的時間,把他以前,包括顧問輔導的實際案例、上課的教材與專案的開發等相關文件,作一次整理,集結成書,書名就定為:「UML 協同團隊合作開發」,預計下個月(六月份)出版。

書籍內容約有 4、500 頁以上之多。 書的編排除了不免俗的有 UML 基礎介紹外,Ringle 還為每一張 UML 設計圖 (共 13張)構思個別但又可以整個連貫起來的案例 (Case Study),並利用 UML 開發工具 (Enterprise Architect) 以 Step by Step 的循序方式實現。 所有的設計圖實做出來後,即完成一個小型的系統。當然,Ringle 是相當重視理論與實務的並重,所以當然包括程式碼的實做 (包括實際連結資料庫、外部系統等)。 絕非是一般的系統分析書籍,只是寫幾個 "Sample Code",做個樣子、紙上談兵而已。 他甚至考量到初學者對 OOP 語言的接受度,所以選擇以 VB.NET 作為程式碼實現的機制。 (書本還附上光碟片,內含 Model 檔與實做程式碼等,供學員可自行操作練習。)

※※ 說 Ringle 為超人實在不為過,原來已經給出版社,四百餘頁的原稿,因他覺得仍不甚滿意,竟然全部重寫!! 甚而連示範圖形全部重新再操作過,剪下的貼圖。 短短兩個月的時間,完成了 Ringle 所謂的 Iteration-2 稿件。他可是不眠不休,晚上熬夜鍛鍊出來的合金肝這樣寫成的著作。

再則,整個開發過程中,工具應用的 Know-how,的確很重要。更甚者,協同開發的議題,例如如何利用工具整理共用的需求、設計圖、程式碼等、如何利用版本控管的機制來作共用的管理等,在本書也有詳細的示範解說。 書中是利用 Subversion + EA 就能達成共用管理的機制 (舉一反三,讀者當然可以利用其它工具來實現)。 協同開發環境的建置,僅利用上述的工具,就能達成 CMMI level2~4 的目標水平。

這本結合 UML, 工具, 程式, 以及協同開發的控管等應用,算是偏向實務性質的實用書籍,是 Ringle 第一本初試啼聲的著作。 事實上,Ringle 真正的天賦在於對軟體抽象能力的領悟與觀察力,對於如何捕捉各領域 (Domain)的核心物件,並利用現實的 OOP 機制實現出有彈性的結構,可以說真的是無人能出其右。 這也是未來期許他出版第二本書的主題。

在書籍尚未出版之前,我特別請 Ringle 為自己的著作先作個簡單的新書介紹,同時也順便列出本書的書目大綱。

閱讀全文 »

HSDc. 最近正開發程式碼與 UML 循序圖的互轉工具

我們團隊 (HSDc.) 從今年 (2009) 初就定下了策略目標,其中一項主軸就是內部要開發出小而巧又實用的軟體相關產品。 農曆年後,經過一個下午的 Meeting,腦力激盪得到的共識就是開發一個可以協助 程式 Coding 人員,利用視覺化的 UML 循序圖 (sequence diagram),來呈現出程式碼在某一個情境下,物件相互之間動態連結關係的工具。 嗯,就暫且命名為 "Sequence Generator" 好了。

主要功能就是兩個: 一為從程式碼的某一個類別 (Class)的 method 開始 (進入起點, entry point),然後可以定義呼叫物件遞迴 (recursive)的深度層次(例如深至 5 層),按下按鍵,即可產出物件合作的循序圖; 另一個功能就是從循序圖轉出到程式碼 (當然,要先規範好類別圖)。 如此可以輔助類別圖的轉換,將如 a.method1() 呼叫 b.method2() 的關係,給呈現在程式碼的結構內。
HSDc Seq. generator - Use Case 圖

目前同類型的 UML 工具中,EA (Enterprise Architect) 是提供 "Run-time" 的環境,可以從程式碼產出到循序圖,但反之不行。 而且主要的問題是,要將 EA 設定成可以執行 .NET or J2EE 的環境,相當麻煩,要對 command-line 的指令執行模式相當熟悉才行。

另一個功能最強大,截至目前為止我認為最好用的是 Borland Together。 它是以靜態處理的方式 (這也是目前我們產品的作法,不需要建立動態的環境),而得以實現上述兩種功能。 只是,1. 它可不便宜,一套開發工具可要 10餘萬以上;2. 從循序圖產出的程式碼無法成功經過編譯 (compile),而這也是我們現在要努力的目標 ─ 可以達成部份實作且成功經過編譯。

目前我們預定是先開發出 Plugn 在 EA (Enterprise Architect) 的環境,所以會以 Addon 的形式包裝在 EA。 價格絕對是相當低價,連 EA 的一半價格 (絕對不到 NT$5000) 都還不到。 支援的程式碼最少是 C#, VB.NET 與 Java。 未來也不排除支援 C++ 甚至 PHP 等。

整個開發的框架大致已建立起來,也已經完成了一個小小的雛型 (可以從 C# 程式碼轉循序圖)。 而且,我們也針對該工具產品 (它也是一個問題領域, problem domain) 建構了物件模型,並且使之與 EA Plugin 的 APIs 隔離,所以相對來說,要移轉 (migrate) 到如 RSA or Free UML 工具 (前提要有提供可擴充的 API 介面),所花的 Effort 就不會太重了。
HSDc Seq. generator - 開發Class 圖

預計再過兩個月,應該會提供出 beta 版本,供有興趣的程式人員下載測試,並可請提供諸多寶貴的意見。

底下是目前開發中的幾個畫面 (screenshot)...

閱讀全文 »

聊聊 DoDAF/MoDAF 規格與實作議題

上上個星期,應國防某單位要求,希望由我們利用 EA(Enterprise Archiect) UML 工具,藉由一個案例,來展示在順應 DoDAF 規格下,如何從架構規劃、到依循每一個包括 Operation 與 System View 的設計圖,以及又該如何導出到實作,尤以後者,對他們很困擾,一直不知道該如何將 DoDAF 設計與實作順利地橋接在一起。

其實原來是上個月初過去介紹的是 EA 的 UML 工具,因為 EA 其中一個 Plugin 產品,稱為 MDG for DoDAF-MODAF,兩者的搭配,應用的是 UML Profile 機制,可以充分完整支援 DoDAF 1.5 的設計規格。 說真的,工具沒啥好介紹的,況且席間諸多長官與教授們問最多的問題就是有沒有 “自動化” 的機制,可以從某一個 View 的設計圖,自動轉化到另外一個 View 的設計圖。這個… 我總覺得他們研究的方向會不會有問題? 我只能反問:1. 如果規則明確,例如 OV-2(作業節點連結) 轉 OV-5(作業活動流程)有很明確轉換規格的話,那麼工具當然可以支援。 (可想而知的答案是,當然沒有那種必然明確的規則) 2.能不能轉到程式碼? 這些我都覺得都不是問題耶,前提是有沒有那種確定的規則? 有趣的是,他們用來比較 EA UML 工具的是另一套 T牌、要價 100 萬的工具,也沒有支援他們 “心目中” 的自動化啊。 所以我開玩笑的說,好吧,把那個 T牌與 EA (EA+DoDAF Plugin 才 1萬初頭)的差價,用來委託我們開發那個自動化的 Transform 機制,保證可以幫你們生的出來,不過前提是要能給我們明確的轉換規則。 🙂

我可不會想賺工具的錢啦,要能懂得設計符合 DoDAF 架構規格的系統,要具備的是軟體設計基礎功夫的底子;要能有整體性的架構觀,要知道什麼時候該封裝、什麼時候該打開,分析系統的內部;要懂得如何把一個看起來好像很大的系統(關於系統的定義,可不一定指軟體系統,在這種大格局下,包括企業單位,都可能是一個系統),該如何大題小作;又懂得那個時候該具焦在某一個焦點上,然後小題大作。 這一種整體性的設計思維,正是架構規劃與設計箇中的竅門之所在。

我想要傳達的是,我們可以協助國防某單位,如何具備能具有規劃 DoDAF 架構設計的技能(Skill),與相關軟體設計的基礎功夫,以及所該具有的技術實作能力。當然就是以顧問輔導與教育訓練為主,如果可以的話,規劃成一個外包的專案更是好,然後從實作的過程中帶著學習,作中學的效果會更好的。 不過前提是,我們總是要能先證明我們懂得如何規劃這類超大格局符合 DoDAF 規格的系統,一般當然就是出個題目了,這一向是我個人最為意願的了,比較容易在短時間內取得雙方之間彼此的信賴與共識;也比較現實,會就會,不會的話早一點出局,最不囉唆了。 喔,還有,這是繼我十餘年前從志願役中尉預官退伍後,再一次能回到軍中,為國效勞的好機會呢,哈。 😀

由於國防某單位最近忙了些,等了幾星期,還是沒拿出案例讓我們來演練,所以只好我們團隊內部自行構思一個與軍事相關的案例。 所以呢,這個案例是沒有與軍事任何單位有關連(正因如此,才能拿出來公開分享),完全是充滿想像;也沒有軍事專家的協助,所以需求必然是謬誤百出。不過這也不是什麼困擾,因為我們要做的是如何能捕捉出 DoDAF 的架構規劃與橋接到實做階段的那個精髓之所在。只要未來能有軍事領域專家的協助,那麼就很容易可以調整修正,來符合正確的需求了。

整整花了四天的時間,投入了約 2.3 個人力,以一個我們所想像創造出來的案例,也算是規劃了一個類似 C4ISR(Command, Control, Communications, Computers, Intelligence, Surveillance and Reconnaissance) 的聯合作戰指揮系統,透過偵測與防衛系統,發現到敵人即將進軍來襲時,是如何即時協同陸、海、空三軍暨後勤補給中心,來達成防衛作戰的目標。 包括了 Operation、System View 共約 17 張設計圖、再加上利用 .NET 程式碼來模擬諸多系統間的即時互動(透過 Web-Service)。 喔,甚至連那個表達 OV-1 的概念視圖,都還是請美工畫出來的呢,效果十足! 老實說,個人對我們團隊能在如此短的時間內,就能規劃出如此大的架構格局,甚至還產出程式碼來驗證架構的完整性。藉此而能解開 DoDAF 這個算是軍中資訊人員們的 “潘朵拉密盒”,可說是成就感十足,也算頗引以為傲。

ea_dodaf_demo
圖 1、 利用 EA-DoDAF 開發的 SV-1 設計圖

所完成的案例在上上星期至國防某單位的 Seminar 展示效果相當不錯! 在座許多高級長官以及教授們在會後的許多問題透過我們的解說,也算能得到合理的解釋。也讓許多中、上尉的資訊官們,見識到我們是如何從某一些 View 再轉到微觀(Micro)的實做階段。 由於沒有軍事機密等的問題存在(案例全都是想像的),所以到是可以藉由公開發表這一個案例,除了展示是如何實現 DoDAF 規格,並大概解釋一下每一個 View 的 精要(essential)設計意涵為何,同時也算是藉由此,來看看這種偏多個節點(Node)、多個資訊系統是如何做架構規劃的。

閱讀全文 »

軟體思維顧問

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

Personal