软件需求管理——用例建模

1、用例建模概念

1.1用例在需求管理过程中的作用

描述系统的功能性需求

  • 关联干系人需要以及软件需求
  • 确认于系统交互的人或对象(参与者)
  • 定义系统的边界
  • 捕捉和传达系统的理想行为(用例)

1.2用例模型的表示

  • 文本描述

  • 用例图

1.3 用例图的主要元素

  • 参与者:

与系统交互的人或外部系统
与系统交互的硬件组件
关注的重点是所承担的“角色”
参与者的名要明确定义其角色

  • 用例:

定义一个参与者要用到的系统功能
通过此刻为参与者提供有价值且可观测的结果
描述系统为实现参与者价值所开展的行为序列
对参与者与系统之间的交互活动进行建模
从特定的用户角度出发,是完整的,实现特定用户的事件流

  • 关联:

用例图中用例与参与者之间的交互关系
用一条直线表示交互——关联
有箭头的关联指出是谁发起的交互
没有箭头则表明双方都可以放弃交互

  • 场景:

场景是用例的实例


2、用例建模过程

2.1 构建用例模型的步骤

  • 找到所有的参与者和用例
  1. 识别出参与者并做简单的描述
  2. 识别出用例并做简单的介绍
  • 编写用例
  1. 给用例事件流程划分重要等级
  2. 按照重要程度排序详细描述事件流程

2.2 参与者

寻找参与者

  • 谁/什么使用系统?
  • 谁/什么从系统中获取信息?
  • 谁/什么向系统提供信息
  • 公司的哪个部门会使用系统
  • 谁/什么负责系统的维护
  • 还有哪些其他的系统会使用系统

识别参与者——是谁与系统进行交互

参与者建模的检查项

  • 是否找全所有的参与者?是否对系统环境中的所有的角色进行了描述和建模?
  • 每个参与者是否至少与一个用例发生了交互?
  • 是否可以为每一个角色找到至少两个实例?
  • 不同参与者与系统的交互是否一致扮演的角色是否相似?如果有,则应该要合并这些参与者作为同一个角色

2.3 用例

寻找用例

  1. 描述系统为参与者提供的服务/参与者如何与系统交互
  2. 基本策略:把自己当作actor,与设想中的系统进行交互。
  • 每个参与者的目标是什么?
  • 为什么参与者要使用这个系统?
  • 参与者是否需要对系统中数据进行创建,存储,更改,删除或者读取的操作?为什么?
  • 参与者是否需要将外部事件或发生的改变告知系统?
  • 参与者是否需要找到系统内部发生的事件或改变?
  • 系统是否能够应对业务中所有的正确行为与操作?

用例的命名

  • 表面参与者的目标或者作用
  • 使用主动语态:用动词起始
  • 设计一系列操作流程( to-do list)

用例建模过程中的检查项

  • 用例建模是为了表示系统的行为。通过模型可以很容易理解系统进行的操作
  • 应该识别出所有的用例,用来表达所有的需求
  • 系统的任何一个特性都可以找到对应的用例
  • 用例模型并不包括多余的行为;所有的用例可以追溯到系统的功能性需求作为验证
  • 去掉所有的CRUD类的用例

2.4用例建模的过程

用例图——>用例提纲——>用例详细规约

2.5 总结:Use Case模型的建立步骤

  1. 找出系统外部的参与者和外部系统,确定系统的边界和范围;
  2. 确定每一个参与者所期望的系统行为;
  3. 把这些系统行为命名为Use Case;
  4. 使用泛化、包含、扩展等关系处理系统行为的公共或变更部分;
  5. 编制每一个Use Case的脚本;
  6. 绘制Use Case图;
  7. 区分主事件流和异常情况的事件流,可以把表示异常情况的事件流作为单独的Use Case处理;
  8. 细化Use Case图,解决Use Case间的重复与冲突问题。

3、用例建模精讲

3.1设定系统边界

  • 系统边界:一个系统所包含的所有系统c成分与系统以外各种事物的分界线
  • 系统边界会对用例以及参与者的定义有所影响

  • 方案一

  • 方案二

  • 方案三

3.2不要把用例定义成功能分解

如何避免功能性分解?

问题现象:

  • 非常细小的用例
  • 用例过多
  • 没有实际价值的用例
  • 通过底层操作进行命名
  • “操作”+“对象”
  • “功能”+“数据”
  • 很难理解整体模型

修改思路:

  • 寻找更大的应用场景
  • 从一个用户的角度出发

3.3 何时使用包含关系?

  • 当多个用例有共享行为时,使用包含关系
  • 为共享行为单独创建用例,被相关用例“包含”

