Product Lines and Product Families

Producing software has costs that can be reduced with code reusability. Lets talk about how the creation of “Product Lines” can help you achieve this.

According to the book Software Product Lines in Action by Frank J. van der Linden. To discover the product lines we must separate the features that stay the same, from the features that change by each product.

We can do this through the classification of three feature’s groups:

To apply the product lines classification on the architecture and Software Development lifecycle, it is common to create different teams and change the organization structure.

There will be 2 different teams that can vary according to size of product, commonalities and variations.

Product Lines Team Organization
Product Lines Team Organization

Of course, there are some trade-offs by using this approach. There will be needed for an extra upfront investment to adapt your architecture and code base to support reusable code. The creation of commonalities, like libraries, definition of boundaries, communications standards and protocols within components among others must be planned and done in advance.

Product Lines
Product Lines

It might does not fit for all sort of projects. If you have a small project that has a short life time and no plans to scale, may not worth to invest time on creating commonalities. But companies that want to build a consolidated product must think about this.

Benefits of Product Lines

Conclusion

The creation of product lines is really important to reduce costs and give competitive advantage for the company. Even if it implies in a higher initial development cost, it will bring lots of benefits in short period. As a Software Architect you must identify the situations where it worth invest time by planning Product Lines, since it does not fit for all types of projects.