我的需求分析方法论

        或网上看了无数博客文章、技术视频,或购买金装版本技术书籍,看过无数原理原则、各种各样经典方法论,真正在实际开发工作中,本能去遵守和执行的又留下多少呢。

        启动一个新系统时,我们可能还会去花些时间遵循这些原理原则,采用这些软件分析开发方法论,之后漫长的二次开发,一次次叠加新功能新特征,我们还会本能去执行吗?

        我们是不是特别反感主管或业务部门要我们给一个工时估算和发布计划,喜欢做到哪里是哪里,按时上下班,谁都别来催我们。

        年轻人靠聪明编程,随时想着技术;年长者靠经验编程,以前本能怎么干就怎么干;还有一部分想着下班编程和想着周末编程,心思基本不在编程上;我就喜欢想着周末编程,周末去野外风景区徒步,是一件多么开心的事情啊。

        言归正传,我在日常工作中喜欢用哪些方法来做需求分析呢,也就是有哪些本能使然的东西,而不是别人逼迫我做的东西呢。

        

        一般我们的需求都是经过产品人员整理的,写到一个任务单上,文字是大段大段的,未必很有逻辑,但确实比较详细,对哪些天生不喜欢看文字的人,是一个折磨,但是需求如果不详细形成文字,以后可能说不清楚。

        对这样的任务单,我总是不厌其烦地详细逐条阅读一遍,从中提取有用的信息,一遍不行就再阅读一遍,反复琢磨文字。

        如果有Axure或类似Axure软件设计出来的产品原型,我也会同时仔细分析产品原型图和备注文字,特别这些备注文字需要结合原型图来认真分析对应,把客户的意图搞清楚。

        总之,就是要认真仔细阅读分析,揣摩别人的意图,到底叫你做些什么。

        然后我喜欢简单采用敏捷方法论提出的需求管理方法:

        1)Epic-写出项目的愿景目标

        客户的业务目标到底是什么,他们想要怎样的一个东西,为什么要这个东西,有什么实际价值,解决了用户什么实际工作问题。

        最近,在技术会议上听到一个小青年说:他们叫我做什么,我就做什么。

        在平时二次开发过程中,客户提出一个需求,我们基本上也是几个人两周左右的工作量,其实都算不上一个小项目,但我喜欢用项目来称呼。

        2)Feature-写出功能特性

        这个所谓的项目,有多少个功能点,我们必须清晰地列出来,这些功能点都是同一个级别的一级功能点,不要从技术角度去看问题,要从用户角度去看问题。

        这些功能点列出来之后,这个项目的内容就可以用一句句话来描述清楚了,这也是我们对任务单里一堆或有逻辑或没逻辑的文字做提炼而得到的,这不正是我们中学语文里要求的阅读理解归档总结能力么。

        3)Story-写出一个个用户故事

        就是二级功能点,对一级功能点进一步细化,使用的分析方法还是一样,还是一样不要去从技术角度思考,多从业务角度思考有哪些功能点。

        4)Task-写出一个个具体任务

        二级功能点进一步细化,我们不叫功能点了,叫任务,任务的内容小到可以具体执行了,我们可以估算工时了,这种任务最好能在1天内完成。

        不是说敏捷管理方法提出4级,我们一定要死死按4级来执行分析,项目很小3级也可以,项目大一些可能需要5级,反正分析到最后形成具体任务,所估算的工时不能大,如果一个任务需要一个人好几天的开发工作量,说明这不是一个任务,还是一个用户故事。

        把一个大需求一步步细化,在细化过程中一步步加深对它的理解,直到最后形成很容易把控的具体任务,我们还对工时估算那么恐惧和痛苦吗?

        所谓大事化小,小事化了,对于一般企业软件开发,没有使用到什么高难度的技术,使用到了也是花钱卖来,总之都不会存在技术障碍,只要我们对需求分析做好了,开发实现工作基本是可控的。

        那么,在具体需求分析过程中,我喜欢采用哪些技术手段呢,先来图:

        

        1. 语文阅读理解:最最简单的就是我们中学语文老师要求的那一套,面对一大片需求文字,就是去搞阅读理解嘛,不需要什么高深方法,80%需求都分析清楚了。

        在对文字阅读分析过程中,一个重要工作就是发现隐藏的功能点,毕竟市场人员和产品人员的逻辑能力不是那么强,常常就溜掉了一些需求点。

        2.  头脑风暴:有时可以拉来几个相关人员,集思广益进行一通头脑风暴也是可以的,不过与会者要有那个心,常常很多人被通知来开会,都是朦朦胧胧来被动听一下的,真正参与积极讨论的有两三个就了不起了。

        3. 回访:如果我对任务单里的文字存疑,我喜欢直接去问市场人员,那个直接跟客户打交道的人,问他一个个问题,听听他真实的意图。有时我喜欢把自己理解讲给他们听一下,看看我讲的东西,他们是否听得懂。

        4. DDD:  DDD就是领域驱动设计,这一套讲得天花乱坠,对于我自己比较入脑的就是限界上下文分析手法,但是这个名字怪怪的,本质就是找边界,平时我们讲的要高内聚低耦合,不要把不相干的功能扯在一起。

        5. UML:我最喜欢用的就是UML来做需求分析,上面两幅图都是UseCase图,需求分析不用什么高大上的工具,用UseCase图来做就够了,文字描述清楚,层次界定清楚,一层层分析下去,一般的需求都能表达清楚。

        纸上来得终觉浅,绝知此事要躬行,逻辑严密的各种方法论如果不能在实际工作中本能地去执行,实际工作中一忙碌就不做任何需求分析,不做工时估算和工作计划,做到哪里是哪里,还不如保持一些不那么严密的方法,每次都能做到,而且很熟练,花费的时间很短,几乎不影响工作进度,不是很好么。

       

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

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

相关文章

中文大模型隐私保护哪家强?InternLM 与 Baichuan2 胜出!

引言:中文大模型隐私保护能力探索 本文研究了大语言模型(LLMs)对隐私和安全的影响,采用了三层渐进框架对语言系统的隐私进行评估。主要目标是全面评估LLMs对私人信息的敏感性,并检查其在识别、管理和保护敏感数据方面…

每日面经分享(Git经典题目,Git入门)

1. GitHub是什么 a. Git是一个分布式版本控制系统,作用是跟踪、管理和协调软件开发项目中的代码更改。 b. 提供了一种有效的方式来管理代码的版本历史,以及多人协作开发的能力。 2. Git的作用有哪些 a. 版本控制:Git可以记录每次代码更改的…

混合专家(MoE)模型

文心一言 混合专家模型(Mixture of Experts,简称MoE)是一种基于Transformer架构的模型设计策略。它通过将多个模型(称为“专家”)直接结合在一起,以获得更好的预测性能。这种模型特别适用于处理大规模数据…

springAI初体验 让人人都能跑大模型

springAI初体验 让人人都能跑大模型 Spring AI是一个旨在简化开发包含人工智能功能的应用程序的项目。它受到Python项目如LangChain和Llama Index的启发,但并非这些项目的直接移植。Spring AI的核心理念是为开发AI应用程序提供基础抽象,这些抽象有多个实…

Everything搭建http服务器

突然发现everything还可以搭建http服务器,给大家分享一下 打开everything,按图示填写或选择内容 在浏览器输入你的本地地址和端口 再输入刚才设置的账户密码,即可使用

接口测试常用代理工具

些代理工具可以帮助我们构造各种测试场景、以及更好的完成测试工作。下面的介绍以 Charles 为主。 Charles Charles 是一款代理服务器,可以截取请求和响应达到分析抓包的目的,且支持多平台,能够在 Windows,Mac,Linux…

【OJ】动规练习七之【模板】01背包

个人主页 : zxctscl 如有转载请先通知 DP41 【模板】01背包 1. DP41 【模板】01背包2. 分析3. 代码4. 优化5. 优化后代码 1. DP41 【模板】01背包 2. 分析 一、题目解析: 来看一下例1,3代表有三个物品,5代表能够容纳的体积。第一…

