程序如何才叫做好了
原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6737757
我们总是在加班,在加班。总是在提交测试后发现自己的程序是那么多BUG,总是在交货前一天发现好多问题。在领导问我们,程序做的怎么样的时候,我们是怎么回答的?做好了。是的,做好了。可是结果呢。
从程序员的角度,程序做好了的定义,和测试人员的角度定义的“做好了”,还是有很大差距了。那么,我们的程序,到底如何才能算“做好了”呢?我觉得,这里是有一个流程的:
1开发人员做好了。
这个阶段,只是程序员自己把程序调通了。一般的项目,都会有框架,都会有与其他系统的接口,都会有一些硬件模拟器。开发人员只是在自己的一小块功能里实现好了。例如,A程序员只是开发一个登录功能,B程序员开发的只是对话功能。那么B程序员说的做好了,一定是模拟登录成功的情况,或者是他的程序不需要登录就能用,或者是他已经把登录信息写死了,或者其他的什么。
这个阶段的代码,精简有效,基本没什么错误处理。
2小组联调。
联调是一个很重要的步骤。任何多人开发的工程,联调的时候都会出这样那样的问题。联调通过,那么系统的功能才算是流畅了,业务的流程才算是可以走通了。例如,B程序员开发的对话功能,一定是登录过后才能使用。、
在联调的时候,需要各个程序员耐心细致的找问题。这个阶段,最考验团队合作能力。一个到处推卸责任的人,会影响大家的士气;到处都是推卸责任的人,则这个团队会陷入扯皮的境地。
这个阶段的代码,一不小心会就陷入高耦合的杯具中。所以要及时调整代码架构。
3与硬件环境调试。
系统多多少少都会与外界有接口,一些是与硬件的接口,一些是与环境的接口。例如登录需要指纹验证,那么刚开始调试的时候,可能只是模拟了一个指纹验证设备,我们按照协议发送一定格式的数据给一个软件模拟器,然后软件模拟器再返回一个结果。但是一旦真正把设备接入到程序,总会出现各种各样的问额。
这个阶段,是项目攻坚阶段,需要有精兵强将,人海战术是不行的。
这个阶段的代码,开始加入许多接口。一定要注意保持良好架构,不要让程序的耦合度越来越高。
4可以展示
与硬件环境调试成功后,这个程序就可以拿去展示了。但是在展示前的预演示过程中,会发现各种异常情况,各种没考虑到的情况。展示可能是给领导看,可能是放在展览会上,也可能是给客户演示。不管怎样,展示之前是需要演示的,那么展示的内容是可控的。这个时候,可以根据展示的具体情况,做一些应急措施去解决棘手的问题。例如,对话的时候,如果有人发送了”stop”字样,程序就会退出。这是个BUG,但是不是必须修改的,因为展示的时候记住不要输入”stop”就行了。
这个版本的代码,应该是充满了TODO,到处都是写死和注释掉的代码。
5测试人员测试。
用来展示的版本,只能作为主线版本的一个分支,大量充斥了临时方案,这个对系统的进化是有害的。这就像周芷若练九阴真经,以速成的方式,总是会有问题的。主线版本里,还是需要提交测试人员,经过精心安排的测试case,把程序的各个功能,各个路径都验证好。
测试是个反复的过程,需要几轮的沉淀。测试出的BUG,也是以一个曲线方式消减下来。也就是说,每天发现的BUG数,是慢慢降下来的过程。你无法用一轮测试就找出所有的问题,有些问题是有相互依赖的,A问题不解决,B问题就根本发现不了。
几轮测试之后,系统趋于稳定,各个功能都能正常工作,各个业务流程都能走通。这样系统就算是可以使用了。
经过测试的代码,有了大量的错误处理和容错机制。一般来说,之前写的if,在这个阶段都会加上写else之类的。
6客户现场调通。
永远不要指望,测试完美的程序能在客户现场一遍就安装成功。客户现场与开发环境总是有这样那样的不同。把我们自认为测试完好的系统,在客户现场部署、安装,这是一个曲折的过程。你可能发现,客户的网络根本不足以承受我们系统的流量,客户的服务器不足以运行我们的系统,还有其他各式各样的问题。
客户现场调通,需要有很强的交流沟通能力,因为有时候客户答应做一点点改动,就能节省我们几个通宵。
代码开始有坏味道。为了赶快调通,达到客户想要的结果,代码开始不遵守编码规范。架构开始倾斜。所以这个时候一定要注意保持清醒的头脑,不能越改越乱。
7客户验收
客户现场调通之后,就交付客户使用了。不要指望交付使用就大功告成,就可以催着客户验收了。客户验收之前,在客户的使用过程中,你会发现我们的系统是多么脆弱。为什么客户会这么操作,为什么客户不按照我们的提示来,为什么客户会用这么不可思议的方式折磨我们的系统?不要问为什么,是他们花钱让我们做东西,那么我们就得让人家用的舒服,不是么?
这里同样需要注意,不能完全按照客户说的来做,我们要挖掘客户深层次的需求,有时候我们可以给点提议,稍微改动一点他们的想法,可以节省我们很多的工作。例如,客户需要在对话的过程中,加入一些可以自行配置的图标。我们就需要跟客户仔细沟通,是否真的需要做到“自行配置”,能不能我们在程序里给他们配好一些图标,然后告诉他们配置图标的方式。这里的差别是,“自行配置”就需要做一个配置页面,而手工配置可能就是告诉他们如何改一个xml文件而已。
这个时候,看上去系统已经稳定了,但是代码已经开始走向衰减。除非下定决心重构,否则代码开始慢慢的臃肿,开始到处都是补丁,开始越改越难改。但是重构一定要在回归测试的基础上,否则很可能带来新的问题,让客户咆哮。
8成为产品
以上说的,是针对一个客户的情况。很多时候,跟客户搞好关系,会让你减少很多工作量。并且,客户的需求是单一的,可控的。但是作为产品,那就没这么好的事情了。
产品是针对大量客户的情况。单一客户,我们还可以引导客户的使用习惯,但是大量客户的话,只能产品去凑合客户的习惯。当然,拥有大量粘性高的用户,可以去引导客户的习惯,例如QQ和360。但是成为这种产品之前,最好还是老老实实的去迎合各种客户的使用习惯。
并且,客户的操作会更让你崩溃。知道手机出厂前会做一个什么测试么?就是随机乱操作上万次,要保证手机不会死机。这就是说,你根本无法预测客户会怎么操作的。不是产品的系统,你可以跟你的客户说,你这么操作是不对的,我有操作手册在此。但是产品呢?如果约束太多,人家就不用你的产品了啊。
分享到:
相关推荐
%将种子点压入堆栈(堆栈用来在生长过程中的数据坐标) stack(1,2)=seed(i,2); Start=1;%定义堆栈起点和终点 End=1; while(Start) %当前种子点坐标 CurrX=stack(Start,1); CurrY=stack(Start,2); %对当前点...
基于停车场自助停取车微信小程序设计与实现(毕业论文+程序设计源码+数据库文件).zip 源码可部署运行 第一章 绪论 1.1 背景分析 1.2 现状分析 1.3 发展趋势 1.3.1 国外发展趋势 1.3.2 国内发展趋势 1.4 拟解决方案...
停车场自助停取车微信小程序 第一章 绪论 1.1 背景分析 1.2 现状分析 1.3 发展趋势 1.3.1 国外发展趋势 1.3.2 国内发展趋势 ...8.2 开发历程 8.2 系统不足 8.3 后续计划 8.4 个人成长 参考文献 致 谢
这是一款以静、与细腻的宝贝博客程序,鲜明的色调,可以充分的展示出您的宝宝的风格,记录下宝宝成长过程中的点点滴滴,希望这款程序能让更多的父母朋友所接受。 后台地址/admin 后台管理密码为 admin admin
个人成长记录: 系统可以记录用户的学习进度和成长历程,包括学习时长、答题成绩、闯关记录等,帮助用户了解自己的学习情况并进行个人成长规划。 奖励机制: 系统设置了积分和奖励机制,用户可以通过学习、答题、...
整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库...
成长记录:小程序可以记录宠物的成长过程,包括体重、身高等数据,帮助主人更好地了解宠物的发育情况。社交互动:用户可以在小程序中与其他宠物主人互动,分享宠物的照片和故事,建立宠物社交圈子。便捷设置:用户...
它集合了从孕期护理到婴儿成长各个阶段的实用信息,旨在帮助妈妈们更好地了解和应对育儿过程中的各种挑战。小程序内包含了丰富的育儿指南、健康咨询、营养建议以及亲子互动游戏等内容,覆盖了从孕期到儿童早期教育的...
**基于微信小程序的校园作业反馈家校联系小程序(全套)** ...通过这个系统,教师可以更加方便地管理作业和反馈信息,家长也可以更加主动地参与到孩子的学习过程中,共同促进学生的健康成长和学业进步。
学习本书应具备以下基础: 1. 具备基础的Linux系统知识及相关操作;...过程,编译过程,调式器GDB的使用,系统调用与API,文件操作,串行通信程序的实现。进程的产生与控制,进程间的通信,多线程编程。
项目涵盖了实习申请、实习日志、实习报告等多个功能模块,以满足实习生在实习过程中的各种需求。 功能介绍: 1. 实习申请:实习生可以通过小程序提交实习申请,填写个人信息、实习意向等信息,方便企业快速筛选...
本项目致力于构建一个专为...此外,小程序还提供疫苗接种知识普及,帮助家长更好地理解疫苗接种的重要性,为孩子的健康成长保驾护航。整个项目采用模块化设计,易于二次开发和定制,满足不同地区或机构的个性化需求。
少儿编程中的基础程序入门,顺序程序,条件程序,循环程序是程序的基本思想,如何使用程序实现笔画人脸,并且在使用过程中能够学习到英语单词更是一种提升,这里结合人脸部器官英语单词,结合画笔画出脸,眼睛、鼻子...
少儿编程中的基础程序入门,顺序程序,条件程序,循环程序是程序的基本思想,如何使用程序实现捕鱼达人,并且在使用过程中能够学习到英语单词更是一种提升,这里结合颜色英语单词,结合不同的水中生物表现不同的颜色...
1. 实时监控:利用物联网技术,用户可通过小程序随时查看农场环境参数(如温度、湿度、光照等)及作物生长情况,便于及时调整管理措施。 2. 数据分析:系统收集并分析农场的各项数据,生成详细的报告和图表,帮助...
本文首先简要地说明了当前植物生长模拟的一些研究成果和进展,接着重点从形态发生模型和可视化模型的角度出发,对虚拟植物的生长过程进行了多粒度的建模和研究。所谓多粒度,就是指在不同的视角下对虚拟植物进行展示...