“杀”一个程序员不需要用枪,改三次需求就可以了!

640?wx_fmt=gif

在很多软件公司,特别是一些创业型的团队中,对于这样的情景可能大家都很熟悉:项目经理或者产品经理(产品狗)口头或者简单记录一下软件产品的大致要做的功能,直接就让研发团队的兄弟(程序猿)去狂撸代码。然后他就去喝茶撩妹或者回家陪老婆了...

这种撸起袖子就开干的方式,看似简单高效,便于直接沟通,能够快速迭代。却不知,发现没有一份正规且实时更新的功能需求设计文档,会付出三四倍的代价来弥补。

最终会引发一场产品狗和程序猿之间的“猿狗大战”...

640?

一、WHY - 为什么需要功能需求设计说明书

在没有功能设计文档时,主要有如下几个问题:

1、前期研究团队沟通成本

如何要让团队里面的所有人员对软件产品的功能需求设计有一个共识?没有功能设计文档,反正我是想不出有什么办法。当该项目的团队人员越多,沟通成本就变得很高。

研发人员很容易有一个通病:以为自己了解了一小块需求就立即开始埋头狂撸......代码。最终很可能与项目经理和客户真正想要的功能相差甚远。

更可怕的,研发人员把数据库设计好了,代码也已经写得差不多了,这时产品狗突然跑到程序猿这,说我们的需求要做一点变化,大家都知道,“对产品狗来说那一点变化,可能会害得程序猿撸过几天几夜”。那很小的变更可能导致之前设计的数据库,码的代码都不能用了。对于程序猿没有什么比加班加点写了几个月的代码,最终被产品狗告知需求变了,代码要删除重新写更可怕的。估计只能用涨工资来安慰一下那受伤的心灵了。

640?

还有一个比较隐藏的事情是,每个程序猿都认为自己写的代码很牛逼(其实对于大多数人这只是一个错觉,你写得代码并不优秀),不太愿意删除之前所写的东西,总是想在原有的代码基础上进行修改,让他们删除代码比杀了他还难。

作为公司的技术负责人,我每几天都会Code Review团队里面所有人的代码,一直要求他们把不用的代码去掉,但他们的应对方式总是加两个//。注释掉他们写的代码,而不是去做真正的删除动作。他们总有自己的理由,“这只是暂时注释掉,后面会用到”,但最终的结果是那些代码就像尸体一样,一直在那里,干扰着团队人员正常的思路。所以我只能强制性让他们那些“暂时没有用,以后会用到的代码”干掉 。

2、前期任务进度安排和分配

该文档也是任务进度安排和分配的重要依据。在没有功能需求设计文档之前的所有任务进度计划都是瞎扯淡,都不知道具体要做什么东西,哪能拿出合理的任务进度计划。如果你拿出来了,我也不相信那是经过认真分析做的进度计划,我知道那只是用来看领导看的。

3、中期产品经理需求变更

软件在开发过程中难免会遇到功能的需求变更,将程序猿们召集在一起把所有的变更讲一遍?当走出会议室的时候可能每个人都有自己的理解。下一场战争已悄然临近...

640?

4、后期测试团队产品测试

测试团队应该在项目Kickoff之时就应该介入,而不是在产品开发完成之后。测试团队应该对功能需求设计文档充分了解,且以此来编写具体的测试用例文档。否则,只能是在界面上进行简单的表面测试,而真正的BUG并不在表面,这些BUG会藏得很深,等发现的时候可能已经造成很大的损失。测试团队想覆盖全部的测试用例此时已经相当困难,他们甚至都不知道产品有哪些功能。

测试用例应该尽可能详细,尽量保证测试用例走完能确保产品能上线发布。下图为我们在登录注册时用到的一部分用例:

640?

二、WHERE - 文档应该放在何处

功能说明文档一定要保持实时性,任何变更的需求,新增的需求都必须在该文档中体现。

