程式碼與 UML 類別_循序圖 的關係探討-完結 (4)

支援自動產出循序圖的工具

  • EA (Enterprise Architect) 8.x-內建動態產出循序圖的機制。
  • Together, RSA, Flowchart4j(c#) -支持靜態產出循序圖的方式。
  • HSDc. Sequence Genenator (名稱暫訂)
    • 實作於 EA 7.x-8.x Plugin。
    • 支持靜態產出循序圖的方式。
    • 可支持正向/反向 將程式碼/循序圖互轉的功能。

HSDc Seq. Generator plugin 操作示範

  1. 安裝 Seq. Generator plugin

    圖、安裝 Seq. Generator plugin
    (點擊圖片鏈接看原圖)圖、安裝 Seq. Generator plugin

  2. 閱讀全文 »

程式碼與 UML 類別_循序圖 的關係探討 (3)

程式碼與循序圖的正反向工程

先瞭解一個重點:靜態程式碼結構並無法直接對應循序圖 (對應的是類別圖)

兩種方法可以產出循序圖:

  • 動態產出:設定 run-time 環境,實際執行應用程式,再由 UML 工具至系統內追蹤解析。
  • 靜態產出:直接掃瞄程式碼,解析物件之間的參考 (reference)。

動態產出循序圖的優缺點:

  • 優點:
    • 不需要程式原始碼,只要具有能直接執行的應用程式 (如 .NET DLL 執行檔)即可。
    • 可以確實捕捉單一程序內,物件之間的呼叫情形。
  • 缺點:
    • 需要事先設定好可以執行該應用程式的 run-time 環境。設定相當複雜繁瑣 (一般需為命令列模式),且不同的程式語言 (如 C#NET, Java, PHP …等)均須各自設定不同的 run-time 執行環境。
    • 只能呈現單一執行路徑內的物件互動。意即,無法呈現如 If…Then…Else 或 Exception 等多種條件或替代路徑。

靜態產出循序圖的優缺點:

  • 優點:
    • 不需要設定繁瑣的 run-time 執行環境,操作相當簡潔。
    • 可以指定所掃瞄的程式碼深度 (層次)。
    • 可以同時呈現多重的條件或替代路徑的物件呼叫互動情形。
  • 缺點:
    • 需要有原始程式碼,以提供靜態掃瞄的來源依據。
    • 轉換工具的實作邏輯並無明確的轉換 (transform)規則;相對來說,需要考量到程式語言個別的機制與語法,故轉換工具的實作難度相對提高。

※ 延伸參考
o 程式碼與 UML 類別_循序圖 的關係探討 (1)
o 程式碼與 UML 類別_循序圖 的關係探討 (2)

程式碼與 UML 類別_循序圖 的關係探討 (2)

程式碼與 UML 設計圖之間的關聯性

從抽象的角度思考 類別(Class)/物件(Object) 的關係

  • 物件是活的!
  • 但是,類別可不是死的 (更不是活的);因為,它僅是對系統的設計契約而已。

問題思考!?
程式原始碼 (Source Code) 對應的是 UML 哪一張設計圖?

推導-1
程式碼 = 靜態結構 = 設計契約 = 類別設計

所以 程式碼 對應的是:UML 類別圖 (Class Diagram)

Ex. 程式碼與類別圖的對應

範例-靜態的程式碼設計契約
範例-程式碼與類別圖的對應關係

使用 UML 類別圖 (Class Diagram)的好處

  • 快速定義類別的結構 (包括類別名稱、屬性與行為)。
  • 過濾程式碼實做的細節,容易聚焦於類別的責任分派 (responsibility assign)設計議題。
  • 可以透過工具,將類別圖轉出至對應的程式碼 (反之亦然)骨架 (skeleton)。

類別圖無法作到 …

  • 無法呈現系統執行期間 (run-time),程序單位之間的呼叫情形。
  • 無法追蹤為完成某一特定功能案例,物件之間的動態相依呼叫關係。
  • 無法掃瞄物件之間的動態連結,是否有違背類別圖的結構設計。

閱讀全文 »

程式碼與 UML 類別_循序圖 的關係探討 (1)

基礎觀念導引 - 何謂靜態與動態?

靜態結構 (Static Structure)

  • 表達軟體內部的結構設計。
  • 一般指程式原始碼 (Source Code)。
  • 軟體人員對資訊系統的設計契約 (Design Contract)。

靜態結構的設計契約

public class myclass {
	public void method_1() {
		//do something
	}
 
	public string method_2(string var) {
		//return a string
		return var;
	}
}

誰來解讀設計契約?

  • 一般指軟體資訊系統或應用軟體伺服器 (Application Server)。
  • ie. 可以編譯 C#.NET 程式碼 (設計契約)並能在 .NET 平台上執行應用程式。
  • 可以編譯 Java Spring 程式碼並能在支持 JEE (Java Enterprise Edition)平台執行完成編譯的應用程式。

動態相依 (Dynamic Dependency)

  • 系統在執行某一特定功能時,所啟始不同的程序單元之間呼叫的一種動態相依關係。
  • 一般指程式碼經過編譯後在執行期間 (run-time)的應用程式。
  • 資訊系統履行軟體人員的設計契約,使之可以在其平台上執行。

閱讀全文 »

「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 協同團隊合作開發」

軟體思維顧問

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

Personal