最近我呆的公司来了一批实习生,在公司培训了几个礼拜以后公司决定对他们进行一些测试。就是给他们出了一些可选的题目,好比《xxx租房网》、《xxx档案管理系统》、《xxx图书馆》...等一些公司缺乏的系统。公司主要有如下几个目的:测试
1. 检查实习生的培训效果网站
2. 经过一个完整的应用来测试同窗们,同时从里面帅选出比较优秀的学生排序
3. 为公司编写一个目前缺乏的系统。图片
咱们以租房网那个题目为例,公司只是提了一些必须有的功能,好比登录,好比发帖等基本的一些功能,其余的并无详细的要求。需求文档也是由这些几个一组的实习生来编写的,而后在本身实现本身的需求文档,并本身担任QA测试和发布。也就是说整个过程都是本身来独立完成的。开发
今天有一组的同窗们写完了需求,我一看名字是xxx需求V4.doc,我当时内心还挺高兴的,都知道先本身过几遍需求,而且有版本意识。可是当我通读完需求以后发现了很是多的问题。考虑到这些问题基本上刚出校园的同窗们大都会遇到,因此有感而发写了这篇文章。但愿对你们有所帮助。若是文章中的一些观点不正确的话,欢迎评论你们一块儿探讨。文档
首先我打开他们的需求文档,有20多页的样子,整个需求文档没有图,仅有的一个图仍是截的别的网站的图。其他的全是文字,整个需求文档没有很明显的段落层次感。慢慢的文字有一种让人作语文阅读理解的感受。而后我从头阅读完,一一在上面标出了本身的疑点和建议。如今总结以下:原型
1. 需求文档的内容首先必需要明确,明确要作什么,要解决什么问题。固然最好也能有为何要作这个需求。产品
2. 需求文档须要明肯定义系统有哪些主要功能模块,每一个模块有哪些子模块,有哪些主要页面,页面上有哪些按钮,系统有哪些主要角色,大体的交互流程是什么样的。文档中须要对细节的地方定义清楚。最好使用图或者表格的方式来进行表现。先在需求的上方列出主要功能点,主要的交互流程,而后在详细的描述每一个功能点。另外要定义清楚细节。好比我看的这个需求中有一段:“信息发布后,系统马上自动将该条房源信息推送给符合条件的求租者。”从这段话中,个人关注点落在了【符合条件的求租者】,个人疑问是什么样的求租者才是符合条件的呢?如何判断某个求租者是不是知足条件的? 需求中没有对这个点定义清楚,这个就是细节没定义清楚。而开发实现的时候这个细节倒是必需要清楚的。因此 这个地方是一个问题登录
3. 新人写需求文档的时候最容易犯的错误就是脱离实际状况,好比我看的这个需求中写的【利用图片识别技术过滤虚假信息】,说实话我真心觉的刚刚本科毕业在公司培训了几周的同窗能作出来这个东西,固然不是看不起你们的意思。我只是觉的这些有点脱离实际状况。写需求的时候必定要结合需求的工期,看看有多少天时间,团队成员的水平如何,执行力如何?作到“量力而行”。要记住,即使你的需求写的天花乱坠各类NB的技术好像都用到了可是基本的功能不可用,结果必定会远远不如那些需求很明确简单,可是实现的很不错,系统功能正常运转的方案。另外也没有定义清楚什么是虚假信息,如何断定是不是虚假信息。互联网
4. 需求中必须对功能进行优先级排序,明确什么功能是必需要作的,什么功能是必需要在此次需求中作的。什么能够放到下次需求。哪些功能是可选的。建议在一开始的时候,能够先简化需求,作一个需求初版。可能就是实现一个登陆和权限的功能。而后完成运行以后在作发帖之类的功能。经过这种迭代的方式来保证质量和工期。最后若是基本必须的功能实现好了,若是还有时间的话,能够在进行添砖加瓦,锦上添花。
5. 对于新人来讲,尤为是几个组作同一个需求的时候,千万别比较【谁的需求文档写的多NB,什么时髦的技术都提到了,用到了】,即使要比,也要比谁的需求文档写的更切合实际状况,谁的需求文档更能描述和解决实际的问题。有些人的需求写的内容看起来确实很nb,可是每每最后都实现不出来。因此我觉的即使功能简单,可是正常可用就是很不错的东西。 尤为是互联网的产品,最初都是一个原型,经过不断试错,快速迭代的方式来小步快跑的增长功能。
好了,就先写到这边吧。