Frame-based method for customizing generic software architectures

One way to support development and maintenance of a software system family is to design a generic software architecture for a family. A generic architecture captures requirements common to all (or most of) the family members. Then, we develop specific software systems, members of a family, by customizing a generic architecture. During customization, we address variant requirements to be met by a specific system we wish to implement. In this paper, we describe how we applied frame technology an advanced form of pre-processing to design a mechanism for customizing generic software architectures. Customization of a generic architecture involves selecting architecture components, customization of connectors and customization of components’ code. We turn architecture components and connectors into frames and map variant requirements into sequences of customization activities. The frame processor and Perl scripts automate the customization process. Our customization method can be applied to a wide range of generic architectures. It can be used together with other customization techniques such as inheritance (in Object-Oriented frameworks), table-driven techniques (in compiler-compilers) or parameterization. The overall objective of the work described in this paper is to create formal links between requirements for system families and the process of customizing a generic architecture during architecture-based system engineering. Ideally, a system engineer would define only novel requirements for a specific system (based on a domain model) and an automated engineering environment would actively guide him/her in obtaining the architecture and code for the specific system. This paper describes some of the techniques that lead towards this objective.

[1]  Akkihebbal L. Ananda,et al.  Handling Variant Requirements in Software Architectures for Product Families , 1998, ESPRIT ARES Workshop.

[2]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[3]  Larry Wall,et al.  Programming Perl , 1991 .

[4]  Will Tracz,et al.  DSSA (Domain-Specific Software Architecture): pedagogical example , 1995, SOEN.

[5]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  P. Bassctt Framing software reuse - lessons from real world , 1997 .

[8]  Ralph E. Johnson,et al.  Frameworks = (components + patterns) , 1997, CACM.

[9]  Ruben Prieto-Diaz,et al.  Domain analysis for reusability , 1988 .

[10]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[11]  Joseph A. Goguen,et al.  Parameterized Programming , 1984, IEEE Transactions on Software Engineering.

[12]  Alexander Ran,et al.  Configuring Designs for Reuse , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[13]  Juha Kuusela,et al.  Structuring Design Decisions for Evolution , 1998, ESPRIT ARES Workshop.

[14]  Dan Harkey,et al.  Client/Server programming with Java and Corba , 1997 .

[15]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[16]  David C. Gross,et al.  Managing Domain-Specific, Product-Line Development , 1996, IEEE Softw..

[17]  Ian Sommerville,et al.  PCL: a language for modelling evolving system architectures , 1996, Softw. Eng. J..

[18]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.