《我们应当怎样做需求分析》阅读笔记

简介: 原文链接(转载请注明出处):如何做好需求分析这学期的《软件需求与分析》课可以说是软件工程专业比较重要的一门课。如何做好软件需求分析就等同于如何做好一个项目。客户对需求一改再改,如果我们只是一味的去抱怨,而不去思考客户对需求更改的原因是什么,不了解业务,那我们做出来的产品肯定得不到客户的认可。

原文链接(转载请注明出处):如何做好需求分析

这学期的《软件需求与分析》课可以说是软件工程专业比较重要的一门课。如何做好软件需求分析就等同于如何做好一个项目。客户对需求一改再改,如果我们只是一味的去抱怨,而不去思考客户对需求更改的原因是什么,不了解业务,那我们做出来的产品肯定得不到客户的认可。
通过阅读我们应当怎样做需求分析这一系列的文章,我总结出来做好软件需求分析需求从这几方面入手。首先是做需求调研,就是采集需求这个阶段,在这个阶段其实是一个反复循环的过程:需求捕获——需求整理——需求验证——再需求捕获......;在每一次做完需求调研后就要做一次需求分析,并且等到下一次去做需求调研时,我们应该首先将上一次的需求分析结果与客户进行确认。然而在每次的需求分析阶段其实也是一个比较复杂的分析过程,我们需求画大量的UML图(例如用例图),对角色功能进行分析,对业务流程进行分析等。最后我们还需要做好需求确认工作,写好需求规格说明书然后评审签字确认。

经过阅读与思考,我认为以下内容我们需要掌握的:

许多需求分析工作都是从需求调研开始的,需求调研工作既是一份技术活更是一份体力活。它要求我们具有一种理解能力,设计能力,更要求我们具有一种与人交往与沟通的能力。

(1)开研讨会捕获需求

我们需求获得客户的需求,必须要了解业务,要想了解业务,一是可以学习相关的知识,最有效的方法就是开业务研讨会,需求研讨会等,在会上我们不但可以更好的和客户交流整个流程,还可以讨论一些比较细节的地方。但是在组织研讨会的同时必须注意两点:有效抑制个性化差异,分模块组织专项研讨会。

(2)学会需求捕获

整个需求分析过程是一个迭代的过程,在需求捕获这个阶段,往往不是考验我们的专业知识,而是涉及人际交往,沟通理解等方面。如果学会了如何捕获客户的需求,那我们的项目成功的概率就会得到质的飞跃。在学会捕获需求之前我们要清楚的认识到软件需求不仅仅是客户嘴里说出来的。还有两类需求需要我们自己去发现:一是客户嘴里没有说的需求,二是客户压根没有想到的需求。知道这些后如果我们不能更好的处理与客户交流的方式,那一切都是百搭,在与客户讨论需求过程中,态度决定一切,既不能让自己处于被动状态,对客户提出的所有需求都记下来然后不加分析地给开发人员;也不能盲目主动,不分析客户的需求,按照自己的想法来,最后交付的时候客户说这不是自己想要的软件。最明智的做法是先跟客户谈业务,先谈论业务流程,在此阶段我们还要多问为什么,这样可以让我们深入地了解这些领域的知识,站在客户的角度去思考问题,进而能够深入理解客户为什么要提出他们的那些业务需求。

(3)功能角色分析

当我们经过一番忙碌,将需求中的第一手资料从调研现场捕获回来后我们就要对需求进行行之有效的分析,而这种分析首先应当从功能角色分析开始,所谓的功能角色分析就是从一个外部用户的视角分析整个软件系统能够提供的功能,以及这些功能到底提供给那些角色使用。而对一个系统进行功能和角色方面的梳理和分析,可以采用画用例图的方法。运用这种方法对业务需求进行分析、抽象、整理、提炼进而形成用例模型。
我们在画用例图的过程中不能以一个开发者的角色来绘制,许多描述信息也绝不能按照开发者的思维和习惯去写,而是要贴近客户,因为用例图的视角是用户。所以描述信息应该迎合用户平时的习惯用语。

