Project management

Download Report

Transcript Project management

UML簡介
軟體工程
Slide 1
Unified Modeling Language

為何要Modeling
建造超高層辦公大樓
蓋一棟房子
建狗屋
軟體工程
Slide 2
UML – Unified Modeling Language
貝多芬用五線譜
來創造音樂
我們用UML來設計軟體
軟體工程
Slide 3
UML的來源




UML是在Rational Software公司的支持下,結
合Grady Booch、James Rumbaugh及Ivar
Jacobson三位大師的成就,於1994年形成
Object Management Group (OMG)在1997年11月
開始採用UML (版本1.0)
UML 1.4於2001年2月開始採用
目前UML的官方版本是 UML 2
軟體工程
Slide 4
什麼是UML

根據三位大師所著 “The Unified Modeling
Language User Guide” 一書所說
• UML是撰寫軟體藍圖的標準語言
• UML可以視覺化的方式訂定、建構以及紀錄軟體為主系統的
產出
軟體工程
Slide 5
統一塑模語言UML的好處





標準化的系統開發文件
系統分析與設計的透明化與標準化
先檢驗架構再Coding
提昇程式的可讀性
降低系統維護及新增功能的難度
軟體工程
Slide 6
UML 1版的9種圖形









Class diagram(類別圖)
Object diagram(物件圖) – 非正式
Use case diagram (使用案例圖)
Sequence diagram (順序圖)
Collaboration diagram (合作圖)
State machine diagram (狀態圖)
Activity diagram(活動圖)
Component diagram(元件圖)
Deployment diagram (部署圖)
軟體工程
Slide 7
UML 2版的13種圖形













Class diagram(類別圖)
Object diagram(物件圖)
Use case diagram (使用案例圖)
Sequence diagram (順序圖)
Communication diagram 通訊圖 [Collaboration diagram (合作圖)]
State machine diagram (狀態圖)
Activity diagram(活動圖)
Component diagram(元件圖)
Deployment diagram (部署圖)
Package diagram (套件圖)
Composite structure (合成結構)
Interaction overview diagram (互動概圖)
Timing diagram (時序圖)
軟體工程
Slide 8
UML三劍客




Use case diagram
Class diagram
Sequence diagram
80/20法則
UML
三劍客
創造
收穫
軟體工程
Slide 9
Use Case Diagram

將客戶需求轉換成客戶與開發人員的共通文件
•
•
•
•
•
•
Use cases描述系統功能需求
找出系統的Actors
定義Actors與Use cases的關係
定義系統的邊界
定義Use cases間的關係
Actors與系統的對話
軟體工程
Slide 10
Use Case Diagram



Actors: 系統的參與者
Use cases: 系統的功能需求
Actors可以執行Use case
申請領料
員工
審查領料
物料管理系統
主管
出庫
庫管員
軟體工程
Slide 11
Use Case Diagram

定義系統邊界
申請領料
員工
審查領料
Flow Engine
主管
出庫
會計系統
庫管員
軟體工程
Slide 12
Use Case Diagram

定義Use cases間的關係
查詢庫存
<<include>>
申請領料
員工
審查領料
Flow Engine
主管
出庫
會計系統
庫管員
軟體工程
Slide 13
Use case description




Use case: 出庫作業
Actor: 庫管員
Precondition: 庫管員已通過身分認證
Description:
1.
2.
3.
4.

庫管員輸入申請單編號
系統顯示申請單內容及狀態
庫管員依據申請數量核發並點選出庫
系統顯示成功訊息
Exception:
軟體工程
Slide 14
Class Diagram



描述系統的靜態架構
描述系統中物件的各種型態
描述物件之間各式各樣的靜態關係,其中兩種
最主要的靜態關係,包含:
• Association(結合關係、關聯)
• Generalization(一般化關係)
軟體工程
Slide 15
An Example
Customer
Order
number
date
price
1
*
name
address
1
CorporateCustomer
contactName
creditRating
PersonalCustomer
creditCard
*
OrderLine
quantity
price
*
1
Product
軟體工程
Slide 16
Class Diagram的三個觀點

概念性觀點
• 表現Domain的Concept
• 和實作軟體無關

規格觀點
• 注重的是軟體的介面而不是實作

實作觀點
• 直接談論實作面
一般人不注重規格觀點,
直接畫實作觀點的Class Diagram
軟體工程
Slide 17
Class






Class name
Attributes
Methods
Access
Type
Parameters
MyDate
-day: int
-month: int
-year: int
+getDay(): int
+getMonth(): int
+getYear: int
+setDay(int): void
+setMonth(int): void
+setYear(int): void
軟體工程
Slide 18
按圖施工
MyDate
-day: int
-month: int
-year: int
+getDay(): int
+getMonth(): int
+getYear: int
+setDay(int): void
+setMonth(int): void
+setYear(int): void
軟體工程
Slide 19
Sequence Diagram





系統倚賴的不是功能有限的個別物件,而是將
這些小物件的基本功能連結起來,構成一股龐
大的力量。
連接系統功能與靜態架構
通常每個Use case會有一個Sequence diagram
按時間先後次序發送的訊息
物件的概念
軟體工程
Slide 20
Sequence Diagram
ATM螢幕
讀卡機
讀卡
帳戶
讀卡
初始化
提示輸入密碼
輸入密碼
打開帳戶
核對密碼
提示選擇事務
選擇查看帳戶
查詢帳戶資料
帳戶資料
顯示帳戶資料
軟體工程
Slide 21
物件和生命線

類別
帳戶


類別
物件
John : 帳戶
: 帳戶
已命名物件
未命名物件
生命線
: 帳戶
物件和生命線
軟體工程
Slide 22
訊息



當某一物件需要協助時,便會發送訊息給另一
個物件
訊息的符號是一條帶箭頭的實線
訊息名稱及參數
: 信用卡
:客服人員
設定信用額度(信用額度)
查詢可用餘額()
軟體工程
Slide 23
活動期


表現物件執行運算的期間
符號是長條狀的空心矩形
: 信用卡
:客服人員
設定信用額度(信用額度)
查詢可用餘額()
軟體工程
Slide 24
為何要導入UML/OOAD





專案越來越大且複雜
資訊系統的維護性及擴充性
人員異動快
自行開發或委外開發的主導權
需整合現有的異質系統
• Java, .NET, CORBA, Delphi, PHP
• Oracle, MSSQL, MYSQL, SYBASE
軟體工程
Slide 26
導入UML/OOAD的經驗




需求隨時間改變
Architecture centric & Prototyping
先整合、後分工
Loose coupling
• 降低元件的相依性,以準備隨時更換


Discipline
學習步驟UML → OOAD → Java
軟體工程
Slide 27
物件導向開發流程的三大原則

Architecture centric
• 穩固的Architecture才能支持隨時可能發生的變化

Iterative and Incremental
• 分析一點點、Coding一點點、測試一點點
• 逐步完成、降低風險

Use case driven
• 從最關鍵的Use case開始
• 實現 I&I的方法
• 驗證架構
軟體工程
Slide 28
結語


書同文、車同軌
研讀、學習UML是一回事,實際使用UML又
是另一回事
• 坐而言不如起而行
• 唯有實際運用UML,才會真的熟悉這套語言

不會UML頂多只是OO Programmer
使用了UML,才有可能成為OO的
Analyzer、Designer及Architect
軟體工程
Slide 29