用MVC5+EF6+WebApi 做一个小功能(二) 项目需求整理
在一个项目开始前,需求整理大概要占到整个项目周期15%甚至30%的比重,可以说需求理得越清楚,后续开发中返工几率越小。在一个项目中,开发新功能的花费的精力要远远小于修改功能的精力,这基本是一个共识。老祖宗说,谋定而后动,不是没有道理的。
一般项目开发中,前期会包含商务活动、需求调研,需求交底的过程。
商务活动
一般由售前人员进行,了解客户需求,收集客户愿景,商务洽谈等等工作,个人认为在这一阶段主要要做好如下工作,原谅我没做过商务工作,穷限制了我的想象力:
- 了解客户的需求,收集客户的应用场景
- 商务洽谈,初步确认是否能合作,如果合作确认合作性质,比如,是一个试水项目还是一个盈利项目等等
- 与产品经理或项目经理沟通是否有资源来完成项目
- 等等其他,因公司性质而已。
需求调研
一般由商务接洽后,项目经理或产品经理介入,根据前期了解的内容与客户接口人进行详细的规划
- 对客户场景的详细了解,确定项目的开发模式规模等
- 对客户需求的详细了解,对项目细节所应具备的功能进行梳理
- 对客户业务的详细了解,针对不合理的需求提出合理性的建议,反馈给客户帮助客户完善业务
- 产出需求概要、原型等文档,由商务交付客户确认
- 产生最终开发方案,并评估工时等信息,有商务进行报价
可以说需求调研是整个项目成功与否的关键所在,如果被客户牵着鼻子走,可能会造成项目开发过程中功能难以实现;如果牵着客户鼻子走,又可能会造成产品上线后客户业务无法开展,导致项目返工甚是废弃(当然给钱了项目废弃也无所谓,但是作为项目经理费了好大劲最后做出来一个废品,是不是很受打击呢!)。
同时项目经理又是承前启后的桥梁,客户业务需求转化成基本实现方案,对接客户与开发人员之间的沟通,立项,需求交底,项目排程,项目监管,阶段验收,测试交付等等,贯穿整个项目流程。俗话说,兵熊熊一个,将熊熊一窝。这个项目经理就是大将,项目成败系于一身,慎之慎之!
接触过的一些项目经理(当然大环境下分工并不十分明确)比如如下场景,
客户:我要做个商城
项目经理(产品经理):……
第二天
项目经理(对客户):一个月吧,最多两个月我们就能做出来,您看怎么样?
客户:我们商城要能加盟,能b2b同时b2c
项目经理:嗯……
第三天
项目经理:我们对了一下,这个可能有点麻烦,要三个月
客户:我们还想关联微信公众号,然后……
项目经理:哦,我咨询下我们的技术再给您答复……
第三天:
项目经理:可以做
客户:……
估计客户最后内心是崩溃的~,你不能和大爷多说几句话么?你不能问问大爷为什么要么?你就不问问大爷想干什么?万一大爷要搞个传销系统,你敢做么?
我总结过,对客户要把握两点
第一:合作共赢(大家各取所需,共同做好项目,都有好处,客户有业绩有绩效,我们有钱拿)
第二:不卑不亢(有时候很难做到,碰到财大气粗的,一副拿钱砸死你的气势,但是回过来想我又不吃你家饭,你在牛和我没半毛钱关系,挖了坑自己难受)
需求交底
在这一阶段,客户基本可以休息了,改由项目经理(如果可能能参与更好,避免跑偏,但是一般很少有客户参与,第一客户专业不是开发,第二客户都很忙)和项目成员进行对接,把从客户那里听来的经过咀嚼,喂给开发人员
- 项目启动会:概述项目的意义啊,价值啊什么的,白话说,就是要高举反清复明的旗号,告诉大家,只要成功都有吃有喝有女人~
- 成员定义:谁干什么谁干什么,别等项目都开始了,先锋官还没有,后勤没到位,还打个屁仗,洗洗睡吧
- 需求交底会:项目经理主讲,图文并茂的说一下客户场景,客户需求,每个模块干什么,并且要保证项目成员能听懂能理解。这点很重要,客户那里有很多术语,要翻译给项目成员听,一定记住 井蛙不可以语于海者,拘于虚也;夏虫不可以语于冰者,笃于时也;
- 需求反交底:由项目模块的相关人员(开发、测试等)进行模块功能讲解,项目经理进行确认,避免开发人员跑偏。
需求交底和反交底视情况而定,参与的人越多,这些工作越要做的仔细。
以上工作并不一定线性进行,有可能是异步的,而且,除了这些,在企业内部要做好项目的支援工作,人员协调,开发资源协调,项目经理要做好前期项目搭建工作,源码管理、项目管理、bug反馈管理等等的准备工作。
以上可以省略,下方本文正文:
我们的项目需求如下:

