Focus: a light-weight, incremental approach to software architecture recovery and evolution

During the past decade (1991-2001), object-orientation (OO) has become the dominant software development methodology, accompanied by a number of modeling notations, programming languages, and development environments. OO applications of today are increasingly complex and user driven. They are also developed more rapidly and evolved more frequently than was the case with software systems of the past. All of these factors contribute to a plethora of potential problems when maintaining and evolving an OO application. These problems are caused by architectural erosion, where the initial architecture of an application is (arbitrarily) modified to the point where its key properties no longer hold. We propose an approach, called Focus, whose goal is to enable effective evolution of such an application with minimal effort, by recovering its architecture and using it as the basis of evolution. Focus allows engineers to direct their primary attention to the part of the system that is directly impacted by the desired change; subsequent changes will incrementally uncover additional parts of the system's architecture. We have applied Focus to four off-the-shelf applications to date. We discuss its key strengths and point out several open issues that will frame our future work.

[1]  Rick Kazman,et al.  A Software Architecture Reconstruction Method , 1999, WICSA.

[2]  Hausi A. Müller,et al.  Structural Redocumentation: A Case Study , 1995, IEEE Softw..

[3]  Richard N. Taylor,et al.  Chiron-1: a software architecture for user interface development, maintenance, and run-time support , 1995, TCHI.

[4]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[5]  Richard N. Taylor,et al.  A Component- and Message-Based Architectural Style for GUI Software , 1995, 1995 17th International Conference on Software Engineering.

[6]  Richard C. Holt,et al.  A hybrid process for recovering software architecture , 1996, CASCON.

[7]  Richard C. Holt,et al.  Linux as a case study: its extracted software architecture , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[8]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[9]  Richard N. Taylor,et al.  Using off-the-shelf middleware to implement connectors in distributed software architectures , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[10]  Serge Demeyer,et al.  Report: Workshop on Object-Oriented Re-engineering (WOOR'97) , 1998, SOEN.

[11]  Rosanna Lee,et al.  The Java Class Libraries - An Annotated Reference , 1996 .

[12]  강문설 [서평]「The Unified Modeling Language User Guide」 , 1999 .

[13]  Harald C. Gall,et al.  Workshop on object-oriented reengineering (WOOR'99) , 2000, SOEN.

[14]  Rick Kazman,et al.  View extraction and view fusion in architectural understanding , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[15]  Richard C. Holt,et al.  A reference architecture for Web servers , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[16]  Spencer Rugaber A tool suite for evolving legacy software , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

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

[18]  Katsuro Inoue,et al.  Proceedings of the International Workshop on Principles of Software Evolution , 2002 .

[19]  Harald C. Gall,et al.  Software architecture recovery of a program family , 1998, Proceedings of the 20th International Conference on Software Engineering.

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

[21]  Spencer Rugaber An Example of Program Understanding , 1998 .

[22]  Roland Mittermeir,et al.  Object-Oriented Re-Architecturing , 1995, ESEC.