软件开发和版本维护的一点感悟和体会

      从毕业到现在已经4个多年头,在这个公司做的事情不能说一点锻炼的意义也没有,只是指挥者没智慧,只是消耗员工的青春时光,所以打工的感觉累的很。

      最初是让写一些单独模块的程序,比如系统启动脚本,芯片驱动,BSP,升级模块等,后来直接丢过来一个产品工程代码让我维护。说实话,这个责任是蛮大的,我自己也觉得能学到东西,只是没想到工程代码太乱,而且除了从开源项目中copy来的代码可以看看,其它部分还只是中级C程序员的编程水平。最初给我的工程代码是一个刚开发出来的alpha版,但没多久就开始要求作出各种各样的功能定制的系列产品,这个就是我的版本维护工作的入门。

入门的版本维护方式是每个产品要求对应一个套文件,不同的版本对应不同的目录,编译时进入不同的目录编译,因为还是alpha版,难免有各种各样的问题,于是改动代码同样也是个“系列”工作,折磨了一段时间,开始学会用批处理文件来完成这类重复的操作。

      那时不是不会写Makefile,只是开发环境的编译环境还不熟练,痛定思痛,终于把开发环境的编译环境弄了个明白,于是进入版本维护的新阶段,此时可以通过批处理设置环境变量来影响工程代码的Makefile编译条件,从而编译出不同的产品固件,于是将系列产品的代码整理成一套,这种方式其实可以满足嵌入式开发的大多数的要求,算是版本开发和维护的中级水平吧。

      记得有好长一段时间,我就安于现状了,以为自己已经掌握了软件开发版本维护的精髓,于是腾出更多时间去处理代码中的问题。因为我搞的是网络音视频编解码器产品,因此能接触芯片驱动、编解码器、网络协议栈、流媒体服务器、web服务器、GUI的模块的代码,这些功能采用的代码大部分是来自网上开源工程,我从这些代码中受益很多,了解了优秀的软件版本维护的方式:采用更灵活的软件设计模式来模块化应用程序。

       我以前的方式是通过简单的编译开关来实现产品功能的区分,现在我会采用把应用程序的功能划分不同的部分,把需要根据客户需求修改的部分定义好接口,然后在应用程序核心调度模块中调用这些接口,而以后版本维护工作就是选择加载客户需求的那部分。

你可能感兴趣的:(流媒体技术)