View Related Documents

Abstract

The industry of software-intensive systems is facing today both economical and technical challenges. On one hand, shrinking budgets and sharp competition require to reduce significantly development and maintenance costs, shorten lead time, and improve predictability. On the other hand, the size and complexity of systems have dramatically increased in the past few years and have brought considerable technological problems. In order to face these issues, major changes are required regarding the way software products are developed.
A promising approach, which is gaining wide acceptance, is to replace traditional development models by product-line development. Traditional life cycle models have originally been conceived under the assumption that they apply to the development of individual software products, inhibiting the sharing of common assets between projects. Product-line development is based on a different approach, which naturally promotes and supports software reuse. In a productline approach, products addressing a same domain are regarded as a whole and developed as members of a product family.
More precisely, a software product-line is a collection of products sharing a common set of features that address the specific needs of a given business area
The development of core assets is generally termed as domain engineering. The development of new products from the set of reusable assets is generally called application engineering. The whole process is allowed by an adequate organization and a coordinated management.
There is a number of specific practices that are needed to develop and exploit the core assets in a product-line. These practices are not always mature and most of the time only emerging in the context of one-shot developments, that is the developments of single products with no reuse in mind. The levels of reusability and adaptability required by the product-line approach bring additional complexity and formidable challenges with regard to the current technology. Such complexity is today almost not dealt with, and requires significant improvements for the current state-of-the-art in software engineering.
The SEI (Software Engineering Institute) has listed the essential practices required to produce core assets and products in a product-line and to manage the process at multiple level [1].

Fulltext Preview

Image of the first page of the fulltext document