CONTENTS Title Page Copyright Page Preface 1 Introduction 1.1 SCA Concepts and Features 1.1.1 SCA Terminology 1.2 Using SCA 1.2.1 Performing Queries with SCA 1.2.2 Getting Help 1.2.3 Using SCA Windows 1.2.4 Using SCA Batch Commands 2 Getting Started 2.1 Invoking SCA 2.2 Opening the Sample SCA Library 2.3 Performing SCA Queries 2.3.1 Using SCA Query Windows 2.3.2 Browsing for Names 2.3.3 Cross Referencing Information 2.3.3.1 Specifying a Cross-Reference Query 2.3.3.2 Viewing Cross-Reference Query Results 2.3.4 Creating Call Graphs 2.3.4.1 Specifying a Call Graph Query 2.3.4.2 Viewing Call Graph Query Results 2.3.4.3 Moving to a Routine's Source 2.3.5 Reviewing Data Structures 2.3.5.1 Specifying a Data Structure Query 2.3.5.2 Viewing Data Structure Query Results 2.3.6 Maintaining Multiple Queries 2.4 Exiting from SCA 3 Using SCA Libraries 3.1 Setting Up Your SCA Environment 3.1.1 Creating Analysis Data Files 3.1.2 Steps for Environment Setup 3.2 Creating a New SCA Library 3.3 Loading an SCA Library 3.4 Opening an Existing SCA Library 3.4.1 Replacing the Library List 3.4.2 Adding Libraries to the Library List 3.4.3 Repositioning Libraries in the Current Library List for DECwindows Motif, Version 1.1 3.5 Maintaining Your SCA Libraries 3.5.1 Reorganizing SCA Libraries 3.5.2 Deleting an SCA Library 3.5.3 Displaying Library and Module Information 3.5.3.1 Displaying Library Attributes 3.5.3.2 Displaying Modules and Module Attributes 3.5.3.3 Hiding Library and Module Attributes 3.5.4 Recovering SCA Libraries 4 Performing Queries 4.1 Performing Cross-Reference Queries 4.1.1 Cross-Referencing a Symbol by Name 4.1.2 Cross-Referencing by Symbol Usage 4.1.3 Limiting Queries to Specific Modules 4.1.4 Cross-Referencing by Symbol Type 4.1.5 Cross-Referencing by Symbol Domain 4.1.6 Limiting Queries to Specific Files 4.1.7 Go-To-Source Feature 4.1.8 Navigating to Other Query Windows 4.2 Performing Call Graph Queries 4.2.1 Displaying Calls From a Routine 4.2.1.1 Navigating a Large Display 4.2.1.2 Going to Source Code 4.2.2 Refining Your Query 4.2.2.1 Using the Negation Operator 4.2.2.2 Eliminating Extraneous Information 4.2.2.3 Removing Redundancy 4.2.2.4 Extending Information About a Routine 4.2.3 Selecting and Removing Items 4.2.3.1 Selecting Nodes 4.2.3.2 Removing Nodes 4.2.4 Formatting Your Display 4.2.4.1 Specifying Vertical Call Graphs 4.2.4.2 Redrawing the Graph 4.2.4.3 Specifying Lexical, Compact, and Graph Displays 4.2.5 Displaying Recursive Calls 4.2.6 Printing Call Graph Results 4.3 Performing Data Structure Queries 4.3.1 Using the Data Structure Query Attributes 4.3.2 Creating Type Trees 4.3.2.1 Extending a Type Tree 4.3.2.2 Selecting and Removing Nodes from a Type Tree 4.4 Modifying the Current Query 4.4.1 Keeping Items from the Previous Query Result 4.4.2 Removing Items from the Previous Query Result 4.4.3 Adding Items to the Previous Query Result 4.5 Using Multiple Queries 4.5.1 Moving to the Next or Previous Query 4.5.2 Navigating Through the List of Queries 4.5.2.1 Accessing the Query List 4.5.2.2 Selecting from the Query List 4.5.3 Deleting Queries 4.6 Modifying the Display Options 5 Using LSE and SCA to Design Programs 5.1 Introduction 5.2 Creating Designs 5.2.1 Designing Routine Declarations 5.2.2 Refining the Design 5.2.3 Designing Data Declarations 5.3 Processing Designs 5.3.1 Loading Design Information into an SCA Library 5.4 Analyzing Designs 5.5 Expressing Design Information in Comments 5.5.1 Using Tagged Comments 5.5.2 Adding New Tags and Keyword Lists 5.5.3 Associating Tags with Objects 5.6 Generating Design Reports 5.6.1 Using Design Report Formats 5.6.2 Creating Online HELP 5.6.3 Creating LSE Package Definitions 5.6.4 Creating INTERNALS Reports 5.6.5 Creating 2167A Software Design Reports 5.6.5.1 Describing 2167A Structure in your Code 5.6.5.2 Retrieving 2167A Structure Information 5.7 Reverse-Engineering a Design 5.7.1 Sample Report matrix_multiply