文章目录
简介
这个也属于软件设计类型的问题。
做容量提升,是说原有软件已经存在很多年(有的可能多达十几,二十几年),经过多年的摸爬滚打,还算稳定。
后续客户要求,将某些功能的容量提升一下,比如:原来系统支持256个vlan,要提高容量,要求支持1024个vlan。
这个时候就很容易碰到各种coredump。
原因-原有数组容量不够
尤其是在大型软件开发,大家都是按照模块划分,导致容量的提升代码修改,非常的繁琐;所以这种提升容量的开发,一般都是采用测试驱动开发。哪里需要改,就改哪里。
原有数组如果容量不够,有没有加越界限制,就会出现coredump;因为,原来只需要填充256个vlan的信息,后续要填充1024个vlan记录。
还有一种情况,就是在打日志时,使用到字符数组,这种容量提升也是容易碰到字符数组越界,尤其是使用不安全的字符操作函数比如:sprintf, strcat,等等
测试驱动的不足
这种测试驱动的容量提升开发,有一个缺点就是,如果测试不能面面俱到,可能导致有些问题只能到客户哪里才能暴漏。切记。所以需要测试的经验充足。
解决
从设计架构的角度去考虑问题的话,这种有可能扩容的功能,最好事先设计好;
但是问题是:这种设计是需要花费更多的时间去,以及协调各个模块的开发;而且不可预知是否一定会有扩容的发生,也就不确定有没有意义;而且随着软件生命周期的进行,开发人员的流动导致某些功能点的知识遗漏。