# Presentation: 006467

## SIAT C++ CSIP Presentation

- NASA Software IV&V Facility

- September 6, 2001

## What is SIAT?

- SIAT = Software Interface Analysis Tool
- SIAT provides language construct, variable set/usage, type usage, function usage, and dependency query capabilities to enhance analysis productivity
- SIAT facilitates understanding of source code by providing call, dependency, type hierarchy, and data flow graph capabilities
- SIAT has a syntax colored, hyperlinked web browser interface to a centralized source code repository for performing code, external interface, impact, and sustaining engineering analysis for multiple libraries

- NASA Software IV&V Facility

- September 6, 2001

## Code Analysis Tool Comparisons

- NASA Software IV&V Facility

- September 6, 2001

## Why SIAT?

- Provide analysis/engineering tool with no client side licensing costs
- Tool is controlled by IV&V – we can be responsive to specialized IV&V analysis needs
- Tool focuses on V&V and system assurance needs
- Not development/test needs (e.g. McCabe test paths)
- Aids in understanding how code is structured
- Pictorially presents calling structure, type hierarchy, file dependencies, data flow, control flow
- Query capabilities – constructs, symbol usage, strings

- NASA Software IV&V Facility

- September 6, 2001

## Version 1.0 Functionality

- Source code file browsing
- Syntax coloring, hyperlinked symbol references, context sensitive symbol definition/declaration menus
- Symbol usage queries
- Definition, declarations, uses, modifications
- Function call graphs
- Type hierarchy graphs
- Source file dependency graphs (#include’s)
- Data flow graphs (not officially in 1.0)

- NASA Software IV&V Facility

- September 6, 2001

## Milestones/Deliverables Review

- NASA Software IV&V Facility

- September 6, 2001

## Milestones/Deliverables Review	

- Past/Current
- SIAT C++ Software Requirements Specification (10/00)
- SIAT C++ Software Design Document (12/00)
- SIAT C++ Interface Design Review (12/00)
- SIAT Version 1.0 Software Test Descriptions (3/01)
- SIAT Version 1.0 Execution Software/Libraries (6/01)
- SIAT Version 1.0 Users Guide (6/01)
- SIAT Version 1.0 Demonstration (Today – 6/01)

- NASA Software IV&V Facility

- September 6, 2001

**Notes:**
Activity	Deliverable			Due Date  Quarter
A1	SIAT C++ Software Requirement Specification	10/27/00	1
A2	SIAT C++ Software Design Document	12/13/00	1
A3	SIAT C++ Interface Design Review 	12/13/00	1
A4	SIAT Version 1.0 Software Test Descriptions	3/30/01	2
A5	SIAT Version 1.0 Execution Software/Libraries	6/22/01	3
A6	SIAT Version 1.0 Users Guide		6/22/01	3
A7	SIAT Version 1.0 Demonstration		6/28/01	3
A8	SIAT Version 1.1 Execution Software/Libraries	9/21/01	4
A9	SIAT Version 1.1 Version Description Document	9/21/01	4
A10	SIAT Version 1.1 Installation Guide	9/21/01	4
A11	SIAT Version 1.1 Demonstration		9/26/01	4
A12	GFY2001 End-of-Year Report (inclusive of test results)					9/28/01	4

## Milestones/Deliverables Review	

- Future
- SIAT Version 1.1 Execution Software Libraries (9/01)
- SIAT Version 1.1 Version Description Document (9/01)
- SIAT Version 1.1 Installation Guide (9/01)
- SIAT Version 1.1 Demonstration (9/01)
- GFY2001 CSIP End-of-Year Report (9/01)
- GFY2002 Center Initiative for additional SIAT C/C++ functionality has been submitted

- NASA Software IV&V Facility

- September 6, 2001

## System Architecture

- NASA Software IV&V Facility

- September 6, 2001

## Host Platform Requirements

- Server (SIAT C++ Host Machine)
- Sun server running Solaris 2.5.1 or higher
- Netscape Enterprise Server 3.5 or higher
- Client (Software Analyst’s Host Machine)
- Desktop Machine with network connection
- Netscape Navigator 4.5+
- Internet Explorer 5+ (informally supported)

- NASA Software IV&V Facility

- September 6, 2001

## Client / Server System Architecture

- Server
- SIAT C++ Analyzer
- EDG C++ Front End Compiler
- Custom Perl/UNIX shell scripts
- SIAT C++ Engine
- One session/process per analyst
- Custom C code application
- Netscape Enterprise Server
- COTS Web Server
- DSM - Custom C code plug-in (for session management)
- Client
- Web Brower
- Netscape Navigator 4.5+
- Internet Explorer 5+ (informally supported)

- NASA Software IV&V Facility

- September 6, 2001

## Version 1.1 / 2.X Enhancements

- NASA Software IV&V Facility

- September 6, 2001

## Version 1.1 Enhancements

- Part of GFY2001 Center Software Initiative Effort – Delivery date 9/01
- Ability to query for all instances of particular constructs
- classes, structs, unions, pointers, derived classes, try statements, throw statements, catch statements
- Ability to search for text strings
- Search all source text/ code only/ comments only

- NASA Software IV&V Facility

- September 6, 2001

## Version 2.X Possible Enhancements

- GFY2002 CSIP submitted for enhancements
- Purchase/Integrate latest EDG C++ Front End
- More complete C++ language support
- Complete support for data flow graphs
- Control flow graphs for functions
- Global data flow using global identifier data
- Bookmark source code

- NASA Software IV&V Facility

- September 6, 2001

## Version 2.X Possible Enhancements

- Support for saving analysis session context
- Ability to attach /view analysis notes on lines in files
- Ability to view differences between versions of files
- Personal user presentation format preferences
- Login security to verify users

- NASA Software IV&V Facility

- September 6, 2001

**Notes:**
- Note:  Machine and web server access are currently restricted via firewall, web server rules, etc. – so the tool / data are not completely unprotected

## Version 2.X Possible Enhancements

- Calculate metrics such as cyclomatic complexity and essential complexity
- Show type usage information that is more specific than “referenced”, such as “used to define object” or “used as base class in child class definition”

- NASA Software IV&V Facility

- September 6, 2001

**Notes:**
- Note:  Machine and web server access are currently restricted via firewall, web server rules, etc. – so the tool / data are not completely unprotected

## SIAT C++ Version 1.0 Demo

- NASA Software IV&V Facility

- September 6, 2001

## SIAT C++ URL

- SIAT C++ has been deployed on the host shenandoah in Fairmont
- URL is http://shenandoah.ivv.nasa.gov:2222/siat

- NASA Software IV&V Facility

- September 6, 2001

## Click here to enter SIAT C++.

**Click here to enter SIAT C++.**

- NASA Software IV&V Facility

- September 6, 2001

## Enter your login information and click here.

**Enter your login information and click here.**

- NASA Software IV&V Facility

- September 6, 2001

## Click here to start a new session.

**Click here to start a new session.**

- NASA Software IV&V Facility

- September 6, 2001

## 1.)  Select the Libraries (CSCIs) that you would like to add to your Master Library.

**1.)  Select the Libraries (CSCIs) that you would like to add to your Master Library.**
**If a Library has multiple versions, select the version from the dropdown list.**
**For this example, only the “shape” Library, version 1.0 should be selected.**

