A guide to creating efficient variants
FeatureIDE - A novel approach to developing software
One size fits all? In software development this rule can hardly be applied. Developing software products that try to include every possibly useful function is often not a good idea. While unnecessary functions are a possible source of errors and may confuse the user, it is often not possible to include them all in one product. Embedded systems, smart phones, or automotive systems are typical examples for domains in which all-in-one software is not applicable. Most software products today come at least in a set of variants to let the customer choose the one that he prefers – or can afford.
Developing Software Variants
A common technique to manage different variants of software products is to use version-control tools like SVN, GIT, or Mercurial. Following this approach, each variant is being developed in its own branch. However, most variants will share big parts of code and differ only in details or certain features. When developing a new variant, you will probably copy the whole source code of an existing variant to a new branch and then start to modify or extend it. But, using version-control tools for the implementation of software variants comes with disadvantages:
- Fixing a bug in one variant makes it often necessary to apply the changes in all other variants thatalso contain this piece of code – resulting in redundant work.
- Creating a variant is complex and expensive. Thus, variants are not developed in advance andthere is a long time to market.
The Eclipse plug-in FeatureIDE offers a novel approach to develop different software variants while avoiding these problems. It allows programmers to develop software variants in a user-friendly manner providing a comfortable way to reuse code which is needed in multiple variants.