Architecture Recovery and Evaluation Aiming at Program Understanding and Reuse

Organizations use to have implemented systems that represent a large effort and budget invested in the past. These systems are evolved and adapted over time in order to accommodate technological and business changes. Moreover, big companies often develop similar systems within the same domain. This has been motivating them to migrate to reuse approaches, such as domain engineering and product line. However, existing systems in general don't have up-to-date architectural documentation that can help in their maintenance and reuse. Considering this scenario, this paper presents an approach to architecture recovery and evaluation that aims at extracting knowledge from existing systems to help in their understanding and reuse. This extracted knowledge is represented through a recovered application architectural model composed by architectural elements that represent domain concepts traced to implemented functional requirements, which may help in generating reusable artifacts. In order to evaluate the approach feasibility, an experimental study was performed.

[1]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[2]  Paul Clements,et al.  ATAM: Method for Architecture Evaluation , 2000 .

[3]  Dusan M. Velasevic,et al.  A use-case driven method of architecture recovery for program understanding and reuse reengineering , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[4]  Fatemeh Zahedi,et al.  Strategy-based design of reusable business components , 2004, IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews).

[5]  Arie van Deursen,et al.  Symphony: view-driven software architecture reconstruction , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

[6]  Nicolas Anquetil,et al.  Experiments with clustering as a software remodularization method , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[7]  Ramakrishnan Srikant,et al.  Fast Algorithms for Mining Association Rules in Large Databases , 1994, VLDB.

[8]  Juan Antonio de la Puente,et al.  A Software Architecture Evaluation Model , 1998, ESPRIT ARES Workshop.

[9]  Vassilios Tzerpos,et al.  Comprehension-driven software clustering , 2001 .

[10]  Guilherme Horta Travassos,et al.  Evaluation Approaches for Software Architectural Documents: a Systematic Review , 2006, CIbSE.

[11]  Michael Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[12]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[13]  Cláudia Maria Lima Werner,et al.  ArchTrace: Policy-Based Support for Managing Evolving Architecture-to-Implementation Traceability Links , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[14]  Cláudia Maria Lima Werner,et al.  Towards a Set of Application Independent Clustering Criteria within an Architecture Recovery Approach , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[15]  Renato Cerqueira,et al.  CSBase: A Framework for Building Customized Grid Environments , 2006, 15th IEEE International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises (WETICE'06).

[16]  Ramakrishnan Srikant,et al.  Fast algorithms for mining association rules , 1998, VLDB 1998.

[17]  Kamran Sartipi,et al.  Software architecture recovery based on pattern matching , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[18]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[19]  Leonard J. Bass,et al.  SAAM: a method for analyzing the properties of software architectures , 1994, Proceedings of 16th International Conference on Software Engineering.

[20]  Timothy C. Lethbridge,et al.  Recovering software architecture from the names of source files , 1999 .

[21]  Rick Kazman,et al.  Playing Detective: Reconstructing Software Architecture from Available Evidence , 1999, Automated Software Engineering.

[22]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[23]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[24]  Hong Yan,et al.  Discovering Architectures from Running Systems , 2006, IEEE Transactions on Software Engineering.