Refinements and Product Line Architectures

  • Authors:
  • Don S. Batory

  • Affiliations:
  • -

  • Venue:
  • SAIG '00 Proceedings of the International Workshop on Semantics, Applications, and Implementation of Program Generation
  • Year:
  • 2000

Quantified Score

Hi-index 0.00

Visualization

Abstract

Models of software are generally too low level, exposing classes, methods, and objects as the focal point of discourse in software design and implementation. This makes it very difficult, if not impossible, to reason about software architectures (also known as "application designs"); to have simple, elegant, and easy to understand specifications of applications; and to be able to design or critique software designs automatically given a set of high-level requirements. These problems come to the forefront in the area of product-line architectures. The goal is to build families of related applications from components. Ideally, one should have simple ways to specify a particular application (its design and implementation) and differentiate it from others. It must be possible to reason about an application in terms of its components, in order to differentiate "bad" designs from "good" designs. And it should be possible to optimize designs automatically given a set of constraints. For all this to be possible, it is necessary that components encapsulate individual features that can be shared by many applications in a product-line. Knowing that a component/feature is present (or absent) provides critical knowledge about the behavior of an application. However, expressing individual features as individual components requires a concept of encapsulation that is quite different from that offered by conventional component technologies -- e.g., CORBA, COM, and Java Packages.