软件复用使用静态链接库的利与弊
软件(代码)复用有两种方式:一种是源代码直接拷贝复用,另一种方式是将公用的功能做成静态链接库,其他的项目通过调用静态链接库来进行复用。
对于达到GJB5000A三级水平的组织来说,标准要求他们更多地采用第二种使用静态链接库的方式进行软件复用,并且不断丰富自己的软件复用库。
使用静态链接库进行软件复用,至少有以下两个好处:
使用静态链接库更易于控制可复用的公用模块
当把一个公用模块生成静态链接库纳入软件复用库后,通常组织都会建立一套复用规程,对可复用的静态链接库使用、维护等做出相应的规定。比如,指定一个团队对可复用的静态链接库进行维护,避免这些链接库被随意修改。
使用静态链接库可以减少开发的工作量
可复用的公用模块在生成静态链接库纳入软件复用库后,在新的项目当中使用时,只需要在头文件中对要使用的函数进行声明,使用编译链接来配置参数或者直接在编译环境中配置属性的方式加载lib文件即可,省去了对源代码进行处理以及对链接库中的函数进行单元测试的时间,避免了拷贝或写代码时引入缺陷的机会,因此能够极大地节省了开发的工作量。
这也是我们实施GJB5000A三级要极力推行软件复用的原因。毕竟,复用可是软件工程最佳实践,没有之一。
但是使用静态链接库,同时它也会有一些弱点。
在调用过程中修改链接库会增加更多的变更工作量
虽然可复用的静态链接库的变更很少,但也不可能完全杜绝。如果公用模块没有分割成合适的规模,在一些复用的场合可能会对公用模块的局部进行修改。这种变更一旦发生,那就必须要先修改链接库的源码,再重新生成链接库,然后再对它进行调用。这样一来,比源代码直接复用的修改花费的工作量要更多。
链接库的封闭性带来的不便
对于那些调用可复用链接库的团队来说,他只能看到链接库的外在功能,看不到源代码及其实现的逻辑,这也会给他们查找和定位问题,调试和测试等工作带来不便。
但是,使用静态链接库进行复用的这两个缺点是可能通过合理的规划、补充适当的使用说明等方式克服的。总的来说,使用静态链接库进行复用是优于源代码复用的。
这正是:
复用使用链接库,质量提高又快速
做好规划和管理,复用走上康庄路
参考书目:未雨绸缪:理解软件配置管理,作者:董越,出版社:电子工业出版社