Advertisement

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.

Keywords

Type Variable Atomic Type Typing Solution Dependent Type Input String 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

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