软件需求总结(总)

2023-05-16

软件需求工程复习归纳

课程目标:
  1. 系统地掌握需求开发和管理的技术和方法
  2. 掌握需求分析和建模的技术和方法
  3. 掌握需求规格的验证和评审等要点和方法
  4. 结合具体的实际项目开发,解决软件项目开发中的有关需求的各种问题
  5. 能够适应目前各种应用项目的系统的需求开发和管理工作
  6. 学习并掌握软件需求实践的工具和技巧
  7. 分析和解答软件工程实践中的困难和问题

软件工程与需求工程

生存期模型:

概念:软件开发的一种过程性框架

类型:瀑布模型、V模型、原型模型、增量式模型

瀑布模型:需求分析→设计→程序编码→软件测试→运行维护

不合格需求的主要原因

  • 用户参与度不够
  • 用户需求不要断增多
  • 需求说明模糊
  • 不必要的特性
  • 规格说明太粗
  • 不对用户分类
  • 计划不准确

需求工程

基本概念一种获取,组织并记录系统需求的系统化方法。以及一个使客户与项目团队不断变更的系统需求达成并保持一致的过程

层次特征:业务需求、用户需求、功能需求

image-20211228160921271

主要过程:需求开发过程、需求管理过程

image-20211228161054429

注:需求分析:解决什么业务问题

需求规格说明:所开发的系统提供什么功能,性能

面对对象

概念面对对象由对象、类、继承、通信四个概念组成。

**对象:**在现实世界时是客观世界中的一个实体;在面向对象程序中表达成计算机理解、可操纵、具有一定属性的行为和对象;在计算机世界中是一个可标识的存储区域

封装:把对象的全部属性和全部服务结合到一起,形成一个不可分割的独立单位(对象),尽可能隐藏对象的全部细节(信息隐蔽)

继承:使用已存在的定义做为基础建立新定义的技术

统一建模语言UML

概念基于面向对象的可视化的通用(General)建模语言

用例图:

image-20211228162307692

作用:描述系统的功能需求

