Product lines, new software development paradigm

So far, software companies have manufactured their products individually and developed complete systems from scratch, but that is not profitable. Industrialization now reaches the software world, where advances in technology, methodology and design tools allow its reuse. Product lines are the key.

In recent years the software has grown continuously in size and complexity, becoming an added value of many products, a competitive advantage. The development can be clearly seen in companies producing industrial products such as numerical controls, appliances, etc. In these products the software has gone from being a peripheral element to being the most important element.

However, in general, software development remains the same in these companies. Most companies develop a single system per period. In addition, the main objective is the early completion of the product, leaving aside other criteria such as quality. And when working for the product to finish on time, they do not take into account the need to maintain the same system when developing the system, so subsequent changes that occur in the system are difficult. And as if that were not enough, most companies still use old methodologies.

This generates many problems and headaches in companies. The biggest problem can be the progressive loss of competitiveness. In companies that have not altered the software development process, the work of most employees is the maintenance of previously developed systems, whose maintenance phase involves more than 80% of the total cost of systems, so there are few resources for the development of new systems. This means a loss of innovation capacity.

As software is becoming increasingly necessary, companies see the need to change the development process. It is about reducing the cost of each software product, improving the quality of the software, reducing the time of marketing and, above all, reducing the cost of maintenance. And how to get it? Reuse and product lines are the way.

Always objective

Software reuse has always been one of the objectives of Software Engineering. In the late 1960s, subroutines began to be used, while in the 1970s, modules began to be used, and in 1980, object-oriented programming.

However, reuse was opportunistic, that is, unplanned, performed individually and of low level. In the 1990s the idea of component-based development emerged. This philosophy proposed the reuse of larger units or components, taking a firm step in their reuse.

The first signs of product lines appeared in the late 1990s and interest has skyrocketed since 2000. They address a broader vision than other philosophies, as they work on planned and strategic reuse, taking into account their technical characteristics and business criteria, seeking the industrialization of the software sector. In other industrial sectors, such as automotive or machine tools, progress was made much earlier in this way, currently using the scale economy.

What about software? Why has industrialization not yet come? Lack of appropriate technology, methodology and design tools. Now we have at hand: The .NET products of CORBA, J2EE and Microsoft are the example of new technologies and there is increasing methodology and design tools.

What are software product lines?

They are intensive software systems with common characteristics that meet the needs of a certain area of the market. These systems are developed from common active bases following a previously established process.

An asset is a work product that the organization uses and reuses. It is designed for reuse, integrates the common part of the domain and allows versatility, that is, adapts to different situations. Therefore, active bases are the axis of the product line. Architecture, reusable software components, domain models, documents and test cases are examples of active bases.

The key to the success of a product line is based on the systematic management of planned changes. Therefore, it is essential to identify, control and manage the variability of the product line, a characteristic that separates family members.

A product line should be directed to a domain (knowledge area with common terminology). And not all domains are suitable for the application of product lines, there needs to be a request for similar applications. In the development of products in this domain it is essential to have internal knowledge and experience.

The product lines represent a change in the life cycle of the products: from the project perspective we go to the domain view. In the domain view you can distinguish two activities: domain engineering and application engineering or product development.

In domain engineering, after extensive product analysis, reusable assets are developed. The objective is to identify the common and variable part of the products and create the infrastructure or basis necessary to achieve the highest degree of reuse possible. These assets collect all the experience and knowledge of companies about products. The main asset is the general architecture of products, based on the product line. The architecture of a product line encompasses all products globally.

However, application engineering aims to create applications, but not starting at zero, but using active bases generated in domain engineering.

When developing assets it is beneficial to use a component-based development approach, that is, to create component-based systems, develop and store such components.

On the other hand, it is essential to take into account another action, management. To manage the product line, both at the technical and organizational level of the company, it is necessary to ensure that the product line approach goes the right way and successfully. The product line must also be adapted to the new circumstances.

Product line activities.

For companies of all types and sizes

The strategy of the product lines is applicable to companies of very varied type and size: Software systems development companies, software consultants and internal software development departments.

Until now, the idea of product lines was linked to large companies, which could devote more resources and efforts to the development of the product line. However, small businesses can also apply it and obtain economic benefits by using lighter versions
of the practices used. In addition, the structure and role changes needed to apply a product line can be easier for small businesses.

Therefore, with the strategy offered by the philosophy of product lines, companies dedicated to the development of software will be able to make a systematic reuse of their products and obtain competitive advantages.

They will not start developing a new system from scratch, but will develop it using existing active bases, which will save time. Increasing market share, reducing costs, more reliable systems, customer satisfaction and less time to market are the advantages offered by this software development methodology.

Investment it deserves

The implementation of a product line requires large investments and efforts. It is necessary to carry out a cost-benefit analysis that contemplates and controls risks among others. Product lines require an initial investment, but then profits are made by cheapening products.


Methodologies

There are different methodologies for product line development. If you analyze the activities to be developed in a product line: domain engineering, application engineering, management and evolution, some methodologies offer support to all areas, while others are limited to a specific field. Methodologies for supporting all activities include: PuLSE (Product Line Software Engineering), Copper, COPA (Component-Oriented Platform Architecting), FAST (Family-Oriented Abstraction, Specification and Translation). Moreover, FORM, SREB + SWOT, etc. are limited to domain engineering and application engineering, regardless of management and evolution. There are methodologies that are limited to more concrete actions: FODA (Feature-Oriented Domain Analysis) is a domain analysis methodology for the architectural design of an ADD (Attribute Driven Design) and FBAD (Functionality-Based Architectural Desing) product line.


Reuse: several options

For the development of software products with common features, organizations have several options of different levels of reuse. Each of these options represents a greater investment, but also a greater degree of reuse.

• Product to product: is the vision of always. It consists of developing each product from scratch.

Standardized infrastructure: consists of standardization of product infrastructure (with regular operating system and commercial components).

Platform: Products are developed from a standardized infrastructure platform that includes the common functions of all products.

• Software product line: In addition to the platform, the product is based on functions common to most products; the specific functions of one or more products are developed when the product comes from that base.

• Configurable product base: It is to
develop a basis for product creation. This base can be configured to create the product. It is mainly used in stable domains.

Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila