软件开发与过程管理——需求获取

article/2025/9/21 7:01:10

目录

一. 需求获取概述

1.1 为什么要进行需求分析

1.2 需求获取的非平凡性

1.3 需求获取的主要活动

二. 需求获取的策略

2.1 需求获取的主动性策略

2.2 需求协商

三. 需求获取的主要方法 

3.1 用户调查

3.2 文档分析

3.3 原型法 

3.4 模型驱动 

四. 软件开发及过程管理专栏


一. 需求获取概述

需求获取:进行需求收集的一个过程或者活动,它从人员,资料和环境中得到系统开发所需要的相关信息。

1.1 为什么要进行需求分析

  • 传统上:开发不重视需求获取,将需求分析放在首位。
  • 实践表明:需求分析,其前应有需求获取,其后至少要包括需求验证。
  • 原因:系统规模和应用领域的不断扩大,需求获取的信息逐渐庞杂,需求分析人员在需求获取的过程中要面对的困难不断增加。
  • 由于需求获取不够充分、全面所造成的项目变更工作不断升级,并导致项目无法继续进展的现象突出。

1.2 需求获取的非平凡性

  • 普通用户缺乏概括性、综合性的表述能力;
  • 专家用户的知识结构因渊博而具有概括性和广泛性 ;
  • 开发人员在与用户接触前,先确定获取的内容主题,然后设计具体的应用环境和场景条件,由用户根据细节业务的执行来描述问题、表达期望。

1.3 需求获取的主要活动

  • 研究应用背景,建立初始的知识框架;
  • 根据获取的需要,采用必要的获取方法和技巧;
  • 先行确定获取的内容和主题,设定场景;
  • 分析用户的高(深)层目标,理解用户的意图;
  • 进行涉众分析,针对涉众的特点开展工作。


二. 需求获取的策略

2.1 需求获取的主动性策略

  • “获取”强调需求分析人员在整个过程中应该充分发挥主动性。
  • 主动性取决两点:对用户和系统的理解(对业务的理解),掌握相关的获取技巧。
  • 如果没有对业务系统的知识了解,难以组织和发挥技巧的作用。
  • 对业务系统的知识理解,是需求获取的基础。

总而言之:需求获取要主动,表现为有计划性, 要针对不同的用户层次选择不同的方法。 

2.2 需求协商

        在需求获取的过程中,往往会遇到需要协商的问题。需要需求开发人员具有一定的技巧和沟通能力。

  • 差异问题协调法则 

        不同的业务层面(有时即使是相同业务层面)的用户对同样的概念或者流程有不同的认识和理解,会出现一些差异,在需求整理时应该将这些差异明确标识出来,并展示给用户高层管理人员,由他们来确定如何消除这些差异,并将这些情况记录。

  • 消除变更问题协调法则

        上面法则提到的问题,从消除变更的角度考虑仍然存在问题。仅仅将差异标识并展示给高层并不能消除变更的可能,应该考虑这些差异形成背后的问题,应该从开发角度考虑如何消除这些差异,并提供给高层管理人员。要有主动性。 

  • 需求协商时机法则

        不要在需求冻结前开展需求协商工作。需求协商应该在需求获取过程中不断开展,出现就考虑消除。如果都等到冻结前,将所有矛盾集中体现对工作是非常不利的。 


三. 需求获取的主要方法 

一般主要的需求获取的方法有如下几种: 

3.1 用户调查

  • 用户调查技术实际上是与用户访谈相关的一组技术和方法。在市场调查领域应用非常广泛。
  • 主要优点在于调查面比较宽,用户反馈多。这恰好能够成为用户访谈的有效补充,能够克服用户访谈的片面性。
  • 而其缺点主要是大家都认识到的往往不易深入,而这恰好是用户访谈所能避免的。 用户调查是用户访谈的有效、有益的补充。

3.2 文档分析

  • 文档分析又称文档考古或者文档审查,是一种专门针对文档进行需求获取的活动。其主要获取对象包括相关产品的需求说明书、客户需求文档、相关数据及流程说明等。
  • 其主要优点是能够详细、直观地对数据流细节进行了解和分析。缺点也比较明显,企业机构中,文档量通常非常大,由此容易使需求获取人员陷入文山书海中不能自拔,甚至引起误导。 

3.3 原型法 

  • “原型是一个系统,它内化了(capture)一个更迟系统(later system)的本质特征。原型系统通常被构造为不完整的系统,以在将来进行改进、补充或者替代。”
  • 如果在最终的物件(final artifact)产生之前,一个中间物件(mediate artifact)被用来在一定广度和深度范围内表现这个最终物件,那么这个中间物件就被认为是最终物件在该广度和深度上的原型。

