This Blog post will give you a short and easy overview of the concept of Software Product Lines and Feature Models.
What is a Software Product Line ?
A Software Product Line is a Software Development concept which concentrates on building a factory-like infrastructure in order to produce a high amount of software products which share more commonalities than variabilities.
We already know this concept from other industries like car manufacturers. The goal is to shift from mass production to mass customization. This means that companies try to fullfill the varying needs of their customers without increasing production time and costs.
A car manufacturer has a product family of cars which he offers to his customers. Every car has a huge list of features that a customer can add to his car, like a navigation system or a better soundsystem.
The car can also be configured with another engine that provides more power or another colour.
So how does a car manufacturer handle this huge amount of different options without building an entire new assembly line for every feature?
The answer is quite easy. The car manufacturer produces the car on the same assembly line. In order to keep the production time and costs low he uses a feature model which describes every part of the car which is mandatory in every car and which is optional. For example he uses the same suspension, chassis and gearbox in every model, and adds the variable parts to it depending on the customers choice.
The same idea can know be transfered to software development processes. In order to produce a high amount of individual software solutions which share a large group of commonalities, we can use a software product line and a feature model to decrease production time and costs.
What is a Feature Model?
A feature model describes a (software) product line. It describes all features and the relationships among them.
This simplified Feature Model describes a car product line
The same method can now be applied to a software project. In this case we create a Feature Model which describes the mandatory functionality and optional features. The goal is to maximize the amount of reusable code/functions.
Once a Feature Model is created you can offer a huge amount of individual software solutions to your customer at minimal development time and costs. In case of an E-Shop you can offer your product to different customers by changing optional features like payment system and other variable options.
Lets summarize the idea of Software Product Lines and Features Models:
- Mass Customization over Mass Prodcution of the same product
- Reusable Code and Functions to decrease production time and costs
- Develop a Feature Model to offer a high amount of individual solutions which share a lot of commonalities
 Automated Analysis of Feature Models 20 Years Later: A Literature Review
 Wikipedia: Software Product Line
 Wikipedia: Feature Model