如何准确分析需求

业务驱动的需求思想

要做好软件需求工作,业务驱动需求思想是核心。传统的需求分析是站在技术视角展开的,关注的是“方案级需求”;而业务驱动的需求思想则是站在用户视角展开的,关注的是“问题级需求”。

变更/优化型需求分析任务执行指引

在软件需求分析实践中,用户提出变更、优化型需求也通常都是直接提出“方案级需求”,因此我们需要还原出“问题级需求”

价值需求主线

什么是价值需求?简单来说,就是从黑盒子视角回答“整个软件系统为客户解决了什么问题、创造了什么机会”,“对于系统而言,最关键的干系人有哪些”,“各个重要干系人对系统的关注点是什么?有哪些担心(阻力点)”三个本质性问题。价值需求是组织应用类软件系统需求的灵魂和方向,但在笔者所接触的很多此类需求分析实践中,这部分做得相对薄弱。这将使得项目范围更容易蔓延,客户从中获得的利益与价值不容易呈现,从而导致客户满意度难以有效提升。

功能主线

有人说,组织应用类软件系统就是带一定业务逻辑的增删、改查功能;也有人说,做需求就是先搭菜单结构。这些都是典型的白盒子视角,是从开发视角来说的技术驱动需求理念。这一视角,会让用户对需求分析过程敬而远之,写出的需求文档也将令其望而生畏。

有人说,我们应该先找业务用例,再找系统用例,从用户的角度来“发现”。这虽然是一种“黑盒+灰盒”的视角,但大量实践者苦于难以有效地完成思维角度的切换;另外,这种较小粒度的抽象方法,容易在需求分析过程中陷入树木而忽略森林。

实际上我们还有更好的思考角度和做法,那就是厘清系统中的所有功能是因何而存在的。如果我们站在更宏观的角度上来看,实际上最核心的无外乎以下几个方面:

  1. 通过系统固化、优化业务流程,提升流程执行效率、节约成本、降低风险等。

  2. 通过系统拓展业务的渠道,使其延伸到电话、互联网、移动互联网等通道上。

  3. 通过系统将个人知识、能力转化为组织知识、能力。

  4. 通过系统实现数据的信息化,辅助管理、决策。

业务支持

业务支持最典型的是三类:首先是固化、优化业务流程,因此业务流程是核心;其次是业务延伸到新的通道(诸如手机端),这从本质来说也是一种流程的重构,核心还是业务流程;最后是将个人能力转化为组织能力,而这种能力存在于具体的业务场景中,因此“专家场景”是核心。要梳理出业务支持所需要的功能,简单来说,就是从灰盒子视角回答四个问题:“根据目标和干系人关注点,系统涉及哪些业务流程?”“这些业务流程是如何定义的,需要优化吗?”“系统对流程中所有业务场景都要支持吗?还是只支持一部分?”“有哪些业务场景的工作经验需要模型化?”

系统要支持的是业务,而在业务领域中通常是先制定业务流程,再明确岗位及岗位职责的;只有清晰地梳理出流程,才能更好地分析需求。

管理支持

软件系统对管理的支持,主要可以体现在三个方面:

  1. 事前风险避免,通过增加管理流程;

  2. 事中风险控制,通过“规则”和“审批”;

  3. 事后总结优化,通过“数据分析”。

前两种通常会在业务支持分析中统一处理;第三种则应该独立进行分析。要梳理清管理支持所需的功能,简单来说,就是从灰盒子视角回答三个问题:“管理层用户希望通过系统来实现哪些管理、控制需求?”“希望通过系统做哪些辅助决策?”“要实现这些管理、控制、决策支持,需要哪些信息?用什么方法获得它们?”

业务流程分析与优化

在标识出相关的业务流程之后,接下来的关键任务就是逐个流程进行了解与分析,绘制出流程图,并对关键流程做适度的优化。

业务流程八要素

业务流程分析,最重要的是厘清如图7-5所示的业务流程八要素,包括五个基本要素(分工、活动、协作、产物关系、分支),三个管理要素(审核、规则、异常)。

五个基本要素

