系统架构14 - 软件工程(2)

需求工程

  • 软件需求
  • 两大过程
  • 三个层次
    • 业务需求(business requirement)
    • 用户需求(user requirement)
    • 功能需求 (functional requirement)
      • 非功能需求
  • 概述
  • 活动阶段
    • 需求获取
      • 基本步骤
      • 获取方法
    • 需求分析
      • 三大模型
      • 数据流图
      • 数据字典DD
    • 需求定义
    • 需求验证
    • 需求管理
      • 需求基线
      • 变更控制过程
      • 变更控制委员会CCB
        • 组成
      • 过程及操作步骤
    • 需求跟踪
      • 使用方式

软件需求

是指用户对系统在功能、行为、性能、设计约束等方面的期望
是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。

两大过程

需求开发->需求获取、需求分析、需求定义(需求规划说明书SRS)、需求验证。
需求管理->变更控制、版本控制、需求跟踪、需求状态跟踪。

三个层次

业务需求(business requirement)

反映了组织机构或客户对系统、产品高层次的目标要求。

用户需求(user requirement)

描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望。这两种构成了用户原始需求文档的内容。

功能需求 (functional requirement)

定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足业务需求。

非功能需求

作为补充,软件需求规格说明还应包括非功能需求
它描述了系统展现给用户的行为和执行的操作等。
它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性
所谓约束是指对开发人员在软件产品设计和构造上的限制,常见的有设计约束过程约束
质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。

概述

需求工程是指应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述待开发系统及其行为特征和相关约束
需求工程覆盖了体系结构设计之前的各项开发活动,主要包括分析客户要求、对未来系统的各项功能性及非功能性需求进行规格说明
需求工程的目标简单明了:确定客户需求,定义设想中系统的所有外部特征

活动阶段

  1. 需求获取
  2. 形成需求规格(或称之为需求文档化)
    按照相关标准,生成需求模型的文档描述,用户原始需求书作为用户和开发者之间的一个协约,往往被作为合同的附件软件需求描述规约作为后续软件系统开发的指南
  3. 需求确认与验证
    以需求规格说明为输入,通过用户确认、复审会议、符号执行、模拟仿真或快速原型等途径与方法,确认和验证需求规格的完整性、正确性、一致性、可测试性和可行性,包含有效性检查、一致性检查、可行性检查和确认可验证性。
  4. 需求管理
    包括需求文档的追踪管理、变更控制、版本控制等管理性活动。
    软件需求开发的最终文档经过评审批准后,则定义了开发工作的需求基线 (Baseline)。 这个基线在客户和开发者之间构筑了计划产品功能需求和非功能需求的一个约定 (Agreement)需求约定是需求开发和需求管理之间的桥梁
    需求管理是一个对系统需求变更、了解和控制的过程
    需求管理过程与需求开发过程相互关联,当初始需求导出的同时就启动了需求管理规划,一旦形成了需求文档的初稿,需求管理活动就开始了。需求管理的主要活动如图:
    需求管理的主要活动
    强调
    (1)控制对需求基线的变动。
    (2)保持项目计划与需求一致。
    (3)控制单个需求和需求文档的版本情况。
    (4)管理需求和联系链,或管理单个需求和其他项目可交付产品之间的依赖关系。
    (5)跟踪基线中的需求状态。

需求获取

通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求
需求获取是一个确定和理解不同的项目干系人的需求和约束的过程

基本步骤

(1)开发高层的业务模型。
建立一个业务模型,描述用户的业务过程,确定用户的初始需求。然后通过迭代,更深入地了解应用领域,之后再对业模型进行改进。
(2)定义项目范围和高层需求。
项目范围描述系统的边界以及系统与系统交互的参与者之间(包括组织、人、硬件设备、其他软件等)的关系。高层需求不涉及过多的细节,主要表示系统需求的概貌。常见的建模手段包括系统上下文图和系统顶层用例图等
(3)识别用户角色和用户代表。
涉众不仅包括传统的用户、客户,还包括测试人员、维护人员、市场人员等
首先确定所有涉众,然后挑选出每一类涉众并与他们一起工作。
用户角色可以是人,也可以是与系统打交道的其他应用程序或硬件部件。如果是其他应用程序或硬件部件,则需要以熟悉这些系统或硬件的人员作为用户代表。
(4)获取具体的需求。
确定了项目范围和高层需求,并确定了所有涉众后,就需要获取每个涉众的具体、完整和详细的需求
(5)确定目标系统的业务工作流。
具体到当前待开发的应用系统,确定系统的业务工作流和主要的业务规则
(6)需求整理与总结。
最后对上面步骤取得的需求资料进行整理和总结,确定对软件系统的综合要求,即软件的需求。并提出这些需求的实现条件,以及需求应达到的标准

获取方法

(1)用户访谈
1对1-3,找有代表性的用户进行访谈,对提问者的水平是有要求的。其形式包括结构化(有剧本)和非结构化(随意发挥)两种。
(2)问卷调查
用户多,无法一一访谈,收集到的需求不够精准,比较杂乱,比较考验问卷编写者的水平。
(3)采样
从种群中系统地选出有代表性的样本集的过程,类似于数学中的数理统计。样本数量=0.25*可信度因子错误率)2
(4)情节串联板
一系列图片,通过这些图片来把需求给进行叙述出来,这样虽然生动,但是耗时
(5)联合需求计划(JRP)
通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。
(6)需求记录技术
任务卡片、场景说明、用户故事、Volere白卡。

需求分析

为系统建立一个概念模型,作为对需求的抽象描述,并尽可能多的捕获现实世界的语义。
一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性正确性、必要性等特性,因此,需要分析人员把杂乱无章的用户要求和期望转化为用户需求,这就是需求分析的工作

常见的需求分析任务

  • 绘制系统上下文范围关系图 (数据流图)
  • 创建用户界面原型
  • 分析需求的可行性
  • 确定需求的优先级
  • 为需求建立模型
  • 创建数据字典
  • 使用QFD(QFD:质量功能部署,把需求和QFD进行关联)

结构化特点
自顶向下,逐步分解,面向数据。

三大模型

功能模型(数据流图DFD)、行为模型(状态转换图STD)、数据模型(E-R图)以及数据字典。

数据流图

数据流图DFD基本圆形元素:外部实体、假功、数据存储、数据源。

数据流: 由一组固定成分的数据组成,表示数据的流向在DFD中,数据流的流向必须经过加工

加工:描述了输入数据流到输出数据流之间的变换,数据流图中常见的三种错误:

  1. 有输入但是没有输出,称之为“黑洞。
  2. 有输出但没有输入,称之为“奇迹”。
  3. 中输入不足以产生输出,称之为“灰洞”。

数据存储: 用来存储数据。
外部实体(外部主体):是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。

数据字典DD

数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流
文件、加工,以及组成数据流或文件的数据项做出说明,即为了描述数据流图的

数据字典有以下4类条目: 数据流、数据项、数据存储和基本加工。(外部实体不是系统内部的内容)

需求定义

需求定义(软件需求规格说明书,SRS):是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS是软件开发过程中最重要的文档之一,对任何规模和性质的软件项目都不应该缺少。

  1. 严格定义也称为预先定义(结构化定义) ,需求的严格定义建立在以下的基本假设之上: 所有需求都能够被预先定义。开发人员与用户之间能够准确而清晰地交流。采用图形(或文字)可以充分体现最终系统,适合需求明确的情况。
  2. 原型方法迭代的循环型开发方式,需要注意的问题:并非所有的需求都能在系统开发前被准确地说明。项目干系人之间通常都存在交流上的困难,原型提供了克该服困难的一个手段。特点:需要实际的、可供用户参与的系统模型。有合适的系统开发环境。反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。

需求验证

也称为需求确认,目的是与用户一起确认需求无误,,对需求规格说明书SAS进行评审和测试,包括两个步骤

  1. 需求评审:正式评审和非正式评审
  2. 需求测试:设计概念测试用例,设计场景来测试需求,没有代码.

需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程

需求管理

需求基线

定义需求基线:通过了评审的需求说明书就是需求基线,下次如果需要变更需求,就需要按照流程来一步步进行。

变更控制过程

变更控制过程用来跟踪已建议变更的状态,使已建议的变更确保不会丢失或疏忽。一旦确定了需求基线,应该使所有已建议的变更都遵循变更控制过程。
需求变更管理过程
(1) 问题分析和变更描述。当提出一份变更提议后,需要对该提议做进一步的问题分析,检查它的有效性,从而产生一个更明确的需求变更提议
(2) 变更分析和成本计算。当接受该变更提议后,需要对需求变更提议进行影响分析和评估。变更成本计算应该包括对该变更所引起的所有改动的成本,例如修改需求文档、相应的设计、实现等工作成本。一旦分析完成并且被确认,应该进行是否执行这一变更的决策
(3) 变更实现。当确定执行该变更后,需要根据该变更的影响范围,按照开发的过程模型执行相应的变更。在计划驱动过程模型中,往往需要回溯到需求分析阶段开始,重新作对应的需求分析、设计和实现等步骤;在敏捷开发模型中,往往会将需求变更纳入到下一次迭代的执行过程中。

常见的需求变更策略
(1) 所有需求变更必须遵循变更控制过程。
(2) 对于未获得批准的变更,不应该做设计和实现工作。
(3) 变更应该由项目变更控制委员会决定实现哪些变更。
(4) 项目风险承担者应该能够了解变更的内容。
(5) 绝不能从项目配置库中删除或者修改变更请求的原始文档。
(6) 每一个集成的需求变更必须能跟踪到一个经核准的变更请求,以保持水平可追踪性。
目前存在很多需求变更跟踪工具,这些工具用来收集、存储和管理需求变更。问题跟踪工具也可以随时按变更状态分类报告变更请求的数目

变更控制委员会CCB

也称为配置控制委员会,其任务是对建议的配置项变更做出评价、审批,以及监督已经批准变更的实施。
变更控制委员会 (Change Control Board,CCB) 是项目所有者权益代表,负责裁定接受哪些变更。 CCB 由项目所涉及的多方成员共同组成,通常包括用户和实施方的决策人员。 CCB 是决策机构,不是作业机构,通常CCB 的工作是通过评审手段来决定项目是否能变更,但不提出变更方案

组成

(1)产品或计划管理部门。
(2)项目管理部门。
(3)开发部门。
(4)测试或质量保证部门。
(5)市场部或客户代表。
(6)制作用户文档的部门。
(7)技术支持部门。
(8)帮助桌面或用户支持热线部门。
(9)配置管理部门。

过程及操作步骤

  1. 制定决策
    制定决策过程的描述应确认:
  • 变更控制委员会必须到会的人数或做出有效决定必须出席的人数。
  • 决策的方法(例如投票,一致通过或其他机制)。
  • 变更控制委员会主席是否可以否决该集体的决定。
  1. 交流情况
    一旦变更控制委员会做出决策,指派的人员应及时更新请求的状态。
  2. 重新协商约定
    变更总是有代价的,即使拒绝的变更也因为决策行为(提交、评估、决策)而耗费了资源。当项目接受了重要的需求变更时,为了适应变更情况要与管理部门和客户重新协商约定。

需求跟踪

需求跟踪提供了由需求到产品实现整个过程范围的明确查阅的能力
需求跟踪的目的是建立与维护“需求-设计-编程-测试”之间的一致性,确保所有的工作成果符合用户需求。
也称之为双向跟踪。分为两种方式:

  • 正向跟踪,检查《产品需求规格说明书》中的每个需求是否都能在后继工作成果中找到对应点。;
  • 反向跟踪,检查设计文档、代码、测试用例等工作成果是否都能在《产品需求规格说明书》中找到出处。

使用方式

正向跟踪和逆向跟踪合称为“双向跟踪”。不论采用何种跟踪方式,都要建立与维护需求跟踪矩阵(即表格)。需求跟踪矩阵保存了需求与后继工作成果的对应关系。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

SQL查询数据库环境(dm8达梦数据库)

SQL查询数据库环境dm8达梦数据库 环境介绍 环境介绍 某些环境没有图形化界面,可以使用sql语句查询达梦数据库环境情况 SELECT 实例名称 数据库选项,INSTANCE_NAME 数据库选项相关参数值 FROM V$INSTANCE UNION ALL SELECT 授权用户,(SELECT AUTHORIZED_CUSTOMER FROM V$LICE…

对话框与多窗体设计 —— 自定义对话框及其调用

3.2 自定义对话框及其调用3.3 Splash与登录窗口 3.2 自定义对话框及其调用 在一个应用程序设计中,为了实现一些特定的功能,必 须设计自定义对话框。自定义对话框的设计一般从 QDialog继承,并且可以采用UI设计器可视化地设计对 话框。对话框的…

vivado DDS学习

实现DDS通常有两种方式,一种是读取ROM存放的正弦/余弦信号的查表法,另一种是用DDS IP核。这篇学习笔记中,我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT(DDS)的standard模式…

【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

文章目录 前言服务治理介绍什么是服务治理1、服务发现2、服务配置3、服务健康检测 常见的注册中心ZookeeperEurekaConsulNacos Nacos 简介Nacos 实战入门搭建nacos环境1、安装nacos2、配置nacos3、访问nacos 将商品微服务注册到 nacos1、在 pom. xml 中添加 nacos 的依赖2、在主…

spring cloud之分布式事务

写在前面 1:分布式事务介绍 参考MySQL之分布式事务 。 2:seata实战 架构图: 可以看到seata在这里作为协调者的角色,协调所有事务的提交以及回滚,其中seata使用MySQL存储每个分支事务的执行状态信息,以…

gitlab设置/修改克隆clone地址端口

最近由于公司要停测试库云服务器? 什么?要停测试库服务器??? 是的! 你没听错。 真是醉了,多大的集团,为了省钱,也真是拼了, 作为开发人员,没有测试服务器,犹如断臂之人。 所以,在之前搭建环境的时候都没有写文档,今天算是弥补上,以后都可以作为参考了, …

MySQL和Redis的事务有什么异同?

MySQL和Redis是两种不同类型的数据库管理系统,它们在事务处理方面有一些重要的异同点。 MySQL事务: ACID属性: MySQL是一个关系型数据库管理系统(RDBMS),支持ACID属性,即原子性(Ato…

23种设计模式,你学废了嘛?【建议收藏起来】

23种经典设计模式共分为3种类型,分别是创建型、结构型和行为型。 今天,我们把这3种类型分成3个对应的小模块,逐一带你回顾一下每一种设计模式的原理、实现、设计意图和应用场景。 还是那句话,如果你看了之后,感觉都有…

Kafka3学习笔记

文章目录 一、Kafka概述和入门1、Kafka概述1.1 定义1.2 消息队列1.3 Kafka 基础架构 2、Kafka 快速入门2.1 安装部署2.2 集群启停脚本 3、Kafka 命令行操作3.1 Topic命令行操作3.2 生产者命令行操作3.3 消费者命令行操作 二、Kafka核心概念详解1、Kafka 生产者1.1 生产者消息发…

MySQL 多表查询

文章目录 多表关系一对多多对多一对一 查询合并查询(笛卡尔积,会展示所有组合结果):内连接查询外连接查询自连接查询联合查询 union, union all子查询单行子查询列子查询行子查询表子查询 :::success 多表查询,也称为…

类和对象 第三部分第二小节:空指针访问成员函数

C中空指针也可以调用成员函数的,但是也要注意有没有用到this指针,如果有用到this指针,需要加以保证代码的健壮性 代码案例 出现报错 报错原因:因为新建的指针是空,所以this指代的对象为空,因此没有成员变量…

Flume1.9基础学习

文章目录 一、Flume 入门概述1、概述2、Flume 基础架构2.1 Agent2.2 Source2.3 Sink2.4 Channel2.5 Event 3、Flume 安装部署3.1 安装地址3.2 安装部署 二、Flume 入门案例1、监控端口数据官方案例1.1 概述1.2 实现步骤 2、实时监控单个追加文件2.1 概述2.2 实现步骤 3、实时监…

无人机路径优化(八):五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、五种算法(DBO、LO、SWO、COA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发…

华为路由器IPv6基础配置

1. R2的两个接口均采用静态IPv6地址配置方法 2. R1的GigabitEthernet0/0/3接口采用无状态 地址配置 3. R3的GigabitEthernet0/0/3接口采用DHCPv6 的方式配置IPv6地址 R1配置 ipv6 #全局使能IPv6 interface GigabitEthernet0/0/0ipv6 enable ipv6 address auto link-local #为…

vue项目打包部署到服务器并使用cdn加速

配置 vue.config.js文件 const isProd process.env.NODE_ENV production module.exports {// 其他配置chainWebpack: config > {// 生产环境下使用CDNif (isProd) {config.plugin(html).tap(args > {args[0].cdn assetsCDNreturn args})}},// 生产环境下替换路径为c…

【Druid 登陆异常】

Druid 登陆异常 问题描述:页面登陆将请求参数放到请求体中导致无法通过request.getParameter 方式 服务加载流程 通过 DruidStatViewServletConfiguration 中方法 statViewServletRegistrationBean 初始化StatViewServlet 通过 com.alibaba.druid.support.jakarta…

【Android】在WSA安卓子系统中进行新实验性功能试用与抓包(2311.4.5.0)

前言 在根据几篇22和23的WSA抓包文章进行尝试时遇到了问题,同时发现新版Wsa的一些实验性功能能优化抓包配置时的一些步骤,因而写下此篇以作记录。 Wsa版本:2311.40000.5.0 本文出现的项目: MagiskOnWSALocal MagiskTrustUserCer…

Ultraleap 3Di示例Interactable Objects组件分析

该示例代码位置如下: 分析如下: Hover Enabled:悬停功能,手放在这个模型上,会触发我们手放在这个模型上的悬停功能。此时当手靠近模型的时候,手的模型的颜色会发生改变,反之,则不会…

Java服务端使用freemarker+wkhtmltoimage生成Echart图片

目录 1.通过 freemarker 将ftl转成html 1.1 freemarker 手册: 1.2 添加freemarker maven依赖 1.3 添加 echart-test.ftl 模版文件 1.4 添加 FreemarkerTool 工具类 1.5 添加测试main方法 1.6 运行,生成echart-test-时间戳.html 文件 2. 通过wkhtmltoimage将html 转为p…