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

1 需求分析

#需求分析

1.1 需求分析概述

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

1.2 描述需求的方式

1.2.1 自然语言描述
  1. 描述软件的功能性需求(软件系统需要对老人在家的状况进行分析,以判断是否出现突发异常情况。一旦出现异常情况,就需要通知老人家属和医生)、质量需求(老人通过语音方式与系统进行交互,系统正确理解老人语音指令的比率应达到90%以上)和开发约束需求(客户端App软件须运行在Android 4.4及以上版本的操作系统)等
  2. 不足:不具体,不直观,不准确,有二义
1.2.2 软件原型描述
  1. 直观、可展示和可操作,但无描述软件需求的具体细节

image.png|158

1.2.3 用例图描述
  1. 描述软件系统的边界以及软件外部使用者所观察到的系统功能,“观察到”是指外部使用者与系统存在交互,即信息输入和输出
  2. 用例图的构成

image.png|400

  • 执行者:系统之外的实体,他们使用软件系统功能、与软件系统交换信息,可以是一类用户,也可以是其他软件系统或物理设备。执行者是UML中的类, 代表一类用户或者外部实体,而非具体的对象实例。执行者通常对应于软件系统的利益相关方
  • 用例:核心是功能。表示执行者为达成一项相对独立、完整的业务目标而要求软件系统完成的功能
  • 执行者与用例间的关系:

image.png|450

1.2.3.1 用例建模过程
  1. 第⼀步:找到所有的参与者和用例
    • 识别出参与者并做简单的描述
    image.png|450
    注意事项:
    image.png|475
    • 识别出用例并做简单的介绍,寻找用例的方法:image.png|500
    用例的命名:
    image.png|475
    注意事项:
    image.png|500

  2. 第⼆步:编写用例
    • 列出用例
    用例的全部生命周期:
    image.png
    用例概述的例子(概述时既包括了主成功场景,也有候选场景):
    image.png
    详细用例归约例子:
    image.png
    用例文档模板:
    image.png|500

    • 给用例事件流程划分重要等级
    • 按照重要程度排序详细描述事件流程

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

    一个实际案例的对比理解:
    image.png|500
    image.png|575

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

  2. 包含关系
    image.png|525

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

    示例:
    image.png|500

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

image.png|475

1.2.3.4 扩展与包含关系的区别
  1. 包含:因为子用况被提出,基用况并非一个完整的用况,所以include关系中的基用况必须和子用况一起使用才够完整,子用况也必然被执行。由基用况指向子用况

image.png

  1. 扩展:新用况在原用况(基用况)基础上增加了新步骤。基用况是完整的,即使没有子用况参与。只有当扩展点被激活时,子用况才会执行。由子用况指向基用况

image.png

1.2.3.5 扩展与继承有何本质区别
1.2.4 边界框

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

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

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

image.png

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

