笔记 | 软件工程:需求分析

1 需求分析

#需求分析

1.1 需求分析概述

  1. 初步软件需求存在的问题:不具体,不清晰,关系不明朗,存在潜在缺陷,没有区分不同软件需求(有必要鉴别不同软件需求项的重要性差别,区分不同软件需求的开发优先级)
  2. 分析软件需求的任务:基于初步软件需求,进一步精化和分析软件需求,确定软件需求优先级,建立软件需求模型,发现和解决软件需求缺陷,形成高质量的软件需求模型和软件需求规格说明书
  3. 软件需求的不同视角表示:
    1. 用例视角:具有哪些功能、功能间有何关系、功能与利益相关方有何关系,UML提供了\[【笔记】软件工程:需求分析#1.2.3 用例图描述 \| 用例图]来分析和描述用例视角的软件需求模型
    2. 行为视角:用例是如何通过业务领域中一组对象以及它们间的交互来达成的,UML提供了交互图、状态图来描述行为视角的软件需求模型
    3. 结构视角:业务领域有哪些重要的领域概念以及它们之间具有什么样的关系,UML提供了类图来描述和分析业务领域的概念模型

1.2 描述需求的方式

1.2.1 自然语言描述
  1. 描述软件的功能性需求(软件系统需要对老人在家的状况进行分析,以判断是否出现突发异常情况。一旦出现异常情况,就需要通知老人家属和医生)、质量需求(老人通过语音方式与系统进行交互,系统正确理解老人语音指令的比率应达到90%以上)和开发约束需求(客户端App软件须运行在Android 4.4及以上版本的操作系统)等
  2. 不足:不具体,不直观,不准确,有二义
1.2.2 软件原型描述
  1. 直观、可展示和可操作,但无描述软件需求的具体细节
1.2.3 用例图描述
  1. 描述软件系统的边界以及软件外部使用者所观察到的系统功能,"观察到"是指外部使用者与系统存在交互,即信息输入和输出
  2. 用例图的构成
  • 执行者:系统之外的实体,他们使用软件系统功能、与软件系统交换信息,可以是一类用户,也可以是其他软件系统或物理设备。执行者是UML中的类, 代表一类用户或者外部实体,而非具体的对象实例。执行者通常对应于软件系统的利益相关方
  • 用例:核心是功能。表示执行者为达成一项相对独立、完整的业务目标而要求软件系统完成的功能
  • 执行者与用例间的关系:
1.2.3.1 用例建模过程
  1. 第⼀步:找到所有的参与者和用例

    • 识别出参与者并做简单的描述

    注意事项:

    • 识别出用例并做简单的介绍,寻找用例的方法:

    用例的命名:

    注意事项:

  2. 第⼆步:编写用例

    • 列出用例

    用例的全部生命周期:

    用例概述的例子(概述时既包括了主成功场景,也有候选场景 ):

    详细用例归约例子:

    用例文档模板:

    • 给用例事件流程划分重要等级

    • 按照重要程度排序详细描述事件流程

1.2.3.2 用例建模时注意事项
  1. 不要把用例定义成功能分解

    一个实际案例的对比理解:

1.2.3.3 用例间的关系
  1. 包括包含(Include),扩展(Extend),继承(Inherit)三种关系

  2. 包含关系

  3. 扩展关系:按基用例中指定的扩展条件,把扩展用例的行为插入到由基用例中的扩展点定义的位置,基用例是可单独存在的,在扩展用例中定义的行为如果离开基用例是没意义的,一个用例可以被多个用扩展,而一个扩展用例也可以扩展多个用例

    示例:

  4. 继承关系:如果A与B相似,但A的动作序列是通过改写B的部分动作或者扩展B的动作而获得的,则称用例A继承用例B

1.2.3.4 扩展与包含关系的区别
  1. 包含:因为子用况被提出,基用况并非一个完整的用况,所以include关系中的基用况必须和子用况一起使用才够完整,子用况也必然被执行。由基用况指向子用况
  1. 扩展:新用况在原用况(基用况)基础上增加了新步骤。基用况是完整的 ,即使没有子用况参与。只有当扩展点被激活时,子用况才会执行。由子用况指向基用况
1.2.3.5 扩展与继承有何本质区别
1.2.4 边界框

表示整个软件系统或子系统的边界,边界框内的用例构成了系统或子系统的内容,如用例。外面的是系统之外的执行者。

注意画图的时候不要把这个漏掉了

示例:"空巢老人看护软件"的用例图

1.2.5 交互图描述
  1. UML交互图的的作用:刻画对象间的消息传递,分析如何通过交互协作完成功能
    理解:
    • 用例的功能实现方式
    • 软件系统在某种使用场景下对象间的交互协作流程
    • 软件系统的某个复杂操作的逻辑实现模型
  2. 二类交互图(表达能力相同,二类图可以相互转换
顺序图 通信图
强调消息传递的时间序 突出对象间的合作
1.2.5.1 顺序图
  1. 描述对象间的消息交互序列:
  • 纵向:时间轴,对象及其生命线(虚线),活跃期(长条矩形)
  • 横向:\[【笔记】需求分析补充知识#1 对象间的消息传递 \| 对象间的消息传递] 注意:\[【笔记】需求分析补充知识#\^f01848 \| 消息图元的表示]
  1. 顺序图的表达方式:
  2. \[【笔记】需求分析补充知识#\^0e4a11 \| 顺序图中的绘画技巧\]

1.2.6 类图和对象图

均在描述系统的静态结构

1.2.6.1 类图
  1. 图的构成:
  • 结点:表示系统中的类(或接口)及其属性和操作
  • 边:类之间的关系
  1. \[【笔记】需求分析补充知识#4 类图的UML表示\| 类的UML表示]:

  2. 一种特殊的类:接口

    不包含操作实现部分的特殊类, 包括供给接口和需求接口

  3. 类间的关系

  4. 画类图的注意事项

相关推荐
FellAveal5 小时前
【Go语言入门学习笔记】Part18.工作池与WaitGroup(也即协程池)
笔记·学习·golang
xqqxqxxq6 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
龙仔7256 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
Z5998178418 小时前
c#软件开发学习笔记--Modbus-RTU通讯
笔记·学习·c#
quanjui9 小时前
【医学尝试】基于Segment Anything Model的医学图像分割研究:眼底OCT与X线胸片微调实战
人工智能·笔记·学习
小黄蚁9 小时前
FreeRTOS学习笔记(十二)
笔记·学习
茯苓gao9 小时前
嵌入式开发笔记:电机参数辨识与自学习完全指南——从电气参数到机械特性的深度解析
笔记·嵌入式硬件·学习
优化Henry10 小时前
学习笔记之VoNR语音业务注册流程
网络·笔记·学习·5g·信息与通信
摇滚侠10 小时前
《RocketMQ 官网》阅读笔记 RocketMQ 订阅 (Subscription)
笔记·rocketmq
风曦Kisaki12 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes