se2021:uml [Jun Wu的教學網頁國立屏東大學資訊工程學系 ...
文章推薦指數: 80 %
循序圖(sequence diagram)顯示物件與物件或是物件與使用者間如何透過訊息溝通完成特定的功能,其中也顯示了每個物件在訊息溝通過程中的作用區間。
另外, ...
跳至內容
JunWu的教學網頁國立屏東大學資訊工程學系CSIE,NPTU
使用者工具
登入
網站工具
搜尋
工具輸出PDF檔案多媒體管理器網站地圖登入>
多媒體管理器網站地圖
足跡:•uml
se2021:uml
目錄表
3.UML簡介
3.1UMLDiagrams
3.1.1結構圖組(StructureDiagrams)
3.1.2行為圖組(BehaviorDiagrams)
3.24+1觀點模型(4+1ViewsModel)
3.2.1邏輯觀點(LogicalView)
3.2.2程序觀點(ProcessView)
3.2.3實體觀點(PhysicalView/Deploymentview)
3.2.4開發觀點(DevelopmentView/Implementationview)
3.2.5+1觀點使用案例觀點(usecasesview)
國立屏東大學資訊工程學系物件導向軟體工程
3.UML簡介
在開始本課程前,讓我們先總結一下:
UML的全名為UnifiedModelingLanguage(UML),可譯做統一模型語言,或一致性模型語言,是在物件導向軟體工程領域的一個標準的通用性(generalpurpose)模型語言。
UML是由ObjectManagementGroup(簡稱OMG)制定,目前最新版本為2.5.11)。
UML就是由一組圖形表示法(graphicnotation),其模型必須依據相關的圖示標記與規範來加以繪製,因此UML的模型又被稱為是視覺化模型(visualmodel)。
還要注意的是UML本身不含有任何建構模型的方法論,它只是視覺化的塑模語言(visualmodelinglanguage),UP才是方法論。
要注意的是,在開發軟體時並不是每一種UML圖都是需要的,例如ScottW.Ambler曾說過:「沒見過有人用過複合結構圖(Compositestructurediagram)、交互概述圖(Interactionoverviewdiagram)或者通信圖(communicationdiagram)。
」,你可以視情況使用部份圖即可。
Fig.1:DiagramsofUML2.2
figure 1顯示UML的圖可分成兩大類:結構圖組(structurediagrams)與行為圖組(behaviordiagrams),其中結構圖組是用以表示軟體靜態的結構,而行為圖組則是用以描述軟體動態的行為。
在本課程後續將針對UML的各種圖進行簡介,同學先不需要在此階段就開始學習各種圖細節,只需要大致瞭解各種圖的作用即可。
我們將在本課程的實務演練中,陸續針對如何繪製相關的UML圖加以詳細說明。
3.1.1結構圖組(StructureDiagrams)
結構圖組(structurediagrams)所要描繪的是那些在開始進行軟體塑模時就要呈現的事,主要是軟體系統的結構,包含類別圖、元件圖、組合結構圖、部署圖、物件圖、套件圖與剖面圖。
3.1.1.1類別圖(ClassDiagram)
回顧本課程一開始時的總結:「使用物件導向技術所開發的軟體,在執行時會建構出一個虛擬的物件導向世界,其中包含有對應於真實或虛擬世界中的人、事、時、地、物的抽象物件,透過物件與物件、物件與使用者的互動,來滿足使用者的需求。
」。
從程式設計師的角度來看,在「虛擬的物件導向世界」裡的物件並不是憑空誕生的,我們必須使用new才能在記憶體來產生物件(實體),而且在能夠new出來物件之前,還必須先要有「類別(class)」的存在–因為new是將特定類別的物件產生出來,例如:
Studentamy=newStudent();
在上述的程式敘述裡,使用new產生了一個Student類別的物件–當然,前提是我們必須要先有Studnet類別的定義。
因此,在使用物件導向技術來開發軟體前,必須先決定在「虛擬的物件導向世界」裡需要存在哪些「類別」的物件,並且要將這些「類別」先加以定義。
而UML的類別圖(classdiagram)存在的目的,就是要進行這件工作–定義「虛擬物件導向世界」所需要的物件是屬於哪些類別,以及它們的屬性、操作方法與彼此間的關係。
舉例來說,一個銷售系統軟體的類別圖可參考figure 2,由客戶、訂單、付款等類別所組成,我們應該要在開始進行軟體實作前(甚至是設計前)就先完成類別圖的繪製;或是至少先完成一部份,後續在開發的過程中,再進行所需的調整(增加新的類別或修改、刪除既有的類別)。
Fig.2:Anexampleclassdiagram
3.1.1.2元件圖(ComponentDiagram)
元件圖(componentdiagram)描述的是軟體系統可以被分割成哪些元件(或是反過來說,是由哪些元件組成的軟體),以及這些元件彼此間的關係。
figure 3顯示的是一個網購平台軟體的元件圖,包含了瀏覽器端的介面、購物車及資料庫等元件所組成。
Fig.3:Anexamplecomponentdiagram
3.1.1.3組合結構圖(CompositeStructureDiagram)
組合結構圖(compositestructurediagram)是用以描述一個類別的內部結構,例如說明它是如合與其它類別合作以完成工作。
例如figure 4顯示了一個BrokeredSale類別(代理銷售)的內部,是從批發商類別的物件進行購買的操作,然後再對零售商類別的物件進行銷售的操作。
Fig.4:anexamplecompositestructurediagram
3.1.1.4部署圖(DeploymentDiagram)
部署圖(DeploymentDiagram,又常被稱為配置圖)是用以顯示軟體所運行的硬體環境,更簡單的說法則是顯示軟體要在什麼硬體環境執行。
請回顧一下figure 3網購系統的元件圖,figure 5的部署圖顯示了它所要運行的硬體環境,包含客戶端的電腦、Web伺服器以及資料庫伺服器。
Fig.5:anexampledeploymentdiagram
要注意的是,我們也可以將兩張圖合併起來,請參考figure 6,我們可以直接將元件圖的內容繪製在特定的硬體環境裡。
Fig.6:anexampledeploymentdiagramwithcomponentdiagrams
3.1.1.5物件圖(ObjectDiagram)
物件圖(objectdiagram)顯示在某個特定時刻(不一定是時間,通常是指符合特定條件、特定情境的時刻),系統內完整或部份的物件內容。
更詳細來說,物件圖描述了在特定時刻時(或情境下),系統內存在哪些物件?且其當下的屬性值或狀態為何?有助於讓使用者或開發人員,更容易、也更清處地瞭解系統某些功能運作的細節。
請參考figure 7,它顯示了在系統執行的某個時刻,在「虛擬的物件導向世界」裡有一個名為c的物件,它是Company類別的物件,圖中還顯示了它擁有兩個Department類別的物件,名為d1與d2,d1物件還擁有一個同樣是Department類別的物件,名為d3;d3的經理以及其聯絡方式,則分別是Person類別與contactinformation類別的物件。
Fig.7:anexampleobjectdiagram
3.1.1.6套件圖(PackageDiagram)
套件圖(packagediagram)將系統分為群以及子群,並且顯示它們間的關係,請參考figure 8的例子。
Fig.8:anexamplepackagediagram
3.1.1.7剖面圖(ProfileDiagram)
剖面圖(profilediagram)是一種可擴充的機制,讓我們可以為特定的應用領域客製化UML模型,換句話說是用以制定模型的模型。
請參考figure 9的例子。
Fig.9:anexampleprofilediagram
3.1.2行為圖組(BehaviorDiagrams)
行為圖組(behaviordiagrams)是描述系統在執行時的行為表現,通常用以呈現系統的各個功能。
相關的圖包含活動圖、狀態圖、使用案例圖、通訊圖、互動概述圖、循序圖、與時序圖。
3.1.2.1活動圖(ActivityDiagram)
活動圖(activitydiagram)是用以描述系統功能的具體流程。
還記得我們說過「使用物件導向技術所開發的軟體,在執行時會建構出一個虛擬的物件導向世界,其中包含有對應於真實或虛擬世界中的人、事、時、地、物的抽象物件,透過物件與物件、物件與使用者的互動,來滿足使用者的需求。
」,此處的透過物件與物件、物件與使用者的互動,來滿足使用者的需求就是要呈現在活動圖裡的內容。
請參考figure 10,一個客戶透過ATM提款的功能,是透過系統中的Customer、ATM與Bank的互動來完成的,請參考figure 10的活動圖。
Fig.10:anexampleactivitydiagram
3.1.2.2狀態圖(StateMachineDiagram)
狀態圖(statemachinediagram,又常稱為statechartdiagram)。
在「虛擬的物件導向世界」裡的物件,從其誕生(也就是被new出來後)開始,到其不再被使用或是刪除掉(也就是被free或delete掉)為止,其所具有的狀態以及狀態間的轉移皆定義於狀態圖裡,請參考figure 11,
Fig.11:anexamplestatechartdiagram
3.1.2.3使用案例圖(UseCaseDiagram)
使用案例圖(usecasediagram)透過系統的使用者的觀點,將系統所要提供的功能加以呈現。
具體來說,每個系統所應提供的功能都被視為是使用者會使用到的功能,我們將它們表達為所謂的使用案例(usecase)–使用案例圖所呈現的是使用案例以及它們間的關係。
Fig.12:anexampleusecasediagram
3.1.2.4互動圖組(Interactiondiagrams)
此圖組包含多種圖,用以表示系統中的功能相關的控制流程與資料流。
常見的圖包含通訊圖、互動概述圖、循序圖與時序圖。
3.1.2.4.1通訊圖(CommunicationDiagram)
此圖透過在物件間的訊息溝通來表示功能。
Fig.13:anexamplecommunicationdiagram
3.1.2.4.2互動概述圖(Interactionoverviewdiagram)
簡單來說,此種圖將活動圖視為基礎結點,進一步描述各個節點間的通訊,也就是繪製活動圖間的訊息溝通。
Fig.14:anexampleinteractionoverviewdiagram
3.1.2.4.3循序圖(SequenceDiagram)
循序圖(sequencediagram)顯示物件與物件或是物件與使用者間如何透過訊息溝通完成特定的功能,其中也顯示了每個物件在訊息溝通過程中的作用區間。
另外,也有人使用等價的合作圖(collaborationdiagram)做為替代。
Fig.15:anexamplesequencediagram
Fig.16:anexamplecollaborationdiagram
3.1.2.4.4時序圖(TimingDiagram)
此圖特別強調的是物件互動的時間性限制。
Fig.17:anexampletimingdiagram
3.24+1觀點模型(4+1ViewsModel)
由於一個軟體系統通常會讓人覺得過於複雜,因此透過4+1(也就是5個觀點)將軟體分割為從不同的軟體專案參與人員的角度出發的5個部份就是4+1觀點模型的概念。
此模型方法確保你必須考慮從5個重要的觀點來思考系統,請參考figure 18所顯示的4+1觀點:
Fig.18:4+1ViewsofUML
此外,4+1觀點還可以搭配UML做為模型來進行軟體的開發,以下我們分別說明這些不同的觀點:
3.2.1邏輯觀點(LogicalView)
邏輯觀點(logicalview)主要是從系統應該提供什麼樣的功能給使用者的角度,來考慮的是系統應由哪些元件、類別與物件來組成,白話一點來說,也就是考量在「虛擬的物件導向世界」裡該具有哪些東西?常見相關的UML圖包含:
類別圖(classdiagram)
物件圖(objectdiagram)
狀態圖(statemachinediagram)
3.2.2程序觀點(ProcessView)
程序觀點(processview)考量的是前述邏輯觀點所考慮到的系統物件相關的操作程序,包含它們相互之間的互動溝通等流程與規範。
白話一點來說,也就是考量在「虛擬的物件導向世界」裡該發生些什麼事?程序觀點偏重的是動態的系統觀點,關注的是系統內的處理程序、功能,以及執行階段的行為表現。
常用的相關UML圖包含:
活動圖(activitydiagram)
循訊圖(sequencediagram)
3.2.3實體觀點(PhysicalView/Deploymentview)
實體觀點(physicalview)是從系統開發者的角度來考量的是系統運行的軟硬體環境,常用的UML圖包含:
部署圖(DeploymentDiagram)
3.2.4開發觀點(DevelopmentView/Implementationview)
開發觀點(developmentview)是從程式設計師的角度來考量的是系統開發的相關議題,包含如何管理大量的類別、元件、執行的環境、所使用的類別庫等議題。
常用的UML圖包含:
元件圖(componentdiagram)
套件圖(packagediagram)
3.2.5+1觀點使用案例觀點(usecasesview)
使用案例觀點(usecasesview)顧名思義就是從使用者的角度出發,考慮系統應該提供什麼樣的功能給使用者。
常用的UML模型為:
使用案例圖(usecasediagram)
1)
ObjectManagementGroup,UnifiedModelingLanguage,version2.5r.1,December2017,http://www.omg.org/spec/UML/Current
se2021/uml.txt·上一次變更:2021/10/0416:06由junwu
頁面工具
輸出PDF檔案回到頁頂
延伸文章資訊
- 1Uml 類別圖
功能處理
- 2物件圖
- 3物件導向分析方法的七大好處 - iThome
不僅如此,資料流程也有層級的概念,套用功能分解的技術,可以將程序往下細分成次程序。 資訊建模在資訊建模方法中,最赫赫有名的技術便是「實體關聯圖」(Entity ...
- 4Design Pattern初心者筆記#1 - Medium
類別圖(Class Diagram)和物件圖(Object Diagram)是UML 圖的其中兩種 ... 改變現有程式碼的前提之下,藉由增加新的程式碼來實作新的功能,而並非修改程式增加功能。
- 5類別圖- 維基百科,自由的百科全書
類別圖是物件導向式的建模。他們一般都被用於概念建 ... 外部連結(External links)是物件之間的基本關係。 ... 子類別可視為其父類別的特例,並可以增加新功能。