A comparison of abstract data types and objects recovery techniques

Abstract In the context of the authors’ research on architectural features recovery, abstract data types (ADT) and abstract data objects (ADO, also called objects) have been identified as two of the smallest components which are useful for building a significant architectural overview of the system. The authors have named these the atomic components (AC) of an architecture. This article compares six published techniques which extract ADTs and ADOs from source code without extensive data flow analysis. A prototype tool implementing each technique has been developed and applied to three medium-sized and systems written in C (each over 30 Kloc). The results from each approach are compared with the atomic components identified by hand by a group of software engineers. This article extends previous papers by discussing how the software engineers’ AC identification was validated and by analyzing the false positives, i.e., the atomic components identified by automatic approaches which were not identified by software engineers.

[1]  C LuckhamDavid,et al.  Specification and Analysis of System Architecture Using Rapide , 1995 .

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

[3]  Jean-Francois Girard,et al.  Finding components in a hierarchy of modules: a step towards architectural understanding , 1997, 1997 Proceedings International Conference on Software Maintenance.

[4]  Hans Albert Muller,et al.  Rigi: a model for software system construction, integration, and evolution based on module interface specifications , 1986 .

[5]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[6]  Gregor Snelting,et al.  Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[7]  Harald C. Gall,et al.  Finding objects in procedural programs: an alternative approach , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[8]  D. R. Harris,et al.  Recovering abstract data types and object instances from a conventional procedural language , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[9]  Houari A. Sahraoui,et al.  Applying concept formation methods to object identification in procedural code , 1997, Proceedings 12th IEEE International Conference Automated Software Engineering.

[10]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1976, Software Pioneers.

[11]  James R. Cordy,et al.  A Syntactic Theory of Software Architecture , 1995, IEEE Trans. Software Eng..

[12]  Aniello Cimitile,et al.  An Improved Algorithm for Identifying Objects in Code , 1996, Softw. Pract. Exp..

[13]  Thomas Bräunl,et al.  Virtual Mechanics Simulation and Animation of Rigid Body Systems with AERO , 1995, Simul..

[14]  N. Wilde,et al.  Identifying objects in a conventional procedural language: an example of data design recovery , 1990, Proceedings. Conference on Software Maintenance 1990.

[15]  Thomas W. Reps,et al.  Identifying modules via concept analysis , 1997, 1997 Proceedings International Conference on Software Maintenance.

[16]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[17]  Jean-Francois Girard,et al.  Comparison of abstract data type and abstract state encapsulation detection techniques for architectural understanding , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[18]  Aniello Cimitile,et al.  Extracting abstract data types from C programs: A case study , 1993, 1993 Conference on Software Maintenance.

[19]  Gerardo Canfora,et al.  An improved algorithm for identifying objects in code , 1996 .

[20]  Doris L. Carver,et al.  A graph-based object identification process for procedural programs , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[21]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

[22]  Aniello Cimitile,et al.  A case study of applying an eclectic approach to identify objects in code , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[23]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..