System Families


What are System Families?

Software engineers are trying to fulfill a steady desire of the market for high quality software and short development cycles by reuse efforts, component technologies, and new programming paradigms. These solution ideas are used to satisfy the customer needs as fast as possible while using minimal resources. Reuse is a promising idea adapted out of many other engineering disciplines. The key idea is easy, but a lot of difficulties arise when software engineers try to apply reuse to software development.

Reuse applied to software out of a specific problem domain is described by System Families. The term System Families was introduced in 1976 by David Parnas. Very often software engineers have to develop custom-build and expensive applications. It is rather profitable to switch to a development method making use of the system family idea based on a family core and variable parts. An application will be generated out of the core and a set of variable parts.

As depicted in Figure 1 a system family in the library domain consists of a core part and parts specific to the actual applications in our domain. The core is made of the user/media handling and general library procedures like borrowing media. The specific part for a mobile library is made of functionality that temporarily separates a set of books, which will be brought to the 'customers'.

Current System Family research

Many projects in the past explored the field of sytem family development and errected new methods and technologies in this field. A selection of these scientific efforts is shown below.

 

The DARPA-STARS program was finished 1996. The Department of Defense (DoD) wanted to improve the internal software development processes. The program resulted in a Product Line Process which was developed to enable broad and defined reuse of software assets.
The Product Line Architecture Group (PLA) at the University of Texas is working on software architecures based on layers and components that can be arranged in a flexible way. GenVoca is PLAs design methodolgy for the development of product lines.
FODA Feature Oriented Domain Analysis was developed at the Software Engineering Institute and describes a family of applications by using their features. Arranged in a tree and marked optional or mandatory, FODA supplies an overview of the famliy for the system developer and is the basis for the selection of a specific application.
Product Line Practice of SEI What has to be done to change a 'normal' organization into a system-family-ready business is described by the SEI in their Product Line Practice Framework.
FeatuRSEB Reuse Driven Software Engineering Business extends the UML by constructs for modeling variability. With these constructs it is possible to develop a model out of which many applications can be derived. In an enhanced version, FeatuRSEB uses the ideas of FODA added to RSEB to supply a family specific view.
FAST Family oriented Abstraction Specification and Translation describes a process for the development of system families. As a key point FAST proposes the development of a Domain Specific Language which can be used to describe an application of the family.

 

State-of-the-Art in System Family Development

The quintessence of all methods is the separation of software development into two stages which are connected by a data layer holding all development assets created throughout the development. The figure shows the twofold development of system families.

The upper blue part represents the development of the family itself. A flexible architecture realizing the ideas described in the requirements model and a set of components are the assets developed in the domain engineering phase.

The middle green compartment holds all the information and the assets developed in the domain engineering phase and will supply the basis for the development of applications (family members) in the application engineering phase.

The lower orange part represents the application development. Based on the family architecture new applications, members of the family, will be developed. Any new requirements elicited throughout this development phase or any inconsistencies found in the assets used, are propagated backwards to the domain engineering part, depicted by the control flow arrows.

The benefits of the system family approach

The basic idea of system families is the long term reuse of development assets throughout the whole development cycle. Contrary to the development of single applications system families are based upon a family architecture from which all applications are derived. New applications are not developed by extending and changing existing systems up to the point where the new requirements are met. Their requirements are compared against the family requirements to reuse most of the existing asstes. Possible changes to the family architecture are performed without an impact on the derivation of already developed family members. The following point describe the key issues for system family development.

  • Engineering of a flexible family architecture

  • Derivation of applications out of the flexible architecture

  • Planned long-term reuse

  • High percentage of reuse. Thus fast development of new applications