Re: typed-based analysis and applications

Dear Jens [and Types readers],

In your message in the types list, you wrote:
> Please send me references to papers on type-based analysis and 
> applications.

I have been doing research (together with Arie van Deursen) that
explores type-based analysis as starting point for various software
reengineering tasks. Unfortunately, programs requiring reengineering
most desperately are written in languages without an adequate type
system (such as COBOL).  To solve this problem, we have proposed a
method of automated type inference for these languages [1]. The main
ingredients are that if variables are compared using some relational
operator their types must be the same; likewise if an expression is
assigned to a variable, the type of the expression must be a subtype
of that of the variable. In [1] we present the type system and
inference rules for this approach, show their effect on various real
life COBOL fragments, describe the implementation of our ideas in a
prototype type inference tool for COBOL, and discuss a number of

Experiments showed that the most problematic aspect of type
inferencing on legacy systems is pollution, the phenomenon that types
become too large, and group variables that intuitively should not
belong to the same type. In [2], we propose subtyping as an effective
way for dealing with pollution. We present a tool set to carry out
type inference experiments and a suite of metrics characterizing type
inference outcomes. Furthermore, [2] presents a case study on a
100.000 LOC industrial COBOL system to assess feasibility and
scalability of COBOL type inferencing.

In [3], we show how hypertext-based program understanding tools can
achieve new levels of abstraction by using inferred type
information. We propose TypeExplorer, a tool for browsing COBOL legacy
systems based on types. The paper addresses (1) how types, an invented
abstraction, can be presented meaningfully to software reengineers;
(2) the implementation techniques used to construct TypeExplorer; and
(3) the use of TypeExplorer for understanding legacy systems, at the
level of individual statements as well as at the level of the software
architecture which is illustrated by using TypeExplorer to browse an
industrial COBOL system of 100,000 lines of code.

In [4] (written with Tobias Kuipers), we explore the use of type
inference and concept analysis to identify objects in legacy systems
by semi-automatically restructuring the legacy data structures.  We
provide support in the form of ConceptRefinery, a tool for
interactively manipulating concepts that lets reengineers employ their
knowledge of the legacy system to refine the results of concept
analysis. We show how the tool facilitates experiments with concept
analysis and illustrate its use to gain insight into on an industrial
COBOL system.

[1]  Arie van Deursen and Leon Moonen. Type inference for COBOL
     systems.  In Proceedings of the 5th Working Conference on 
     Reverse Engineering, pages 220-230. IEEE Computer Society 
     Press, 1998.

     PDF     http://www.cwi.nl/~leon/papers/wcre98/wcre98.pdf
     BibTeX  http://www.cwi.nl/~leon/papers/wcre98/#bib

[2]  Arie van Deursen and Leon Moonen.  Understanding COBOL systems
     using inferred types.  In Proceedings of the 7th International 
     Workshop on Program Comprehension.  IEEE Computer Society Press, 
     May 1999.

     PDF     http://www.cwi.nl/~leon/papers/iwpc99/iwpc99.pdf
     BibTeX  http://www.cwi.nl/~leon/papers/iwpc99/#bib

     An extended version will be published in Science of Computer
     Programming under the title "An empirical study into COBOL 
     type inferencing.". Vol. 40 (2-3), July 2001, pp. 189-211

     PDF  http://www.elsevier.nl/gej-ng/10/39/21/47/25/24/article.pdf

[3]  Arie van Deursen and Leon Moonen.  Exploring legacy systems 
     using types.  In Proceedings of the 7th Working Conference 
     on Reverse Engineering, pages 32-41.  IEEE Computer Society 
     Press, 2000.

     PDF     http://www.cwi.nl/~leon/papers/wcre00/wcre00.pdf
     BibTeX  http://www.cwi.nl/~leon/papers/wcre00/#bib

[4]  Tobias Kuipers and Leon Moonen.  Types and concept analysis 
     for legacy systems.  In Proceedings of the 8th International 
     Workshop on Program Comprehension. IEEE Computer Society Press, 
     June 2000.

     PDF     http://www.cwi.nl/~leon/papers/iwpc00/iwpc00.pdf
     BibTeX  http://www.cwi.nl/~leon/papers/iwpc00/#bib

best regards,
-- Leon

Leon Moonen					      Leon.Moonen@cwi.nl 
+31 20 592 4274					http://www.cwi.nl/~leon/