Mastering Software Variability with FeatureIDE
معرفی کتاب «Mastering Software Variability with FeatureIDE» نوشتهٔ Jens Meinicke,Thomas Thüm,Reimar Schröter,Fabian Benduhn,Thomas Leich,Gunter Saake (auth.)، منتشرشده توسط نشر Springer International Publishing : Imprint : Springer در سال 2017. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Mastering Software Variability with FeatureIDE» در دستهٔ بدون دستهبندی قرار دارد.
This book is a self-contained, practical introduction how to use FeatureIDE for modeling and implementing variable systems. In particular, readers learn how to analyze domains using feature models, specify requirements in form of configurations, and how to generate code based on conditional compilation and feature-oriented programming. Given the interactive style of the book, readers can directly try out the open-source development environment. All code examples are available in the standard distribution on GitHub and can immediately been used for individual modifications. Each part of the book is presented as a step-by-step tutorial and additionally illustrated using an ongoing example of elevator control software written in Java. Written by the core development team of FeatureIDE, this book is suitable for students using a tool for deepening the theoretical foundations of variability modeling and implementation, and as a reference for practitioners needing a stable and scalable tool for industrial applications. FeatureIDE is the most used open-source tool for feature modeling and has been continuously improved since 2004. The success of FeatureIDE is due to being a vehicle for cutting-edge product-line research by still providing an easy-to-use and seamless integration into Eclipse. FeatureIDE is a much needed and necessary step forward. It presents the analyses and amenities that one might/should see in next-generation SPL tooling. I have used FeatureIDE for many years and am very-pleased to see SPL research ideas come to life. – Don Batory, The University of Texas at Austin, USA Features and Benefits Offers a step-by-step tutorial on FeatureIDE, an open-source Eclipse plug-in for software product-line engineering used in industrial projects Written by the core development team of FeatureIDE for both practitioners and students Illustrates all relevant topics and issues using a running example of elevator control software Foreword by Don Batory 5 Preface 7 Contents 9 Part I Introduction 13 1 Software Variability 14 1.1 What Is Software Variability? 15 1.2 Variability Implementation Mechanisms 17 Clone-and-Own 17 Runtime Variability 17 Conditional Compilation 18 Frameworks, Components, and Services 18 Feature-Oriented Programming 19 Aspect-Oriented Programming 19 1.3 Mastering Variability with FeatureIDE 19 1.4 Structure of the Book 20 2 Getting Started 22 2.1 Download and Installation of Java 22 2.2 Download of FeatureIDE 23 2.3 Installation of FeatureIDE 23 Download and Setup of Eclipse 23 Installation of Eclipse Plug-Ins 24 Installation of FeatureIDE Plug-Ins 26 2.4 Summary 28 3 FeatureIDE in a Nutshell 29 3.1 Opening the FeatureIDE Perspective 29 3.2 Loading FeatureIDE Examples 30 3.3 Structure of FeatureIDE Projects 32 3.4 Modeling Variability with Feature Models 34 3.5 Implementation of Software Variability 35 3.6 Creating Configurations 36 3.7 Product Generation and Execution 37 3.8 Summary and Further Reading 38 4 An Elevator as a Running Example 40 4.1 Creating the Elevator 40 4.2 Execution of the Running Example 46 4.3 Summary and Further Reading 47 Part II Tool Support for Feature Modeling and Configuration 49 5 Feature Modeling 50 5.1 Creation of Feature Models 50 Adding Features to Feature Models 52 5.2 Modeling Tree Constraints 54 5.3 Modeling Cross-Tree Constraints 56 Final Feature Model 58 5.4 Visualizing Large Feature Models 59 Collapsing of Subtrees 59 Layouting Feature Models 60 Feature Model Outline 61 5.5 Importing and Exporting Feature Models 64 Printing a Feature Model 64 Handling Diverse File Formats with the Feature Model Editor 65 5.6 Further Pages of the Feature Model Editor 66 Feature Order 67 Source Page 68 5.7 Summary and Further Reading 68 6 Product Configuration 70 6.1 Creating Configurations 71 Set Current Configuration 72 6.2 Editing Configurations 72 Feature Deselection 75 6.3 Summary and Further Reading 77 7 Feature Traceability in Feature Models and Configurations 79 7.1 Tracing Features in the Feature Model 79 7.2 Tracing Features in Configurations 83 7.3 Summary and Further Reading 86 8 Quality Assurance for Feature Models and Configurations 87 8.1 Quality Assurance for Feature Models Using the Editor 87 Detecting Void Feature Models 88 Detecting Dead Features 90 Detecting False-Optional Features 92 Detecting Redundant Cross-Tree Constraints 93 Activating and Deactivating Automated Analyses 94 8.2 Quality Assurance Based on FeatureIDE's Statistics View 95 Feature Statistics About Direct Visible Aspects 96 Feature Model Statistics About Analysis Results 96 8.3 Quality Assurance for Configurations 97 8.4 Quality Assurance by an Automatic Generationof Configurations 98 8.5 Summary and Further Reading 100 Part III Tool Support for Conditional Compilation 101 9 Conditional Compilation with FeatureIDE 102 9.1 Introduction to Conditional Compilation 102 9.2 Preprocessor Munge 104 Munge Overview 104 Munge in FeatureIDE 105 9.3 Preprocessor Antenna 106 Antenna Overview 106 Antenna in FeatureIDE 107 9.4 Summary and Further Reading 107 10 Developing an Elevator with Conditional Compilation 109 10.1 Creating an Elevator Product Line Using Antenna 110 10.2 Adding the Feature ``Service'' to the Elevator Product Line 113 10.3 Adding Feature ``FIFO'' to the Elevator Product Line 117 10.4 Summary and Further Reading 124 11 Feature Traceability for Conditional Compilation 126 11.1 Tracing Features in Project Explorer 126 11.2 Tracing Features in Java Editor 128 11.3 Tracing Features in FeatureIDE Outline 130 11.4 Tracing Features in Collaboration Diagram 132 11.5 Summary and Further Reading 133 12 Quality Assurance for Conditional Compilation 134 12.1 Consistency Checking for Preprocessors 135 12.2 Product-Based Analyses for Preprocessors 138 12.3 Code Metrics for Preprocessors 140 12.4 Summary and Further Reading 141 Part IV Tool Support for Feature-Oriented Programming 143 13 Feature-Oriented Programming with FeatureIDE 144 13.1 Feature-Oriented Programming 144 13.2 Feature Modules with FeatureHouse 147 FeatureHouse Background 147 Using FeatureHouse 148 13.3 Feature Modules with AHEAD 149 AHEAD Background 149 Using AHEAD 151 13.4 Feature Modules with FeatureC++ 151 FeatureC++ Background 152 Using FeatureC++ 152 13.5 Feature-Oriented Programming with FeatureIDE 153 13.6 Summary and Further Reading 155 14 Developing an Elevator with Feature-Oriented Programming 156 14.1 Creating an Elevator Product Line 156 14.2 Adding Feature ``Service'' to the Elevator Product Line 160 14.3 Adding Feature ``FIFO'' to the Elevator Product Line 165 14.4 Summary and Further Reading 172 15 Feature Traceability for Feature-Oriented Programming 173 15.1 Tracing Features in Project Explorer 174 15.2 Tracing Features in Java Editor 177 15.3 Tracing Features in FeatureIDE Outline 178 15.4 Tracing Features in Collaboration Diagram 179 15.5 Summary and Further Reading 180 16 Quality Assurance for Feature-Oriented Programming 182 16.1 Consistency Checking for Feature Modules 183 16.2 Product-Based Analyses for Feature Modules 185 Detecting Syntax Faults 185 Propagation of Compilation Problems 186 Automated Detection of Variability Faults 188 Automated Testing of Multiple Products 190 16.3 Code Metrics for Feature Modules 191 16.4 Summary and Further Reading 194 Part V Further Tool Support in FeatureIDE 195 17 Tool Support Beyond Preprocessors and Feature Modules 196 17.1 Product-Line Implementation with Runtime Variability 197 17.2 Product-Line Implementation with Black-Box Frameworks 200 17.3 Product-Line Implementation with Aspect-OrientedProgramming 204 17.4 Summary and Further Reading 207 18 Tool Support for Product-Line Maintenance 208 18.1 Refactoring of Product Lines 209 Rename Refactoring for Feature-Oriented Programming 209 Pull-Up Refactoring for Feature-Oriented Programming 211 18.2 Source-Code Documentation with Javadoc 212 Documentation Types for Product Lines 214 Documentation Support in FeatureIDE 216 18.3 Formal Specification with Method Contracts 219 18.4 Summary and Further Reading 222 19 Overview on FeatureIDE 223 19.1 Overview on Implementation Techniques 223 19.2 Editors and Views for Feature Models 224 19.3 Editors and Views for Configurations 226 19.4 Package Explorer and Project Explorer 227 19.5 Editors and Views for Source Code 228 19.6 Summary and Further Reading 230 References 231 Index 236 Front Matter ....Pages i-xii Front Matter ....Pages 1-1 Software Variability (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 3-10 Getting Started (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 11-17 FeatureIDE in a Nutshell (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 19-29 An Elevator as a Running Example (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 31-39 Front Matter ....Pages 41-41 Feature Modeling (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 43-62 Product Configuration (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 63-71 Feature Traceability in Feature Models and Configurations (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 73-80 Quality Assurance for Feature Models and Configurations (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 81-94 Front Matter ....Pages 95-95 Conditional Compilation with FeatureIDE (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 97-103 Developing an Elevator with Conditional Compilation (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 105-121 Feature Traceability for Conditional Compilation (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 123-130 Quality Assurance for Conditional Compilation (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 131-139 Front Matter ....Pages 141-141 Feature-Oriented Programming with FeatureIDE (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 143-154 Developing an Elevator with Feature-Oriented Programming (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 155-171 Feature Traceability for Feature-Oriented Programming (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 173-181 Quality Assurance for Feature-Oriented Programming (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 183-195 Front Matter ....Pages 197-197 Tool Support Beyond Preprocessors and Feature Modules (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 199-210 Tool Support for Product-Line Maintenance (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 211-225 Overview on FeatureIDE (Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake)....Pages 227-234 Back Matter ....Pages 235-243
دانلود کتاب Mastering Software Variability with FeatureIDE