软件开发中关于向后兼容的理解
假设有A、B两个程序,
这两个程序可能是同一小组的两个人来维护的,也可能是两个不同小组来维护的,
也可能是两个不同部门来维护的,甚至有可能是两个不同的公司来负责维护的。
现在假设A程序对某函数进行了修改,比如原先通过
kill(pid, SIGSTOP)向B程序发送SIGSTOP信号,而现在却通过
kill(pid, SIGUSR1)向B程序发送SIGUSR1信号。
原先B程序是在收到SIGSTOP这个信号之后才去做相应的处理,
而A程序改成了发送SIGUSR1,从而导致问题的出现。
通常这种不向后兼容的情况有:
1. A程序接口参数变化,这会导致B程序出现编译时或运行时错误;
2. A程序接口功能减少,这会导致B程序功能的减少;
3. A程序接口移除,这会导致B程序运行时错误。
实例演示:
1. A + B OK;
2. A + C OK,但是A + B NG;
这里A类似于库函数,而B和C类似于基于库函数的应用程序。
向后兼容是对函数或功能提供方提出的要求。
问题:
A1 + B OK;
A2 + C OK;
那A1 + C呢?
这里是对应用程序的要求(有难度)。