**2.)  Click here to view the Master Library.**

- NASA Software IV&V Facility

- September 6, 2001

## The Master Library View displays the Libraries you have selected.

**The Master Library View displays the Libraries you have selected.**
**Click a Library link to begin browsing that Library.**
**In this example, only the “shape” Library was selected.**

- NASA Software IV&V Facility

- September 6, 2001

## The Library View displays the global identifiers associated with a given Library. The identifier’s name, kind, and containing source file are listed. 

**The Library View displays the global identifiers associated with a given Library. The identifier’s name, kind, and containing source file are listed. **
**Click on an identifier or its containing source file’s name to browse the source code. For this example click the identifier for the symbol “main()”.**

- NASA Software IV&V Facility

- September 6, 2001

## 1

**The Source View contains:**
**1.)  The Navigation Bar**
**2.)  The Source File Outline**
**3.)  The Hyperlinked Source Listing**
**Notice that “main()” is located at the top of the Source Listing.**

**1**

**2**

**3**

**Click the “Ellipse” identifier reference to locate its definition.**

- NASA Software IV&V Facility

- September 6, 2001

## When an identifier reference is clicked, the definition of the identifier is displayed at the top of the Source Listing.

**When an identifier reference is clicked, the definition of the identifier is displayed at the top of the Source Listing.**