一只产品狗(或一群)在编写完文档后,要发给项目经理、研发人员、销售人员、运营推广人员等人,如何保证每个人的文档都是最新的呢?如果通过QQ,邮件等方式,是不是每次更新都要重新通知所有人:“嘿,各位兄弟,文档作了一次修改,我给大家都重新发一份新的”。每个人电脑里面都有好几个版本的文档,时间长了,自己都忘记哪个文档是最新的;产品狗也记不清是否是所有相关的人都发了最新的文档。

研发人员可能会说通过SVN来作版本管理啊,给每个人分配一个帐号。“天啊,SVN是啥?”-销售人员、运营推广人员估计一脸懵逼。

更好的办法是通过团队实时协作的云端工具。从而实现分享和实时讨论,告别反复修改版本再发送邮件的麻烦。如果你会FQ,那你可以使用Google Docs、Office Online。否则你可以使用石墨文档、一起写。

三、WHAT - 什么是功能需求设计文档 & 应该包含那些内容

功能需求设计文档最重要的是描述产品所要包含的所有功能,越详细越好,可以结合产品的原型设计图来讲解。让项目所有相关人知道产品是什么,包含哪些页面,页面如何跳转等。

该文档是产品经理、项目经理、研发人员、销售人员、运营推广人员沟通的一个桥梁,一份好的功能需求设计文档是软件产品是否能成功的关键。

考虑是该文档的受众,这份文档不应该包含具体的编程技术上的说明。不管你是用C#/.NET、JAVA还是其它,这应该是另外研发团队内部使用的一份文档。

一般人第一反映就是去网上找一份功能需求设计文档模板,我个人感觉那些模板90%根本没有存在的必要。都太过形式化,不要没有实际意义和模板化的内容,只会使文档成为一个摆饰,反而是在浪费大家的时间。

那么一份合格的软件需求设计文档应该包括哪些内容呢?

1、项目背景

项目产生的实际背景、具体的运用场景、大致要解决什么样的问题、针对的阅读对象、版本修改记录、文档作者以及修改人信息。

2、详细的功能点描述

写明产品所包含的所有功能点,对功能、界面、接口的描述一定要充分详细,每处可以交互的地方都要给出具体的说明。再次强调,一定要详细描述每一个页面所拥有的功能。

3、产品不包含的功能点说明

除了写明产品所包含的所有功能点外,还应该写明软件所不包含的功能,这一点也很重要。

4、使用场景(画面感)

将复杂的业务逻辑融入到具体的使用场景中,更容易让项目经理、研发人员、销售人员、运营推广人员不同背景的人产生共识。

5、流程图

大家都知道“一图胜千言”,能用图说明的尽量用图来说明,只通过大量枯燥的文字可能效果并不太好。流程图是一种用图形表示逻辑和算法的工具,特别对研发人员撸代码很有帮助。
Windows用户可以使用Visio,Mac用户可以使用OmniGraffle,还可以使用免费在线作图,实时协作工具ProcessOn。

我之前就用ProcessOn画了一个设置了缓存的网络请求的流程图,这里作个参考:

640?

6、人员角色“实例化”

跟上面提到的“画面感”相结合,将人员和角色能够实例化。比如我们的产品要实现如下功能,有两种表达方式:

医生给患者测量血压,并记录到系统中。

上海华山医院肾内科的王主任医生在给32号病区1号病床的患者刘阿姨测量血压,将测量到的血压100/70mmHg输入到透析管理系统。

哪种方式更便于理解?特别是对医疗知识不太了解的码农们。当然可能有人觉得第一种方式更简洁。可能是我举的例子不够好,也可能是我的理解能力不够强。(但不要怀疑我的智商!哈哈哈...)

7、结合产品原型设计图

产品原型设计图可以粗枝大叶地产品大致的框架。便于项目经理、研发人员、销售人员、运营推广人员等人在产品未开发之前对产品有一个相对直观的认识。没有一个原型图,想到这帮人拉到同一个频道沟通一定是不可能的事。(如果你做到了,那么赶紧把你的简历发我,我决定录用你!)