3.4 何时使用扩展关系?

  • 一个用例与另一个用例近似,只有少许额外的活动
  • 将代表普遍或基本行为的情况定义为一个用例
  • 将特殊的、例外的部分定义为扩展用例

3.5 用例图中的主要图标


4、 建模工具介绍

4.1 系统建模工具的主要功能

可视化模型表达

  • UML模型
  • Web模型,例如Azure
  • 数据库模型,例如Power Designer
  • 用户自定义模型,例如Visio

画图工具

StarUML

辅助开发流程中的项目管理

4.12常用系统建模工具


软件工程 个人学习笔记(第三章)相关推荐

  1. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

  2. 机器人导论(第四版)学习笔记——第三章

    机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...

  3. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件

    第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...

  4. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog

    Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社  [美]Charles Petzold 著  北京博彦科技发展有限公司 ...

  5. ros2 Navigation 学习笔记 第三章(the construct 网站)

    第三章 如何在环境中给机器人定位 序言 本章包括: 机器人定位的意义(即需要知道它对于环境中的位置和方向) 如何在ROS2中用AMCL定位 如何设置机器人的初始位置(手动.自动与使用ROS API) ...

  6. 信号与系统学习笔记 第三章

    第三章 周期信号的傅里叶级数表示 下面将讨论信号与线性时不变系统的另一种表示,讨论的出发点仍是将信号表示成一组基本信号的线性组合.这是因为,将信号表示成基本信号的线性组合是有利的,如果基本信号具有一下 ...

  7. 仿生学导论学习笔记——第三章

    第三章 仿生学基本要素 3.1 仿生需求 3.1.1 需求驱动 3.1.1.1 生存需求 3.1.1.2 健康需求 3.1.1.3 军事需求 3.1.1.4 发展需求 3.1.1.5 精神需求 3.1 ...

  8. 计算机网络学习笔记——第三章:数据链路层

    目录 第三章:数据链路层 3.1 数据链路层功能概述 3.2 封装成帧和透明传输 3.3 差错控制 3.3.1 检错编码 3.3.2 纠错编码 3.4 流量控制与可靠传输机制 3.4.1 流量控制.可 ...

  9. JavaScript高级程序设计红宝书学习笔记第三章基本概念

    第三章 基本概念 本章内容 语法 数据类型 操作符 语句 函数 3.1 语法 3.1.1 区分大小写,ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 3.1.2 标识符 标识符:变 ...

  10. [吴功宜]计算机网络学习笔记--第三章 数据链路层

    教材:计算机网络(第四版) 作者:吴功宜 吴英 出版社:清华大学 第三章 数据链路层 3.1 差错产生的原因与差错控制方法 物理线路:由传输介质与通信设备组成 设计数据链路层的主要目的:在有差错的物理 ...

最新文章

  1. 2020年第十五届全国大学生智能汽车竞赛浙江赛区比赛成绩分析
  2. windows下cd无法切换到指定目录下
  3. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  4. 【图像处理】RGB Bayer Color分析
  5. UVA - 12338 Anti-Rhyme Pairs(后缀数组)
  6. LeetCode 第 29 场双周赛(890/2259,前39.4%)
  7. PID控制器改进笔记之五:改进PID控制器之串级设定
  8. 外媒:华为或将在2月24日发布麒麟820 支持5G网络
  9. 自动驾驶车辆控制 最终项目作业 实现分析
  10. 向量交点坐标公式_高中数学必修1-5常用公式(定理)
  11. yytextview多种格式_YYText之图文混排
  12. 再见,996!程序员开源考公指南火了:三人已成功上岸!
  13. KNY三人组对YiSmile小程序的项目总结
  14. MIPI换EDP芯片-LT8911EXB芯片,商显行业新选择
  15. 【Bug解决】curl: (7) Failed connect to 192.168.159.133:8888; No route to host
  16. 优链时代入围Internet Deep 【2022元宇宙TOP500】榜!
  17. python篮球弹跳训练方法_业余篮球爱好者的弹跳训练全攻略(附6个月训练计划)...
  18. html网站一行代码改变灰黑色哀悼日风格
  19. Python通过图片识别实现连续点击
  20. html5图片与文字垂直对齐

热门文章

  1. Google爬虫如何抓取JavaScript的?
  2. 了解公司企业:Primetics
  3. 经典卷积神经网络模型 - InceptionNet
  4. 一台云服务器绕过企业微信域名验证本地开发
  5. 笔记本无法找到WiFi信号,需要手动设置wlan autoconfig的解决办法
  6. 浙大翁恺老师C语言教程自学笔录-计算机和编程语言
  7. PAT乙级1040:有几个PAT (25)
  8. excel怎么添加换行符_在Excel公式中添加换行符
  9. 机器学习建模工具PyCaret详讲
  10. C语言基础-#include<stdio.h>