- NASA Software IV&V Facility

- September 6, 2001

## When an identifier definition or declaration is clicked, the user is presented with a list of analysis actions that can be performed for that identifier.

**When an identifier definition or declaration is clicked, the user is presented with a list of analysis actions that can be performed for that identifier.**

**Click on “Ellipse” and select “Find References->All” to view all references to the identifier within the Library.**

- NASA Software IV&V Facility

- September 6, 2001

## A list of all identifier references for “Ellipse” within the Library are displayed as a result of the “Find References->All” command.

**A list of all identifier references for “Ellipse” within the Library are displayed as a result of the “Find References->All” command.**
**The user could have chosen to view only references in which the identifier was used or modified as well.**

**Click on a reference in the list to browse to the location in the Library’s source code where that identifier is referenced.**
**In this example, select the reference occurring on Line 71 of “shape.h”.**

- NASA Software IV&V Facility

- September 6, 2001

## The reference to the “Ellipse” identifier on Line 71 of “shape.h” is displayed at the top of the source file listing. This location is also added to the list of recently viewed items in the Navigation Bar.

**The reference to the “Ellipse” identifier on Line 71 of “shape.h” is displayed at the top of the source file listing. This location is also added to the list of recently viewed items in the Navigation Bar.**

- NASA Software IV&V Facility

- September 6, 2001

## Click on the “Circle” identifier in the definition of the “Circle” class. The popup menu is displayed again. This time, choose “Find Declaration” from the menu.

**Click on the “Circle” identifier in the definition of the “Circle” class. The popup menu is displayed again. This time, choose “Find Declaration” from the menu.**

- NASA Software IV&V Facility

- September 6, 2001

## A list of all declarations of the “Circle” class is displayed to the user.

**A list of all declarations of the “Circle” class is displayed to the user.**
**In this case, only the declaration that is also the definition of the class is displayed in the list.**
**Click the hyperlink to return to the “shape.h” file on Line 71.**

- NASA Software IV&V Facility

- September 6, 2001

## In the “shape.h” source listing, scroll up to Line 62 and click the declaration of the “Ellipse::draw” function. Again, the menu is displayed. This time, select “Find Definition” to locate the definition of this function in the Library.

**In the “shape.h” source listing, scroll up to Line 62 and click the declaration of the “Ellipse::draw” function. Again, the menu is displayed. This time, select “Find Definition” to locate the definition of this function in the Library.**

- NASA Software IV&V Facility

- September 6, 2001

## The definition of the “Ellipse::draw” function is displayed at the top of the Source Listing.

**The definition of the “Ellipse::draw” function is displayed at the top of the Source Listing.**

- NASA Software IV&V Facility

- September 6, 2001

## Return to the first location you browsed by selecting the last item from the Recent list.

**Return to the first location you browsed by selecting the last item from the Recent list.**

- NASA Software IV&V Facility

- September 6, 2001

## The Source Listing is displayed with “main()” positioned at the top.

**The Source Listing is displayed with “main()” positioned at the top.**
**Click on the identifier for “main()” and select “Show Call Graph” from the menu that appears to view a function call graph for the “main” function.**

- NASA Software IV&V Facility

- September 6, 2001

## The Graph View displays data as both indented textual list and graphical formats. The textual lists are always displayed first, followed by the graphical version.

