Tutorial

 

Title:  Description and Analysis of Software System Families using Feature Algebra

Prof. Ridha Khedri, Department of Computing and Software, Faculty of Engineering, McMaster University, Canada

Abstract

Software development models relate, in general, to the 
development of single software systems from the requirements 
stage to the maintenance one. This classical method of developing 
software is described by Parnas in 1976 as  sequential completion. 
There, a particular system is developed completely to the delivery 
stage; only after that similar systems are developed by keeping 
large parts of the working system and changing relatively small 
parts of it. In 1976, Parnas introduced the notion of program 
family and proposed a design process for the concurrent 
development of the members of a program family.  Since then, the 
notion of product family has gained a lot of attention and has found 
its way into the software development process in industry. Indeed, 
software developers that are pressured by the increase in the 
speed of time-to market and the necessity of launching new 
products do not build a single product but a family of similar 
products that share at least one common functionality and have 
well identified variability.  Their goal is to target many market 
segments or domains.  Also, in the competitive market of today, 
they cannot afford to decline a request from a client who wants a 
special variant that is slightly different from the company's other 
products. In this situation, the company would have advantage in 
gathering the requirements for and designing families of software 
systems instead of single software systems.  For example, in 
embedded system development, software depends on hardware 
and the developer needs to change software specifications 
frequently because of hardware specification changes. Hence, the 
developer ends up with many variations of the intended system 
that need to be managed.  Prioritising development tasks and 
planning them become very challenging.

In the literature, we find several feature-driven processes for the 
development of software system families that propose models to 
describe the commonalities and variabilities of a system family.

The aim of the tutorial is

1) to brevity review key processes relevant to family description 
techniques:  Feature-Oriented Domain Analysis (FODA), Feature-
Oriented Reuse Method (FORM), Featured Reuse-Driven Software 
Engineering Business (FeatuRSEB) and Generative Programming 
(GP).

2) to present Feature Algebra which underpin the ideas and 
terminology used in the above techniques with a formalism that 
allows a mathematically precise description of product families as 
well as calculations with them.

3) to illustrate, using software and hardware families, the capacity 
of Feature Algebra not only in expressing the basic notions used by 
the product family paradigm community, but also in enabling 
algebraic manipulations of families of specifications, which 
enhances the generation of new knowledge about them.


We will present as well a prototype tool to handle product families 
that are specified using Feature Algebra.