On Quality Attribute Based Software Engineering
For a software system to be perceived as a success, or even just as properly functioning, many quality attributes, besides functionality, need to be at an acceptable level. However, current software development processes focus on the functional aspects of a system to be developed. They hardly help to systematically engineer for quality attributes other than functionality. It is a system`s architecture by which such quality requirements are satisfied. In particular, software components are an incarnation of architectural means, which have come into being to better cope with the variety of quality aspects of software systems. Unfortunately, architectural artifacts appear somewhat magically sometimes, and so do components. Hence, components are not a major extension to OO in the programming language or conceptual modeling sense, but a basis to address many of the quality requirements, be they discernable or non-discernable at system runtime. CBSE, being the discipline of engineering with components, is a promising basis to more explicitly and systematically design with and for quality attributes. After defining the context and classifying quality attributes, we first illustrate the important relationship of quality attributes to use case realizations. Second, we argue for components as the fulcrum point for the realization of functional and extra-functional roles. Third, we identify ongoing research directions that we consider conducive towards a software engineering process that supports the design for functional and extra-functional requirements.