Addressing the question of "What is an ImpedanceMismatch?" ...and its use in the ImpedanceMismatchMetaphor?:
It's a metaphor, based on ElectricalImpedanceMismatch.
So, the original definition, of an ElectricalImpedanceMismatch, led to the ImpedanceMismatchMetaphor?, used in...
- BusinessImpedanceMismatch? describes the occurrence where the ability to change a corporation is misaligned with the ability to change software systems, or vice versa.
- DatabaseImpedanceMismatch = incompatibility between the design of database(s) and application host language(s). Database processing is based on set operations -- a concept not generally supported in host languages.
- RelationalHostLanguageImpedanceMismatch = general incompatibility with host languages (not limited to OO) -- such as the fact the NULL values are not supported in most host languages.
- TrueRelationalToPseudoRelationalImpedanceMismatch: The impedance caused by the SqlFlaws. There are many differences between what can be done in SQL and what should actually be possible in relational algebra. A better relational language (like TutorialDee) could eliminate this impedance. The big question here is, how much of the ObjectRelationalImpedanceMismatch is in fact caused by the impedance between SQL and a true relational language (or pure relational algebra).
Other development-related "Impedance Mismatches:"
Between development languages:
- With multi-dimensional arrays, like A(X,Y,Z) -- In FORTRAN, the "X" dimension changes most rapidly, as you "scan through physical memory, but in most other languages "Z" changes most rapidly. So, when doing cross-language in-memory data passing (such as between C and FORTRAN), programs of one language must declare and use array arguments in the opposite order of programs in the other language.
- Calling conventions: In "C", the caller pops arguments from the stack after a return, but in other languages (like Pascal), the subroutine unwinds the arguments from stack on return.
On BusinessImpedanceMismatch?:
A BusinessSystemsAnalyst is usually concerned that a system design can be changed (after production implementation) easily enough to match how he foresees business conditions changing.
SerializationImpedenceMismatch?: when the serialization formats of two processes don't match, usually due to a version incomparability.
A good design pattern to discuss on the Wiki might be AvoidingImpedanceMismatch during the design and development process.