A characteristic of engineering in contrast to a craft is that designs are analysed to try to eliminate faults before the thing is built. Analysis can be at various levels, each level describing the system in terms of the interaction of components. For instance, an engineer designing a bridge may analyse the total bridge design and calculate the load on each component. The component designers then analyse their components and calculate the load on the subcomponents. And so on until the subcomponents are a slab of concrete or metal. To analyse IT systems effectively we also need to break it into levels of design, each level being more detailed than the one above. We have a generic pattern for doing this, click here for details.
Models can be analysed because they are data. The data identifies the components and the relationships between them. Examples of things you can analyse are:
The output from analysis comes in three forms:
Analysis is a pragmatic approach. Over time we expect to improve the analysis, checking for more and more problem scenarios. Some important aspects of a system are easy to analyse, but some are hard for instance 'ease of use' and 'flexibility for future change'. In spite of that, early analysis of high-level designs enormously increases a project's chances of success.