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.
|
|
||