叨叨了一堆废话,最后就一张图片,因为项目组就我一个人啊。
You can you up
我喜欢用思维导图来梳理一个项目的枝枝叉叉,比较方便,而且不容易漏掉东西,但是也有很多不足,比如展示内容有限,要加很多备注什么的,展示的时候别人看不到等等。
所以用思维导图配合原型工具比较好。
说下功能:项目重点在 “考试系统管理”,规划的功能基本都会实现。答题这里的移动端我不会手机原生开发,做的话可能就是angular或者vue,这俩都没做过项目,所以最后可能只提供API而不实现移动端。
用MVC5+EF6+WebApi 做一个小功能(二) 项目需求整理的更多相关文章
- 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建
一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...
- 用MVC5+EF6+WebApi 做一个小功能(四) 项目分层功能以及文件夹命名
在上一节,我们完成了一个项目搭建,我们看到的是一个项目的分层架子,那接下来每一层做什么以及需要引用哪些内容呢?在本节内容我们还逐步拆分每一层的功能,顺带添加package包 Trump.Domain ...
- 用MVC5+EF6+WebApi 做一个小功能(一)开场挖坑,在线答题系统
从哪开始说呢,这几年微软的技术一直在变,像是牟足了劲要累死所有的NET程序员,从WebForm到MVC到现在MPA.SPA .Razor单页,从net2.0一直走到现在.net4.6.2,后面还有一个 ...
- 用MVC5+EF6+WebApi 做一个考试功能(五) 前端主题
内容概述 前面絮絮叨叨没正事,到现在为止也没有开始写代码,不过在考虑下貌似这一节还是开始不了. B/S架构开发有一个特点,就是用浏览器打开,不同的用户群体可能有不同的风格,不论是管理平台还是普通的网站 ...
- 用MVC5+EF6+WebApi 做一个考试功能(六) 仓储模式 打造EF通用仓储类
前言 年底工作比较忙,年度总结还没写,项目要上线,回老家过年各种准备.尤其是给长辈给侄子侄女准备礼物头都大了. 原来想年前先出一版能用的,我看有点悬了,尽量先把大体功能弄出来,扔掉一些,保证能考试,然 ...
- 使用PixiJS做一个小游戏
PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...
- 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- 用RecyclerView做一个小清新的Gallery效果
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
随机推荐
- 缓存中使用的ReentrantReadWriteLock锁
java中提供了lock锁,简便了设计缓存,下面程序主要是使用读写锁的应用.... import java.util.HashMap; import java.util.Map; import jav ...
- 三、Kubernetes之深入了解Pod
1.yaml格式的Pod配置文件内容及注解 深入Pod之前,首先我们来了解下Pod的yaml整体文件内容及功能注解. 如下: # yaml格式的pod定义文件完整内容: apiVersion: v ...
- Lerning Entity Framework 6 ------ Defining the Database Structure
There are three ways to define the database structure by Entity Framework API. They are: Attributes ...
- 网页登入验证码的实现(java&html)
前端界面实现(由于验证码是动态获取所以用jsp格式) <%@ page language="java" contentType="text/html; charse ...
- 01-Python的基础知识2
- Python变量 - 变量就是重复使用的一个量,或者一个代号. - 变量的命名规则: - 必须以下划线或者字母开头,后面接任意数量下划线.字母.或数字. - 4man , 5for 是不可以的 - ...
- 微信公众平台主动推送消息(asp.net)
/// <summary> /// MD5 32位加密 /// </summary> /// <param name=" ...
- web 基础
web服务器和应用服务器以及web应用框架: web服务器:负责处理http请求,响应静态文件,常见的有Apache,Nginx以及微软的IIS. 应用服务器:负责处理逻辑的服务器.比如php.pyt ...
- odoo开发笔记--python获取当天时间
取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年 ...
- 课程一(Neural Networks and Deep Learning),第四周(Deep Neural Networks)—— 1.Practice Questions: Key concepts on Deep Neural Networks
[解释] [解释] 比如算法中的learing rateα(学习率).iterations(梯度下降法循环的数量).L(隐藏层数目).n[l] (隐藏层单元数目).choice of activati ...
- 记一次TCP重发接口调用的问题
问题描述:基于微软RDP协议,使用开源rdp库与微软skpye软件进行基于tcp的p2p通讯,由于rdp协议传输原始图片数据较大,调用公司内部ice p2p通讯接口处会导致失败. 错误思路:一开始是怀 ...