1 需求分析
#需求分析
1.1 需求分析概述
- 初步软件需求存在的问题:不具体,不清晰,关系不明朗,存在潜在缺陷,没有区分不同软件需求(有必要鉴别不同软件需求项的重要性差别,区分不同软件需求的开发优先级)
- 分析软件需求的任务:基于初步软件需求,进一步精化和分析软件需求,确定软件需求优先级,建立软件需求模型,发现和解决软件需求缺陷,形成高质量的软件需求模型和软件需求规格说明书
- 软件需求的不同视角表示:
- 用例视角:具有哪些功能、功能间有何关系、功能与利益相关方有何关系,UML提供了[[【笔记】软件工程:需求分析#1.2.3 用例图描述 | 用例图]]来分析和描述用例视角的软件需求模型
- 行为视角:用例是如何通过业务领域中一组对象以及它们间的交互来达成的,UML提供了交互图、状态图来描述行为视角的软件需求模型
- 结构视角:业务领域有哪些重要的领域概念以及它们之间具有什么样的关系,UML提供了类图来描述和分析业务领域的概念模型
1.2 描述需求的方式
1.2.1 自然语言描述
- 描述软件的功能性需求(软件系统需要对老人在家的状况进行分析,以判断是否出现突发异常情况。一旦出现异常情况,就需要通知老人家属和医生)、质量需求(老人通过语音方式与系统进行交互,系统正确理解老人语音指令的比率应达到90%以上)和开发约束需求(客户端App软件须运行在Android 4.4及以上版本的操作系统)等
- 不足:不具体,不直观,不准确,有二义
1.2.2 软件原型描述
- 直观、可展示和可操作,但无描述软件需求的具体细节
1.2.3 用例图描述
- 描述软件系统的边界以及软件外部使用者所观察到的系统功能,"观察到"是指外部使用者与系统存在交互,即信息输入和输出
- 用例图的构成
- 执行者:系统之外的实体,他们使用软件系统功能、与软件系统交换信息,可以是一类用户,也可以是其他软件系统或物理设备。执行者是UML中的类, 代表一类用户或者外部实体,而非具体的对象实例。执行者通常对应于软件系统的利益相关方
- 用例:核心是功能。表示执行者为达成一项相对独立、完整的业务目标而要求软件系统完成的功能
- 执行者与用例间的关系:
1.2.3.1 用例建模过程
-
第⼀步:找到所有的参与者和用例
• 识别出参与者并做简单的描述
注意事项:
• 识别出用例并做简单的介绍,寻找用例的方法:
用例的命名:
注意事项:
-
第⼆步:编写用例
• 列出用例
用例的全部生命周期:
用例概述的例子(概述时既包括了主成功场景,也有候选场景 ):
详细用例归约例子:
用例文档模板:
• 给用例事件流程划分重要等级
• 按照重要程度排序详细描述事件流程
1.2.3.2 用例建模时注意事项
-
不要把用例定义成功能分解
一个实际案例的对比理解:
1.2.3.3 用例间的关系
-
包括包含(Include),扩展(Extend),继承(Inherit)三种关系
-
包含关系
-
扩展关系:按基用例中指定的扩展条件,把扩展用例的行为插入到由基用例中的扩展点定义的位置,基用例是可单独存在的,在扩展用例中定义的行为如果离开基用例是没意义的,一个用例可以被多个用扩展,而一个扩展用例也可以扩展多个用例
示例:
-
继承关系:如果A与B相似,但A的动作序列是通过改写B的部分动作或者扩展B的动作而获得的,则称用例A继承用例B
1.2.3.4 扩展与包含关系的区别
- 包含:因为子用况被提出,基用况并非一个完整的用况,所以include关系中的基用况必须和子用况一起使用才够完整,子用况也必然被执行。由基用况指向子用况
- 扩展:新用况在原用况(基用况)基础上增加了新步骤。基用况是完整的 ,即使没有子用况参与。只有当扩展点被激活时,子用况才会执行。由子用况指向基用况
1.2.3.5 扩展与继承有何本质区别
1.2.4 边界框
表示整个软件系统或子系统的边界,边界框内的用例构成了系统或子系统的内容,如用例。外面的是系统之外的执行者。
注意画图的时候不要把这个漏掉了
示例:"空巢老人看护软件"的用例图
1.2.5 交互图描述
- UML交互图的的作用:刻画对象间的消息传递,分析如何通过交互协作完成功能
理解:- 用例的功能实现方式
- 软件系统在某种使用场景下对象间的交互协作流程
- 软件系统的某个复杂操作的逻辑实现模型
- 二类交互图(
表达能力相同,二类图可以相互转换
)
顺序图 | 通信图 |
---|---|
强调消息传递的时间序 | 突出对象间的合作 |
1.2.5.1 顺序图
- 描述对象间的消息交互序列:
- 纵向:时间轴,对象及其生命线(虚线),活跃期(长条矩形)
- 横向:[[【笔记】需求分析补充知识#1 对象间的消息传递 | 对象间的消息传递]] 注意:[[【笔记】需求分析补充知识#^f01848 | 消息图元的表示]]
- 顺序图的表达方式:
- [[【笔记】需求分析补充知识#^0e4a11 | 顺序图中的绘画技巧]]
1.2.6 类图和对象图
均在描述系统的静态结构
1.2.6.1 类图
- 图的构成:
- 结点:表示系统中的类(或接口)及其属性和操作
- 边:类之间的关系
-
[[【笔记】需求分析补充知识#4 类图的UML表示| 类的UML表示]]:
-
一种特殊的类:接口
不包含操作实现部分的特殊类, 包括供给接口和需求接口
-
类间的关系
-
画类图的注意事项