一个典型的软件模块化案例
移动的WLAN无线上网客户端和联通3G无线上网客户端是同一个开发团队做的,依据如下:
(1)两个软件可能都用了单件模式,不可以同时运行,当软件甲运行时,双击软件乙的图标,会定位到软件甲的界面上去,反之亦然。
(2)配置文件中有对插件的说明,有大量的插件名字是一样的,对应的GUID也是一样的。
(3)其中的dll名字及dll中的导出函数、图标的名字有很多是一样的,还有几个完全一样的文件。
这个软件的模块化做得相当好,用插件的形式实现多个模块的自动升级。这体现了软件架构的两个着眼点,一是从用户用这个软件的角度来看,软件要具有用户想要的功能,二是软件结构,从开发人员的角度看,有些模块用来实现模块化,与功能基本没有关系,但通过这些结构模块,可能更新功能模块,前者对应于具体的专业问题,后者是软件技术的基本问题。
由些想到另外两个问题:开发人员容易犯的一个错误是对项目经理和客户大谈后一部分的技术,其实这不怪我们,因为后者是我们接触最多的,是我们的专业,而前者是客户的专业。另一个问题:一个开发人员好不好,最根本的是他对其他知识的理解能力好不好,能拓展知识面,用其他专业的语言与别人交流才能做出有价值的工作。
研究软件的模块化并不一定有源代码,这两个软件中配置文件都是XML文件,基本说明了它们的结构,查看一下每个dll的导出函数,大致可以推断出主程序与各模块是如何连接的。
参考资料:
中国联通的无线上网客户端软件在随3G无线上网卡发售。
中国移动的WLAN无线上网客户端可以在随e行业务的主页下载(http://www.monternet.com/moneditor/cs/cmcc/ex/wangtong3/)。
posted on 2010-10-07 11:23 zhihuichien 阅读(2317) 评论(2) 编辑 收藏 举报