FOUNDATIONS OF SYSTEMS AND PROPERTIES: METHODOLOGICAL SUPPORT FOR MODELING PROPERTIES OF SOFTWARE-INTENSIVE SYSTEMS THÈSE N O 3013 (2004) PRÉSENTÉE À LA FACULTÉ INFORMATIQUE ET COMMUNICATIONS Institut d'informatique fondamentale SECTION DES SYSTÈMES DE COMMUNICATION ÉCOLE POLYTECHNIQUE FÉDÉRALE DE LAUSANNE POUR L'OBTENTION DU GRADE DE DOCTEUR ÈS SCIENCES PAR Otto PREISS M.Sc. in Computer Science, University of Colorado, Etats-Unis et de nationalité autrichienne acceptée sur proposition du jury: Prof. A. Wegmann, directeur de thèse Prof. I. Crnkovic, rapporteur Dr P. Kolb, rapporteur Prof. S. Spaccapietra, rapporteur Lausanne, EPFL 2004
Abstract Abstract Engineering of software-intensive systems is concerned with the creation and evolution of systems that shall exhibit desired properties in their execution as well as development environment. In this context, the motivation of this thesis, derived from current development practice, was twofold. Firstly, software development methods are increasingly required to extend their scope of applicability towards systems engineering. As a consequence, their modeling approaches must be able to cope with a larger diversity of systems and consequently a larger diversity of properties. But these approaches still need to provide a smooth transition to software modeling. Secondly, non-functional properties, which are largely a result of this implicit systems scope, play a major role in the way we design our software-intensive systems. The conceptual aids of current development methods, however, are still less mature in their explicit support for non-functional properties compared with their ability to support functional ones. The principal objective of this thesis is to contribute toward an improved model-based treatment of non-functional properties in development methods. Because we cannot discuss properties independently of the objects they are ascribed to, this objective amounts to a progression from modeling of software and its properties to modeling of interrelated systems and their properties. To address this aim a philosophy of properties and systems is proposed. The philosophy is expressed as a holistic conceptual model of properties and/of systems. It is complemented with some basic rules, which we call tenets. Tenets formulate how we use the philosophical knowledge. The conceptual model offers the foundations for a more generalized understanding of those fundamentally different types of systems and different types of properties that are relevant in software-intensive systems engineering. The generality of our holistic model draws the benefits from our investigations in the areas of systems science, cognitive science, and basic philosophy. The model helps to scrutinize and make sense of the large amount of data in the literature about non-functional issues in software engineering. The model is applicable in the derivation of methodological building blocks that can be incorporated into development methods. The building blocks include (a) a general model to discover stakeholders and properties for a given system, (b) a principled manner to trace the fundamentally different types of properties through hierarchies of systems, and (c) a proposal for the representation of systems, their properties and property traces in the UML. The concrete application of the gained knowledge to software engineering results in a proposal for a context-sensitive, customizable quality attribute model. It also results in a proposal on how to structure quality descriptions of software components. In order for such descriptions to be standardized and possibly tool-automated, this thesis proposes to utilize the Reusable Asset Specification and suggests alternatives for its XML-based representation. i
Version Abrégée Version Abrégée L'ingénierie de systèmes informatisés concerne la création et l'évolution de systèmes impliquant de nombreux logiciels. Ces systèmes exhibent des propriétés à la fois dans leur environnement d exécution et de développement. Dans ce contexte, la motivation de cette thèse, basée sur des méthodes de développement actuelles, est double. Premièrement, il y a une demande grandissante pour que les méthodes de génie logiciel soient étendues et applicables à l ingénierie de systèmes. Pour satisfaire cette demande, les méthodes de modélisation issues du génie logiciel doivent supporter une plus grande diversité de systèmes, et par conséquent une diversité de propriétés plus grande, tout en préservant une transition aisée vers la modélisation de logiciel. Deuxièmement, les propriétés non fonctionnelles, qui résultent largement de ce cadre implicite des systèmes, jouent un rôle majeur dans la manière de concevoir les systèmes impliquant de nombreux logiciels. Cependant, les méthodes de développement actuelles n offrent qu une aide conceptuelle limitée pour les propriétés non fonctionnelles et bien moins mature que pour des propriétés fonctionnelles. L objectif principal de cette thèse est de contribuer à l amélioration du traitement des propriétés non fonctionnelles dans les méthodes de développement, en proposant une méthode systématique et basée sur des modèles. A cause de la dépendance mutuelle entre système et propriétés, cet objectif se traduit par une progression de la compréhension et de la modélisation du logiciel et de ses propriétés jusqu à la compréhension et la modélisation de systèmes interdépendants et de leurs propriétés. Une philosophie de propriétés et de systèmes est proposée dans ce but. Cette philosophie s exprime en termes d un modèle conceptuel et holistique de propriétés et/de systèmes et est complétée par des principes de base qui forment nos états d esprit. Ce modèle conceptuel donne les fondations pour une compréhension plus généralisée des types fondamentalement différents de systèmes ainsi que des différents types de propriétés, tous deux étant pertinents dans l ingénierie de systèmes impliquant de nombreux logiciels. Ce modèle holistique est général, grâce à nos recherches dans les domaines de la science de systèmes, de la science cognitive et de la philosophie de base. Sa valeur se montre dans le support à scruter et à synthétiser une grande quantité de données trouvées dans la littérature traitant de problèmes «non fonctionnels» en génie logiciel. Son applicabilité se montre dans la définition de blocs méthodologiques fondamentaux qui peuvent être incorporés dans les méthodes de développement. Ces blocs fondamentaux incluent un modèle général qui permet de découvrir les porteurs de tutelle et les propriétés d un système donné, une manière explicite de retrouver les propriétés fondamentalement différentes à travers des hiérarchies de systèmes, ainsi qu une proposition pour la représentation de systèmes, de leurs propriétés et des traces de propriété en UML. L application concrète des connaissances acquises au génie logiciel résulte en une proposition d un modèle de qualité adaptable aux besoins de clients, dépendent du contexte, ainsi qu en une ii
Version Abrégée proposition sur la manière de structurer des descriptions de qualité de composants logiciels. Pour que ces descriptions soient standardisées voire automatisées dans des outils de développement, cette thèse propose d utiliser la spécification RAS (angl. Reusable Asset Specification) et suggère des alternatives pour sa représentation basée sur XML. iii
Table of Contents Table of Contents Abstract... i Version Abrégée...ii Acknowledgements... v Table of Contents...vii List of Figures... x List of Tables...xiii 1 Introduction... 1 1.1 Motivation... 1 1.1.1 Support for Systems Development... 2 1.1.2 Support For Non-Functional Properties... 3 1.1.3 Customizability of Development Methods... 4 1.2 Research Problem... 5 1.3 Solution Approach... 6 1.4 Research Method...10 1.5 Contribution... 11 1.6 Roadmap... 13 Part I Context... 15 2 Systems- and Software Engineering... 16 2.1 The Discipline of Systems Engineering... 16 2.2 The Discipline of Software Engineering... 18 2.2.1 Software Architecture... 19 2.2.2 Component-Based Software Engineering... 20 2.3 UML... 22 2.3.1 UML Overview... 22 2.3.2 UML Extension Mechanisms... 25 2.4 Development Methods... 26 2.4.1 Systems Development Methods... 27 2.4.2 Software Development Methods... 31 2.5 An Envisioned Systems Engineering Modeling Standard... 35 vii
Table of Contents 3 The Different Flavors of Properties of Systems... 38 3.1 The Systems Engineering Viewpoint... 40 3.1.1 Properties and Classifications of Requirements in Systems Engineering... 40 3.2 The Software Engineering Viewpoint... 43 3.2.1 Quality Models and Requirements Classifications in Software Engineering... 46 Summary of Part I... 51 Part II Methodological Building Blocks In Dealing with Hierarchical Systems and their Properties... 53 4 Philosophy of Properties and Systems... 54 4.1 Modeling... 55 4.2 Properties... 59 4.2.1 The Philosophical View On Properties... 59 4.2.2 The Cognitive View On Properties... 62 4.2.3 Properties - Conclusions... 66 4.3 Systems... 68 4.3.1 Concrete and Conceptual Systems... 68 4.3.2 A General Model for Concrete Systems... 79 4.3.3 Concrete versus Conceptual Decompositions... 81 4.3.4 Systems - Conclusions... 84 4.4 A Model of Systems and Properties... 85 5 Methodological Building Blocks Derived from Fundamentals... 87 5.1 The 2-2-2 Model and its Use... 87 5.1.1 The 2-2-2 Model... 87 5.1.2 Stakeholder Discovery and Classification... 90 5.2 Decomposing and Tracing Properties... 93 5.2.1 Realization-Oriented Decomposition Versus Other Forms of Property Decompositions... 94 5.2.2 Realization-Oriented Traceability Patterns... 95 5.2.3 Mutual Property Influences... 103 5.3 UML as a Systems Modeling Language... 103 5.3.1 Organization of a System Description... 104 5.3.2 UML Extension Proposal... 105 Summary of Part II... 119 viii
Table of Contents Part III Application to Software Engineering... 121 6 Quality Attributes in Software Engineering Revisited... 124 6.1 Proposed Core Terminology in Context with Non-Functional Properties... 124 6.2 A Flexible Quality Model... 126 6.2.1 Possibility Matrix for Quality Attributes... 130 6.3 Standards and Related Research Revisited... 132 6.3.1 ISO 9126 Revisited... 132 6.3.2 Related Work... 133 7 Quality Description of Software Components... 134 7.1 Data Sheet for Software Components... 134 7.1.1 Software Component Contracts... 135 7.1.2 Conceptual Model of Quality Description... 137 7.1.3 Determining Quality Attributes... 139 7.2 Extending the RAS Metamodel with Quality Descriptions... 145 7.2.1 The RAS Logical Model... 147 7.2.2 Quality Description Extensions to the RAS... 149 7.2.3 Proposal for a RAS Physical Model... 152 7.3 ABB RAS Profiles... 153 7.3.1 Enforcing AIP-Related Asset Descriptions... 156 Summary of Part III... 158 8 Conclusion... 159 8.1 Summary of Results... 159 8.2 Future Work... 160 8.2.1 UML Extensions Necessitating More Than Lightweight Profiles... 160 8.2.2 Modeling Metrics... 162 8.2.3 Gaining Experience with Quality Attribute Descriptions of Reusable Assets... 162 8.2.4 Enhancement of Development Methods and Tool Support... 163 Bibliographic References... 165 Appendix A: Glossary of Terms and Abbreviations... 172 Appendix B: XML Schema Alternatives for the RAS... 179 Appendix C: Complete Meta-Model of System and Properties... 187 ix