1)原型的类别——按照开发方式分类 

2)原型的类别——按照开发方式分类

  • 探索式和实验式方法产生的原型产品又被称为抛弃式原型
  • 花费最小的代价,争取最快的速度
  • 可能会使用简易的开发工具和不成熟的构造技术
  • 可能会忽略或简化处理原型目的不相关的功能特征
  • 要坚决的抛弃
  • 演化式原型方法产生的原型产品被称为演化式原型(evolutionary prototype)
  • 质量要从一开始就能达到最终系统的要求
  • 要易于进行扩展和频繁改进,因此开发者必须重视演化式原型的设计
  • 仅应该被用于处理清晰的需求、规格说明和技术方案 

3)原型方法的过程 

3.4 模型驱动 

  • 指导和组织需求获取行为的开展:模型可以用于指导后续需求获取行为的开展
  • 整理和归类需求获取行为得到的信息:模型是进行信息整理和归类的很好的框架依据
  • 为详细信息的分析提供背景基础和上下文知识:模型驱动方法则是侧重于前期需求阶段的方法,是传统需求分析方法的一个很好的补充
  • 帮助组织需求文档的结构
  • 作为需求验证的知识基础:发现细节知识与模型内容的偏差和错误和指导需求验证行为的开展

四. 软件开发及过程管理专栏

https://blog.csdn.net/weixin_53919192/category_11798300.htmlhttps://blog.csdn.net/weixin_53919192/category_11798300.html


http://chatgpt.dhexx.cn/article/ZtHjqndi.shtml

相关文章

浅谈软件项目需求分析

这里不是写标准化的理论知识,而是想写写对软件需求工作的感受。 理论上的需求管理是要解决系统需求做什么的问题,以此界定系统功能和非功能性的内容。需求指的是由项目接受的或项目产生的产品和产品构件需要,包括由组织征集的对项目的…

软件工程之需求分析

现在人们越来越认识到软件工程在软件开发中的重要作用。目前国内软件在开发中还没有对软件开发的过程进行明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的提高…

如何写一份好的软件开发的需求分析

什么是需求分析? 通俗的讲,对用户的意图不断揭示和验叛的过程,要对经过系统可行性分析所确定的系统目标做更为详细的描述。 假如你是个建筑工程师,有个客户找你建一个鸡窝,这个时候要需要与客户沟通,来确定…

软件需求的三个层次——业务需求、用户需求和功能需求的区别

我们的软件产品或者项目,其需求都有三个层次,业务需求、用户需求和功能需求,除此之外,每个系统还有各种非功能需求。不是很了解的朋友,今天就和我和我们一起来了解一下吧!   下图是需求层次关系图&#…

运算符重载规则

1) 并不是所有的运算符都可以重载。能够重载的运算符包括&#xff1a; - * / % ^ & | ~ ! < > - * / % ^ & | << >> << >> ! < > && || -- , ->* -> () [] new new[] …

C++ 重载运算符

一、运算符重载 运算符重载是一种形式的C多态。 在C中&#xff0c;编译器有能力把一个由数据、对象和操作符共同组成的表达式&#xff0c;解释为对一个全局或成员函数的调用。该全局或成员函数被称为操作符函数&#xff0c;通过重定义操作符函数&#xff0c;可以实现针对自定…

C++重载决议

目录 前言一些与overload易混淆的概念override运算符重载 为什么需要重载决议&#xff1f;声明函数重载 什么是重载决议&#xff1f;什么不是函数重载&#xff1f; 重载决议之过程函数重载 && 函数模板before 重载决议more detailstype conversion(类型转换)rank&#…

重载

实质&#xff1a;重载的实质就是写一个重载函数语法&#xff1a;函数类型 operator 运算符名称 {对运算符的重载处理}说明&#xff1a;如果要对加号进行重载&#xff0c;则 “operator ” 就是函数名。方法&#xff1a; &#xff08;1&#xff09;成员函数法 定义&#xff1a…

重载运算符

输入带有空格的字符串 cin.getline(a[i]) 运算符重载的语法 定义一个重载的运算符与定义一个函数类似&#xff0c;只是这个函数的名称必须以operator开头。 运算符重载函数的一般形式为&#xff1a;类型 类名::operator 重载的运算符(参数表) {函数体 }参数的个数由以下两个…

Python——运算符重载