1970-2021年全国区县级碳排放数据8

1970-2021年全国区县级碳排放数据 1、时间:1970-2021年 2、指标:2877个区县 3、来源:EDGAR 4、指标:二氧化碳排放量 5、样本量:14W 6、指标解释: 二氧化碳排放是一个生态环境专业术语,主…

【Python系列】读取 Excel 第一列数据并赋值到指定列

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PyCharm远程链接AutoDL

AutoDL使用方法: Step1:确认您安装的PyCharm是社区版还是专业版,只有专业版才支持远程开发功能。 Step2:开机实例 复制自己实例的SSH指令,比如:ssh -p 38076 rootregion-1.autodl.com 在ssh -p 38076 roo…

二、计算机网络体系结构参考模型

一、分层结构 (一)为什么要分层: 发送文件/数据前要完成的工作: 1)发起通信的计算机必须讲数据通信通路进行激活 2)要告诉网络如何识别目的主机 3)发起通信的计算机要查明目的主机是否开机、并且…

先登杯·14天创作挑战营·第④期~ 等你来战!

文章目录 ⭐️ 活动介绍⭐️ 活动详情⭐️ 活动奖品⭐️ 活动流程​⭐️ 评审规则⭐️ 报名&投稿注意事项⭐️ 活动组织 ​ 活动报名入口:https://bbs.csdn.net/topics/618374514 本次活动与官方活动及其他博主的创作型活动并不冲突! ​ ​ ⭐️…

Go语言hash/fnv应用实战:技巧、示例与最佳实践

Go语言hash/fnv应用实战:技巧、示例与最佳实践 引言hash/fnv概览使用hash/fnv的初步步骤导入hash/fnv库创建哈希器实例 hash/fnv在实际开发中的应用生成唯一标识符数据分片与负载均衡快速查找 高级技巧和最佳实践避免哈希碰撞动态调整哈希表大小利用sync.Pool优化哈…

STM32之HAL开发——不同系列SPI功能对比(附STM32Cube配置)

不同系列STM32——SPI框图 F1系列框图 F4系列框图 TI模式时序图特性 F7系列框图 H7系列框图 注意:F7系列以及H7系列支持Quad-SPI模式,可以连接单,双或者四条数据线的Flash存储介质。 SPI——Cube配置流程 RCC时钟源配置 SYS系统调试模式配…

1.JavaEE进阶篇 - 为什么要学习SpringBoot呢?

文章目录 1.为什么要学框架?2.框架的优点展示(SpringBoot VS Servlet)2.1 Servlet 项⽬开发2.1.1 创建项⽬2.1.2 添加引⽤2.1.3 添加业务代码2.1.4 运⾏项⽬(配置tomcat)2.1.5 Maven配置2.1.5.1修改本地Maven仓库地址2.1.5.2 配置settings.xml文件2.1.5.3项目 本地仓…

通用开发技能系列:Git

云原生学习路线导航页(持续更新中) 本文是 通用开发技能系列 文章,主要对编程通用技能Git进行学习 1.为什么使用版本控制系统 版本控制系统可以解决的问题 代码备份很重要版本控制很重要协同工作很重要责任追溯很重要 常见的版本控制系统 Gi…

网站建设 之 发布ios

首先将forceDev改为false 然后执行npm run build:ios 然后用xocode安装到手机上进行测试 ##Version(应用程序发布版本号) 对应的就是CFBundleShortVersionString。该版本的版本号是三个时期分隔的整数组成的字符串: 第一个整数代表重大修…

升级一下电脑,CPU换I5-14600K,主板换华硕B760M

刚给自己电脑升级了一下,CPU从 AMD R5 5600X 换成 Intel I5-14600K,主板换成了华硕的 TUF GAMING B760M-PLUS WIFI D4。 因为我现有的两根内存是DDR4的,所有我选了个支持DDR4内存的主板。 我发现用AMD处理器时将系统从Win10升级到Win11后变…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上,开发出了一款基于经典街机游戏《街头霸王III》的人工智能(AI)基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发,游戏在模拟器中运行&#xf…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…