(4)业务流程分析

做好角色分析后,最重要的一步就是要做好业务流程分析。文章作者在这一章中用了许多例子来说明问题,在分析ERP对企业流程改进的例子中,作者分析出来的思路是清除低效环节、简化业务瓶颈、整合可用资源,以及将繁琐任务自动化。计算机信息化管理并不是万能的,它并不能代替现实世界中的所有工作。因此我们进行业务流程分析,就是要分析业务流程中哪些是需要信息化管理的,而哪些则不需要。另外,业务流程分析的另一个重要的分析内容就是流程差异化分析。不同的领导有不同的思路,不同的单位有不同的情况。因此,我们在进行流程分析的时候,常常面临流程差异化的问题。

(5)业务领域分析

在需求分析工作中,最后一项分析工作就是业务领域分析啦。业务领域分析,就是对需求分析中涉及到的业务实体,以及它们相互之间关联关系的分析。什么叫业务领域,就是客户所在的知识领域,譬如财务人员所在的是财务领域,税务人员所在的是税务领域。不同的知识领域拥有各自不同的领域知识,需求分析人员就应该通过客户中的领域专家去学习这些知识、掌握这些要点,并最终体现在我们的需求分析中。我们进行业务领域分析,就是通过与用户进行交流,掌握领域知识,然后绘制成业务领域模型,去指导我们软件开发的过程。其中,我们可以通过两种分析方法一步步进行分析:原文分析法与领域驱动设计。

(6)挖掘非功能需求

需求分析人员最容易忽略的部分就是非功能需求。非功能需求更加靠近的是技术,是设计,是实现,是架构师关注的内容,是需求人员最不擅长的方面,这也是非功能需求为什么常常被忽略的重要原因。正因为如此,架构师应当尽早参与到项目中,参与到需求分析中,尽早分析需求的技术可行性,尽早考虑性能、安全性、可靠性等非功能需求,尽早开始架构设计。 非功能需求可以简单归纳为“URPS+”,即可用性(Usability)、可靠性(Reliability)、性能(Performance)、可支持性(Supportability)以及其它(+)。,将我们分析出来的功能中所潜在的、特殊的非功能需求挖掘出来,提前进行分析设计,对于可行性不高的应及时与客户商讨,才能有效地避免日后存在的这些方面的风险。

(7)做好需求列表

需求列表,又称之为需求跟踪表,是最原始的、用户对业务需求的描述。它不掺杂任何需求分析人员对业务需求的分析与设计,而是以简短扼要的语句,以业务人员的口吻表述的,今后要开发的这个系统应当提供给他们的各项功能。 首先,需求列表不掺杂我们对业务需求的任何分析与设计,这是需求列表的核心,也是它存在的意义。其次,需求列表应当是站在业务人员的视角,对业务需求的简明扼要的描述。在需求列表中应当剔除那些客户对系统设计的内容。最后,需求列表也不是一步到位的,而是经过由粗到细逐渐整理形成的。

(8)写好需求规格说明书

我们之所以要编写自己的需求规格说明书,就是要本着实事求是、切实可行的态度,去描述用户的业务需求。那些不可行的需求被摒弃,或者换成更加可行的解决方案。这就是需求规格说明书的重要作用。领域驱动设计所提倡的就是要让用户、需求分析员、开发人员站在一个平台,使用统一的语言(一种混合语言),来表达大家都清楚明白的概念 。我们不能拿着用户编写的原始需求就开始开发,只有依据自己的公司、项目、特别是需求分析中采用的方法,写出一份既是从用户角度描述的系统业务需求说明书,又是一份指导开发人员完成设计与开发的技术性文档。

图示:

mark

