Skip to main content
Log in

A Metric-Based Approach to Detect Abstract Data Types and State Encapsulations

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

This article presents an approach to identify abstract data types (ADT) and abstract state encapsulations (ASE, also called abstract objects) in source code. This approach, named similarity clustering, groups together functions, types, and variables into ADT and ASE candidates according to the proportion of features they share. The set of features considered includes the context of these elements, the relationships to their environment, and informal information. A prototype tool has been implemented to support this approach. It has been applied to three C systems (each between 30–38 Kloc). The ADTs and ASEs identified by the approach are compared to those identified by software engineers who did not know the proposed approach or other automatic approaches. Within this case study, this approach has been shown to have a higher detection quality and to identify, in most of the cases, more ADTs and ASEs than the other techniques. In all other cases its detection quality is second best. N.B. This article reports on work in progress on this approach which has evolved since it was presented in the original ASE97 conference paper.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Aamodt, A. 1994. Explanation-based case-based reasoning. Topic in Case-Based Reasoning, Springer Verlag, pp. 274-288.

  • Biggerstaff, T.J. 1989. Design recovery for maintenance and reuse. IEEE Computer, 22:36-49.

    Google Scholar 

  • Canfora, G., Cimitile, A., and Munro, M. 1996. An improved algorithm for identifying objects in code. Journal of Software Practice and Experience, 26(1):25-48.

    Google Scholar 

  • Canfora, G., Cimitile, A., Munro, M., and Taylor, C.J. 1993. Extracting abstract data type from C programs: A case study. In International Conference on Software Maintenance, pp. 200-209.

  • Dean, T.R. and Cordy, J. 1995. A syntactic theory of software architecture. IEEE Transaction of Software Engineering, 21(4):302-313.

    Google Scholar 

  • Garlan, D. and Shaw, M. 1993. An Introduction to Software Architecture Vol. 1, Advances in Software Engineering and Knowledge Engineering, New Jersey, World Scientific Publishing Company.

    Google Scholar 

  • Ghezzi, C., Jazayeri, M., and Madrioli, D. 1991. Fundamental Software Engineering. Prentice Hall International.

  • Girard, J.-F. and Koschke, R. 1997. Finding components in a hierarchy of modules: a step towards architectural understanding. In International Conference on Software Maintenance. Bari, pp. 66-75.

  • Girard, J.-F., Koschke, R., and Schied, G. 1997. Comparison of abstract data type and abstract state encapsulation detection techniques for architectural understanding. In Working Conference on Reverse Engineering, Amsterdam, The Netherlands, pp. 66-75.

  • Guttag, J. 1977. Abstract data types and the development of data structures. Communications of the ACM, 20(6):396-404.

    Google Scholar 

  • Keller, H., Stolz, H., Ziegler, A., and Bräunl, T. 1995. Virtual mechanics simulation and animation of rigid body systems with Aero. Simulation for Understanding, 65(1):74-79.

    Google Scholar 

  • Liskov, B. and Zilles, S.N. 1974. Programming with abstract data types. SIGPLAN Notice, 9(4):50-60.

    Google Scholar 

  • Liu, S. and Wilde, N. 1990. Identifying objects in a conventional procedural language: An example of data design recovery. In Conference in Software Maintenance. IEEE Computer Society Press, pp. 266-271.

  • Luckham, D.C., Kenney, J.H., Augustin, L.M., Vera, J., Bryan, D., and Mann, W. 1995. Specification and analysis of system architecture using rapide. IEEE Transaction of Software Engineering, 21(4):336-355.

    Google Scholar 

  • Perry, D. and Wolf, A. 1992. Foundations for the study of software architecture. acm SIGSOFT, 17(4):40-52.

    Google Scholar 

  • Richter 1992. Classification and learning of similarity measures. In Annual Conference of the German Society for Classification, number 16. Springer Verlag.

  • Schwanke and Hanson 1994. Using neural networks to modularize software. Machine Learning, 15:137-168.

    Google Scholar 

  • Schwanke, R.W. 1991. An intelligent tool for re-engineering software modularity. In International Conference on Software Engineering, pp. 83-92.

  • Shannon, C.E. 1972. The Mathematical Theory of Communication. Urbana: Univ. of Ill. Press. ISBN 0-252-72548-4.

    Google Scholar 

  • Shaw, M., DeLine, R., Klein, D.V., Ross, T.L., Young, D.M., and Zelesnik, G. 1995. Abstraction for software architecture and tools to support them. IEEE Transaction of Software Engineering, 21(4):314-335.

    Google Scholar 

  • Sommerville, I. 1992. Software Engineering, 4th edition, Addison Wesley.

  • Yeh, A., Harris, D., and Reubenstein, H. 1995. Recovering abstract data types and object instances from a conventional procedural language. In Wills, L., Newcomb, P., and Chikofsky, E., editors, Second Working Conference on Reverse Engineering, Los Alamitos, California. IEEE Computer Society Press. pp. 227-236.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Girard, JF., Koschke, R. & Schied, G. A Metric-Based Approach to Detect Abstract Data Types and State Encapsulations. Automated Software Engineering 6, 357–386 (1999). https://doi.org/10.1023/A:1008715506131

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1008715506131

Navigation