应对报表没完没了的五个步骤
报表的业务稳定性天生很差,业务开展过程中会催生出许多新的查询统计需求,这就造成了没完没了的报表,这是个无法被消灭的任务,也是许多行业软件开发商非常头疼的事情。投入了很多人力,也引入了专业报表工具以及敏捷BI产品,却依然搞得灰头土脸,常常被客户抱怨。这是为什么呢?又该怎么解决呢?
因为报表工具只能解决报表呈现环节的那部分工作,而报表开发过程中,占据工作量更大的部分是在数据准备的环节,这就不是报表工具该负责的,当然也对此无能为力。而敏捷BI也只能解决一些非常规整的报表,而且也严重依赖于事先建设的数据集,瓶颈仍然是个数据准备任务。
当前实现数据准备的主流技术,要么是数据库中用SQL编程,要么是应用程序中用高级语言编程,对于步骤较多的复杂数据准备来讲,开发起来都非常繁琐。实现周期长,就难以应对多变的需求;这些技术的掌握难度高,也就要求较高成本的高技术人员。说白了,报表开发复杂度高的技术原因主要并不在报表本身,而是数据。
除了技术原因外,还有应用结构和团队管理方面的因素也会造成报表开发的成本居高不下。在许多应用系统中,报表是耦合在其中的一些功能,而业务系统的技术环境很复杂,这就迫使报表开发人员也要熟悉这些东西,也就很难把报表开发人员和业务系统的开发人员分开,业务系统上线之后,开发人员仍然要继续坚守开发报表,很难把这项工作转交给客户方的运维人员。
开发过程中的有效沟通也会影响工作量。我们经常会发现这样的现象:业务人员提出报表需求,等技术人员做好后才发现某些概念术语的理解有误,统计口径不一致,结果并不是业务人员想要的,然后也只能重做,甚至反复多次才能正确实现,严重浪费开发资源。
针对上面说的这些原因,我们提出五个步骤来解决。
一. 引入报表工具
先把最容易解决的呈现问题解决掉,减轻这部分人员的工作量。
二. 引入计算工具
然后从技术上提升数据准备的开发效率,配合第一步,可以让整个报表开发工作全面工具化,从而获得更高的开发效率。
三. 独立报表模块
报表开发全面工具化后,就可以调整应用结构,把报表模块从业务系统中解耦出来。报表模块仅仅共享业务系统的数据源(数据库或别的数据存储介质),而不再和业务系统紧密耦合。报表呈现和数据准备都工具化之后,报表运算可以被中间件解释执行,这样,报表的频繁修改增加也不需要让业务系统都重新启动,大幅降低运维的复杂度。
这个过程特别重要的是梳理数据源,把报表模块需要的数据源单独整理出来,以后开发报表只需要和这些数据源打交道。
四. 建设报表团队
在报表模块独立之后,就可以建设专门的报表开发团队了。开发报表只需要理解业务逻辑和数据结构,而不必面对业务系统的复杂技术环境。而且开发工作的工具化,也不需要开发人员熟悉复杂SQL(存储过程)以及Java这类高级程序语言。这样,报表开发并不需要太强的技术人员,人工成本可以有效降低,甚至很多情况时还可以把持续报表开发工作移交给客户方的本地运维人员,这样不仅能降低开发商的成本,还能提高对客户的响应速度。
五. 完善沟通机制
最后就是建立有效的沟通机制,减少交流中的误解。
一个简单可行的办法就是建立企业内部的报表知识库,技术形式上搞一个论坛即可。把以前做过的报表收集到论坛上加以评注,并提供搜索功能。当有了新的报表需求时,可以搜索历史库中是否曾经做过类似的报表(出现过相同的业务术语)。历史报表中保留有相关代码或公式,而这些形式化的信息不会有歧义,这就能帮助新的开发人员正确理解业务术语,甚至许多报表部分还可以被直接复用,在人员变动时也可以最大限度地保证业务知识的继承。
要应对好报表没完没了的问题,是个涉及技术和管理等多方面的综合事务,并不是一朝一夕能完成的。