当我们分析一个业务流程时,首先需要明确出整个流程中涉及哪些分工、每个角色负责执行什么活动,然后选择合适的流程图将其表示出来。当然,这些活动之间不是独立的,存在顺序执行、并行执行、异步执行等多种可能,这就是“协作关系”,在流程图中就是各个活动之间的连线。而且协作过程不是一成不变的,还需要根据实际情况来进行处理,这就是流程中的“分支”。这也是流程图中的一个重要的要素。另外,在协作过程中,各分工之间需要传递工作产物,流程管理者会制定一些表单、单据格式以明确职责,这就是“产物关系”。在流程图中通常以“数据流”或“文档”的形式来表示。这些就是一个流程中五个基本要素之间的关系,除此之外,管理者还会在流程中引入一些用于控制风险、监控进程的管理元素。

领域建模

在信息系统需求分析中,数据主线的重点在于范围与关系,也就是哪些数据要纳入系统,它们之间的关系是什么,而领域建模正是解决这两个问题的关键。

类图基础

领域建模的结果需要选择一个模型来表示,可选的模型只有两个:E/R图和类图。由于E/R图只能描述关联关系,而类图能够呈现出更多关系,因此强烈建议使用类图。下面我们简单介绍一下类图。

在执行领域建模任务时,首先标识系统中的主业务流程,针对每个主业务流程绘制出领域类图片段(包括识别过程数据、识别自然数据、识别描述类数据三步),然后将它们合并成整个系统的领域模型(第四步)。前三步所采用的方法是“四色建模法”,它是领域建模实践中最有效的方法之一

彩色建模法

彩色建模法的创造人Peter Coad把领域类分成了过程数据(Moment Interval,也译为时刻)、自然数据(Party、Place、Thing)、角色数据(Role)、描述类数据(Description)4种,并且分别使用红、绿、黄、蓝4种颜色的即时贴来表示

使用的时候,将采用“红→绿、黄→蓝”的顺序执行,也就是先标识过程数据,然后标识自然数据(同时考虑角色数据),最后标识描述数据的顺序

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

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

相关文章

视频监控系统EasyCVR平台播放告警录像时,播放器显示不全是什么原因?

防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防…

Python高级语法----Python类型注解与类型检查

文章目录 一、类型注解基础二、使用 `mypy` 进行类型检查三、类型注解的最佳实践结论在当今的软件开发实践中,类型注解和类型检查在提高代码的可读性和健壮性方面发挥着至关重要的作用。尤其在 Python 这种动态类型语言中,通过类型注解和类型检查工具,如 mypy,可以显著提升…

Git系列之分支与标签的使用及应用场景模拟

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Git实战开发》。🎯🎯 &a…

语音识别芯片在产品应用上的难点列举

语音识别技术,作为人工智能领域中的一颗璀璨明珠,已经广泛应用于用户交互、智能家居、语音助手等多个领域。它为我们的生活带来了诸多便利,使得我们可以更加高效地与电子设备进行互动。然而,语音识别技术的实现,依赖于…

LEEDCODE 75颜色分类

耍赖皮写法 嘻嘻 class Solution { public:void sortColors(vector<int>& nums) {int count1 0;int count2 0;int count3 0;for(int i 0; i<nums.size(); i){if(nums[i] 0)count1 1;else if(nums[i] 1)count2 1;else count3 1;}for(int i 0; i<nu…

缅因州政府通知130万人MOVEit数据泄露事件

大家好&#xff0c;今天我要向大家通报一个令人震惊的消息&#xff1a;缅因州政府的系统遭到了入侵&#xff0c;黑客利用MOVEit文件传输工具的漏洞&#xff0c;获取了约130万人的个人信息&#xff0c;这几乎相当于该州的整个人口数量。 MOVEit攻击是Clop勒索软件团伙进行的一次…

前端---CSS的盒模型

文章目录 什么是盒模型&#xff1f;设置边框设置内边距设置外边距块级元素水平居中 什么是盒模型&#xff1f; 页面上的每个HTML元素都是一个一个的“盒子”&#xff0c;这些盒子由&#xff1a;内容、内边距、边框、外边距组成。 我们可以和住的房子联系起来&#xff0c;更好…

找工作的网站都有哪些

吉鹿力招聘网作为一家知名的招聘网站&#xff0c;因其功能完善和用户隐私保护而备受用户青睐。它不仅可以与企业直接沟通&#xff0c;还可以提供在线聊工作的机会。通过吉鹿力招聘网&#xff0c;用户可以自主选择工作地点、时间和工作类型&#xff0c;大大提高了找到合适工作的…

如何使用内网穿透实现远程公网访问windows node.js的服务端

使用Nodejs搭建简单的web网页并实现公网访问 前言 Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架。 Node.js自带运行时环境可在Javascript脚本的基础上可以解释和执行(这类似于JVM的Java字节码)。这个运行时允许在浏览器以外的任何机器上执行JavaScri…

7-爬虫-中间件和下载中间件(加代理,加请求头,加cookie)、scrapy集成selenium、源码去重规则(布隆过滤器)、分布式爬虫

0 持久化(pipelines.py)使用步骤 1 爬虫中间件和下载中间件 1.1 爬虫中间件(一般不用) 1.2 下载中间件&#xff08;代理&#xff0c;加请求头&#xff0c;加cookie&#xff09; 1.2.1 加请求头(加到请求对象中) 1.2.2 加cookie 1.2.3 加代理 2 scrapy集成selenium 3 源码去重…

Python语言:经典案例分析讲解2

例题1&#xff1a;文件的操作 例题2&#xff1a;调用函数求偶数之和 例题3&#xff1a;调用函数并使用递归的方法求斐波那契数前N项之和 题1: 以只写的模式打开文件test.txt&#xff0c;写入"Python"&#xff0c;关闭文件。 代码如下&#xff1a; f open("E:/…

轻量封装WebGPU渲染系统示例<27>- 浮点RTT纹理(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/FloatRTT.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: const floatRTT { diffuse: { uuid: "rtt0", rttTe…

软考网络工程师知识点总结(四)

目录 61、FTP文件传输服务 62、DHCP动态主机配置协议 63、电子邮件服务 64、各种新技术相关概念及功能的考查 65、Windows的ipconfig命令 66、Windows的其它命令及说明 67、Linux系统关机和重启命令 68、Linux系统文件属性命令 69、SNMP协议版本 70、SNMP协议的报文类…

微信公众号制作的资源及网站分享!

微信公众号的出现丰富了我们的网络世界&#xff0c;一篇又一篇的或长或短的文章&#xff0c;让我们碎片化的时间有了去处。而且&#xff0c;我们每个人也可以运营一个微信公众号&#xff0c;人人都可以创建属于自己的微信公众号&#xff0c;无论是记录生活还是分享文章或者想要…

vivado产生报告阅读分析-常规报告2

1、Report I/O “ I/O Report ” &#xff08; I/O 报告 &#xff09; 用于替代 AMD ISE Design Suite PAD 文件。“ I/O Report ”可列出 &#xff1a; • “ Pin Number ” &#xff08; 管脚编号 &#xff09;&#xff1a; 表示器件中的所有管脚 • “ Signal Name ” …

酷柚易汛ERP - 商品库存余额表操作指南

1、应用场景 商品库存余额表用于查询商品在各仓库的实际结存量、单位成本以及成本等明细。 2、主要操作 打开【仓库】-【商品库存余额表】&#xff0c;可筛选仓库、商品、商品类别&#xff0c;导出/打印等操作见【销货单】不再赘述。 3、分享操作 库存余额分享&#xff0c;…

6 Spring循环依赖

什么是循环依赖&#xff1f; // A依赖了B class A{ public B b; } // B依赖了A class B{ public A a; } 如果不考虑Spring&#xff0c;循环依赖并不是问题&#xff0c;因为对象之间相互依赖是很正常的事情 A a new A(); B b new B(); a.b b; b.a a; 这样&#xff0c;A&a…

【CSS】伪元素与伪类

CSS 伪元素和伪类 1.为什么要引入伪元素和伪类&#xff1f; 在 CSS 的官方文档中&#xff0c;是这样描述的&#xff1a; CSS introduces the concepts of pseudo-elements and pseudo-classes to permit formatting based on information that lies outside the document tre…