目录
相关文章
|
机器学习/深度学习 编解码 算法
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
1091 0
|
自然语言处理 算法 数据可视化
《一文吃透!NLTK与SpaCy,自然语言处理的神兵利器》
在自然语言处理(NLP)领域,NLTK和SpaCy是Python中两大利器。NLTK功能全面、语料库丰富,适合学术研究与教学;SpaCy则以高效、准确和易用性著称,专为工业级应用设计。两者各有所长,可根据需求选择或结合使用,助力开发者实现强大的NLP功能。
611 9
|
人工智能 运维 Devops
基于云效落地平台工程企业级最佳实践
本文介绍了平台工程作为DevOps演进的必然方向,探讨了其建设过程中面临的挑战及解决方案。文中首先分析了平台工程与DevOps的关系,强调了其在提升价值交付和降低团队心智负担方面的作用。接着,通过云效作为基础设施,详细阐述了其如何帮助企业构建高效的研发平台,并分享了两个实际案例:一个是200人规模的互联网企业,另一个是2000人规模的金融行业企业。最后,展望了平台工程的未来发展方向,包括组件化开发、AI技术的应用以及智能化场景的融入。碧桂园生活服务集团也分享了其在平台工程领域的实践经验和未来思考,强调了标准化、自动化、可靠性和智能化四大原则的重要性。
418 10
|
人工智能 智能设计 算法
中传广告学院x阿里云设计中心《通义高校百万创作人》AIGC宣传片共建校企合作实践平台
中传广告学院x阿里云设计中心《通义高校百万创作人》AIGC宣传片共建校企合作实践平台
|
人工智能 监控 安全
揭秘AI技术在智能家居中的应用
【9月更文挑战第6天】本文深入探讨了AI技术如何在智能家居领域大放异彩。从智能语音助手到自动化家居控制,再到安全监控和能源管理,AI技术正在改变我们的生活方式。文章还将通过代码示例,展示如何利用AI技术实现家居自动化控制。
802 5
|
NoSQL 关系型数据库 MySQL
python协程+异步总结!
本文介绍了Python中的协程、asyncio模块以及异步编程的相关知识。首先解释了协程的概念和实现方法,包括greenlet、yield关键字、asyncio装饰器和async/await关键字。接着详细讲解了协程的意义和应用场景,如提高IO密集型任务的性能。文章还介绍了事件循环、Task对象、Future对象等核心概念,并提供了多个实战案例,包括异步Redis、MySQL操作、FastAPI框架和异步爬虫。最后提到了uvloop作为asyncio的高性能替代方案。通过这些内容,读者可以全面了解和掌握Python中的异步编程技术。
356 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue的校园互助平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的校园互助平台的详细设计和实现(源码+lw+部署文档+讲解等)
403 6
|
存储 JSON 数据挖掘
python逐行读取txt文本中的json数据,并进行处理
Python代码示例演示了如何读取txt文件中的JSON数据并处理。首先,逐行打开文件,然后使用`json.loads()`解析每一行。接着,处理JSON数据,如打印特定字段`name`。异常处理包括捕获`JSONDecodeError`和`KeyError`,确保数据有效性和字段完整性。将`data.txt`替换为实际文件路径运行示例。
992 2
|
Docker 容器 Linux
私有知识库搭建
私有知识库搭建,纯docker文件
1311 6
|
人工智能 自然语言处理 语音技术
操作系统的“AI向”进化是一条必经之路
https://mp.weixin.qq.com/s/JnRgALfdagQBRTtjybOweg。这篇文章讨论了操作系统在人工智能时代的重要性以及统信UOS AI在这一领域的发展和趋势。文章首先提出了操作系统在人与计算机交互中的重要性,然后介绍了UOS AI V1.0和V1.1版本的发布和功能升级,包括对大模型的适配和生态建设。接着,张磊高级副总经理和CTO对未来操作系统需要与AI结合发展的观点进行了阐述,提出了AI助理和自然语言交互等新功能的重要性,并强调了操作系统生态的重要性。