常用的原型设计工具有墨刀、Mockplus、Axure。

扯了这么多,来个例子吧。

本软件是给北京某医院集团肾内科透析患者所使用的软件,包括院内管理系统、院外大数据平台、医护端APP、患者端APP...

版本作者  修订时间 审核人     

v1.0.0

Charlie Chu

2017-2-12

Vivian Wong

使用场景一:

肾内科的医生王医生给31号病床刘阿姨进行透析上机操作,王医生在院内透析管理系统上点击上机操作,信息会传递到院外的大数据平台以及医护端APP、患者端APP上...

刘阿姨患者的家属登录到患者端APP后,可以实时查看刘阿姨透析过程中的所有信息,还可以查看血压、血糖、体重等历史数据...

当刘阿姨在家中通过蓝牙血压计测量血压时,自动同步到医院内部,如果刘阿姨的血压超过预先设置的值,院内的王医生则会在自己的手机上查看到刘阿姨的血压异常报警信息,王医生可以立即跟刘阿姨的家属进行实时沟通...

...<此处省略N字>...

本软件(v1.0.1版本)不包括的功能需求如下:

  • 医生与患者的实时IM

  • 医生排班设置

  • 修改密码

  • 患者积分

功能模块详细描述:

一、APP登录页面

由于本产品不存在患者自己注册的场景,所有的患者录入都发生在院外透析系统中,患者及家属在院外只需要输入相应的手机号,即可登录系统。

登录页面只有两个输入框,一个手机号,一个密码。

当用户要输入手机号时,手机应该弹出纯数字键盘,最多只能输入手机号固定的11位。密码最多输入10位。

当用户点击登录时,APP与后台服务器进行交互:

  1. 不输入手机号和密码,直接点击登录按钮,应该提示用户输入手机号和密码。

  2. 输入手机号但不输入密码,点击登录,提示“请输入密码”。

  3. 输入不正确的手机号,点击登录,应该提示“不存在该用户”。

  4. 输入小于11位的手机号,应该提示“请输入正确的手机号”。

二、登录后首页

下图是左侧是一个首页,右侧是一个点击透析预警的详细页面:

640?

首页包括功能点:

  1. 资讯信息轮播 首页顶部资讯信息轮播功能,点击可以跳转到新的页面可以查看资讯详情。

  2. 病情咨询 点击“病情咨询”模块,患者查看向指定的医生了解自己的病情。

  3. 透析记录 点击透析记录,患者可以随时随地查看自己的过往透析记录。

  4. 食物速查 点击食物速查,可以查看所有类别的食物成份含量。

  5. 透析上下机实时信息列表 当患者在医院内进行透析上下机等操作时,会记录患者的透析上机时间 、下机时间等信息。点击其中的一条记录,跳转到透析详情页面,如上图右侧所示。

四、HOW - 如何保证文档质量

要保证文档能够实时更新同步,而不是疲于应付。那就是让大家都通过该文档来进行沟通,谁有问题直接去看文档,需求一旦变更首先就更新到文档。

研发人员严格按文档上的描述来开发,在没有文档之前,对不起,拒绝开发!任何口头、QQ或邮件上的新的功能需求一概不理!提前是产品狗要比较给力,否则老板还是会让你狂撸代码...

原文作者:CharlieChu

原文出处:https://www.cnblogs.com/charliechu

版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。



数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg


长按扫码关注


640?wx_fmt=jpeg

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 仿QQ登录框翻转效果

突然发现qq登录窗体的翻转特效看起来不错&#xff0c;决定用wpf试试。主要知识点就是Viewport3D和AxisAngleRotation3D看一下效果&#xff1a;下面看一下代码&#xff1a;主要xaml代码&#xff1a;<UserControl x:Class"GQ.DirectContentSample"xmlns"http:/…

机器人J中WPR_优傲:协作机器人的未来在哪里?

2019年9月17日&#xff0c;第21届中国国际工业博览会于上海国家会展中心如期举办&#xff0c;期间优傲机器人(Universal Robots)公司推出新品&#xff0c;UR16e。有效载荷高达16kg&#xff0c;引起业界广泛的关注。优傲机器人总裁Jrgen von Hollen表示&#xff1a;“在当今不明…

你试过不用if撸代码吗?

试着不用if撸代码&#xff0c;是件很有趣的事&#xff0c;而且&#xff0c;万一你领会了什么是“数据即代码&#xff0c;代码即数据”呢&#xff1f;我在教新手编程时&#xff0c;喜欢给他们一些小小的挑战&#xff0c;比如&#xff1a;不使用if语句(或者三元运算符、switch语句…

NET问答: 对 Linq 中的 Union 和 Concat 的用法困惑

咨询区 Prasad Kanaparthi&#xff1a;我在使用 Union 和 Concat 上有一个困惑&#xff0c;从字面上理解&#xff1a;一个是并集&#xff0c;一个是连接&#xff0c;下面的例子就是我对这两个扩展方法的理解。static void Main(string[] args){var a1 (new[] { 1, 2 }).Union(…

中止是怎么用的_多士炉怎么用 使用多士炉注意事项

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅&#xff0c;请放心关注。 …

国内 GitHub 造假黑色产业链曝光;开源开发者撤销对 ICE 禁用的决定

0、国内 GitHub 被爆造假&#xff0c;起底背后的黑色产业链作为全球最大的开源社区&#xff0c;GitHub 对于程序员群体而言像是空气般重要的存在&#xff0c;而互联网公司也会通过 GitHub 来进一步了解面试者的编程习惯&#xff0c;技术水平等。但最近知乎上有一篇《中国内地 G…

Azure data studio 跨平台数据库管理工具试用

最近折腾 azure sql database 的时候发现了微软的一款新的数据库管理工具&#xff1a;azure data studio。从名字上看 azure data studio 好像是专门为 azure 开发的&#xff0c;其实并不是这样的 。它同样支持对传统sql server的查询与管理。azure data studio 是一款跨平台数…

顺丰gis产品经理_线上面试季丰图科技—顺丰旗下专注GIS领域

WHITer内推——每天9点发布武汉优质互联网企业最新岗位内推机会。内推微信号&#xff1a;whxiaowai 内推邮箱&#xff1a;770554595qq.com01 Java高级开发工程师 12-25K点击查看职位详情 申请内推02高级python开发工程师 12-25K点击查看职位详情 申请内推03 物联网数据运营分析…

腾讯发布95页重磅报告:全面预测中国互联网未来5年趋势

腾讯科技企鹅智酷联合63位互联网行业领袖与专家发布了《企鹅智酷中国科技&互联网创新趋势白皮书&#xff08;2017&#xff09;》&#xff0c;预测了未来5年的中国互联网发展趋势。此次公开发布的版本共95页PPT&#xff0c;其中“移动直播产业”、“媒体与内容创业”、“互联…

.NET 6 平台系列1 .NET Framework发展历程

自1995年互联网战略日以来最雄心勃勃的事业 —— 微软.NET战略, 2000年6月30日。微软公司于2002年2月13日正式推出第一代.NET平台 .NET Framewrok 1.0。借助于自家强大易用的 Windows 系统&#xff0c;.NET Framework1.0 主要提供了面向 Windows 桌面&#xff08;Windows Form&…

3 src 获取_CVE-2019-15846:Exim远程获取root权限漏洞分析

报告编号&#xff1a;B6-2019-103101报告来源&#xff1a;360-CERT报告作者&#xff1a;360-CERT更新日期&#xff1a;2019-10-310x00 漏洞背景2019年9月6日18&#xff1a;00&#xff0c;exim发布exim-4.92.2版本修复了CVE-2019-15846&#xff0c;攻击者可以利用此漏洞远程获取…

