The increasing complexity of software requires specific models with varying degrees of abstraction to ensure the efficient development of high-quality systems. These models are specifically tuned towards different views on the system under development, dependent of the different phases of the development process.