我的需求分析方法论

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

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

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

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

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

        

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

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

        如果有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图来做就够了,文字描述清楚,层次界定清楚,一层层分析下去,一般的需求都能表达清楚。

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

       

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

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

相关文章

前端学习之DOM编程-docmument对象、操作DOM对像内容、操作DOM对象属性方式、操作DOM对象的样式

docmument对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>document对象</title> </head> <body><div id"container" nameparent><ul name"parent&qu…

k8s CNI Calico 网络模式总结

目录 calico架构图 IPIP模式下的架构图 calico 核心组件 Overlay 网络模式&#xff1a; Pod IP对外暴露 不对外暴露&#xff1a; 实现对外暴露的方法&#xff1a; overlay模式下的网络MTU Iptables & ipvs overlay的主要缺点&#xff1a; Full-mesh Unoverla…

DXP学习003-PCB编辑器的环境参数及电路板参数相关设置

目录 一&#xff0c;dxp的pcb编辑器环境 1&#xff0c;创建新的PCB设计文档 2&#xff0c;PCB编辑器界面 1&#xff09;布线工具栏 2&#xff09;公用工具栏 3&#xff09;层标签栏 ​☀ 3&#xff0c;PCB设计面板 1&#xff09;打开pcb设计面板 4&#xff0c;PCB观察…

重温OKHTTP源码

本文基于OkHttp4.12.0源码分析 官方地址 概括 本篇主要是对okhttp开源库的一个详细解析&#xff0c;包含详细的请求流程分析、各大拦截器的解读等。 使用方法 同步请求&#xff1a;创建一个OKHttpClient对象&#xff0c;一个Request对象&#xff0c;然后利用它们创建一个Ca…

免费微信小程序源码分享~搭起来改一下就可以【创业】

【前言】现在很多人都想做微信小程序创业搞钱&#xff0c;但是苦于不会开发或过高的开发成本只能放弃&#xff0c;下面我收集了几套微信小程序的源码供各位有梦想的同学免费使用~ 这些小程序代码都包含了客户端和管理端&#xff0c;你搭建起来就可以开始创业搞钱了~ 下载链接&a…

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

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

4月4日今日预告:printf+scanf+分支循环,if语句,else悬空问题,加油,干干干这篇文章三个小时半了,从愚人节被告知今天就有课程-今日4/3,

今天中午知道要爆肝的C语言的&#xff0c;今天本来作业好多的&#xff1b; 干了&#xff0c;家人们 做一些补充&#xff1a; 一&#xff1a;printf() 参数与占位符对应关系 printf() 参数与占位符是⼀⼀对应关系&#xff0c;如果有 n 个占位符&#xff0c; printf() 的参数…

使用docker-tc对host容器进行限流

docker-tc是一个github开源项目&#xff0c;项目地址是https://github.com/lukaszlach/docker-tc。 运行docker-tc docker run -d \ --name docker-tc \ --network host \ --cap-add NET_ADMIN \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var…

通过vite创建项目

一、VUE3官网 Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) 二、通过Vite创建项目 1、在cmd窗口下&#xff0c;全局安装vite //使用国内镜像源 npm config set registryhttps://registry.npmmirror.com//安装最新版vite npm install -g vitelatest Vite | 下一代…

阿里云、腾讯云、华为云优惠券领取攻略

随着云计算技术的日益成熟和普及&#xff0c;越来越多的企业和个人开始选择使用云服务商来满足自己的数据存储、计算和处理需求。阿里云、腾讯云、华为云作为国内领先的云服务商&#xff0c;提供了丰富多样的云产品和服务。而为了吸引更多用户&#xff0c;它们也时常会推出各种…

4.4学习总结

一.线段树概念 一.定义: 线段树是一种二叉搜索树&#xff0c;而二叉搜索树&#xff0c;首先满足二叉树&#xff0c;即每个结点最多有两颗子树&#xff0c;并且是一颗搜索树&#xff0c;我们要知道&#xff0c;线段树的每个结点都存储了一个区间&#xff0c;也可以理解成一个线…

文件系统监视库(watchdog)

Python Watchdog库是一个用于监视文件系统变化的Python第三方库。以下是关于Watchdog库的详细介绍&#xff1a; 功能&#xff1a;Watchdog库能够监控文件和目录的创建、修改、删除和移动等操作。它通过使用底层原生API&#xff08;如Windows的ReadDirectoryChangesW、Linux 2.6…

Golang学习笔记

Golang学习笔记 安装Golang 来源&#xff1a;linux 安装 golang - 知乎 (zhihu.com) 由于我用的是linux系统&#xff0c;所以本文采用linux的安装方式介绍&#xff0c;如果你使用的是Windows/Mac 也可以看下该文章&#xff0c;或者自己去下列地址进行操作。 Download and in…

react中配置webpack:使用@代表src目录

在vue的项目中可以使用表示src目录&#xff0c;使用该符号表示绝对路径&#xff0c;那么在react中想要使用怎么办呢&#xff1f; 在react中使用表示src目录是需要在webpack中配置的&#xff0c;在核心模块node_modules-》react-scripts-》config-》webpack.config.js中搜索找到…

基于SSM的品牌银饰售卖平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的品牌银饰售卖平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring …

Windows11下Docker使用记录(一)

Docker使用记录&#xff08;一&#xff09; 简单介绍Docker安装Docker 常用命令Docker 可视化Docker 使用GPU可视化rviz、gazebo 在进行ROS项目开发时&#xff0c;如果只有一台Windows电脑&#xff0c;我们可以考虑使用WSL或Docker来搭建ROS环境。在尝试了两种方式后&#xff0…

代码随想录第31天 | 455.分发饼干 、376. 摆动序列、53. 最大子序和

一、前言 参考文献&#xff1a;代码随想录 今天的内容是贪心算法&#xff0c;这个算法分为两个极端&#xff0c;一个极端是很简单&#xff0c;靠常识就可以解出来&#xff0c;另外一个是&#xff0c;你怎么想也想不出来&#xff0c;只能看题解的那种。 and 对第一天和第二天…

Spring源码解析上

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

树的基本概念与二叉树

文章目录 树的基本概念与二叉树一、树的概念和结构1. 树的概念2. 树的相关概念 二、树的存储1. 左孩子右兄弟表示法2. 双亲表示法 三、二叉树1. 特殊的二叉树1.1 满二叉树1.2 完全二叉树 树的基本概念与二叉树 一、树的概念和结构 1. 树的概念 树是一种非线性的数据结构,它是…

Liunx进程信号

进程信号 进程信号什么是信号liunx信号种类 前后台进程前后台进程的概念 进程信号的产生键盘产生 阻塞信号信号的捕捉用户态和内核态 信号的捕捉函数 进程信号 什么是信号 信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知…