## UML與需求分析
### 基本概述
常常會聽到這樣一句話,客戶需要的是一把梯子,系統分析師了解到的是一張凳子,開發人員做出來的是一張桌子。由此可以看出需求分析的準確性和正確性的重要之處。
### 需求分析中出現差異性問題的原因
1、很多角色會參與到需求分析中來
2、不同的角色會有不同的出發點
3、人的需求分析能力是有差異的
4、需求的“詞不達意”
5、需求是不斷在變化的
?
### 客戶與項目組對需求理解隨時間變化的3種曲線圖

第一種情況:最開始客戶對需求是有一定理解的,項目組幾乎沒有理解,隨著時間的推移,客戶對需求理解越來越強,盡管項目組對需求的理解也變強了,但總是落后于客戶,這樣就會造成需求分析工作陷入被動。
?
第二種情況:最開始和第一種一樣,隨著時間的推移,項目組到達交點之后,理解程度總是高于客戶,這樣項目組才能切實體會出客戶需求。
?
第三種情況:這種情況是一開始項目組對需求的理解就高于客戶,一直到最后。這種情況是最好的,但是一般是發生在項目組做過類似項目的情況中。
### 需求分析的幾大要點
### 項目背景
為什么會有這個項目?客戶為什么會想做這樣的一個項目?如果沒有這個項目會怎樣?
?
### 需要
1、本項目解決了客戶什么問題?
2、本項目涉及了哪些涉眾?
3、本項目的目標是什么?
4、本項目的范圍是什么?
5、本項目的成功標準是什么?
?
### 需求規格
功能性需求,非功能性需求等等。
?
PS:一般來講其優先級為(項目背景>需要>需求規格)。如果能把握住項目背景和需要這樣不是經常發生變化的需求,那么無論需求規格怎么變,都不會造成太大影響。
?
?
### UML與需求分析的關系
1、可以通過UML中的各種圖來對需求進行更為簡潔,無二義性的描述。
2、可以用結構型的UML圖對業務進行結構建模。
3、可以用行為型的UML圖對業務進行行為建模。
4、可以用功能型的UML圖對業務應有功能進行功能建模。
?
PS:需求分析也不見得就一定要用UML,只不過UML是現如今軟件工程的標準建模語言,并且其簡單易懂,故掌握UML也是很有必要的。
### 需求分析的工作
1、全面準確地獲取需求。
2、將獲取的需求準確地分享給項目組其他成員,并根據他們的反饋進一步完善需求。
3、和客戶確認項目組對需求的理解。
4、根據需求驅動工作。