在一个项目开始前,需求整理大概要占到整个项目周期15%甚至30%的比重,可以说需求理得越清楚,后续开发中返工几率越小。在一个项目中,开发新功能的花费的精力要远远小于修改功能的精力,这基本是一个共识。老祖宗说,谋定而后动,不是没有道理的。

一般项目开发中,前期会包含商务活动、需求调研,需求交底的过程。

商务活动

一般由售前人员进行,了解客户需求,收集客户愿景,商务洽谈等等工作,个人认为在这一阶段主要要做好如下工作,原谅我没做过商务工作,穷限制了我的想象力:

  • 了解客户的需求,收集客户的应用场景
  • 商务洽谈,初步确认是否能合作,如果合作确认合作性质,比如,是一个试水项目还是一个盈利项目等等
  • 与产品经理或项目经理沟通是否有资源来完成项目
  • 等等其他,因公司性质而已。

需求调研

一般由商务接洽后,项目经理或产品经理介入,根据前期了解的内容与客户接口人进行详细的规划

  • 对客户场景的详细了解,确定项目的开发模式规模等
  • 对客户需求的详细了解,对项目细节所应具备的功能进行梳理
  • 对客户业务的详细了解,针对不合理的需求提出合理性的建议,反馈给客户帮助客户完善业务
  • 产出需求概要、原型等文档,由商务交付客户确认
  • 产生最终开发方案,并评估工时等信息,有商务进行报价

可以说需求调研是整个项目成功与否的关键所在,如果被客户牵着鼻子走,可能会造成项目开发过程中功能难以实现;如果牵着客户鼻子走,又可能会造成产品上线后客户业务无法开展,导致项目返工甚是废弃(当然给钱了项目废弃也无所谓,但是作为项目经理费了好大劲最后做出来一个废品,是不是很受打击呢!)。

同时项目经理又是承前启后的桥梁,客户业务需求转化成基本实现方案,对接客户与开发人员之间的沟通,立项,需求交底,项目排程,项目监管,阶段验收,测试交付等等,贯穿整个项目流程。俗话说,兵熊熊一个,将熊熊一窝。这个项目经理就是大将,项目成败系于一身,慎之慎之!

接触过的一些项目经理(当然大环境下分工并不十分明确)比如如下场景,

客户:我要做个商城

项目经理(产品经理):……

第二天

项目经理(对客户):一个月吧,最多两个月我们就能做出来,您看怎么样?

客户:我们商城要能加盟,能b2b同时b2c

项目经理:嗯……

第三天

项目经理:我们对了一下,这个可能有点麻烦,要三个月

客户:我们还想关联微信公众号,然后……

项目经理:哦,我咨询下我们的技术再给您答复……

第三天:

项目经理:可以做

客户:……

估计客户最后内心是崩溃的~,你不能和大爷多说几句话么?你不能问问大爷为什么要么?你就不问问大爷想干什么?万一大爷要搞个传销系统,你敢做么?

我总结过,对客户要把握两点

第一:合作共赢(大家各取所需,共同做好项目,都有好处,客户有业绩有绩效,我们有钱拿)

第二:不卑不亢(有时候很难做到,碰到财大气粗的,一副拿钱砸死你的气势,但是回过来想我又不吃你家饭,你在牛和我没半毛钱关系,挖了坑自己难受)

需求交底

在这一阶段,客户基本可以休息了,改由项目经理(如果可能能参与更好,避免跑偏,但是一般很少有客户参与,第一客户专业不是开发,第二客户都很忙)和项目成员进行对接,把从客户那里听来的经过咀嚼,喂给开发人员

  • 项目启动会:概述项目的意义啊,价值啊什么的,白话说,就是要高举反清复明的旗号,告诉大家,只要成功都有吃有喝有女人~
  • 成员定义:谁干什么谁干什么,别等项目都开始了,先锋官还没有,后勤没到位,还打个屁仗,洗洗睡吧
  • 需求交底会:项目经理主讲,图文并茂的说一下客户场景,客户需求,每个模块干什么,并且要保证项目成员能听懂能理解。这点很重要,客户那里有很多术语,要翻译给项目成员听,一定记住 井蛙不可以语于海者,拘于虚也;夏虫不可以语于冰者,笃于时也;
  • 需求反交底:由项目模块的相关人员(开发、测试等)进行模块功能讲解,项目经理进行确认,避免开发人员跑偏。

需求交底和反交底视情况而定,参与的人越多,这些工作越要做的仔细。

以上工作并不一定线性进行,有可能是异步的,而且,除了这些,在企业内部要做好项目的支援工作,人员协调,开发资源协调,项目经理要做好前期项目搭建工作,源码管理、项目管理、bug反馈管理等等的准备工作。

以上可以省略,下方本文正文:

我们的项目需求如下:

叨叨了一堆废话,最后就一张图片,因为项目组就我一个人啊。

You can you up

我喜欢用思维导图来梳理一个项目的枝枝叉叉,比较方便,而且不容易漏掉东西,但是也有很多不足,比如展示内容有限,要加很多备注什么的,展示的时候别人看不到等等。

所以用思维导图配合原型工具比较好。

说下功能:项目重点在 “考试系统管理”,规划的功能基本都会实现。答题这里的移动端我不会手机原生开发,做的话可能就是angular或者vue,这俩都没做过项目,所以最后可能只提供API而不实现移动端。

用MVC5+EF6+WebApi 做一个小功能(二) 项目需求整理的更多相关文章

  1. 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建

    一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...

  2. 用MVC5+EF6+WebApi 做一个小功能(四) 项目分层功能以及文件夹命名

    在上一节,我们完成了一个项目搭建,我们看到的是一个项目的分层架子,那接下来每一层做什么以及需要引用哪些内容呢?在本节内容我们还逐步拆分每一层的功能,顺带添加package包 Trump.Domain ...

  3. 用MVC5+EF6+WebApi 做一个小功能(一)开场挖坑,在线答题系统

    从哪开始说呢,这几年微软的技术一直在变,像是牟足了劲要累死所有的NET程序员,从WebForm到MVC到现在MPA.SPA .Razor单页,从net2.0一直走到现在.net4.6.2,后面还有一个 ...

  4. 用MVC5+EF6+WebApi 做一个考试功能(五) 前端主题

    内容概述 前面絮絮叨叨没正事,到现在为止也没有开始写代码,不过在考虑下貌似这一节还是开始不了. B/S架构开发有一个特点,就是用浏览器打开,不同的用户群体可能有不同的风格,不论是管理平台还是普通的网站 ...

  5. 用MVC5+EF6+WebApi 做一个考试功能(六) 仓储模式 打造EF通用仓储类

    前言 年底工作比较忙,年度总结还没写,项目要上线,回老家过年各种准备.尤其是给长辈给侄子侄女准备礼物头都大了. 原来想年前先出一版能用的,我看有点悬了,尽量先把大体功能弄出来,扔掉一些,保证能考试,然 ...

  6. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  7. 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

  8. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  9. 用RecyclerView做一个小清新的Gallery效果

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

随机推荐

  1. 机器学习实战-ch2-有标签的聚类算法

    本书中的这个聚类算法多少有些让人意外.通常的聚类算法是这样的: 给定一堆点: 给定一个距离计算的算法: 给定一个cluster之间的距离d,或者最小的cluster数目k: 初始化,每个点作为初始集群 ...

  2. 关于能量场和力场弯曲空间的实验证明 EXPERIMENTAL PROOF ON THE BENDING SPACE OF ENERGY FIELD AND FORCE FIELD

    前文提到,F = ma, E = mc^2,并且等效是传递的,等效概念具有同属性.所以不止能量,力场也可以弯曲空间. 实验:某人被头顶上方的电站10几万伏的设备吸收,烧毁双臂. (虽然这个实验不应具有 ...

  3. Linux下替代grep高效文本搜索工具

    1.ack yum install ack 2.ag git clone https://github.com/ggreer/the_silver_searcher.git yum install a ...

  4. linux常用命令(一)linux开关机、重启以及文本界面与图形界面互换

    1.开关机 reboot 重启: shutdown [-efFhknr][-t 秒数][时间][警告信息] 关机: shutdown [-efFhknr][-t 秒数][时间][警告信息] 关机: - ...

  5. 【转】PowerDesigner code、name显示设置 及 同时显示办法

    原文地址:http://blog.csdn.net/fy_hanxu/article/details/52468927 菜单->Tool->Model Options->Name C ...

  6. python 数据类型三 (字典)

    一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...

  7. web开发常用网络优化

    优化方法: 1.合并资源文件,减少HTTP请求 2.压缩资源文件减少请求大小 3.利用缓存机制,尽可能使用缓存减少请求 如何做前端路由 html5 api中的history能够让我们控制url跳转之后 ...

  8. mysql存储过程双重循环示例

    BEGIN ); DECLARE done INT DEFAULT FALSE; DECLARE cursor_rule CURSOR FOR SELECT s.id FROM d_menu_type ...

  9. Linux删除目录下的文件的10种方法

    看到了一遍文章,便突发奇想的想起Linux中删除目录下的所有文件的方法:整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文 ...

  10. (原创)Callable、FutureTask中阻塞超时返回的坑点

    直接上代码 import java.util.concurrent.Callable; public class MyCallable implements Callable<String> ...