As much as any solution is defined by its components and what they do, it’s also defined by the interfaces between those components and the rest of the world. In these crazy SOA-is-everything times, identifying communication links and promoting their reuse is an important archtectural desire. It may be a simple starting point, but I’ve found just having a table of interfaces to be an invaluable artefact.
Each interface can have recorded against it a unique ID and a number of key criteria that help define how it should be implemented or reused. It helps flush out any contentious issues over interface design, use of old standards, near-duplicate interfaces, and many other debates that need to be out in the open early.
You can download it here:
I might come back to this topic in future, but for now here’s a snapshot of a populated interface table. You can (and should) adapt the columns to your own interface characteristics and situation.