## UML与需求分析
### 基本概述
常常会听到这样一句话,客户需要的是一把梯子,系统分析师了解到的是一张凳子,开发人员做出来的是一张桌子。由此可以看出需求分析的准确性和正确性的重要之处。
### 需求分析中出现差异性问题的原因
1、很多角色会参与到需求分析中来
2、不同的角色会有不同的出发点
3、人的需求分析能力是有差异的
4、需求的“词不达意”
5、需求是不断在变化的
### 客户与项目组对需求理解随时间变化的3种曲线图
![](https://box.kancloud.cn/2016-02-25_56cec6c1d1ca7.jpg)
第一种情况:最开始客户对需求是有一定理解的,项目组几乎没有理解,随着时间的推移,客户对需求理解越来越强,尽管项目组对需求的理解也变强了,但总是落后于客户,这样就会造成需求分析工作陷入被动。
第二种情况:最开始和第一种一样,随着时间的推移,项目组到达交点之后,理解程度总是高于客户,这样项目组才能切实体会出客户需求。
第三种情况:这种情况是一开始项目组对需求的理解就高于客户,一直到最后。这种情况是最好的,但是一般是发生在项目组做过类似项目的情况中。
### 需求分析的几大要点
### 项目背景
为什么会有这个项目?客户为什么会想做这样的一个项目?如果没有这个项目会怎样?
### 需要
1、本项目解决了客户什么问题?
2、本项目涉及了哪些涉众?
3、本项目的目标是什么?
4、本项目的范围是什么?
5、本项目的成功标准是什么?
### 需求规格
功能性需求,非功能性需求等等。
PS:一般来讲其优先级为(项目背景>需要>需求规格)。如果能把握住项目背景和需要这样不是经常发生变化的需求,那么无论需求规格怎么变,都不会造成太大影响。
### UML与需求分析的关系
1、可以通过UML中的各种图来对需求进行更为简洁,无二义性的描述。
2、可以用结构型的UML图对业务进行结构建模。
3、可以用行为型的UML图对业务进行行为建模。
4、可以用功能型的UML图对业务应有功能进行功能建模。
PS:需求分析也不见得就一定要用UML,只不过UML是现如今软件工程的标准建模语言,并且其简单易懂,故掌握UML也是很有必要的。
### 需求分析的工作
1、全面准确地获取需求。
2、将获取的需求准确地分享给项目组其他成员,并根据他们的反馈进一步完善需求。
3、和客户确认项目组对需求的理解。
4、根据需求驱动工作。