抽象描述(abstract descriptions)那些需求被分析的系統 系統模型 (System Models) 抽象描述(abstract descriptions)那些需求被分析的系統
主題 本文模型(context models) 行為模型(behavioural models) 資料模型(data models) 物件模型(object models) CASE工作平台(CASE workbenches)
系統塑模 (System Modelling) 系統塑模幫助分析師瞭解系統功能(functionality),而模型(models)用來與客戶溝通(communicate) 不同模型可由不同角度(perspective)來表示(present)系統 外部觀點(external perspective)表示系統的內容(context)或環境(environment) 行為觀點(behavioural perspective)表示系統的行為(behaviour) 結構觀點(structural perspective)表示系統或資料結構(data architecture)
結構性方法 (Structured Methods) 結構性方法將系統塑模(system modelling)合併(incorporate)為方法(method)的內在部分(inherent part of the method) 方法(methods)用以定義 一些模型(set of models) 推導這些方法的行程(process) 可應用於這些模型的規則(rules)及指南(guidelines) CASE工具可支援系統塑模作為結構方法的一部分
方法的弱點 (Method Weakness) 無法塑模(model)非功能性的系統需求 通常不包括某方法是否適合特定問題的資訊(whether a method is appropriate for a given problem) 可能產生太多文件(documentation) 系統模型有時會因太詳盡和困難以至於使用者無法理解
模型類型 (Model Types) 資料處理模型(data processing model)表示資料在不同階段該如何被處理 組合模型(composition model)表示實體(entities)如何由其它實體組成 結構模型(architectural model)表示主要的附屬系統(sub-systems) 分類模型(classification model)表示實體可有怎樣的共同特性(common characteristics) 激發/回應模型(stimulus/response model)表示系統對事件(events)的回應(reaction)
內容模型 (Context Model) 內容模型(context models)用來說明一個系統的界限(boundaries) 社會和組織(social and organisational)的關注(concern)可能會影響該如何界定系統的界限 架構模型(architectural models)表示一個系統及該系統與其它系統的關係
ATM系統的內容
行程模型 (Process Models) 行程模型(process models)表示完整的行程(overall process)以及系統所支援的行程 資料流模型(data flow models)可用來表示行程(processes)以及從一個行程到另一個行程的訊息流(flow of information)
設備取得行程 (Equipment Procurement Process)
行為模型 (Behavioural Models) 行為模型(behavioural models)描述系統的所有行為(overall behaviour) 兩類行為模型 資料處理模型(data processing models)表示資料於系統中流動時該如何處理 狀態機模型(state machine models)表示系統對於事件的回應(response) 當描述系統行為時需要這兩類的模型
資料流模型 每個以電腦為基礎(computer-based)的系統都是用來轉換資訊(information transform) .... system input output
資料流模型表示法 外部實體 (external entity) 行程(process) 資料流(data flow) 資料儲存體(data store)
外部實體 (External Entity) 資料的產生者(producer)或消耗者(consumer) Examples: 人、設備、感應器、以電腦為基礎(computer-based)的系統 資料總是起源於某處(originate somewhere)並且被傳送到他處(be sent to something)
行程 (Process) Examples: 計算稅款,確定地區, 資料需以某種方式被處理以達成系統功能 資料轉換器(data transformer)(將輸入轉換成輸出) Examples: 計算稅款,確定地區, 制定報告格式(format report), 展示圖型(display graph) 資料需以某種方式被處理以達成系統功能
資料流 (Data Flow) 資料流(data flows)貫穿系統,以輸入為起點 並轉換為輸出 base area height compute triangle area area height
資料儲存體 (Data Stores) 資料常被暫時儲存以便稍後使用 sensor # sensor #, type, location, age look-up sensor data report required type, location, age sensor number sensor data
資料處理模型 (Data-Processing Models) 資料流圖表(data flow diagrams)用以模型化(model)系統的資料處理 當資料流經過系統時可用以表示處理步驟(processing steps) 許多分析方法中的內在部分 (intrinsic [內在的] part) 簡單和直覺(intuitive)的表式法(notation)讓客戶易於瞭解 表示端點到端點(end-to-end)的資料處理
訂單處理的DFD (Order Processing DFD)
資料流圖表 (Data Flow Diagrams) DFDs從功能的角度(functional perspective)模型化(model)系統 對資料與行程的關聯做追蹤(tracking)和製作文件(documenting)有助於對系統完整的瞭解 資料流圖表可用來表示系統間的資料交換(data exchange)
CASE Toolset DFD
狀態機塑模 (State Machine Modeling) 事件 (events) 行為 (behavior) Outside world Application
系統狀態 (The States of a System) 一些可觀察情況(observable circumstances)的集合,該情況可描述在不同時間的行為特性(characterizes the behavior) 狀態變遷(state transition) 由一種狀態轉移到另一種狀態的行動(movement)
事件(event) 行動(action) 一個可讓系統產生某種可預期行為的事件 因變遷(transition)的結果(consequence)所產生的行程(process)
狀態機塑模 (State Machine Modeling) 編列不同的系統狀態(系統行為如何?) 說明系統如何從一種狀態轉移到另一種狀態(系統如何改變狀態?) 說明事件(indicate event) 說明行動(indicate action) 畫出狀態轉換圖(state transition diagram)
狀態轉換圖表示法 (State Transition Diagram Notation) 事件導致轉換(event causing transition) 發生行動(action that occurs) new state
狀態轉換圖 (State Transition Diagram) reading operator commands making copies reloading paper problem state full invoke read-op-input full and start invoke manage-copying copies done empty invoke reload paper jammed invoke problem-diagnosis not jammed
微波爐模型 (Microwave Oven Model)
微波爐狀態描述 (Microwave Oven State Description)
微波爐外部刺激 (Microwave Oven Stimuli)
狀態圖 (Statecharts) 允許將模型分解(decomposition)成子模型 (sub-models) 在每個狀態(state)之‘do’ 後的行動(action)應有簡單的描述 可藉由表格的補充(complemented)以說明狀態(states)和刺激(stimuli)
微波爐操作 (Microwave Oven Operation) Emitter 輻射源
資料模型及實體—關連狀態圖 (Data Model and Entity Relationship (E-R) Diagram) 用以描述系統中資料處理(data process)的邏輯結構(logical structure) 實體關係屬性模型(entity-relation-attribute model),定義系統中實體、實體間關係和實體屬性 廣泛用於資料庫設計,可以很容易地用關連性資料庫(relational databases)實作 UML沒有為實體關係屬性模型提供特殊的符號表示,但可使用物件(objects)和關連(associations)
為何使用資料塑膜 (Why Data Modeling?) 資料物件(data objects)和資料處理(data processing)可各自獨立被檢查(examine) 聚焦(focus attention)在資料領域上(data domain) 在用戶的抽象水平上(customer’s level of abstraction)建立模型 指明資料物件(data objects)間如何彼此相關聯(relate)
資料物件(Data Object)是什麼? 物件是一個由一套屬性(a set of attributes)(資料項(data items))所描述,且能在軟體(系統)內被處理(manipulate)的實體 一個物件(object)的實例(instance)(如一本書)可被唯一識別(如使用ISBN#) 每個物件在系統中扮演一個必要的角色,系統若不擷取(access)這些物件的實例就無法運作 每個物件由屬性(attribute)來描述,而屬性本身也就是資料項(data items)
物件類型 (Typical Objects) 外部實體(external entities),如printer, user或sensor 事物(things),如reports, displays或signals 事件(occurrences or events),如interrupt或alarm 角色(roles),如manager, engineer或salesperson 組織單元(organizational units),如division或team 地點(places),如manufacturing floor 結構(structures),如employee record
資料物件及屬性 (Data Objects and Attributes) 資料物件包含一套屬性做為一個物件的觀點(aspect)、品質(quality)、特性(characteristic),或描述者(descriptor) object: automobile attributes: make model body type price options code
關係是什麼? 關係 : 指明連結性(connectedness),是系統必須記得(remember)的事實(fact) 可能存在幾個關係的實例(instances of a relationship) 物件彼此間可能存在許多不同的關係(objects can be related in many different ways)
ERD表示符號 (0, m) (1, 1) object relationship 1 2 常見形式之一 其它常見形式 attribute
建立一個ERD Level 1 Level 2 Level 3 塑模(model)全部資料物件(data objects)(實體(entities))以及與其它物件的連結(connections) Level 2 塑模全部實體及關係(entities and relationships) Level 3 塑模全部實體,關係及能提供更深一層的屬性
ERD實例 request for service customer places (1,1) (1,m) (1,1) standard task table (1,n) work order generates (1,1) (1,1) (1,1) selected from work tasks (1,w) consists of (1,w) (1,i) materials lists
軟體設計語意模型 (Software Design Semantic Model)
資料字典 (Data Dictionary) 一種類似正規的文法(quasi-formal grammar),用以描述軟體將處理(process)和建立(create)的資料內容(content of data) 一種能描述控制資料(control data)以及控制資料可能值(如on或off)的表示法(notation) 一個包含where used/how used資訊的儲存庫(repository) 一種能以人工(manual)方式或以CASE tools表示的表示法(notation)
建立一個資料字典 (Building a Data Dictionary)
資料字典表式法 (Data Dictionary Notation) Delimit (設)定…的範圍
資料字典實例
物件導向觀念 (The OO Mindset) 物件(objects) 問題域(problem domain)
關鍵概念 (Key Concepts) 信息(messages) 類別及類別繼承 (classes and class hierarchies) 事例(instances) 繼承(inheritance) 抽象化及隱藏(abstraction and hiding) 物件(objects) 屬性(attributes) 方法(methods) 封裝(encapsulation) 多型(polymorphism) 信息(messages)
類別 (Classes) 物件導向的想法開始於將類別(class)定義成 樣板(template) 一般化描述(generalized description) 圖型(pattern) 藍本(blueprint):描述一些相似項目(similar items)的集合
元類(metaclass)(或稱為superclass)是一種類別的集合(collection of classes) 一個類別項目(a class of items)一旦被定義, 即可定義一個類別的特定實例(a specific instance)
建立類別 (Building a Class)
類別是什麼? occurrences roles organizational units things places external entities things occurrences roles organizational units places structures class name attributes: operations:
封裝/隱藏 (Encapsulation/Hiding) 該物件封裝處理資料所需的資料和邏輯程序 以實現”資訊隱藏” method # 1 data # 2 # 4 # 5 # 6
資訊隱藏 (Information Hiding) 模組 • 演算法 (algorithm) 控制 界面 • 資料結構 (data structure) • 外部介面的細節 (details of external interface) • 資源分配策略 (resource allocation policy) 客戶端 "secret" 特殊設計決定
為何要資訊隱藏 ? 降低副作用(side effects)的可能性 限制局部設計決定(local design decision)對全域性的衝擊(global impact) 透過控制介面(controlled interface)強調溝通(communication) 不鼓勵使用全域資料(global data) 導入封裝(leads to encapsulation),一個高品質設計的屬性(attribute) 可產生更高品質的軟體(higher quality software)
類別階層 (Class Hierarchy) chair table desk "chable" instances of chair furniture (superclass) subclasses of the furniture superclass
方法—運算,服務 (Methods—Operations, Services) 可執行程序(executable procedure)被封裝在類別(class)裡,是被用來作用(operate)在被定義在類別裡的部分資料屬性(one or more data attributes) 方法(method)是透過訊息傳送(message passing)而啟動(invoked)
信息 (Messages)
物件模型 (Object Models) 物件模型是以物件類別(object class)來描述系統 物件類別是一個架構於具共通屬性(common attributes)及由每個物件所提供之服務(操作)(services (operations))之物件集合的抽象理念(abstraction) 可用以生產不同的物件模型 繼承模型(inheritance models) 集成模型(aggregation models) 交互作用模型 (interaction models)
系統以自然的方式(natural ways)反應系統如何操控(manipulate)現實世界的實體(real-world entities) 物件模型較難塑模(model)較抽象的實體 物件類別的識別(object class identification)被認為是一個困難的行程(difficult process),因它需要對應用領域(application domain)有深入的理解 物件類別反映出領域實體(domain entities)在跨系統時的重複使用性(reusable across systems)
繼承模型 (Inheritance Models) 將領域物件類別(domain object classes)組織成階層式架構(hierarchy) 位於階層頂端(top)的類別可反映所有類別的共同特色(common features) 物件類別由一個或多個super-classes繼承他們的屬性和服務 物件類別可根據需要客製化(specialized)屬性和服務
統一塑模語言 (Unified Modelling Language) 由被廣泛使用之物件導向分析及設計方法的 開發者所提出 已成為物件導向塑模(object-oriented modelling)的一個有效標準(effective standard)
表示法(notation) 物件類別表示為在頂端有名字(name)的長方形(rectangles),屬性(attributes)位於中間,而操作(operation)在底部 在物件類別之間的關係(relationships)(或稱為關連(association))以連結物件的線段(lines)來表示 繼承(inheritance)常被視為一般化(generalisation),在階層中表示upwards (非downwards)的關係
圖書館類別階層 Library class hierarchy
使用者類別階層 User class hierarchy
多重繼承 (Multiple Inheritance) 相較於由單一父類別(single parent class)繼承屬性與服務,支援多繼承(multiple inheritance)系統則允許物件類別繼承多個super-classes 可能造成在不同super-classes中,屬性與服務的名字(name)相同,但語意卻不同的衝突(semantic conflicts) 使得類別階層重組更為複雜(hierarchy reorganisation more complex)
多重繼承 (Multiple Inheritance)
物件集成 (Object Aggregation) 集成模型(aggregation model)表示集合(collection)而成的類別(class)如何由其它類別組合而成(compose) 類似於在語意資料模型(semantic data models)中的部分關係(part-of relationship)
物件集合 (Object Aggregation)
物件行為塑模 (Object Behaviour Modelling) 行為模型(behavioural model)表示物件間的相互作用(interactions),此可用以產生特定系統行為的使用事例(use-case) 在UML中的序列圖(sequence diagrams )(或合作圖(collaboration diagrams)可用來塑模(model)物件間的相互作用(interaction)
電子版出版品 (Issue of Electronic Items)
上圖顯示一個序列圖(sequence diagram) 物件(objects)標示在圖的上方 操作(operations)由有標記的箭頭表示 操作順序(sequence of operations)從上到下
腳本(scenario) 圖書館使用者先擷取目錄(accesses the catalogue),查看該項目是否有電子版本,若是,則要求該項目的電子版本 基於版權問題,這必須被授權, 因此需要一個該項目和該使用者間許可(license)的系統交易(transition) 之後,該出版項目會先被傳送到網路伺服器物件(network server object)進行壓縮(compression),最後才寄給該使用者
CASE工作平台 (CASE Workbenches) 由一些緊密相關的工具(coherent set of tools)結合而成,用以支援相關的軟體行程活動,如分析、設計或測試 分析和設計工作平台(analysis and design workbenches)支援系統在需求工程和系統設計期間的塑模(modeling) 這些工作平台可支援某種特定的設計方法(a specific design method)或可支援以建立幾種不同類型的系統模型
分析及設計工作平台 (An Analysis and Design Workbench)
分析工作平台元件 (Analysis Workbench Components) 圖形編輯器(diagram editors) 建立資料流圖(data-flow diagrams),物件階層(object hierarchies),實體關聯圖(entity-relationship diagrams)等 模型分析及查核工具(model analysis and checking tools) 處理設計並回報告有關錯誤(errors)和異常(anomalies)的情況 儲存庫(repository)及相關的查詢語言(associated query language) 允許設計者(designer)在儲存庫中尋找設計(design)及相關的設計資訊
資料字典(data dictionary) 維護關於在系統設計中使用到之實體(entity)的資訊 報告定義及產生工具(report definition and generation tools) 從中央儲存庫(central store)取得資訊並自動產生系統文件(documentation) 格式定義工具(forms definition tools) 允許制定螢幕(screen)和文件(document)的格式(formats)
輸入/輸出工具(import/export facilities) 允許中央儲存庫(central repository)與其它開發工具(development tools)交換資訊 程式碼產生工具(code generation tools) 從中央儲存庫內的設計(design)自動產生程式碼或程式骨幹架構(code skeletons)
參考資料 Ian Sommerville, Software Engineering, 7th ed., Addison-Wesley,2004.