image.png

  1. 顺序图的表达方式:
    image.png|450
  2. [[【笔记】需求分析补充知识#^0e4a11 | 顺序图中的绘画技巧]]
1.2.6 类图和对象图

均在描述系统的静态结构

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

  2. 一种特殊的类:接口
    不包含操作实现部分的特殊类, 包括供给接口和需求接口
    image.png

  3. 类间的关系

  4. 画类图的注意事项
    image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/523503.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图数据库技术:知识图谱的存储与查询

图数据库技术:知识图谱的存储与查询 一、引言 在探索知识的宇宙中,知识图谱是组织和理解海量信息的星系图。在这张图中,每一个概念、实体与事物不再是孤立的点,而是通过关系与边相互连接,形成一个复杂而有机的网络。图…

Kubesphere在创建服务的添加容器步骤搜索镜像步骤找不到镜像

Kubesphere在创建服务的添加容器步骤搜索镜像步骤找不到镜像 {"status": "failed","message": "invalid character p after top-level value" }添加了标签也没用(如:mysql:5.7) 可以看到 dockerhu…

再聊一聊AUC指标

关于模型评估的指标,之前已经写过不少这方面的文章,最近在实践中又有了一点新的思考,本文对模型评估中的AUC指标再进行一些简单的探讨。 情况一,以下图中的数据为例,1代表用户发生逾期,标记为坏样本&#x…

定时器测试:用定时器监控定时器

using System; using System.Timers;namespace TestTimer {internal class Program{private static int usingResource 0;static int m 0;static Timer timerTask new Timer();static Timer timerMonitor new Timer();static void Main(string[] args){//任务 定时器timerT…

金三银四面试题(十六):MySQL面试都问什么(1)

在开发岗位面试中,MySQL基本是必考环节。所以接下来我们就进入MySQL八股文环节,看看都有哪些高频考题。 MySQL 中有哪些不同的表格? 在MySQL中,可以创建多种不同类型的表格,其中一些常见的类型包括: InnoD…

js笔记(学习存档)

JS的调用方式与执行顺序 使用方式 HTML页面中的任意位置加上<script type"module"></script>标签即可。 常见使用方式有以下几种&#xff1a; 直接在<script type"module"></script>标签内写JS代码。直接引入文件&#xff1a;…

GPT-5将在6月发布前进行「红队进攻测试」

“GPT-5将在6月发布”的消息刷屏了AI朋友圈。这则消息之所以被无数人相信并转发&#xff0c;是因为已经有不少技术人员在社交平台上晒出了「红队进攻测试」邀请。 基于 GPT系列庞大的用户体量和影响力&#xff0c;OpenAI 将更加重视GPT-5 的安全性&#xff0c;作为GPT-5上市前的…

2024年C语言最新经典面试题汇总(21-30)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

OpenAI 推出新网络爬虫GPTBot,为GPT-5做准备

目录 一、GPTBot是什么&#xff1f;它是如何工作的&#xff1f;二、GPTBot 与 Google Bot 等搜索引擎网络爬虫有何不同&#xff1f;三、GPTBot 与 Perplexity AI 的网络爬虫有何不同&#xff1f;四、允许 GPTBot 爬取有哪些风险和好处&#xff1f;4.1 允许 GPTBot 的好处4.2 允…

PostgreSQL:所有支持的数据类型及建表语句实例

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、引言 在当今这个数据驱动的时代&#xff0c;数据库已经成为了企业和个人不可或缺的工具。而在众多数据库产品中&#xff0c;PostgreSQL以其强大的功能和高度的可扩展性&#xff0c;受到了越来越多开发者的青睐。…

移除元素 -- 力扣第27题 -- 暴力、双指针解法

题目 https://leetcode.cn/problems/remove-element/description/ 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输…

智能变电站协议系列-5、IEC 104协议细化解读(IEC 60870以及如何获取对应国标和行标)

一、前言 通过之前整体性的协议分析&#xff0c;目前确定先基于IEC104做深入分析&#xff0c;来结合分析电网常见的业务&#xff0c;以此从协议侧关联深入到业务侧。在国内该标准也应用比较稳定和广泛了&#xff0c;所以研究104协议相关资料也会更全一些。 二、资料及标准收集…

Spring Security——09,解决跨域

解决跨域 一、SpringBoot配置二、配置SpringSecurity三、修改端口四、修改vue项目4.1 拿到token4.2 前端存储token4.3 前端请求头携带token 五、测试5.1 认证测试5.2 授权测试 一键三连有没有捏~~ 浏览器出于安全的考虑&#xff0c;使用 XMLHttpRequest对象发起 HTTP请求时必须…

BugKu:Flask_FileUpload

1.打开此题 通过题目知道这个是一个关于Flask的文件上传的漏洞题目 2.查看网页源代码 Flask是一个使用Python编写的轻量级Web应用框架。 这里又提示说用python来运行结果&#xff0c;那很有可能就是要通过python脚本来抓取flag 3.编辑Python脚本 工具&#xff1a;pycharm 文件…

第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、字串排序2、门牌制作3、既约分数4、蛇形填数5、跑步锻炼6、七段码7、成绩统计8、回文日期9、子串分值和10、平面切分 1、字串排序 2、门牌制作 #include<iostream>#def…

服务注册 Zookeeper

服务注册 Zookeeper 1、配置并启用 Zookeeper # application.yml dubboregistryaddress: zookeeper://localhost:2181# dubbo.properties dubbo.registry.addresszookeeper://localhost:2181<dubbo:registry address"zookeeper://localhost:2181" />address …

YOLOv5实例分割

目录 一,准备工作 1.1 标签数据解释: 1.2 数据集格式转换方法汇总 图片和JSON在一个文件夹的形式,通过下面的代码会再相同文件夹下生成对应的txt文件 方式2: 二,训练、测试、检测 一,准备工作 用conda创建自己的环境 安装项目路径下的requirements.txt 数据集准备…

快速获取文件夹及其子文件夹下的所有文件名

1、在文件夹中新建文本文档&#xff0c;命名为“命令.txt” 2、输入以下内容 tree /F > 文件名.txt dir *.* /B > 文件名.txt 其中文件名和文件格式可以是任意的&#xff0c;tree命令可生成文件及其子文件夹下所有文件的名称&#xff0c;dir命令只生成当前目…

OKR管理模式:企业新引擎,驱动未来发展

在当今竞争激烈的市场环境中&#xff0c;越来越多的企业开始采用OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff09;管理模式&#xff0c;以期解决一系列发展难题&#xff0c;驱动企业向前发展。OKR作为一种目标管理工具&#xff0c;旨在帮助企…

Java实现二叉树(上)

1.树型结构 1.1树型结构的概念 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 1.2树型结构的特点…