In the ideal case the method of integration is such that various applications that have been developed as a collection of building blocks can be assembled into a complete system. Each application should itself be constructed of building blocks and have the capacity to make itself available to other applications in a limited way by means of clearly defined interfaces. The system can be extended through the provision of additional building blocks. This means that the basic structure of the system supports a suitable degree of granularity.