为什么要做需求分析?
为了便于和客户、策划沟通,通过文档的形式来展示自己对客户需求的理解程度,免得做偏了,做出来的不是客户或策划需要的。
开发成本上,优先级等方面考虑
弄清楚用户要解决什么问题,从用户提供的,用户未提供但潜在存在的等方面全面地理解、挖掘、分析出用户真实、准确的需求
用例图
一、用例图是什么场景下使用
从客户的角度来描述系统功能,在需求分析文档里使用
二、组成元素
参与者:使用该系统的人或事物,以人形图标表示
用例:代表系统某项完整的功能,用椭圆表示
关系:定义用例之间的关系,有泛化关系,扩展关系,包含关系
三、泛化关系
表示同一业务目的(父用例)的不同技术实现(各个子用例),用三角箭头从子用例指向父用例
比如支付包含了分期支付,支付宝支付,贷款支持等,但同时也可以用来表示基于某个参与者有更多的用例。
四、扩展与包含的区别
包含:一个用例可以包含其他用例具有的行为,并把它包含的用例行为作为自身行为的一部分,采用虚线箭头加 include 指向被包含的用例
扩展:在完成某个功能的时候偶尔会执行另外一个功能,用虚拟箭头加 extend 指向被包含的用例。
类图
一、类图的主要元素
类、接口、关系
二、类的主要元素
类名、属性和方法
公共类型用 + 表示,私有用 - 表示,保护用 # 表示
对应 TypeScript 里的 public private protected
三、类图都有哪些关系
-
泛化关系:类与类,接口与接口之间的继承关系,比如圆形继承于形状类,用实线空心箭头指向父类
-
实现关系:类与接口之间的实现关系,用虚线空心箭头指向父类
-
依赖关系:一个系统依赖另一个系统的服务,比如自行车通过打气筒类来充气,用虚线箭头指向被依赖的类,不会为某辆自行车专门配个打气筒
-
关联关系:存在固定的对应关系,比如主人和自行车,公司与员工等,用实线箭头指向被关联的类。
- 关联关系的名称:描述该关系的性质,是个动词短语,表明源对象正在目标对象上执行动作
- 关联关系的角色:一个类对另一个类所表现的职责,角色名称是名词或者名称短语
- 关联关系的多重性:有多少对象可以参与该关联,1 表示 1 个对象,1…n 表示 1 到 n 个对象,* 代表许多个对象
-
聚合关系:整体和部分的关系,两个类处于不同的层次上,一个代表整体,一个代表部分,比如汽车由轮胎以及其它零件组成,用空心菱形箭头表示,其中菱形指向整体,箭头指向部分
-
组合关系:部分的生命周期依赖于整体,比如公司与部门,用实心菱形箭头表示,其中菱形指向整体,箭头指向部分
四、关联、聚合、组合之间的差别
首先组合、聚合是关联关系的一种,关联的两个类是属于同一层级,而聚合、组合是不同层级,是整体与部分的关系,另外组合关系里的部分的生命周期依赖于整体。
表示方式也不同,关联是用实线箭头指向被关联类,聚合是用空心菱形箭头,空心菱形指向整体,箭头指向部分,而组合则是用实心菱形箭头表示,实心菱形指向整体,箭头指向部分。
时序图
一、作用
描述对象之间传递消息的时间顺序,即用例中的行为顺序。其中纵轴是时间轴,横轴是代表在协作中各个独立的对象
二、组成元素
- 对象
- 生命线
- 消息
- 激活
- 对象的创建和销毁(X)
- 组合片段:
- 抉择(ALT)两个或更多消息序列之间的互斥的选择,相当于 if else,在片段中设置一个临界来指示该片段可以运行的条件。比如空间配置有配制第三方跳转则跳转,没有则继续
- 选项(Opt)包含一个可能发生或不发生的序列,比如获取相册,通知,微博等动态数据是根据是否配制该应用来决定的
- 循环(Loop)片段重复一定次数,可以在临界中指示片段重复的条件
- 并行(Par)并行处理,片段中的事件可以交错。比如发起相册,通知等接口的请求是互相没有依赖,可以并行的
- 中断(Break)
三、选项与抉择的区别
选项表示可能会发生,也可能不会发生,一般用于只有一个 if 的场景
抉择则用在多个 if 或者有 else 的场景
活动图(流程图)
一、作用
描述系统的活动,判定点和分支
二、活动图的组成元素
- 动作状态,圆角矩形
- 分支与合并,空心小菱形,分支包括一个入转换和两个带条件的出转换
- 分叉与汇合,分叉用来描述并发线程,粗直线表示
- 泳道:哪些活动是由哪些对象进行的