我们回顾一下需求工程的基本过程,
_____软件需求 -> _____软件需求 -> ______软件需求 -> _______软件需求
如果你忘了,请跳转软件工程第4章 软件需求工程基础-CSDN博客
分析软件需求属于需求工程的第二步,是需求工程中承上启下的一步,需要对第一步获取软件需求后进行精华,然后才能得到输出产品(即软件需求模型及文档)
1.分析软件需求这一阶段的任务?
用程序输入输出的观点来理解:
输入:初步软件需求,各利益相关方的要求制约
输出:软件需求模型,软件需求规格说明书
2.软件需求模型:
根据第4章所提到的OOA方法,有如下三种视角分析和建立软件需求模型。
1)用例视角。使用用例图,建立用例模型。
2)行为视角。使用交互图、状态图,描述对象以及之间的交互。
3)结构视角。使用类图,分析类。
很明显,第5章我们介绍了用例图,这一章我们要介绍状态图、顺序图、类图。
3.交互图
UML提供了顺序图和通信图,两图可相互转换。
1)顺序图。图的纵轴代表时间,横轴由参与交互的一组对象构成。
图的构成:节点和边。
a.对象。用矩形框或人形符号表示。
如果对象仅有类名,那么类下面要加下划线,表示是由该类实例化生成的对象(object)
比如,乘客XZ,属于passenger类,可以写成passenger
或者写成XZ。
对象下面的虚线,代表生命线,表示对象的活跃时期。
b.消息传递。用水平有向边表示。
以这张图为例,用户登陆界面作为一个类,可以写成UserloginUI;
登录系统这一消息传递过程,可以写成LoginSystem,在图中用水平有向边表示。
同时你会发现有向边的形式好像不太一样?
虚线有向边代表返回消息,顺序图中的消息类别分为同步消息、异步消息、返回消息、自消息,这里略。
4.通信图。
暂略。
5.类图。
用来表示系统中的类及其之间的关系。
图的构成:结点和边。
a.结点,也就叫做类。用矩形框表示。
b.边。代表类与类之间的关系,用不同的线段表示。
举个例子,
西瓜是一种水果。
抽象来看,西瓜是一个类,水果是一个类。
我们分别画两个矩形框,然后西瓜属于水果的一种,那么我们用一条特殊的线段将他们连起来。
(原谅我用画笔工具画的)
5.1
复杂的来看,类怎么表示?
例:学生(类)具有姓名、年龄的属性,里面还封装了modifyinfo()方法。
类具有名称、属性、方法。
属性和方法是具有可见性的。
1)可见性:+,public;
-, private;
#,protected..
2)多重性:两个类之间存在关联,但是一端类有一个实例对象,另一端可以有多个。
1,表示1个;
0..1,表示0个或1个;
0..*,表示0个或任意多个;
1..*,表示1个或任意多个;
m..*,表示m到n个;
n..*,表示n到任意多个。
3)约束特性。
比如,属性的取值有序,那么规定{Order}为约束特性。
5.2 类间的关系怎么表示?
类间的关系包括关联、聚合和组合、继承、实现、依赖等。
1) 关联(association)。用实线表示。
比如:顾客consumer类,和餐馆restaurant类,存在关联关系。
2)聚合(aggregation)和组合(composition)。
两种强关联关系。
聚合:部分可以脱离整体而存在。
组合:部分不能脱离整体而存在。
注意以上两者箭头的不同。
3)依赖(denpendency)。
类B的变化会引起类A的变化,类A的定义必须依赖于类B。
用虚线和箭头表示,箭头指向被依赖方。
例子:司机(类)必须有车(类)才能开。
4)继承(inheritance)
一种特殊的依赖关系。
用空心三角箭头加实线表示,箭头用子类指向父类。
再比如,孙悟空、猪八戒、悟净都属于徒弟(类)。
6.状态图。
描述实体的内部状态及其变化。
实体:可以是对象、软件系统、部分子系统、某个构件,不能是类。
图的构成:节点、边。
a.状态(节点),初始状态有1个,终止状态有0-n个,中间状态不定。
b.事件。