Reading between the Lines ------------ Reading and Understanding Computer Programs

12/1/01


Click here to start


Table of Contents

Reading between the Lines ------------ Reading and Understanding Computer Programs

Course Outline

Why is this Program Hard to Understand?

Reasons

----------------------------------------

Introduction

The Basic Theorem

Psychological Models

What to Look for when Reading Programs?

----------------------------------------

Synchronized Refinement (SR)

SR Process Overview

Data Flow Diagram

What Questions

Recognition

Recognition

Abstraction

Abstraction

Design Decisions

Categories of Design Decisions

Design Decisions - 2

ZEROIN Design Decisions Figure 3a,b

Figure 3b,c

Design Knowledge

Annotation

Annotations

Opportunities for Automation

Software Refinery

Why Questions

Domain Based Program Reading

Domain Knowledge

Domains

Prerequisites for a Domain

Domain Characterization

Domain Models [Arango]

Domain Model Refinement

Refinement

Annotations

Annotations

Expectations

Expectation Generation

Software Architectures

Architecture Knowledge

Guidelines for using SR

Guidelines - 2

Automation Opportunities

Summary

----------------------------------------

Unraveling Control Flow

Control Flow Analysis

CFA Process

Control Flow Statements

Intraprocedural Analysis

Abstraction via Basic Blocks

Basic Blocks

Computing Basic Blocks

ZEROIN Basic Blocks

More Powerful Abstraction

Prime Programs

The Basic Prime Programs

Abstraction via Prime Programs

Prime Programs for ZEROIN

Abstraction - 3

ZEROIN Reading Order

Stumbling Blocks

Transforming ZEROIN

Interprocedural Control Flow Analysis

Call Graphs

An Example Call Graph

Constructing a Call Graph

Modularization

Automation

Summary

----------------------------------------

Wading through Ripple Effects

Definitions and Uses

Defs

Uses

Statements

Example

Definitions in ZEROIN

Ripple Effects

Examples

Data Flow Analysis

The Reaching Definitions Problem

Representation

The EXPOSED Set

Example

EXPOSED and PRESERVED Sets for ZEROIN Basic Blocks

Set Operations

Propagation

Steps

Example Reaching Definitions

ZEROIN Reaching Definitions

Ripple Effects

Data Flow and Program Understanding

Dealing with Multiple Subprograms

Automation

Summary

----------------------------------------

Using Application Domain Knowledge

Building a Domain Model

Vocabulary

Domain Vocabulary Generation

Root Finding Vocabulary

Ontology

Ontology Generation

Ontology for Root Finding

Representation Issues

Representations

Representation Survey

Representations - 2

Object Oriented Frameworks (OOFs)

Benefits of OOFs for Code Reading

ZEROIN Class Model

Trouble Areas

Automation via Dowsing

Dowser Architecture

Dowser Screen Shot

Summary

----------------------------------------

Architecture Extraction

Example

Software Architecture

Representation

Components

Connectors

Extraction Steps

Process Overview Diagram

ISVis Main View Diagram

Event Trace View Diagram

Tactics

Automation

Summary

----------------------------------------

The Future

Tutorial Summary

For More Information

Author: spencer

Email: spencer@cc.gatech.edu

Home Page: http://www.cc.gatech.edu/reverse