external perspective
model context or environment of the system
interaction perspective
interactions between a system and its environment, or between the components of a system.
structural perspective
organization of a system or the structure of the data that is processed by the system
behavioral perspective
dynamic behavior of the system and how it responds to events
====================
Activity diagrams
which show the activities involved in a process or in data processing.
Use case diagrams
which show the interactions between a system and its environment.
使用者如何與系統聯繫
Sequence diagrams
which show interactions between actors and the system and between system components.
Class diagrams
which show the object classes in the system and the associations between these classes.
State diagrams
which show how the system reacts to internal and external events.
Context model:描述系統內部與外部動作的關係
>> System boundaries: 定義甚麼東西在系統內/甚麼東西在系統外
Interaction models: 用戶交互模型可以知道用戶的需求 / 系統對系統的交互模型可以知道各個系統之間通訊的問題 / 組件的可以知道系統的性能或可靠性
>> Use case modeling: 使用者如何與系統聯繫。
>> Sequence diagrams: 時序圖,可以知道每個訊息、事件,在哪個時間點觸發。
Structural models: 描述軟體的資料
>> class diagrams: oop 知道各個class之間的關聯、結構、內容...等。
>> Generalizatio: 一般化,用於推論class是否有共通的特徵,類似於繼承的概念,如松鼠與老鼠可以一般化成齧齒類。
>> Object class aggregation models: object class聚合模型,類似於1對n繼承的概念,例如一個patient record會有很多次的就診紀錄,但只會有一個病患資料。
Behavioral model:描述整個系統執行時的行為。
>> Data-driven modeling: 資料驅動模型,描述資料進來後的一系列操作 到如何輸出。
>> Event-driven modeling: 事件驅動模型,描述系統如何針對內部或外部事件做出反應。
>> State machine models: 描述系統如何對刺激(stimuli)做出反應,常用於realtime system
>>>> state diagram: 狀態圖(微波爐那個)
Model-driven engineering: MDE 模型驅動工程,將模型拓展到軟體開發的各方面,而不是程序(program),如此一來可以不用去管程式語言或執行的平台。
>> 優點: 可以在更高的層級看系統 / 可以自動產生code,意味著使系統適應心平台更容易。
>> 缺點: 抽象模型不一定可實行 / 雖省下產生code的成本,但開發新平台的翻譯器(translator)可能更貴。
Model-driven architecture: MDA 模型驅動架構,是MDE的前驅。使用UML去描述系統,在任何層級都能建模。
>> CIM: Computation Independent Model, 關注於domain 不涉及系統內部的結構與運作細節
>> PIM: platform-independent model,只管系統的運作,不管怎麼implement,也不管用神麼platform。
>> PSM: Platform-specific models, 關注於系統運作在每個平台的細節。
Agile 與 MDA 的思想是違背的: MDA要廣泛建模 但agile卻要做一點做一點、快速開發、調整。
承上,除非可以完全自動產出code以避免個別coding的話,那麼MDA就可以用於agile開發。
Adoption of MDA: 有很多因素限制了採用MDA
1. 可用的工具有限
2. 承上,公司不願意開發客製化工具
3. 模型利於討論 但可能不利於實作(implment)
4. 僅利於大型且長壽的系統 / software products and information systems可能不適合(省下的成本比引入的工具成本少)
5. 在MDA發展的同時 大家卻都採用agile (被轉移注意力)