Motivations

Why do we need product line engineering for web applications?

THE FOLLOWING STORY has happened thousands of times. A company puts a product on the market, and the product proves to be very successful. Customers use the product and it’s almost perfect, but it needs some changes to make it really fit the context in which it’s used. The company considers this and provides a customer-specific version. At the same time, on the basis of customer feedback, the company realizes that several customer segments would be better served with a product focused for each segment. So, the company ends up with a multitude of significantly similar product versions.

At this point, the company realizes that many of the required changes must be implemented for most or even all product versions and that implementing the same change multiple times is really inefficient, time-consuming, and error prone. This often results in the creation of a platform from which the different products and customer-specific versions can be derived. This significantly improves development efficiency. However, a new challenge enters the arena: managing the points in the platform where the product versions’ functionalities differ —- that is, variability management.

[Bosch2015]

Why do we need to incorporate behaviour-driven development?

...much of the tremendous power of features is yet be unlocked by making features explicit throughout the entire systems and software lifecycle

—Krzysztof Czarnecki, foreword to Feature-Oriented Software Product Lines [Apel2013]

The explicit treatment of features in requirements, architecture, implementation, and verification and validation can greatly improve the management of software.

—Krzysztof Czarnecki, foreword to Feature-Oriented Software Product Lines [Apel2013]

We wish to combine the benefits of BDD, SPLE and FOSD.

“the idea of variability-aware analysis is not to invent new knds of analysis
techniques, but to lift existing analysis techniques developed for individual programs to entire product lines (that is, to domain artifacts).”

—Feature-Oriented Software Product Line, p.261 [Apel2013]