在一个项目开始前,需求整理大概要占到整个项目周期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. spring注解方式 idea报could not autowire

    删除项目的iml文件,然后mvn重新导入 reimport

  2. c# 数据写入三菱PLC

    public void Data_Write_Value(int[] m_write_data)        {            int lSize = 2; string[] Address ...

  3. 【spring cloud】spring cloud2.X spring boot2.0.4调用feign配置Hystrix Dashboard 和 集成Turbine 【解决:Hystrix仪表盘Unable to connect to Command Metric Stream】【解决:Hystrix仪表盘Loading...】

    环境: <java.version>1.8</java.version><spring-boot.version>2.0.4.RELEASE</spring- ...

  4. 文本属性和字体属性,超链接导航栏案例 background

    文本属性 介绍几个常用的. 文本对齐 text-align 属性规定元素中的文本的水平对齐方式. 属性值:none | center | left | right | justify 文本颜色 col ...

  5. 利用Knockoutjs对电话号码进行验证

    问题来源 最近在项目中前端使用Knockoutjs,验证模块自然也是使用Knockoutjs来进行表单验证了,比较头痛,因为没有使用过Knockoutjs,更加别说要去用它做表单验证了,于是乎恶补了一 ...

  6. POJ 2505

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...

  7. 09-04 java 接口

    接口的引出 继续回到我们的猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等. 而这些额外的动作,并不是所有猫 ...

  8. (转)Python3 模块3之 Urllib之 urllib.parse、urllib.robotparser

    原文:https://blog.csdn.net/qq_36148847/article/details/79153738 https://blog.csdn.net/zly412934578/art ...

  9. Git使用(1)

    安装git完成后 1.首先配置你的用户信息,用于体现在你的提交记录中包含your name and your email git config --global user.name "you ...

  10. C#:使用ListView动态添加数据一直闪烁的解决办法

    首先,自定义一个类ListViewNF,继承自 System.Windows.Forms.ListView using System; using System.Collections.Generic ...