Hello all.
The true power of interfaces arise when software evolve. If you have designed an interface between two systems and one of them change, for example migrating from one tecnology to another (domino to J2EE, CICS to Tuxedo, etc) or adding new functionality, or deleting obsolete functionality, etc the second system will need no changes.
Interfaces, as conceptual term and more important, as a design-by-contract technique, are really useful in large-scale-quickly-evolving projects. Consider a bus macro-architecture:
System 1 System 2 ... System N
| | |
<======================================================>
| | |
System N+1 System N+2 ... System M
If you have a well-defined bus-interface, changes in any system will carry less cost than if you don't have implemented interfaces.
Moreover, In a *VERY* big and *VERY* complex system, you can see even double bus architectures; for example:
System 1 System 2 ... System N Old
| | | Tibco
<================================================> Based
| | | | Bus
System N+1 | System N+2 ... System M
|
|
Bus Bridge
|
|
System M+1 | System M+2 ... System P New
| | | | XML
<================================================> Based
| | | Bus
System P+1 System P+2 ... System Q
Can you imagine what chaos would be if no interfaces were defined?
I hope now you understand how important interfaces (and adaptors, bridges, proxies, etc) are.
Best Regards.
Nacho Vargas.
Consultant.
D.M.R. Consulting (a Fujitsu Company)