For instance, specifications describe requirements, and state machines and object models capture high-level designs. Solutions are implemented by source code, communicated by byte code, and documented by hyper text documents. A large number of software related tasks rely on the analysis of these artifacts. For instance, specifications need to be checked for consistency or completeness. State machines and code need to be analyzed for correctness or security.
Legacy code needs to be maintained and updated.
The structure of hypertext documents need to be validated. In short, program design, validation, verification, reuse and understanding require the analysis of these artifacts. The size and complexity of the developed software and thus of the artifacts involved is increasing constantly and is already too large to be handled without tool support. Experience in academia and industry has shown that the degree of automation of a tool is an important ingredient to its success. The more a tool minimizes the need for user interaction and expertise, the more likely it is to succeed.