**The Graph View displays data as both indented textual list and graphical formats. The textual lists are always displayed first, followed by the graphical version.**
**Scroll down to view the graphical view of the data.**

- NASA Software IV&V Facility

- September 6, 2001

## This is an example of the graphical view of graph data. Information in this view is represented as a collection of nodes connected by edges. The scrollbars and the controls to the left and at the bottom of the graph can be used to manipulate the graph for better viewing.

**This is an example of the graphical view of graph data. Information in this view is represented as a collection of nodes connected by edges. The scrollbars and the controls to the left and at the bottom of the graph can be used to manipulate the graph for better viewing.**

- NASA Software IV&V Facility

- September 6, 2001

## The Call Graph displays functions called by “main()” and the Caller Graph displays functions that call “main()” (none, of course!).

**The Call Graph displays functions called by “main()” and the Caller Graph displays functions that call “main()” (none, of course!).**
**Click on the hyperlink for the function named “Line::draw(Drawable &)” in the Call Graph.**

- NASA Software IV&V Facility

- September 6, 2001

## The Source Listing is displayed with the definition of “Line::draw” positioned at the top.

**The Source Listing is displayed with the definition of “Line::draw” positioned at the top.**
**Click “Rectangle” in the definition for the “Rectangle” class on Line 32. Next, select “Show Type Hierarchy” from the menu that appears.**

- NASA Software IV&V Facility

- September 6, 2001

## The Ancestors Graph shows those types from which “Rectangle” inherits and the Descendents Graph shows those types that inherit from “Rectangle”.

**The Ancestors Graph shows those types from which “Rectangle” inherits and the Descendents Graph shows those types that inherit from “Rectangle”.**
**Click on the node for the class named “Shape” in the Ancestors Graph.**

- NASA Software IV&V Facility

- September 6, 2001

## The source file containing the definition of the “Shape” class will be displayed. Scroll to the top of the Source Listing or click on “shape.h” in the Source Outline.

**The source file containing the definition of the “Shape” class will be displayed. Scroll to the top of the Source Listing or click on “shape.h” in the Source Outline.**
**At the top of the Source Listing you will see a hyperlink for the current source file (shape.h). Click this hyperlink and select “Show Dependency” from the menu that appears.**

- NASA Software IV&V Facility

- September 6, 2001

## The Files Included Graph shows the files included by “shape.h” and the Files Included By Graph shows the files that include “shape.h”.

**The Files Included Graph shows the files included by “shape.h” and the Files Included By Graph shows the files that include “shape.h”.**
**Click on the hyperlink for the file named “shapetest.cc” at Line 3 in the Files Included By Graph.**

- NASA Software IV&V Facility

- September 6, 2001

## The #include statement for “shape.h” on Line 3 is positioned at the top of the Source Listing.

**The #include statement for “shape.h” on Line 3 is positioned at the top of the Source Listing.**
**Click the variable named “c” on Line 7 and select “Find Related” from the menu that appears.**

- NASA Software IV&V Facility

- September 6, 2001

## The Related Items View displays source code identifiers that have been related by PUIIs. Each PUII is listed as well as the Library and Version to which the PUII applies. The symbols that are related by the PUII are listed in the last column.

**The Related Items View displays source code identifiers that have been related by PUIIs. Each PUII is listed as well as the Library and Version to which the PUII applies. The symbols that are related by the PUII are listed in the last column.**
**The user can click a PUII name to find out more about a specific PUII. The related symbols can also be clicked to perform the same operations that can be performed from the Source View.**

- NASA Software IV&V Facility

- September 6, 2001

## To end a SIAT C++ session, click the “SIAT C++” menu in the menu bar at the top of the page and select the “Exit SIAT C++” menu option.

**To end a SIAT C++ session, click the “SIAT C++” menu in the menu bar at the top of the page and select the “Exit SIAT C++” menu option.**
**Notice: This is the **_**only**_** proper way to exit from the SIAT C++ application!**

- NASA Software IV&V Facility

- September 6, 2001

## Wrap-up/Discussion

- NASA Software IV&V Facility

- September 6, 2001