jwt与token+redis,哪种方案更好用?

问&#xff1a;jwt与tokenredis&#xff0c;哪种方案更好用&#xff1f;其实JWT就是Json Web Token&#xff0c;就是Token的典型方式。题主的JWT和TokenRedis的区别&#xff0c;其实都是Token&#xff0c;只是JWT的可靠性保障是来源于加密算法(对称加密和非对称两种)&#xff0…

想不到吧?数学还有如此妙用!

随着科技的快速发展&#xff0c;人工智能的重要性日渐显现。对于大多数新手来说&#xff0c;弄清楚入门人工智能需要哪些数学基础、需要熟悉什么框架等&#xff0c;都至关重要。机器学习是一个异常丰富的研究领域&#xff0c;有大量未解决的问题&#xff1a;公正、可解释性、易…

ASP.NET Core 开源项目 nopCommerce,一款沉淀13年的电商开源佳作!

技术在不断更新迭代&#xff0c;.NET 6 的正式版也即将正式发布&#xff0c;在.NET Core 开源项目方面&#xff0c;CMS的代表作是SiteServer&#xff0c;商城的开源系统有没有什么代表作&#xff1f;肯定是有的&#xff0c;强烈推荐这套开源免费的商城系统&#xff1a;nopComme…

Base PyQt4, Simple Web APP Framwork

长时间以来&#xff0c;一直针对Linux 服务器开发后台程序&#xff0c;每天面对的是黑框框&#xff0c;输出只有日志文件。偶尔需要模拟客户端测试&#xff0c;要么是写几行php代码&#xff0c;在浏览器上点一点&#xff0c;要么是写个小Python脚本在shell中执行一下。写了一些…

机器学习核心算法之——贝叶斯方法

1.贝叶斯公式贝叶斯公式已经成为机器学习的核心算法之一&#xff0c;诸如拼写检查、语言翻译、海难搜救、生物医药、疾病诊断、邮件过滤、文本分类、侦破案件、工业生产等诸多方面都有很广泛的应用&#xff0c;它也是很多机器学习算法的基础。在这里&#xff0c;有必要了解一下…

B 站面试官:“啥是重定向?”

三分钟&#xff0c;带你学习和实践域名重定向大家好&#xff0c;我是鱼皮&#xff0c;今天分享 重定向 小知识&#xff0c;以及我在腾讯云云开发中实现域名重定向的实践。孽起之前&#xff0c;我开发了一个编程导航网站&#xff0c;将网站放到了腾讯云云开发上&#xff0c;用云…

比起掉头发,我更怕掉队

程序员是最需要持续学习的职业可能在大家眼中&#xff0c;程序员是一群木讷、思维方式单一的物种&#xff0c;但其实&#xff0c;他们才是思维活跃&#xff0c;时刻保持学习力&#xff0c;不甘落后的一群人。计算机行业每天都会有新的东西出现&#xff0c;程序员们需要关注最新…

刷新mac地址命令_配置好Cisco交换机需要熟悉IOS命令及相关的知识

一、几种配置命令模式switch> 这种提示符表示是在用户命令模式&#xff0c;只能使用一些查看命令。switch# 这种提示符表示是在特权命令模式。switch(config)# 这种提示符表示是全局配置模式switch(config-if)# 端口配置命令模式二、检查、查看命令这些命令是查看当前配置…

WPF 使用FontAwesome字体图标

要搞点小软件&#xff0c;又不想使用图标和图标类库&#xff0c;突然想起FontAwesome,试了一下&#xff0c;还挺方便的&#xff0c;先弄了几个最常用的图标试一下&#xff0c;弄了几个按钮的样式&#xff0c;看一下效果&#xff1a;看一下fontAwesome使用方法&#xff1a;首先从…