Software Product Lines, productivity and maintainability
Software Product Lines (SPL) are a set of software systems with shared characteristics and developed from a common set, generally referred to as core assets, i.e. the core from which all of them are derived.
SPLs increase corporate productivity by reducing the effort of engineers to initiate, develop and maintain a set of software products with similar characteristics. Therefore, the productivity improvements of software engineers are reflected in a reduction of costs, making their business model more competitive.
Traditional approaches are usually based on making divergent branches, copying the previous application, isolating it as an independent project and product, and carrying out further development and maintenance in isolation. They generally lead to an acceleration in the development and evolution of the new product, since they contain common code bases and infrastructure, facilitating the recognition of structures and the exploitation of previous knowledge. However, on the other hand, maintenance is completely penalized, since they are independent branches with both common and variable parts. Moreover, as the project progresses, the code bases change and vary, losing the initial advantage based on common knowledge and complicating the evolution of the products.
As an alternative to the fragmentation of human teams in the development and maintenance of each of the products, SPLs take advantage of the potential synergies derived from the similarity between products. The management of the core is focused in a planned way, complementing the variable of each product, facilitating behavior patterns based on the specificities of each one, but abstracting the common base to the core. In this way, you do not have multiple applications, but a meta-application capable of producing several products with a common base.
SPLs facilitate and speed up the evolution of products with a common base, from the fine-tuning and development, to the maintenance itself, concentrating efforts on the main common assets.
Adhering to the theoretical and practical concept in the most faithful way, product MaterialOptimizer currently follows a line of software products to facilitate the evolution of the variants that arise, adjusting to the needs of customers, but maintaining a common base that facilitates their maintenance.
On the other hand, Werft-projects exploits this idea but in a more abstract way, since the web project builder system itself is a factory of product lines regarding the common structure, so that when needs are applied in the development of Web components, their styles, common logic and cohesion of the pieces of the resulting framework itself, are incorporated in Werft-projects. In this way, this common base is extended and the maintainability of the front-end layers (client side) of the web applications built by Werft-projects is facilitated.