Tutorials Program
Monday, 15 September
ESAO: Towards Data- and Ecosystem-driven R&D
Presenter: Jan Bosch
As agile software development has become mainstream in the software industry, the focus is shifting to "beyond agile". Two trends drive the evolution of development practices. First, with the emergence of cross-functional teams, including product management, software R&D is shifting focus from implementing a predefined set of requirements to exploring the set of possible features that might add value to customers, experimenting with customers and using the data to guide the selection and development of new features. The second trend is the increasing role of software ecosystems in the context of software development. Most R&D takes place in a context where the development team is, de-facto, part of one or more software ecosystems and has to consider more stakeholders than just the customer. These two trends require a different approach to R&D that we refer to as ESAO (Ecosystem - Strategy - Architecture - Organizing).
The tutorial introduces the ESAO approach to software R&D and consists of four main parts:
- Setting the context: Trends in software development, the "stairway to heaven" model, emergence of ecosystems
- Climbing the "stairway to heaven": adopting a data- and experiment-driven approach to software development
- Software ecosystems: concept, case studies and implications for software engineering
- ESAO: translating ecosystem and business strategy into architecture, tools and ways of working
Leveraging Model Driven Engineering in Software Product Line Architectures
Presenters: Bruce Trask, Angel Roman
The process of developing Software Product Line Architectures (SPLA) can be a complex task. However, the use of Model Driven Engineering (MDE) techniques can facilitate the development of SPLAs. Model Driven Engineering (MDE) brings together multiple technologies and critical innovations and formalizes them into the next wave of software development methods. This tutorial will cover the basic patterns, principles and practices of MDE as applied to Software Product Lines. The three main MDE categories include the development of Domain Specific Languages (DSL), Domain Specific Editors (and Views), and Domain Specific Transformation Engines or Generators. Expressed in terms of language development technology, these mirror the development of the Abstract Syntax, Concrete Syntax and Semantics of a new Domain Specific Language.
This tutorial will cover the basic effective patterns, principles and practices for developing these MDE software artifacts and exactly how they apply to Software Product Lines. The tutorial will show how to apply these concepts as effective means with which to both raise levels of abstraction and domain specificity and thus increase power and value of tools and languages that allow developers to tackle the complexities of today's software systems. It will also show how to effectively leverage abstraction without sacrificing the ability to robustly and precisely refine these abstractions to solve complex real world problems. To show these patterns and principles in action, this tutorial will cover the details of how to leverage MDE Language Workbenches and frameworks in support of robust development of Software Product Lines.
Mapping Product Line Requirements to a Product Line Architecture
Presenters: Michael Mannion, Juha Savolainen
In the fast-moving consumer goods' software product space, product types, requirements and features evolve continuously in response to a wide variety of sociological, cultural, technological, economic, political, environmental changes. Often this evolution is anticipated but often it is not. To survive, many software product suppliers build a software product line platform that enables rapid, cost-effective product derivation using common and variable requirements. However, the choice of platform development strategy must align with the supplier's business strategy. Without careful management over time, the platform can become unaligned and no longer cost-effective to use. In this tutorial we will describe how the prudent use of a set of requirements variability management techniques can ensure the alignment of the business strategy and platform development strategy.
After presenting an overview of product line business and corresponding platform development strategies, we will describe the development and specification of common and variable product line requirements and explain a process for managing changing variability between product line requirements and product line design. We will show how the successful outcome and outputs for these activities is governed by alignment with the overall business strategy. We will illustrate these differences by developing the detail of a mobile phone example.
Tuesday, 16 September
Managing Variability with Feature Models
Presenters: Michael Schulze, Danilo Beuche
Many organizations develop software or software-intensive products, which can be seen as variants or members of a product line. Often the market demands variability and the software organization expects productivity benefits from reuse. In any case, complexity of the software development increases.
Variability and variant management plays a central role in this, when it comes to mastering the complexity.
The tutorial aims at providing the essential knowledge for managing variability in product lines using feature models. It explains the concept of feature models and their role in product line engineering, such as how feature models can be used to control development and also product configuration.
The tutorial is highly interactive and includes several practical exercises for the attendees. In this tutorial we cover the use of feature modelling for controlling the variability throughout the product line engineering process.
Therefore this tutorial covers topics such as the importance of explicit variability modelling, methods for managing variability in a product line, concepts and methods for creating correct and maintainable feature models, and how to use feature models to control variability in product line assets. With these topics we cover technological, organizational and business aspects of variability management for product lines, enabling practitioners to start with feature modelling on a solid basis.
The intended audience is practitioners that want to learn how to carry out variability modelling (with feature models) for product line successfully.
Can domain modeling be automated? Levels of automation in domain modeling
Presenters: Iris Reinhartz-Berger
Domain models are representations of areas of knowledge that use common concepts for describing phenomena, requirements, problems, capabilities, and solutions. Compared to technologies, domain models are usually valid longer and reach some kind of stability. Domain models are also the main aid to analyze commonality and variability of SPLs, as well as to produce particular software products from core assets and validate their correctness and completeness.
However, the creation of such domain models is not a trivial task: it requires expertise in the domain, reaching a high level of abstraction, and providing flexible, yet formal, artifacts. These challenges, which require time consuming and error-prone activities, may prevent or delay the adoption of SPLE, or introduce different obstacles in the adoption process. In this tutorial we will review some ways to automate domain modeling and discuss the boundaries of automation in this context. We will concentrate on an ontological and conceptual approach which examines software behaviors and not just domain terminology and semantic similarity. We will show and demonstrate a tool named SOVA - Semantic and Ontological Variability Analysis, which supports automatic domain modeling from software requirements written in free text. We will further discuss how the existence of different SPLs in the same domain may improve the domain models through cross product line analysis.
Second Generation Systems and Software Product Line Engineering
Presenters: Charles W. Krueger, Paul Clements
This tutorial is focused on the current best practices that are enabling large-scale industrial successes in Systems and Software Product Line Engineering in industry-leading companies in the automotive, aerospace, defense sectors, and more. We will describe and illustrate an advanced set of product line engineering solutions, tools, and methods, which are being referred to as Second Generation Product Line Engineering (2GPLE).
This set includes:
- reliance on features as the lingua franca for expressing product differences in all phases of the lifecycle
- deeply nested hierarchical product lines
- industrial strength automation to provide modeling consistency throughout all phases of the systems and software engineering lifecycle
- explicit inclusion of artifacts from across the entire engineering life cycle as first-class citizens of the product line and more
- Introduction to Second Generation Systems and Software Product Line Engineering
- First vs. Second Generation PLE
- Application Engineering Considered Harmful
- Consolidated PLE across the full systems and software engineering lifecycle
- Managing the temporal (evolutionary) dimension of PLE through a simplified configuration management strategy
- A Bill-of-Features as a concise abstraction of a product across all systems and software assets and how this concept is an improvement over the Bill-of-Materials approach to defining a system
- The evolution of roles and processes for 2GPLE
- Mega-scale Product Line Engineering in extremely large and complex product lines and organizations
- Case studies, pragmatic insights, newly emerging best practices: General Motors, Lockheed Martin and US Navy, General Dynamics and US Army, and more
- Multistage Configuration of product lines: what it is, why it is a product-line game-changer, and how it is being applied in practice.
- Portfolio management and the extension of PLE to include Product Line Engineering Operations.