Abstract

SUMMARY A Product-Line Architecture (PLA) is a blue-print for developing large families of related software applications quickly and cheaply from reusable components. Implementations of PLAs are generators (also known as component configuration tools). Generators are among the pinnacle of results on software reuse: they are implementations of reference architectures that define how applications of a domain can be assembled by composing prewritten components. In this tutorial, we present the GenVoca software design methodology for creating product-lines and building architecturally-extensible software — i.e., software that is extensible via component additions and removals. GenVoca takes the idea of components that export and import standardized interfaces to its logical conclusion; it is also a scalable outgrowth of an old and practitioner-ignored methodology called step-wise refinement, which advocates that efficient programs can be created by revealing implementation details in a progressive manner. Traditional work on step-wise refinement focussed on microscopic program refinements (e.g., x+0 => x), for which one had to apply hundreds or thousands of refinements to yield admittedly small programs. While the approach is fundamental and industrial infrastructures are on the horizon, GenVoca extends step-wise refinement largely by scaling refinements to a component or layer (i.e., multi-class modularization) granularity, so that applications of great complexity can be expressed as a composition of a few large-scale refinements. GenVoca PLA designs have been created for diverse domains: 2-way radios, extensible compilers, communication protocols, command-and-control fire support, avionics, and matrix computation libraries [7]. GenVoca designs are used in industry; its central concepts relate a wide variety of contemporary and classical research topics, including: aspect-oriented programming, parameterized programming, OO frameworks, Perry's lite semantics [8], generative programming [7], design maintenance [9], and layered software.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.