组成:执行者(Actor)、用例(Use Case)、执行者用例的关系、用例之间的关系

  • 执行者:执行者是指用户在系统中所扮演的角色,执行者可以是人,也可以是一个外界系统(ps:用例总是由执行者启动的
  • 用例:执行的一系列动作(功能),用椭圆符号表示

用例之间的关系泛化、使用、扩展关系

  • 泛化:用例之间的一般与特殊关系

  • 《include》:一个用例使用另外一个用例

  • 《extends》:通过什么被扩展用例添加动作来扩展用例

image-20211229095757425

类图:

类图包含了一组类似及他们之间的关系

image-20211228163430414

组成:类、属性、操作

关系

  • 关联:一对一,一对多,多对多,单项关联,多项关联
  • 依赖:表示两个式多个类之前的调用关系
  • 聚集:表示总体的部分的关系
  • 泛化:继承关系

状态图:

概念:用来描述一个特定对象的所有可能的状态以及状态转移的事件

状态:所有对象都具有状态,状态是对象执行了一系列活动的结果。当某个事件发生后,对象的状态将发生变化。

  • 初态⚫:状态图的起点,只有一个初态。

  • 终态◉:状态图的终点,可以有很多个终态。

  • 中间状态:名字域+活动域

  • 符合状态:可以进一步组合的状态

  • 状态迁移:"→"通常是由事件引起的

    image-20211228164512916

活动图(流程图):

定义描述了系统中各种活动的执行顺序

组成:活动、转移、对象流、泳道(采用分组的机制)

image-20211228164824682image-20211228164734773

转移:转移用带箭头的直线表示,可标注执行该转移的条件,无标注表示顺序执行。

泳道:一个道代表一组对象

image-20211228165047814

对象流:活动图中可以出现对象,对象作为活动输入/输出。(用虚箭头表示)

image-20211228175659971

顺序图:

image-20211228180342161

概念:用来描述对象之间动态的交互行为,着重体现对象之间信息传递的时间顺序。(水平轴→对象,垂直轴→时间)

组成

  • 对象:用矩形框图表示,它们代表参与交互的对象
  • 生命线:表示对象存在的时间,在顺序图中生命线表示从对象图标向下延伸的一条虚线
  • 激活:过程的执行的时间,包括它等待嵌套过程执行的时间
  • 消息:消息作为对象间的一种通信方式来表示
image-20211228180155907

需求获取

项目启动要考虑的问题:

愿景(描述项目核心价值【老大】)、涉众、投入、风险、可行

愿景:

没有度量指标的目标没有意义

  • 什么是愿景:在老大看来为什么要开发这个系统

  • 愿景的两个要点:1、一定来自老大的想法 2、一定要有度量指标

    例如:愿景→实现电子速汇款 度量指标→数据到账时间短

涉众:

同一件事不同利益视角,探索系统的需求就是探索涉众利益的平衡点

  • 划分原因:系统需求易变,业务需求(涉众利益)不变

  • 客户是最大的涉众

  • 划分涉众优先级

业务建模:

过程

  • 选定业务单元
  • 识别业务执行者
  • 识别业务用例
  • 详述业务用例
  • 建立对象模型

业务执行者:业务执行者在业务外面,业务工人在业务里面

业务单元:

概念:一个组织或人群

​ 例:淘宝网业务单元为淘宝网公司及内部人员,业务实体则是淘宝网站

业务用例:

有效的完整目标

只针对业务执行者,为业务执行者提供价值(内部活动不是业务用例)

用例命名:执行者视角→动词+宾语

  • 慎用弱名词和弱宾语
  • 弱动词:进行、使用、复制、加载、重复….
  • 弱名词:数据、报表、表格、表单、系统…

用例的粒度:用例要有路径,路径要有步骤,而这一切都是可观测的

  • 最常犯的错误(错把步骤当作用例)

业务对象模型:

概念:业务对象模型(也叫领域模型)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象

image-20211228191656569

补充:

业务建模的目的:描述现实,帮助发现软件需求

UML业务建模:用业务用例模型和业务对象来描述现实

系统需求分析:

需求文档编写步骤

  1. 识别系统执行者
  2. 识别系统用例
  3. 书写系统用例文档
  4. 通过关系整理用例
  5. 用例的排序和分包

用例文档即为需求文档

识别系统执行者:

系统执行者:谁使用系统的主要功能、谁需要系统的支持已完成日常工作任务、系统需要应付和处理哪些设备、系统需要和哪些外部系统交互、谁对系统运行产生的结果感兴趣、有没有自动发生的事件

业务范围:指这个项目所涉及的所有客户业务,这些业务有没有计算机系统参与都客观存在

系统范围软件将要实现的那些对应于业务功能的系统功能,从功能性需求来说系统范围是业务范围的一个子集

补充

系统外,交互的功能需求

有多少执行者就代表有多少接口

识别系统用例:

RUP:系统用例实例(某人用系统做什么)是在系统中执行的一系列动作后(步骤),这些动作将产生执行者可见的价值结果(目标),一个用例定义了一组用例实例(路径)

系统用例

形式:[执行者]使用系统来[用例]

书写系统用例文档

例:

1、用例编号

2、用例名 (水电站财务部项目)

​ 提交费用单

3、执行者

​ 其他部门人员

4、前置条件 (一个用例开始之前系统所必须的环境和状态)

其他部门人员已经登录系统

5、后置条件 (一个用例成功结束后系统应该具备的状态)

​ 系统已保存费用单

6、涉众利益

其他部门人员(3)-----------希望操作简单,尽快把费用单交给会计。

部门领导(上游)(1)----担心搞错费用的金额和用途。

会计(下游)(2)-----------担心有重复有错误增加工作量。

括号内的数字为涉众的优先级。

前置条件:开始用例前所需的系统及其环境状态

后置条件:用例成功结束后系统应具备的状态

基本路径用户最想看到、最关心的路径

例:

image-20211228201637970

拓展路径:系统要处理的意外和分支

补充约束

  • 字段列表:

    • "+"→数据序列 “[ ]”→可选项 “{}*”→多个

      {|||}→可能取值 “A=B”把B的结构赋给A

    • 用表达式表示:

      image-20211228202009905
  • 业务规则

    • 分类:事实(设备是资产的一种)、推理(如果过了计划中的交付日期,货物还没有送到,即为“为不按时送货”)、约束(合同的总金额不能超出买房的信用额度)
    • 表示方法:文字说明、决策表、OCL(对象约束语言)
  • 非功能需求

    • 非功能需求常常是激烈竞争的决胜点
    • 非功能需求:可用性(可度量)、可靠性、性能…

交互四部曲:动作→验证→改变→回应

书写用户文档

  • 只书写听的懂的
  • 使用主动语句(执行者…系统…)
  • 遵循四部曲
  • 不涉及界面细节
  • 基本和拓展分开
  • 不要越界

通过关系整理用例:

拓展:分离扩展路径

包含:提取公共步骤,便于复用

泛化:同一业务目的的不同技术实现

何时使用扩展关系

  • 扩展路径步骤多
  • 扩展路径内部其他较多扩展点→拓展的拓展

例:

image-20211228203146731

用例的排序与分包:

用例排序

image-20211228203359792image-20211228203749426

大量用例时的分包:按执行者分包、按主题分包、按开发团队分包、按发布情况分包

包图:

image-20211228154126075

只在软件的开发过程中存在

  • 表示:

    • 不同包的模型元素可以同名,在同一个包中不能重名
    • 包中元素具有高内聚、低耦合的有特点
  • “+”——是公共的,对所有包可视

  • “#”——保护,只能对该包的子包可见

  • “-”——私有,对外包不可视

包的联系

image-20211228154641033

需求管理

调研需求

  • 需求的研究对象
  • 需求的调研内容
  • 需要调研内容
  • 需求结果管理

需求调研内容:功能、接口、用户使用环境、重要性要求、稳定性要求、易用性、性能

需求调研方法:问卷调查、访谈、观察、开会、制作示意图、角色扮演、原型开发

需求变更:

随着系统上线,用户提出的问题和新的需求

易用性问题:界面布局、操作方式、文字表达、排序条件等细节问题,这些问题不解决的话会降低用户体验,此类问题一般应尽量解决。

拒绝变更

  • 并不是软件本身的问题
  • 根据愿景分析没必要将系统复杂化提高成本
  • 由于客观条件限制,或者技术上做不到的,要予以拒绝

常见问题

  • 对于符合需求的易用性方面的要求,应尽量满足。

  • 有些问题可通过改善管理办法来解决。

  • 客观条件做不到的、技术上做不到的,应予以拒绝。

  • 超出范围的要求,可引导客户做第二期。

  • 有些问题需要同时在软件和管理办法上做工作来改善。

”老大“提出的新需求

”老大“的需求必须满足

”老大“提出的需求方案只是一种解决方案,可以通过分析用不同解决方案满足”老大“的根本需求。

需求认知曲线

两种需求认知曲线

image-20211228210530363 image-20211228210551195

敏捷开发与敏捷需求

敏捷过程希望尽快得到可以发布的软件版本,尽快得到反馈

四句宣言:

image-20211228211339407

用户故事:

三要素角色功能价值(按“作为一个…,可以…,以便…”)

作用

  • 作为进度跟踪的依据

  • 作为和人交谈的备忘录,敏捷过程提倡足够就好,避免浪费

十二个原则:

image-20211228211637576 image-20211228211703481

特点:

  • 需求模糊或快速变化的前提下,小型开发团队的软件开发活动
  • 做到“刚刚好”
  • 提高软件开发的效率
  • 以积极的态度对待需求的变化
  • 短时间不断地交付可运行的软件供用户使用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件需求总结(总) 的相关文章

  • STM32的HAL库开发系列 - 串口发送

    STM32的HAL库开发系列 串口发送 基本知识 USART xff1a 通用同步和异步收发器 UART xff1a 通用异步收发器 当进行异步通信时 这两者是没有区别的 区别在于USART比UART多了同步通信功能 单工 xff1a 数据
  • 完美解决调用“sudo rosdep init“命令时的报错

    在安装完毕Ubuntu系统后 xff0c 我们执行命令sudo rosdep init时往往会遇到如下报错 xff1a sudo rosdep init ERROR cannot download default sources list
  • Yolo算法详解

    Yolo原理 yolo v1 Yolo是一种目标检测算法 xff0c 目标检测的任务是从图片中找出物体并给出其类别和位置 xff0c 对于单张图片 xff0c 输出为图片中包含的N个物体的每个物体的中心位置 x y 宽 w 高 h 以及其类
  • 解决“fatal error: dynlink_nvcuvid.h: 没有那个文件或目录#include <dynlink_nvcuvid.h>“问题

    问题描述 系统 Ubuntu18 04 安装OpenCV 3 4 0 报错 In file included from home zpj CLionProjects linuxidcbuild modules cudacodec openc
  • winform实现控件透明(实现真透明)

    使用BackColor 61 Color Translate这种方法只能实现和背景色一样但是不是真的透明 xff0c 控件后面的控件还是看不到 1 首先写一个基类 using System using System Collections
  • Python模拟SSH登录字符图形菜单

    本文说明如何使用Python模拟SSH登录字符图形菜单 xff08 不知道这种菜单叫啥名字 xff0c 姑且这么叫 xff09 xff0c 并选择相应的菜单项进行操作 以下图为例 xff0c 在SSH成功登录后 xff0c 选择第7行的改密
  • 安全产品,如何从idea到可落地实现

    安全产品 xff0c 如何从idea到可落地实现 前言Step1 xff1a 用一句话描述产品要解决的问题 xff08 What xff09 Step2 xff1a 给出用户故事 xff08 Why xff09 Step3 xff1a 分析
  • LDAP认证

    注 xff1a 本文由网络公开资料整理而来 xff0c 如有错误 xff0c 欢迎指正 LDAP xff08 Lightweight Directory Access Protocol xff09 是目录服务 xff08 DAP xff09
  • 计算机博弈大赛参赛程序算法总结

    背景 前两年的全国计算机博弈大赛的爱恩斯坦棋棋种赛我都有参加 14年采用的是极大极小算法 xff0c 那个时候还不太懂搜索算法的优化 xff0c 所以算法就是最原始的极大极小搜索 xff0c 没有做任何剪枝 15年我在上一年的算法基础上加入
  • 常见硬件通信协议总结

    xff08 正好手上的nodemcu支持UART SPI I2C协议 xff0c 所以这篇文章干脆就用nodemcu来分析协议了 xff09 UART 用逻辑分析仪捕捉nodemcu init lua给上位机发送 A xff1a span
  • 我们都被监控了?揭秘全球电信网络7号信令(SS7)漏洞

    From xff1a https www ithome com html it 278270 htm 最近 xff0c 一篇报道 黑客可以通过电话号码监控你的一举一动 xff0c 里面描述因为全球电信网络7号信令 xff08 SS7 xff
  • 使用route add添加路由,使两个网卡同时访问内外网

    route add命令格式 xff1a route f p Command Destination mask Netmask Gateway metric Metric if Interface 通过配置电脑的静态路由来实现同时访问内外网的
  • 手机自动访问generate_204

    近来写WiFi钓鱼demo xff0c 需要让手机连接 WiFi 后自动跳转到指定网页 xff0c 于是对手机进行dns拦截 在对手机的流量分析中发现一件很神奇的事 xff0c 手机接入WiFi后会自动访问 generate 204 以下是
  • MT7621方案 LED 灯控制 (基于OpenWrt平台)

    注 xff1a 出处不明 xff0c 最开始是在这里看到的 xff0c 图竟然没有 没有 相关资料也几乎木有 datasheet里也没有寄存器配置说明 MT7621还真是坑爹啊 xff01 目前市面上大部分路由器方案是基于MT7620的 x
  • ROS分布式通信,Jetson Nano 与PC机通信

    Jetson Nano 与PC机通信 1 环境2 SSH安装3 修改hosts文件4 修改环境变量文件 xff5e bashrc5 测试 1 环境 PC笔记本 xff1a Ubuntu 18 04 5 LTS Jetson Nano Ubu
  • .Net6.0系列-6 .Net 6LinQ(二)常用扩展方法

    一 本节学习LinQ的扩展方法 LinQ的where返回的IEnumerable 所有的括号中都可以写lamada表达式 list 数组等都可以用LinQ 以下这些方法都是可以和Where一起使用的 Count 返回的是满足条件的个数 An
  • postman简单上手教程

    1 xff1a postman浏览器已经停止更新了 xff0c 所以下面介绍的是app版本 2 xff1a 打开postman xff0c 创建自己的测试目录 xff0c 点加号创建 xff0c 这里我创建了test project 3 x
  • 实战microPython(06)-OLED屏的使用(2)

    实战microPython 06 OLED屏的使用 2 David Zou 2018 11 27 大家好 xff0c 上次介绍了OLED显示屏的相关知识 xff0c 今天 xff0c 我们进入实战 xff0c 学习如何使用OLED显示屏 如
  • C++实现HTTP上传

    插件中需要一个上传文件的功能 xff0c 我跟老大说 xff0c 我想FTP上传 xff0c 老大一瞪眼 xff0c 那还得再布个FTP服务器 xff0c 直接用HTTP上传多简单 那么C 43 43 如何将文件上传HTTP服务器上呢 xf

随机推荐

  • RTK和GPS定位

    首先 xff0c 简要说一下GPS和RTK的工作原理 GPS定位的基本原理是 xff0c 测量出已知位置的卫星到地面GPS接收器之间的距离 xff0c 然后接收器通过与至少4颗卫星通讯 xff0c 计算与这些卫星间的距离 xff0c 就能确
  • 基于VC6的UAV地面站(GCS)程序及源代码

    此地面站 xff08 GCS603 xff09 是早年针对北航一款小飞控开发的 xff0c 那个时候APM好像都才刚刚问世 程序具备了简单地面站的基本功能 xff0c 如界面绘制 串口数据读写 数据记录 数据帧的合成与解析 航线设置等 此程
  • ArduPlane plane 部分功能与代码移植到 GCC(Atmel studio 6.2)版本的程序源代码 HelloPilot

    几年前由于当时 ArduPlane xff08 Ver2 76 xff09 的开发环境为arduino ide 开发尤其是调试环境非常不友好 xff0c 要进行程序调试及跟踪非常不方便 xff0c 同时出于学习掌握arduplane代码原理
  • 简单的说说飞控硬件研发过程中的各种坑

    我们的飞控 xff0c 从当初第一个概念设计到现在 xff0c 历时好几年 xff0c 目前经过上百架次的试飞 xff0c 功能已经基本完备 回首前面走过的历程 xff0c 不说尸横遍野吧 xff0c 至少也是血泪斑斑 有无数的坑需要投入大
  • 1、无人系统控制站软件开发平台 CSS(Control Station Studio)概述

    1 初衷 在CSS之前 xff0c 通过参与开发数个大中型无人机地面控制站项目 xff0c 在GCS xff08 Ground Control Station xff09 设计与实现方面积累了一些经验和感悟 在先前的开发过程中 xff0c
  • .Net6.0系列-7 .Net 6LinQ(三)常用扩展方法

    一 投影 把集合中的每一项转换为另一种类型使用的是Select 方法 where 的返回集合是Enumerable 返回的是T的全部字段 而Select是可以返回集合的任意需要的字段 find 是在lamada表达式中的使用 以上两个是Li
  • 一款适于作为飞行试验平台的小四轴设计

    四轴虽小 xff0c 但也是第7版改进设计了 xff0c 定型了 xff01 优点 1 安全性高 作为实验平台 xff0c 最大的风险来自于失控 小四轴 xff08 是的 xff0c 它现在还没名字 xff09 可靠的旋翼保护圈以及其他保护
  • 上手Nucleo H743ZI 开发板下载失败问题解决方法

    准备研究Stm32H7 xff0c 买了块Nucleo H743ZI开发板回来研究 之前一直使用的是stm32F4 xff0c 开发环境为keil 5 13 43 STM32F4xx DFP 2 10 0 st linkV2 开工之前仔细读
  • 固定翼武德充沛,多旋翼费拉不堪

    实际飞行测试 同样的动力组合 xff1a 2205电机 43 5030 3叶桨 同样的动力电池 xff1a 2200ma xff0c 3s xff0c 20c 基本一致的起飞全重 xff1a 固定翼680g xff0c 多轴700g 续航时
  • PH7系统简介

    PH7系统简介 PH7是什么 xff1f 狭义的PH7是一套以无人机飞控为典型应用案例 xff0c 涵盖无人车或船 GCS数据采集 伺服控制 AHRS 地面模拟仿真系统等的通用控制器代码框架 xff0c 该框架以Stm32CubeMx生成代
  • 小型无人机的布线与布局设计

    小型无人机的布线与布局设计 xff0c 似乎看上去像是在总体设计当中一个细枝末节 xff0c 是往往会被忽略掉的部分 但实际上 xff0c 布线与布局虽然不像飞控算法设计 飞行平台气动设计是总体设计当中最核心和最重要的部分 xff0c 但却
  • Bread Board Pilot 即将发布

    Bread Board Pilot xff08 简称BBP xff09 为基于 PH7 代码框架 xff08 PH7 系统简介 xff09 的一款飞控快速原型开发板 相比传统飞控板 xff0c BBP 的硬件设计具有以下突出特点 xff1a
  • Mavlink 协议硬解析主要代码

    int MAVLinkProtocol ParseMsg BYTE arMsgBuf MSGVALUE pMavMsg CString amp strMsgText Function Parameters arMsgBuf 为完整的 mav
  • 网络调试助手(NetAssist)不能正常创建TCP Serve连接问题

    一 问题由来 第一次使用网络调试助手 xff08 NetAssist xff09 建立服务端 xff08 TCP Server xff09 连接时碰到链接失败的问题 xff0c 如图所示 xff0c 其原因在于本地主机端口8080被其他进程
  • postman调用J-WSSE认证方式接口

    J WSSE认证方式的内容包括 xff1a 用户名 密码 nonce 时间戳 nonce是一个随机字符串 xff1b 时间戳 Created 为W3DTF格式 xff1b 密码创建方式为 xff1a PasswordDigest 61 Ba
  • ROS 三种通信编程入门:【话题通信】【服务通信】【动作通信】

    目录 一 创建工作空间二 ROS通信编程2 1 话题编程2 2 服务编程2 3 动作编程 五 总结六 参考资料 本文内容 xff1a 学习古月居 ROS 教学课件和相关视频 xff0c 练习课件上的话题通信 服务通信编程代码示例 一 创建工
  • .Net6.0系列-8 依赖注入(一)

    依赖注入 Dependency Injection DI 是控制反转 Inversion of Control IOC 思想的实现方式 依赖注入简化模块的组装过程 降低模块之间的耦合度 DI的几个概念 服务 Service 和框架请求之后返
  • Git学习记录

    Git学习记录 概念 xff1a 两个人同时参与开发 xff0c 那么就把这个项目放在一个公共的地方 xff0c 需要的时候都可以去获取 xff0c 有什么改动 xff0c 都可以进行提交 Git就是这样一个免费 开源的分布式版本控制系统
  • Maven学习记录

    Maven学习笔记 导读 xff1a Maven 是专门用于构建和管理Java相关项目的工具 Maven的主要用处 xff1a 项目结构一致统一维护jar包 xff0c 使jar包实现共享 流程 xff1a idea配置 打开File gt
  • 软件需求总结(总)

    软件需求工程复习归纳 课程目标 xff1a 系统地掌握需求开发和管理的技术和方法掌握需求分析和建模的技术和方法掌握需求规格的验证和评审等要点和方法结合具体的实际项目开发 xff0c 解决软件项目开发中的有关需求的各种问题能够适应目前各种应用