一、前期准备工作:
由于我们团队参与进天龙报表开发是中途介入的,没有太多时间缓冲,参与进去后就直接下发报表任务,需要收集信息并完成下面工作:
1、搭建天龙项目开发环境:包括项目SVN地址下载、maven库下载更新、项目SVN相关账号权限的申请等等,直至天龙报表项目启动不报错,运行成功,访问页面无误结束;
2、天龙项目数据库访问:了解开发测试环境配置,使用PL/SQL能连接到开发数据库。
3、报表需求文档SVN下载:下载报表任务对应的报表需求,并制定需求细化文档模板(要求每位开发人员在开发报表之前必须先搞懂并细化需求,形成文档);
4、数据库设计说明文档下载:由于安能快递的表结构与之前接触的项目表结构有蛮多变化,需要参照数据库设计说明文档。
5、每日工作日志模板下载:下载工作日志模板,每日提交工作完成情况。开发过程中前期有发现写工作内容就是笼统的一句话,要求必须细化成多项工作任务;
6、收集安能_通讯录:方便开发过程中与相关干系人沟通和协调资源;
7、制定开发计划:大致将报表任务过了一遍后,小组一起讨论了并制定了开发计划,确定了每个报表的责任人、每项计划的具体完成时间点。
二、报表开发工作启动:
整体开发流程大致分为:需求理解细化 》创建结果集表 》创建存储过程 》前后台代码编写 》单元测试 》提请功能转测
1、需求细化:干过开发的人应该都清楚,在真正下手之前,理解透需求的重要性。前期需求在理解模糊的情况下就急于下手,往往后期大量返工,无数次血的教训都告诉我们一个简单的道理,磨刀不误砍柴工。因此为了避免开发人员在理解需求文档时走过场,一知半解,制定了细化需求文档模板,要求在文档中根据需求明确写明该报表需求使用到哪些表,哪些是主表,表与表之间的关联字段是什么,报表列表中的各字段来源于哪个表,哪个字段都要求明确写明,对需求中不明确的地方逐一找需求人员确认,并在旁边做好批注。
2、创建结果集表:结果集表的创建要综合考虑目标展示报表与现有数据库中业务表的关系,它是一个基于这两者中间位置上的一个表。既要满足用很简单的SQL查询语句就能将结果集表的里面数据展示到前台并符合报表的要求,还要满足从现有业务表中数据转换成结果集表的数据所写的存储过程不会太过复杂。一个良好的结果集表的创建正是权衡这二者关系平衡的产物。
3、创建存储过程:首先制定了存储过程模板,对存储过程的命名规则也做了具体要求,出于安能对信息化安全的要求,具体的规则就暂不列出了。每个报表存储过程我们一般都是分成业务存储过程(RST)和调用存储过程(CALL),RST类存储过程核心的存储过程,里面包含了该报表所使用结果集的具体数据转换逻辑过程。而与其配套的CALL类存储过程则通过传递统计时间参数简单的对RST业务存储过程进行调用,这种方式即方便开发中进行灵活调试,也方便后期oracle JOB定时任务直接调用CALL类存储过程执行。这种模式的最初提出者是我们公司的王总,挺方便的不错。
4、前后台代码的编写:天龙报表项目是一个maven多模块项目,划分不同的maven子模块,各司其职,方便开发人员进行分层开发,同样出于安能对信息化安全的要求,这里不做具体的介绍,有需要的同事可以内部沟通。在开发过程中,常见的规范一定要遵守,注释模板codetemplates.xml要统一,文件存放的目录结构、命令规则在开发之前全部统一规范好,jsp文件放哪里,对应的JS、CSS文件放哪里,每位组员都要心中有数,这些规范在下手开干之前一定要统一好,不然要么容忍乱套,要么自己花时间去统一改。另外天龙报表前端都是使用jquery实现的,对于习惯了ZK开发模式的开发人员,需要两天时间转变,增加对JS的熟悉度,特别是了解前端常见的已封装好的功能件,比如网点模糊匹联想功能、报表列表分页查询显示等。
5、单元测试:报表开发完成后,除了开发人员自己从页面上去验证功能好坏外,安能测试这边还要求提供单元测试文档,并会在提请转测后,安排测试人员、需求人员、开发人员一起开远程会议,评审单元测试文档。如果单元测试不通过,则直接打回,不予测试。单元测试文档的提供即要求了开发人员对自己开发的功能进行的必要的冒烟测试,也给测试人员指名了初步的测试方向。6、提请报表转测:每个报表开发完成并自测后需要向测试部门提转测申请,以邮件的形式发送,邮件中注明功能开发人员姓名、建表SQL文件SVN地址、存储过程SQL文件SVN地址,报表功能页面截图,附件附上单元测试文档。
三、在开发中的监控过程
1、控制范围:
A、需求文档每个我都要过一遍,做到心中有数,确保跟对应的报表需求人员沟通该报表业务时无障碍,对认为有疑问的地方确认开发人员是否有跟需求人员确认清楚;
B、查阅数据库设计文档,了解天龙项目表设计上与之前接触的系统有哪些差异,如收发到派四张表差异,网点基础表的差异等。
C、每天下班前提交今天完成的可交付成果到SVN,早上上班后,首先核实可交付成果,是否与需求相符;
2、控制进度:
A:报表思维方式的传递。由于我前期参与过不少报表类的开发,对建表、存储过程开发和调试都有不少心得,也深知一个项目的成功并不是靠一个人就能完成得了的,为了更快的让组员领会这种模式,在会议室召开会议,通过以其中一张报表做例子,系统的讲解了如何设计结果集表,如何创建存储过程、如何调试存储过程以及如何编写mybatis中的SQL将结果集的数据展现在前台。
B、时刻清楚今天要做什么。每天上班后打开开发计划文档,跟开发人员确认目前开发进展情况和今天将要做什么,是否有延期,是否有遇到困难,是否需要帮助,是否需要协调资源,及时解决。
C、白板监控。在报表交付时间前三天开始,对要交付的报表还存在的问题进行上板,划分优先级,目标明确,逐一消灭。
4、控制质量:
A、规范习惯的培养。每天在核实可交付成果中,都会去留意规范的遵守情况,包括开发代码规范、开发文档规范、工作日志文档,一旦发现有放松不遵守规范的情况,立即要求修改,培养的是一种习惯 。
B、站在用户体验的角度,对不符合用户使用习惯或影响用户体验的操作方式,提出修改建议;
C、禅道BUG跟踪:开发人员安心开发手头上的工作,由我来统一监控禅道BUG,有问题及时沟通指派,协助开发人员定位问题,及时解决并反馈。
收尾:
目前第一轮报表开发已经完成,第二轮开发已经启动,目前开发进度一直保持良好,陈宗熙、谢超、陈斌、李锋几位帅哥在工作中的能力是值得肯定的,也同时感谢他们在工作中的对我的大力支持,希望我们能够继续保质按时完成后续天龙项目的其它报表任务,让安能客户为我们点赞!