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 DecisionsFigure 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
|