Transcript
Page 1: Understanding  Legacy Systems

ETAPS 99 1

Understanding Legacy Systems

Arie van Deursen

Tobias KuipersLeon Moonen

Page 2: Understanding  Legacy Systems

ETAPS 99 2

Tooling Infrastructure

Legacy Sources

Lexical Analysis

Syntax Analysis

Data flow Analysis

Repository

Report Generator

ClusterAnalysis

Visuali-zation

Filter &Abstract

Page 3: Understanding  Legacy Systems

ETAPS 99 3

Redocumentation

Contents decided by maintenance

team.

Technical system knowledge lost!

Automatic extraction

Manual: additional docs, overviews

Training, changes, estimates, ...

Page 4: Understanding  Legacy Systems

ETAPS 99 4

Understanding Variables

100 Kloc Cobol:

25,000 different variables!

Cobol variable declarations:

Aggregation + byte representation

No types!

Page 5: Understanding  Legacy Systems

ETAPS 99 5

Type Inference for COBOL

Give each variable unique primitive type

Infer type-equiv. and subtype relations

x + y, x == y, x := y, literals, ...

DB operations, calls, copybooks

Partial order of equivalence classes

O’Callahan ‘97: C Henglein ‘99: Y2K

WCRE’98, IWPC’99

Page 6: Understanding  Legacy Systems

ETAPS 99 6

Applications

Y2K & Euro

Constant (de)propagation

Program-level documentation

System-level signatures

Language migrations

Object identification

Page 7: Understanding  Legacy Systems

ETAPS 99 7

Object Identification

Legacy data structures attributes

Legacy functionality methods

SelectDomainConcepts

Persistent data types

Progrs low fan in/out

Combination:Candidate classes!

Page 8: Understanding  Legacy Systems

ETAPS 99 8

Concept Analysis

Concept (I, F ):

maximal set of items I II

sharing set of features F FF

From feature table T I I FF

generate all concepts

Lattice: (I1, F1) (I2, F2 ) I1 I2

Siff/Reps’97Lindig/Snelting’97IWPC’98, ICSE’99

Page 9: Understanding  Legacy Systems

9ETAPS 99

Concept

Fields

Progr. nrs

One field

Many fields

Page 10: Understanding  Legacy Systems

ETAPS 99 10

System Understanding

Analysis of legacy sources

Select good parts

Filter out hopeless elements

Combine & present in novel ways

Tool support rather than automation