Dependent Types for Program Understanding

  • Raghavan Komondoor
  • G. Ramalingam
  • Satish Chandra
  • John Field
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3440)

Abstract

Weakly-typed languages such as Cobol often force programmers to represent distinct data abstractions using the same low-level physical type. In this paper, we describe a technique to recover implicitly-defined data abstractions from programs using type inference. We present a novel system of dependent types which we call guarded types, a path-sensitive algorithm for inferring guarded types for Cobol programs, and a semantic characterization of correct guarded typings. The results of our inference technique can be used to enhance program understanding for legacy applications, and to enable a number of type-based program transformations.

References

  1. 1.
    Canfora, G., Cimitile, A., Lucca, G.A.D.: Recovering a conceptual data model from cobol code. In: Proc. 8th Intl. Conf. on Softw. Engg. and Knowledge Engg (SEKE 1996), pp. 277–284. Knowledge Systems Institute (1996)Google Scholar
  2. 2.
    Demsky, B., Rinard, M.: Role-based exploration of object-oriented programs. In: Proc. 24th Intl. Conf. on Softw. Engg., pp. 313–324. ACM Press, New York (2002)Google Scholar
  3. 3.
    Eidorff, P.H., Henglein, F., Mossin, C., Niss, H., Sorensen, M.H., Tofte, M.: Annodomini: from type theory to year 2000 conversion tool. In: Proc. 26th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pp. 1–14. ACM Press, New York (1999)CrossRefGoogle Scholar
  4. 4.
    Ernst, M.D., Cockrell, J., Griswold, W.G., Notkin, D.: Dynamically discovering likely program invariants to support program evolution. In: Proc. 21st Intl. Conf. on Softw. Engg., pp. 213–224. IEEE Computer Society Press, Los Alamitos (1999)CrossRefGoogle Scholar
  5. 5.
    Jackson, D.: Alloy: A lightweight object modelling notation. ACM Transactions on Software Engineering and Methodology 11(2), 256–290 (2002)CrossRefGoogle Scholar
  6. 6.
    O’Callahan, R., Jackson, D.: Lackwit: a program understanding tool based on type inference. In: Proc. 19th intl. conf. on Softw. Engg., pp. 338–348. ACM Press, New York (1997)CrossRefGoogle Scholar
  7. 7.
    Ramalingam, G., Field, J., Tip, F.: Aggregate structure identification and its application to program analysis. In: Proc. 26th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pp. 119–132. ACM Press, New York (1999)CrossRefGoogle Scholar
  8. 8.
    Rumbaugh, J., Jacobson, I., Booch, G.: The Unified Modeling Language Reference Manual, 2nd edn. Addison-Wesley Professional, Reading (2004)Google Scholar
  9. 9.
    van Deursen, A., Kuipers, T.: Identifying objects using cluster and concept analysis. In: Proc. 21st Intl. Conf. on Softw. Engg., pp. 246–255. IEEE Computer Society Press, Los Alamitos (1999)CrossRefGoogle Scholar
  10. 10.
    van Deursen, A., Moonen, L.: Understanding COBOL systems using inferred types. In: Proc. 7th Intl. Workshop on Program Comprehension, pp. 74–81. IEEE Computer Society Press, Los Alamitos (1999)CrossRefGoogle Scholar
  11. 11.
    Xi, H.: Dependent Types in Practical Programming. PhD thesis, Carnegie-Mellon University (1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Raghavan Komondoor
    • 1
  • G. Ramalingam
    • 1
  • Satish Chandra
    • 1
  • John Field
    • 1
  1. 1.IBM Research 

Personalised recommendations