Performance-aware Component-based Software-Development A characteristic of an engineering discipline is the ability to predict the impact of design decisions. For example, in civil engineering accurate predictions of the impact of adding an additional ?oor on a construction’s statics are available. Having a similar ability in software engineering requires software development processes and methods, in which the impact of design decisions on the resulting software system is predictable. W'hile this is important for functional requirements such as developing a web shop, it is even more important for extra-functional requirements like the ability to serve 10.000 users simultaneously under acceptable response times. Among these extra-f11nctional requirements, the Quality of Service (Q05) requirements of a system like performance, reliability, or availability are directly experienced by the end-user of a system explaining their importance.
However, despite this importance, software developers validate whether a software system ful?ls its extra-functional requirements only during late development stages when the software is available. At these stages, testing teams can install and test the software system to detect violated extra-functional requirements. Smith and VVilliams (2002) name this practice ‘?x-it-later‘ approach. This approach can cause signi?cant costs to correct violated extra-functional requirements, which may even lead to project failure (Glass, 1998), especially in cases, where the cause of not meeting extra-functional requirements are design ?aws in the software architecture.