Interoperability is the ability of a pair of systems/products (we will call them elements) to work together correctly, i.e. as intended and needed. Interoperability comes about from consistent, correct interfacing, together with mutually consistent and correct behavior of each of the interoperating elements (as a part of a well-designed bigger system).
Techniques for promoting consistent and correct interfacing include the definition of mutually consistent interface requirements on subsystems as an integral aspect of the design of the parent system, the use of Interface Requirements Specifications signed-off by the owners of requirements on each of the interfacing elements, the inclusion of interface requirements in requirements traceability in design, and the use of Interface Design Descriptions signed-off by the designers of each end of the interface. In extreme cases, the use of a formal working group to manage the evolution of an interface may be justified.
Consistent and correct behavior of interoperating elements comes about from ensuring that all behavioral requirements on the interoperating elements are the product of a correct, verified design of the parent system. Correct design of the parent system is fostered by having design performed by technically competent designers, the use of formalized logical design in areas of complexity (using a logically sound and suitably expressive design language), the use of executable formalized logical design where complex timing in involved (both of these are approaches are MBSE in the solution domain), the use of performance thread analysis in areas of risk to performance of system elements that could compromise interoperability of the elements, and the use of simulation to provide further insights into design issues that will influence actual behavior of system elements, individually and together. Again, MBSE in the solution domain.
Good design verification is fostered by leveraging in design reviews the expertise of the best people available, and possibly by the use of more advanced verification techniques such as simulation, control flow analysis, and formal methods. Prototyping is another tool for design verification.
Validation also helps – design validation of the bigger system by exposing evolving design to stakeholders in that bigger system, and to stakeholders in each of the system elements. Having team leaders of the system element teams participate as members of the system team is effective.