Python——运算符重载 1.加法运算符重载和减法运算符重载2.__str__()方法重载和__ge__()方法重载3.索引的切片重载 运算符重载指的是将运算符与类方法关联起来&#xff0c;每个运算符对应一个指定的内置方法。 Python通过重写一些内置方法&#xff0c;实现了运算符的重载功能。…

C++ 运算符重载

前言 本文引用于“C语言中文网”&#xff0c;我整理出来放在博客&#xff0c;方便大家共同学习。所有知识点和代码均已亲测可用&#xff0c;如有疑问&#xff0c;可提出&#xff0c;一起讨论学习。 本章内容&#xff1a; 1. C运算符重载的概念和原理 2. C重载&#xff08;C重…

配置使用Navicat或PLSQL可视化工具远程连接Oracle

写在前面 本文讲解的是在没有 Oracle 环境&#xff0c;如何使用可视化工具配置远程连接服务器 Oracle 数据库。 目录 写在前面一、概述二、下载 Oracle Instant Client三、配置环境变量四、配置监听五、可视化工具环境配置5.1、Navicat5.2、PLSQL 一、概述 很多时候&#xff0c…

Windows系统远程连接Linux系统操作

远程连接服务器管理时&#xff0c;系统不同可分为两种&#xff1a;一是Linux系统和Mac系统或者Linux系统之间连接&#xff1b;二是Windows系统连接到Linux系统 第一种情况下&#xff1a;在Linux系统和Mac系统下可以相互用命令"ssh [-p] 22 连接主机名主机IP地址"连…

怎么删除远程桌面连接计算机,win10系统强制删除远程桌面连接软件的方法

大家都知道win10系统中&#xff0c;自带有远程桌面连接软件&#xff0c;能够帮助我们实现远程控制其他计算机进行一系列操作&#xff0c;但是有些用户可能用不到这个软件&#xff0c;就想要强制删除远程桌面连接软件&#xff0c;那该怎么操作呢&#xff0c;小编这就给大家带来w…

被远程连接的windows一定要设置账号的密码吗

背景 我们有个windows系统&#xff08;方便表述叫P)&#xff0c;比如win10的&#xff0c;平时使用的用户名是a&#xff0c;没有登录密码&#xff0c;平时使用P的过程是允许没有密码登录操作系统的。 但是&#xff0c;如果使用另外一台windows远程连接它&#xff0c;就得为a设…

SecureCRT--远程连接工具

SecureCRT简介 Linux一般作为服务器使用&#xff0c;而服务器一般放在机房&#xff0c;你不可能在机房操作你的Linux服务器。这时我们就需要远程登录到Linux服务器来管理维护系统。 Linux系统中是通过SSH服务实现的远程登录功能&#xff0c;默认ssh服务端口号为 22。Window系…

【rdesktop】超实用的ubuntu远程连接windows软件

个人定制命令行 rdesktop 192.168.50.118 -u zhankun -p LPjj1234 -z -a 16 -x lan -r clipboard -g 1920x105000 -r sound:local -r disk:share/home/lyp/zk_share1、ubuntu端 sudo apt install rdesktop2、Windows端 1.计算机—属性—远程设置—远程&#xff0c;勾选&…

Mac远程控制软件有哪些?Macos好用的远程桌面连接软件推荐

Mac功能强大&#xff0c;但是远程协助有点麻烦&#xff0c;此时需要专业的 Mac远程控制软件。远程桌面自带系统连接不太好用&#xff0c;一般不懂计算机的人很难成功。还推荐使用专用的远程控制软件实现&#xff0c;操作简单&#xff0c;不需要很多计算机知识。就下载量和好评率…

远程连接——Win连接远程Linux的软件

SSH客户端主要用来远程访问服务器。 因为像Linux之类的系统要想在Windows上面存在&#xff0c;基本都是通过虚拟机&#xff0c;就好比搭建了一个服务器&#xff0c;你要连接这个系统&#xff0c;自然需要用到一些工具&#xff0c;而SSH客户端就属于这样的工具&#xff0c;或者…

有服务器可以远程连接电脑软件,支持远程控制电脑的工具有哪些?这几款软件值得一试!...

对于普通人来说,如果自己身处于一线工作城市,与异地的家人进行聊天时,他们遇到了电脑上的某种问题时,而我们直接靠说话或文字,并不能直接来解决他们所遇到的问题,他们自己又根本不会操作,此时直接控制他们的电脑就是一个非常棒的方法,既可以解决了问题,不需要多费口舌…