100 likes | 224 Views
Understanding Legacy Systems. Arie van Deursen Tobias Kuipers Leon Moonen. Tooling Infrastructure. Lexical Analysis. Report Generator. Legacy Sources. Repository. Syntax Analysis. Cluster Analysis. Data flow Analysis. Visuali- zation. Filter & Abstract. Redocumentation.
E N D
Understanding Legacy Systems Arie van Deursen Tobias Kuipers Leon Moonen ETAPS 99
Tooling Infrastructure Lexical Analysis Report Generator Legacy Sources Repository Syntax Analysis Cluster Analysis Data flow Analysis Visuali- zation Filter & Abstract ETAPS 99
Redocumentation • Contents decided by maintenance team. • Technical system knowledge lost! • Automatic extraction • Manual: additional docs, overviews • Training, changes, estimates, ... ETAPS 99
Understanding Variables • 100 Kloc Cobol: • 25,000 different variables! • Cobol variable declarations: • Aggregation + byte representation • No types! ETAPS 99
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 ETAPS 99
Applications • Y2K & Euro • Constant (de)propagation • Program-level documentation • System-level signatures • Language migrations • Object identification ETAPS 99
Object Identification • Legacy data structures • attributes • Legacy functionality • methods Select Domain Concepts Combination: Candidate classes! Persistent data types Progrs low fan in/out ETAPS 99
Concept Analysis • Concept (I, F ): • maximal set of items I I • sharing set of features F F • From feature tableT I F • generate all concepts • Lattice: (I1, F1)(I2, F2 ) I1 I2 Siff/Reps’97 Lindig/Snelting’97 IWPC’98, ICSE’99 ETAPS 99
Many fields Progr. nrs Concept Fields One field ETAPS 99
System Understanding • Analysis of legacy sources • Select good parts • Filter out hopeless elements • Combine & present in novel ways • Tool support rather than automation ETAPS 99