FORM: A feature-;oriented reuse method with domain-;specific reference architectures

Systematic discovery and exploitation of commonality across related software systems is a fundamental technical requirement for achieving successful software reuse. By examining a class/family of related systems and the commonality underlying those systems, it is possible to obtain a set of reference models, i.e., software architectures and components needed for implementing applications in the class. FORM (Feature-;Oriented Reuse Method) supports development of such reusable architectures and components (through a process called the “domain engineering”) and development of applications using the domain artifacts produced from the domain engineering. FORM starts with an analysis of commonality among applications in a particular domain in terms of services, operating environments, domain technologies, and implementation techniques. The model constructed during the analysis is called a “feature” model, and it captures commonality as an AND/OR graph, where AND nodes indicate mandatory features and OR nodes indicate alternative features selectable for different applications. Then, this model is used to define parameterized reference architectures and appropriate reusable components instantiatable during application development. Architectures are defined from three different viewpoints (subsystem, process, and module) and have intimate association with the features. The subsystem architecture is used to package service features and allocate them to different computers in a distributed environment. Each subsystem is further decomposed into processes considering the operating environment features. Modules are defined based on the features on domain technology and implementation techniques. These architecture models that represent an architecture at different levels of abstraction are derived from the feature hierarchy captured in the feature model. Modules serve as basis for creating reusable components, and their specification defines how they are integrated into the application (e.g., as-;is integration of pre-;coded component, instantiation of parameterized templates, and filling-;in skeletal codes). Our experiences have shown that for the electronic bulletin board and the private branch exchange (PBX) domains, “features” make up for a common domain language and the main communication medium among application users and developers. Thus, the feature model well represents a “decision space” of software development, and is a good starting point for identifying candidate reusable components.

[1]  Vijayan Sugumaran,et al.  A prototype domain modeling environment for reusable software architectures , 1994, Proceedings of 1994 3rd International Conference on Software Reuse.

[2]  Marc H. Graham,et al.  The Domain-Specific Software Architecture Program , 1992 .

[3]  Alan D. Bryant Creating Successful Bulletin Board Systems , 1994 .

[4]  Pamela Zave,et al.  Feature interactions and formal specifications in telecommunications , 1993, Computer.

[5]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[6]  Paul E. McKenney,et al.  Selecting locking primitives for parallel programming , 1996, CACM.

[7]  B. F. Castro Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-oriented software architecture: a system of patterns, John Wiley & Sons Ltd, 1996 , 1997 .

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

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

[10]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[11]  Yow-Jian Lin,et al.  Extending telecommunications systems: the feature-interaction problem , 1993, Computer.

[12]  James M. Neighbors,et al.  The Draco Approach to Constructing Software from Reusable Components , 1984, IEEE Transactions on Software Engineering.

[13]  Jacqueline Floch,et al.  Supporting evolution and maintenance by using a flexible automatic code generator , 1995, 1995 17th International Conference on Software Engineering.

[14]  Kyo Chul Kang,et al.  Feature‐oriented engineering of PBX software for adaptability and reuseability , 1999 .

[15]  Xiaolei Qian,et al.  Correct Architecture Refinement , 1995, IEEE Trans. Software Eng..

[16]  Yiqing Liang,et al.  Indexing and clustering of software requirements specifications , 1992 .

[17]  Hassan Gomaa Software design methods for concurrent and real-time systems , 1993, SEI series in software engineering.

[18]  Don S. Batory,et al.  Creating reference architectures: an example from avionics , 1995, SSR '95.

[19]  Anthony M. Sloane,et al.  Beyond traditional program slicing , 1996, ISSTA '96.

[20]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[21]  Alan Fekete Formal models of communication services: a case study , 1993, Computer.

[22]  Will Tracz,et al.  LILEANNA: a parameterized programming language , 1993, [1993] Proceedings Advances in Software Reuse.

[23]  Walter Mann,et al.  Correction to "Specification and Analysis of System Architecture Using Rapide" , 1995, IEEE Trans. Software Eng..

[24]  Stephen Edwards,et al.  An Approach for Constructing Reusable Software Components in Ada , 1990 .

[25]  H. Velthuijsen,et al.  Feature interactions in telecommunications systems , 1993, IEEE Communications Magazine.

[26]  Alfred V. Aho,et al.  Feature interactions in the global information infrastructure , 1995, SIGSOFT '95.