Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Senior Design

Final Report
by

alexf4 k

on 30 April 2010

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Senior Design

Planning Need Statement Atlas is an Eclipse plug-in that analyzes the internal structure of C source code

Problem
Has a domain specific query language
Cannot script query function calls
No query storage for future use Goal
Construct queries using a general purpose language
Enable complexity in software analysis via Atlas Second Eclipse plug-in, called Zeus
Supports the scripting of Atlas queries
Supports storing queries for use in future sessions
Provides the ability to load and edit scripts in Eclipse In a nutshell:
Parse a query script input file
Interpret the query script
Execute Atlas API calls Analogous to the interaction between Java and SQL No environmental concerns
Strictly a software project
End-product used in a classroom/office environment
Factors such as dust and heat were not considered in design The user interface is an extension of the Eclipse GUI.
Many elements are the same, such as a menu bar and simple buttons.
The user is able to enter queries into a text field and a simple way to launch them.
The results of the queries are shown in Atlas or in an XML document. Software
Java
Eclipse Ganymede 3.4.2
Atlas Plug-in
Graphviz
Hardware
PC
Keyboard/Mouse
Monitor System shall
execute script queries as Atlas queries.
provide the user the ability to store query scripts.
provide the user the ability to create query scripts.
provide the user the ability to edit query scripts.
compose queries (filtering).
project queries.
display query script results as an Atlas artifact list.
display query script results of Atlas artifacts in a table layout.
display query script results as an Atlas graph.
End-Product
Zeus Application
User Manual Course Requirements
Project Plan
Design Document
Project Poster
Final Report
IRP Presentation & Final Demonstration
Website
Weekly Reports Task 1: Problem Definition
Task 2: Technology Considerations and Selection
Task 3: End-Product Design
Task 4: End-Product Prototype & Implementation
Task 5: End-Product Testing
Task 6: End-Product Documentation
Task 7: End-Product Demo
Task 8: Project Reporting Team Member Loss
Acquisition of Atlas APIs
Lack of Eclipse Plug-in Development Experience Input
All input done via the Eclipse IDE
User selects a script and clicks the run button.
Zeus obtains the JavaScript from the selected file.
Output
Eclipse displays all graphical system output.
Graphical display is invoked by a call to Atlas.
List and table output is written to a file stored in the Eclispe workspace.
Provides
An editor for the query scripts.
A manner to display query results.
A manner to open, close, save, and run a query script. Hardware
None Software
Eclipse Ganymede 3.4.2
Atlas Plug-in
Graphviz SD- May1020 Kristina Gervais Alex Kharbush Cole Anagnost Project Need Concept Description Concept Sketch Block Diagram Operating Environment User Interface Requirements Functional Requirements Non-Functional Requirements Market / Literature Survey Deliverables Work Breakdown Resource Requirements Project Schedule Risks System Requirements Functional Decomposition HW/SW Specifications I/O Specifications User Interface Specification Test Plan Test Results Lessons Learned Future Work Performance Requirements
None Reliability & Availability
None Portability
Shall not be OS specific (although its dependencies may be).
Shall fail gracefully with an appropriate error message.
Shall not close the program when failure occurs.
Shall not be subject to stack overflow creating system failure.
Shall not crash due to invalid input.
Shall not cause memory leaks. Other Requirements
Shall include a user manual.  Unable to find a tool that accomplishes our goal
Number of tools exist that have some similar attributes to what we were trying to accomplish
Most similar tool is Kaveri developed at Santos Laboratories, Kansas State University.

Auto saving the graphs
Allow user to specify where output files are saved
Export results into different formats
Right click option to run JS files
Add support for future Atlas queries


Market and literature survey
Importance of configuration
Interactions with developers
Impact of changing requirements
Dr. Suraj Kothari , EnSoft Corp. Agenda Zeus - Query Scripting Project Requirements
Project Plan
System Design
Project Closure
Provides a scripting based query framework for Java applications
Accessible via the Eclipse framework
Powered by the underlying Indus toolkit Atlas API Wrapper Test Scripts
Each call one API query function
Results compared to same query made manually via Atlas
Graph Test Scripts
Only create a graph based on given input
Visually compared to the graph made in Atlas with the same input
Research Based Test Scripts
Most complicated test scripts
Use loops to call same query multiple times
Make many different API calls
Compose and project query results within the script
Manually compared results of the scripts to previous research results
JUnit
Test file operations //Creation of an IFunctionArtifact
var IFAGetBuf = af.createFunction("getbuf");
var IFAFreeBuf = af.createFunction("freebuf");

//Create an IArtifacts object
var IArtifacts = af.createArtifacts();
var IArtifacts2 = af.createArtifacts();

//Create an empty IArtifacts object
//We will use this to pas into showGraph
var empty = af.createArtifacts();

//Add the IFunctionArtirfact to the collection IArtifacts
IArtifacts.add(IFAGetBuf);
IArtifacts2.add(IFAFreeBuf);

//or them together into a base
var base = aq.or(IArtifacts, IArtifacts2);



//find the rcg of the base
var rcg = aq.rcg(base);

var call = aq.call(base);

//manual input, will work on later
var functions = [];
functions[0] = aq.functions(af.createString("ds.*"));
functions[1] = aq.functions(af.createString("ls.*"));
functions[2] = aq.functions(af.createString("ib.*"));

//for loop to go threw array
for (x in functions){

var bot = aq.and(call, functions[x]);
var r1 = aq.rcg(bot);
var roots = aq.roots(r1);

//Name of the graph
var name = "Graph Test";

//Pass the name and Results to the graph
out.showGraph(name, roots, base,empty, empty,empty,empty);} Zero outstanding bugs!
Full transcript