一次二次开发中的经验与教训(一)


       2011年10月份左右,客户公司(国内较有名的工程机械公司,以XD来代替)打过来电话说要做一个短信系统,并且这个系统要嵌入到他们现有的系统中。要实现的功能有以下几方面:
       一,用户可以用手机实时查询机械信息。并且机械有报警时,可以自动向关联的手机号码发送报警信息。
       二,系统可以设置,每天每周或每月设置固定时间。来向用户报告机械信息。
       三,逢年过节,向用户发送一些祝福短信。
       这个系统是建立在现有的系统(一个工程机械管理网站,BS架构)之上的,除了数据库的结构有些交差及用户登录信息需要共享外,基本没有什么交叉。也算是一次二次开发吧。
       从书面上来看,需求很简单,没什么技术难点,需要注意的地方有以下两点:
一,用户的并发查询处理问题,用户的数量虽然不算大,但保守也有几十万左右(包括XD,XD的职工,XD的机械代理商及代理商的工作人员,还有最张购买的机械用户)
二,需要分析系统的数据库及系统代码
       这样我估计一两个人大约半个月的时间就可以完成,再过半个月部署(需要出差,来回要两天的时间,再加上测试,调试的时间),这样基本1个月绰绰有余。而且我也将需求说明书及系统概要设计寄给用户,他们也签了字的。于是在合同签署后我们就开始进行开发了。
项目组算上我一共4人(其中一个以前是做windows phone 开发的,称为C),根据需求,我将系统分为了三个程序或者说模块,一个是XD与XD的用户查看信息用的短信系统(B/S),我让A负责用户的日常信息处理,B负责用户的报警信息的查询。这个系统需要嵌入到现有的系统中,一个短信监控程序,负责实时的处理用户的请求,及信息的发送(一天的数据处理量约有10000左右,而且根据用户要求必须在10分钟内将10000条短信发送出去,而且要处理第一次发送失败的重发。抛开短信硬件的功能不说,软件要在10分钟内处理完成,也不是非常容易的,所以这个模块我来写代码)。考虑到人员的充分利用,我让剩下的C开发功能比较简单的其它附加功能。分好各人的工作之后,我就按照XD提供的资料开始进行分析,真是不看不知道,一看吓一跳,别的不说,就拿数据库来说,连个基本的数据库设计文档也没有(这也是国内大部分公司普遍 的通病),而且命名也不一致。导致我前期的数据库分析与设计延迟了好几天。
       而且还有一个比较严重的问题是,数据库里各种型号的报警信息是不一样的。不止是字段名不一样而已,而是报警的字段意义也不一样。有的是0表示正常,1表示异常的。有的则正好反过来。有的则用true/false来表示。而且,同一个型号的机械它们的前缀也不一样。这样给我前期的设计带来了许多意想不到的困难。
  不管怎样,数据库分析好后,我们就开始进入编码阶段,基本上一个星期左右,编码完成。我们先在我们的服务器上进行测试,因为要模块客户的实际环境,我就把XD的数据库Schema拷贝过来,在我们的服务器上添加了约有几十万条数据,然后开始测试,基本上一两天测试完成(我基本上属于那种小心谨慎的人,晚上还熬了个通宵来查看程序运行的稳定性,这个领导都不知道,我也不愿意说出来因为属于本职工作范畴内)。但在给客户看后,它们说要把界面改成跟原先的系统一致的(这是我的工作失误,净考虑系统的功能,认为只有几个页面,做的简洁大方就可以了,所以就没有跟用户沟通页面的效果),不过,俺各类语言都不敢说精通那也是熟悉,js/css不在话下,三下五除二,哦不,是半天时间,将页面修改完毕。
         给客户看后,基本没什么问题。然后我就到常州开始部署系统。原以为没什么问题了,然而这才是麻烦的开始。 
          到常州后,我没有休息就赶到XD公司,与客户代表做了简单的交流后,他又提出了一些新的想法,而这些想法是在原先的需求里根本没有的,但考虑到XD是我们目前最大的客户,我忍了,按照他们的需求,对系统做出了改动,而悲催的是XD公司为了安全起见,断了外网,公司职工只能上内网及指定的外网,而且除了80外,别的端口都封掉了,于是我只能通过他们的服务器上的qq给远在千里外的同事发送用户的需求。 

你可能感兴趣的:(软件编程,项目经验)