Software Design/Compatibility

Compatibility is an external software quality. Compatibility may mean, depending on the type of the software,

Relations to other software qualities

edit

Among internal qualities, compatibility requirements mainly affect the easiness of change or the very ability to change the software in certain ways. For example, highly compatible software should keep support for older storage and wire formats and protocols for several versions to make possible unconstrained upgrade and rollback between versions. APIs (and even promises made in their specifications) of highly visible libraries such as SDKs of programming languages can never be revoked.[1]

Among external (that is, software and interface) qualities, good compatibility may enhance the system's reliability: for example, an accidental rollout of a new software version or unintended input of data in the old format may not break the software if the backward and forward compatibility are in place. Interoperability makes easier and safer to upgrade a distributed system without downtime if every (micro)service can be upgraded separately.

Relevant practices

edit

References

edit
  1. Bloch, Joshua (September 22, 2008). "Bumper-Sticker API Design". Public APIs, like diamonds, are forever.