版本依赖是大连智慧工地软件维护过程中需要面对的一个重要问题。我们知道,由于软件维护有一个较长的生命周期,在此期间,组成软件系统的组件(包括第三方的组件)可能会发生一些变化,例如,功能改变、接口改变等。对于不太清楚那些变化的软件维护人员来说,经常会在使用这些组件时陷入麻烦。
有一种常见的做法是,在产品发布后,通过培训或文档的形式把组件的版本信息告知相关人员。不过,这种做法的效果很差。对于一个大型的企业应用系统来说,要手工检查大量组件的版本信息几乎不大可能。也正是因为这个原因,我们经常会碰到版本不兼容的问题。例如,在新功能开发的时候,我们使用了一个第三方组件的新版本,而在老系统中使用的是这个组件的老版本,这些版本可能又分别依赖了其他组件的不同版本,这种版本之间的依赖性导致了很多不确定的问题。
有些软件开发组织尝试通过过程控制来规避版本依赖问题。也就是说,他们通过文档、角色划分和流程审核来保证版本的正确性。那些指定的配置管理人员负责版本的控制,每一次变化都要经过相关人员的讨论。由于这种做法完全靠人工把关,因此尽管有一定的作用,但是很低效。
致远服软认为:http://www.soft8.com.cn/还有些软件开发组织尝试封装第三方的组件。也就是说,他们不把第三方组件的接口开放给软件开发人员,而是通过提供自己封装的接口来减少第三方组件变化带来的影响。这种做法非常粗暴,不仅实施效果差,还会带来其他的问题。例如,由于粗暴的封装,无法充分发挥第三方组件的功效。
一种好的做法是,把版本依赖看作是软件开发的一部分。在大连智慧工地软件维护过程中,我们不再使用第三方组件,而是使用带有版本号的第三方组件。这种思想上的细微变化,对软件开发和维护具有重要的意义。基于这种思想,组件之间的依赖关系将不是来自总结,而是来自规划,也就是说,版本依赖将成为软件设计的一个重要组成。
场景故事点评:
在我们的案例中,保费计算差了一块钱。这正是由于版本依赖带来的问题。这类问题很容易给大连数据导入导出软件开发人员带来困扰。TFC项目或许应该使用一些更好的解决版本依赖的自动化工具。
现在,业界已经出现了解决版本依赖的自动化工具,例如Maven 。事实上,在我看来,Maven是一个软件“零配件”管理工具,它提供了从大连智慧工地软件维护的构建一直到产品发布这个周期内几乎所有的“零配件”管理功能,例如,项目结构、编译源文件、测试、打包、管理版本依赖、发布等。其中,版本依赖的解决方案是最吸引我的地方。