系统架构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类条目: 数据流、数据项、数据存储和基本加工。(外部实体不是系统内部的内容)

需求定义方法

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. 重新协商约定
    变更总是有代价的,即使拒绝的变更也因为决策行为(提交、评估、决策)而耗费了资源。当项目接受了重要的需求变更时,为了适应变更情况要与管理部门和客户重新协商约定。

需求跟踪

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

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

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

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

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

相关文章

常用芯片学习——HC573芯片

HC573 三态输出八路透明 D 类锁存器 使用说明 锁存器是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制器与慢速的外设…

黑马苍穹外卖学习Day11

文章目录 Apache ECharts介绍 营业额统计需求分析代码开发 用户统计需求分析代码开发 订单统计需求分析代码开发 销量排名Top 10需求分析代码开发 Apache ECharts 介绍 营业额统计 需求分析 代码开发 Controller层 RestController Slf4j Api(tags "数据统计相关接口&qu…

【分布式技术】注册中心zookeeper

目录 一、ZooKeeper是什么 二、ZooKeeper的工作机制 三、ZooKeeper特点 四、ZooKeeper数据结构 五、ZooKeeper应用场景 ●统一命名服务 ●统一配置管理 ●统一集群管理 ●服务器动态上下线 ●软负载均衡 六、ZooKeeper的选举机制 七、实操部署ZooKeeper集群 步骤一…

2009年苏州大学837复试机试C/C++

2009年苏州大学机试 第一题&#xff08;20分&#xff09; 题目 从键盘从键盘输入一组非零整数&#xff08;以输入零作为输入结束的标志&#xff09; 编程要求&#xff1a; 这组数的正数和负数的个数这组数的和及平均值 代码 #include <iostream> #include <sst…

Leetcode刷题笔记题解(C++):LCR 102. 目标和

思路&#xff1a;利用回溯去遍历&#xff0c;回溯结束条件为遍历到最后一个数字&#xff0c;如果符合target则目标数1 class Solution { public://记录合为结果的数量int count 0;int findTargetSumWays(vector<int>& nums, int target) {//利用回溯来寻找backtrac…

六、高效并发

1. Java 内存模型&#xff08;JMM&#xff09; JCP 定义了一种 Java 内存模型&#xff0c;以前是在 JVM 规范中的&#xff0c;后来独立出来成为 JSR-133&#xff08;Java 内存模型和线程规范修订&#xff09;。 JCP 表示 Java 社区组织。 JSR 表示 Java 规范请求。 Java 内存模…

ML Design Pattern——I see

ML Life Cycle MLOps ML Pipelines Fully automated processes ML Design Patterns Reading the book? 链接&#xff1a;https://pan.baidu.com/s/1MgOSHASAOJ0EVhMYmT9QeQ?pwd96uk 提取码&#xff1a;96uk

pip踩坑记录

1、服务器模型奇妙出现了pip安装任何包、换任何源都连接超时的问题&#xff0c;让人焦头烂额。起初怀疑是服务器访问不了外网&#xff0c;但是ping baidu.com非常正常。然后ping 清华源&#xff0c;豆瓣源等等&#xff0c;发现都ping不通&#xff0c;只有百度能ping通。发现pin…

实验:MySQL 客户端SocketTimeout 抓包分析

实验准备 服务端环境准备 服务器信息 阿里云 99 大洋白嫖机 $ cat /proc/version Linux version 5.15.0-83-generic (builddlcy02-amd64-027) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #92-Ubuntu SMP Mon Aug 14 09:30:42 UT…

AVL树底层实现

目录 AVL树简介 AVL树节点定义​编辑 AVL树特性 AVL树的建立 AVL树的插入 AVL树的旋转 验证AVL树 AVL树的实现&#xff08;代码部分&#xff09; AVL树简介 AVL树是对二叉搜索树的改进&#xff0c;二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序…

栈|数据结构|C语言|详细讲解|代码实现

介绍栈 内存可以分为“静态内存”和“动态内存”&#xff0c;讲台内存是在栈中分配的&#xff0c;动态内存是在堆中分配的。 静态或局部变量&#xff0c;是以压栈和出栈的方式分配内存的&#xff0c;就叫栈区&#xff1b; 动态内存是一个一种堆排序的方式分配内存的&#xf…

服务器感染了.wis[[Rast@airmail.cc]].wis勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 在当今数字化的时代&#xff0c;恶意软件攻击已经变得越来越复杂和狡猾&#xff0c;[[MyFilewaifu.club]].wis [[backupwaifu.club]].wis[[Rastairmail.cc]].wis勒索病毒是其中的一种新威胁。本文91数据恢复将深入介绍[[MyFilewaifu.club]].wis [[backupwaif…

【Ubuntu18.04安装Labelme】

Ubuntu18.04安装Labelme 1 安装Anaconda并创建conda环境2 安装依赖3 安装Labelme4 安装验证 1 安装Anaconda并创建conda环境 Anaconda3安装教程&#xff1a;https://blog.csdn.net/dally2/article/details/108206234 "ctrlaltt"快捷键打开终端&#xff0c;创建conda…

牛逼的签章平台 亲测好用的4.5k+star开源的文档签署平台DocuSeal部署教程

亲测可以使用 使用起来相对好用 比我们自己做的电子合同系统功能还要多 几乎结合了我们两个系统的功能 牛逼 DocuSeal简介 DocuSeal 是一个开源的文档签署平台&#xff0c;可以让你轻松地创建、填写和签署数字文档&#xff0c;提供了一个用户友好的替代方案&#xff0c;与 Doc…

磁盘格式化

系列文章目录 磁盘格式化 磁盘格式化 系列文章目录在WIN下磁盘格式化 在WIN下磁盘格式化 1.右键单击计算机并选择管理。 2.从弹出的计算机管理界面中选择磁盘管理。 3.右键单击要格式化的磁盘&#xff0c;并从弹出菜单中选择格式化。 4.弹出格式化参数&#xff0c;你可以根据个…

C++入门学习(十二)字符串类型

上一节&#xff08;C入门学习&#xff08;十一&#xff09;字符型-CSDN博客&#xff09;中我们学到如何表示和使用一个字符串&#xff0c;本篇文章是字符串&#xff08;多个字符&#xff09;。 定义字符串主要有两种方式&#xff1a; 第一种&#xff1a; char str[] "…

咖啡+茶更续命!川大华西最新:每天饮用3杯茶,抗衰效果最好!同饮咖啡死亡风险下降22%

茶与咖啡&#xff0c;是全世界消费最广泛的饮料之二—— 茶是世界上仅次于水、消费量第二大的饮料&#xff0c;全球约有30亿人喜欢喝茶&#xff0c;基本上每3人中便有1人爱喝茶&#xff1b;至于大家有多爱喝咖啡&#xff1f;顶刊Science的数据统计显示&#xff0c;全世界平均每…

DolphinScheduler-3.2.0集群部署教程

本文目录 1.集群部署方案(2 Master 3 Worker)2.前置准备工作3.端口说明4.DS集群部署1.时间同步2.配置用户、权限3.配置集群免密登陆4.ZK集群启动5.初始化数据库1.创建数据库、用户、授权2.解压缩安装包3.添加MySQL驱动至libs目录 6.配置文件修改1.dolphinscheduler_env.sh 配置…

深度学习(1)--基础概念

目录 一.计算机视觉(CV) 二.神经网络基础 三.神经网络整体架构 一.计算机视觉(CV) (1).计算机视觉中图像表示为三位数组&#xff0c;其中三维数组中像素的值为0~255&#xff0c;像素的值越低表示该点越暗&#xff0c;像素的值越高表示该点越亮。 (2).图像表示 A*B*C&#xf…