| Introduction | p. 1 |
| Introduction to Software Product Line Engineering | p. 3 |
| Principles of Product Line Engineering | p. 4 |
| Engineering Customised Products | p. 7 |
| Motivations for Product Line Engineering | p. 9 |
| Software Product Line Engineering | p. 13 |
| A Framework for Software Product Line Engineering | p. 19 |
| Introduction | p. 20 |
| Two Development Processes | p. 20 |
| Overview of the Framework | p. 21 |
| Domain Engineering | p. 23 |
| Domain Artefacts | p. 28 |
| Application Engineering | p. 30 |
| Application Artefacts | p. 34 |
| Role of the Framework in the Book | p. 36 |
| Overview of the Example Domain: Home Automation | p. 39 |
| Smart Home Fundamentals | p. 40 |
| Building Blocks of a Home Automation System | p. 43 |
| An Example | p. 46 |
| Software Variability in Smart Home Applications | p. 50 |
| Role of the Home Automation Domain in the Book | p. 52 |
| Product Line Variability | p. 53 |
| Principles of Variability | p. 57 |
| Introduction | p. 58 |
| Variability Subject and Variability Object | p. 59 |
| Variability in Software Product Line Engineering | p. 61 |
| Variability in Time vs. Variability in Space | p. 65 |
| Internal and External Variability | p. 68 |
| Orthogonal Variability Model | p. 72 |
| Handling Complexity in Variability Models | p. 87 |
| Differences from Single-System Engineering | p. 88 |
| Summary | p. 88 |
| Documenting Variability in Requirements Artefacts | p. 89 |
| Introduction | p. 90 |
| Documenting Requirements | p. 91 |
| Variability in Textual Requirements | p. 96 |
| Variability in Requirements Models | p. 99 |
| Traceability Between Variability Model and Requirements Artefacts | p. 109 |
| Differences from Single-System Engineering | p. 112 |
| Summary | p. 113 |
| Documenting Variability in Design Artefacts | p. 115 |
| Introduction | p. 116 |
| Architectural Artefacts | p. 117 |
| The Reference Architecture | p. 123 |
| Variability in the Development View | p. 124 |
| Variability in the Process View | p. 131 |
| Variability in the Code View | p. 132 |
| Differences from Single-System Engineering | p. 134 |
| Summary | p. 134 |
| Documenting Variability in Realisation Artefacts | p. 135 |
| Introduction | p. 136 |
| Detailed Design Artefacts | p. 137 |
| Component Interface Variability | p. 139 |
| Internal Component Variability | p. 145 |
| Differences from Single-System Engineering | p. 147 |
| Summary | p. 147 |
| Documenting Variability in Test Artefacts | p. 149 |
| Introduction | p. 150 |
| Test Artefacts | p. 151 |
| Variability in Test Artefacts | p. 152 |
| Differences from Single-System Engineering | p. 157 |
| Summary | p. 157 |
| Domain Engineering | p. 159 |
| Product Management | p. 163 |
| Introduction | p. 164 |
| Terminology | p. 166 |
| Traditional Product Management Activities | p. 167 |
| Portfolio Management | p. 168 |
| Extension of the Product Portfolio | p. 177 |
| Management of Existing Products | p. 186 |
| Scoping | p. 188 |
| Differences from Single-System Engineering | p. 189 |
| Summary | p. 191 |
| Domain Requirements Engineering | p. 193 |
| Introduction | p. 194 |
| Traditional Requirements Engineering Activities | p. 197 |
| Challenges of Domain Requirements Engineering | p. 198 |
| Overview of Major Steps | p. 199 |
| Requirements Sources | p. 201 |
| Commonality Analysis | p. 201 |
| Variability Analysis | p. 204 |
| Defining Requirements Variability | p. 206 |
| Example | p. 209 |
| Differences from Single-System Engineering | p. 215 |
| Summary | p. 216 |
| Domain Design | p. 217 |
| Introduction | p. 218 |
| Traditional Design Activities | p. 220 |
| Quality Requirements | p. 221 |
| Commonality and Variability in Design | p. 225 |
| Designing the Reference Architecture | p. 231 |
| Architecture Validation | p. 236 |
| Differences from Single-System Engineering | p. 238 |
| Summary | p. 239 |
| Domain Realisation | p. 241 |
| Introduction | p. 242 |
| Traditional Realisation Activities | p. 244 |
| Realising Interfaces | p. 245 |
| Realising Variable Components | p. 248 |
| Binding Time of Variability | p. 250 |
| Realising Configurability | p. 253 |
| Differences from Single-System Engineering | p. 255 |
| Summary | p. 255 |
| Domain Testing | p. 257 |
| Introduction | p. 258 |
| Software Testing | p. 262 |
| Domain Testing and Application Testing | p. 266 |
| Testing Variability at Different Test Levels | p. 267 |
| Criteria for Product Line Test Strategies | p. 270 |
| Product Line Test Strategies | p. 271 |
| Domain Test Activities | p. 281 |
| Differences from Single-System Engineering | p. 283 |
| Summary | p. 284 |
| Selecting High-Level COTS Components | p. 285 |
| Introduction | p. 286 |
| The CoVAR Process | p. 288 |
| Differences from Single-System Engineering | p. 300 |
| Summary | p. 301 |
| Application Engineering | p. 303 |
| Application Requirements Engineering | p. 307 |
| Introduction | p. 308 |
| Application Requirements Engineering Activities | p. 312 |
| Communication of the Product Line Variability | p. 315 |
| Analysis of Requirements Deltas | p. 318 |
| Documentation of the Application Requirements | p. 326 |
| Differences from Single-System Engineering | p. 328 |
| Summary | p. 329 |
| Application Design | p. 331 |
| Introduction | p. 332 |
| Development of the Application Architecture | p. 334 |
| Feedback of Application Artefacts to the Domain | p. 340 |
| Effort and Cost of Variants | p. 341 |
| Differences from Single-System Engineering | p. 342 |
| Summary | p. 343 |
| Application Realisation | p. 345 |
| Introduction | p. 346 |
| Configuration | p. 348 |
| Realisation of Application-Specific Components | p. 350 |
| Building the Application | p. 351 |
| Differences from Single-System Engineering | p. 353 |
| Summary | p. 354 |
| Application Testing | p. 355 |
| Introduction | p. 356 |
| Domain Test Artefact Reuse | p. 359 |
| Tests Related to Variability | p. 362 |
| Testing Variability at Different Test Levels | p. 364 |
| Application Test Coverage | p. 365 |
| Application Test Activities | p. 367 |
| Differences from Single-System Engineering | p. 369 |
| Summary | p. 370 |
| Organisation Aspects | p. 371 |
| Organisation | p. 375 |
| Introduction | p. 376 |
| Properties of Organisation Structures | p. 376 |
| Basic Hierarchical Organisation Structures | p. 378 |
| Matrix Organisation Structures | p. 384 |
| Detailed Structure | p. 389 |
| Cross-Functional Teams | p. 389 |
| Organisation Theory | p. 389 |
| Differences from Single-System Engineering | p. 391 |
| Summary | p. 392 |
| Transition Process | p. 393 |
| Introduction | p. 394 |
| Motivation and Business Objectives | p. 394 |
| Transition Strategies | p. 395 |
| Benefits and Drawbacks of the Transition Strategies | p. 398 |
| Cost Model | p. 400 |
| Application of the Cost Model to the Transition Strategies | p. 402 |
| Major Steps of a Transition Process | p. 406 |
| Summary | p. 410 |
| Experience and Future Research | p. 411 |
| Experiences with Software Product Line Engineering | p. 413 |
| ABB | p. 414 |
| Boeing Company | p. 415 |
| CelsiusTech Systems AB | p. 416 |
| Cummins Inc | p. 417 |
| Hewlett-Packard | p. 419 |
| LG Industrial Systems Co., Ltd | p. 420 |
| Lucent Technologies | p. 421 |
| MARKET MAKER Software AG | p. 422 |
| Philips | p. 424 |
| Robert Bosch GmbH | p. 427 |
| Salion Inc | p. 428 |
| Siemens AG Medical Solutions HS IM | p. 430 |
| Testo AG | p. 431 |
| The National Reconnaissance Office | p. 432 |
| The Naval Undersea Warfare Center | p. 433 |
| Future Research | p. 435 |
| Domain Specialisation | p. 436 |
| Quality Assurance | p. 436 |
| Model-Driven Development | p. 436 |
| Evolution | p. 437 |
| Multiple Product Lines | p. 437 |
| Tool Support | p. 437 |
| Process Improvement and Assessment | p. 438 |
| Economics | p. 438 |
| The Authors | p. 439 |
| References | p. 445 |
| Glossary | p. 457 |
| Index | p. 461 |
| Table of Contents provided by Publisher. All Rights Reserved. |