治理应用,CIO的下一个焦点


 2014-12-24 02:15:01       758

作者:李健民, 联系作者:lijm@primeton.com

治理应用,CIO的下一个焦点

摘要:中国企业必须在不平等的起跑线上,在最短的时间内补足自己的能力参与竞争。系统数量不足可以弥补,对系统的管理又该如何解决。

中国信息化的历程已经有20多年了,可以说在这20年中,国内信息化水平进入了快速发展和提升阶段。各行各业应用系统的规模越来越庞大,应用复杂程度也越来越高。但行业的快速发展,也掩盖了发展过程中一个重要的问题:我们能建造越来越多的系统,但是我们真的能管理越来越多的系统吗?

全球化使得经济越来越开放,中国经济正在飞速发展,市场化特征也越来越明显,这使得中国企业必须在不平等的起跑线上,在最短的时间内补足自己的能力参与竞争。为了支撑业务,大量业务系统快速开工、上马。不过,我们虽然可以迅速将自己的肚子撑得很大,吃得很饱,自身的消化能力却不能在短时间得到改善。这种本质问题引发了我们可以观察到的种种现象。

其一,应用系架构治理。从CIO的角度来说,企业的应用系统是管理的核心资产之一。只有应用系统在架构上有清晰划分,明确了解每个应用系统的边界以及系统之间的交互关系,这些应用系统资产才是可管理的。否则哪些系统需要更新、彼此之间有什么影响就会进退失据。但客观现实是,应用系统是逐渐演进的,很多变量彼此作用,系统数量增加、版本更新、负责人员调整、合作公司变化等等因素,都会使应用系统的边界变得模糊,应用系统之间的关系说不清楚。无疑,应用系统的改进将会背上巨大的包袱,而且会越来越沉重,成为进一步发展的阻力。

其二,工作量评估问题。这也是CIO关注的焦点问题之一,因为这关系到企业内部激励考核或与其他企业间的成本结算,直接关系到企业成本和效率。一个业务系统的开发完成,从生命周期来讲只是个开端。随着新需求的不断提出,应用系统不断迭代更新,从整个生命周期来看,维护成本会占到60%,甚至80%。显然,CIO不仅要关注前期的建设成本,更要关注后期维护成本的问题。那些依赖于外部合作伙伴的CIO,缺乏可靠的手段衡量每个更新版本的工作量,就会使企业利益受损。

其三,新需求对业务的影响。当新的业务需求提出并完成开发后,一个重要问题是这个新业务的上线,对既有的业务会有哪些影响。业务的稳定,是CIO首先要保障的要素,而业务演进,也是CIO必须要支撑的。如何平衡稳定与演进之间的矛盾,CIO需要一个可靠的抓手,来消除其中的风险。

其四,应用维护效能提升。随着新需求的满足和问题的修复,加上系统开发人员频繁变更等问题,应用系统的代码规模不断膨胀,使得维护成本不断上升。一个经典的软件工程结论是,问题在应用系统生命周期的越早期阶段发现,则相应的修复成本越低。问题暴露在维护阶段、暴露在客户现场,则相应的修复成本高很多。如何不断降低维护成本,以使得资源能够更多投入到支撑新的业务需求上,是对CIO管理能力的一大考验。

以上所展示的相关问题,可能只是应用治理领域现状的冰山一角。当CIO们的视角从前期的系统建设拉长到整个应用生命周期的时候,可以思考的问题会很多,应用治理将会越来越成为CIO关注的焦点。

解决上述应用治理领域的若干问题,我们可以额借鉴一下其他IT较先进国家所采用的一些方式:引入“应用变更影响分析”。应用变更影响分析的核心原理在于,通过采集和分析应用系统源代码,

揭示应用系统中功能与功能、功能与接口之间的依赖关系。(示意图)

应用变更影响分析如何有助于解决上述问题呢?

我们先来看看工作量评估。应用变更影响分析,能够通过对比两个应用版本的差异,得出新增、修改、删除代码情况,并区分有效代码行、注释和空行数量。这些数据为版本工作量和成本的评估提供有力的支持。(示意图)

我们再来看看新需求对既有业务的影响。应用变更影响分析,能够得到应用内部模块之间以及应用之间通过接口层面的关联关系,从而当一些模块修改的时候,可以知道需要对哪些依赖此模块的功能或者应用重新进行测试。(示意图)

就应用维护效能提升来说,应用变更影响分析可以提供很多手段。应用变更影响分析能够得出垃圾代码的列表,从而能够对垃圾代码进行瘦身,使得应用质量、可维护性提升。(示意图)

应用变更影响分析,还提供系列的代码维护风险预警的手段,帮助在应用的开发、测试阶段提早发现潜在风险,通过少量资源投入大幅降低后续维护成本风险。这些手段包括:

* 热点模块分析:根据阈值列出具有高调用频次的模块,可以针对性进行代码检查

* 代码复杂度分析:根据圈复杂度等业界标准,列出具有高复杂度的代码,可以针对性进行代码检查

* 代码相似度分析:根据相似度算法,列出具有高相似度的代码,这些代码可能对相同功能的不同实现,可以抽象出公共模块,减少复杂度

* 修改频度分析:作为一种事后的监测手段,当某个模块频繁修改的时候,这个模块的实现质量不高,花费了大量的维护成本,可以针对性进行代码检查

相关阅读: