Core Assets - are the base used to produce new software products. They are defined on the basis of preexisting products and future products. Core assets that evolve as new products are developed.
Domain Engineering - or development for reuse. It is the development of core assets through domain analysis, design and implementation.
Application Engineering - or development with reuse. It is the development of final products, with the use of core assets and specific requirements expressed by customers.
This process is composed of three processes:
- application requirements;
- application design;
- application coding.
Software-Intensive Systems - systems in which software interacts with other software, systems, devices, sensors and with people are called software-intensive systems.
Software Product Line - "A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way" (Clements and Northrop, http://www.sei.cmu.edu/reports/04tr022.pdf).
Product line engineering (Product Family Engineering) - Product line engineering is a process that delivers reusable components, which can be reused to develop a new application for the domain. Indeed, a software product line defines software product lines requirements, a software architecture, and a set of reusable components shared by the products, which implements a considerable part of the products' functionalities (P. Clements and L. Northrop, A Framework for Software Product Line Practice - Version 4.1 [online]. Carnegie Mellon, Software Engeneering Institute, http://www.sei.cmu.edu/plp/framework.html, Pittsburgh, USA, 2003).
The various product variants can be derived from the basic product family. The purpose is to reduce the time and cost of production, and to increase software quality by reusing core assets. The general process of product lines is based on the reusability of requirements, documentation, architecture and components.
The process of product lines is based on the reusability of requirements, architecture and components. It consists of two phases:
- Domain Engineering;
- Application Engineering.
Reference Requirements - the process of domain analysis gives a set of Reference Requirements which can be reused to define the requirements of an application.
Reference Architecture - is defined by the domain design. It is used to develop and structure applications. Reusable components are reused to code applications.
Backward and Forward Traceability - is established between:
- the reference requirements;
- the reference architecture;
- the reusable components to facilitate the change and update management in the product line.
The aim of Backward and Forward Traceability is to ensure quality and support change integration.
Feedback Process - during the application engineering phase, a Feedback Process can be used to revise the domain design and the domain implementation.