Copyright © 1999, Aonix 12.09.2015 1 Aonix ASIS Workshop ‘99 Overview What is holding ASIS back? Toolkit and Extensions Layers Guidelines Integrating tools.

Slides:



Advertisements
Similar presentations
Automating Software Module Testing for FAA Certification Usha Santhanam The Boeing Company.
Advertisements

Symbol Table.
Chapter 11 user support. Issues –different types of support at different times –implementation and presentation both important –all need careful design.
Modules Program is built out of components. Each component defines a set of logically related entities (strong internal coupling) A component has a public.
Intermediate Code Generation
The University of Adelaide, School of Computer Science
Programming Languages and Paradigms
CSI 3120, Implementing subprograms, page 1 Implementing subprograms The environment in block-structured languages The structure of the activation stack.
SOAP.
1 Compiler Construction Intermediate Code Generation.
1 CSC 551: Web Programming Spring 2004 client-side programming with JavaScript  scripts vs. programs  JavaScript vs. JScript vs. VBScript  common tasks.
Chapter 9 Subprograms Specification: name, signature, actions Signature: number and types of input arguments, number and types of output results –Book.
Abstract Data Types Data abstraction, or abstract data types, is a programming methodology where one defines not only the data structure to be used, but.
Systems Analysis and Design 9th Edition
ISBN Chapter 10 Implementing Subprograms.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
Visual Web Information Extraction With Lixto Robert Baumgartner Sergio Flesca Georg Gottlob.
Query Languages: Patterns & Structures. Pattern Matching Pattern –a set of syntactic features that must occur in a text segment Types of patterns –Words:
ISBN Chapter 10 Implementing Subprograms.
Semantics of Calls and Returns
The environment of the computation Declarations introduce names that denote entities. At execution-time, entities are bound to values or to locations:
Structure of Ada Programs Building a program from components Programming Languages Spring 2004.
Compiler Summary Mooly Sagiv html://
CASE Tools CIS 376 Bruce R. Maxim UM-Dearborn. Prerequisites to Software Tool Use Collection of useful tools that help in every step of building a product.
Chapter 9: Subprogram Control
The Structure of the GNAT Compiler. A target-independent Ada95 front-end for GCC Ada components C components SyntaxSemExpandgigiGCC AST Annotated AST.
1 CSCI 360 Survey Of Programming Languages 9 – Implementing Subprograms Spring, 2008 Doug L Hoffman, PhD.
Chapter 10 Implementing Subprograms. Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Semantics of Call and Return The subprogram call and return.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Angelika Menne-Haritz The MEX editor - METS and the presentation of digitised archives The MEX editor: METS and the Internet presentation of.
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
CIS Computer Programming Logic
XP New Perspectives on Browser and Basics Tutorial 1 1 Browser and Basics Tutorial 1.
Tutorial 1: Browser Basics.
{ Graphite Grigory Arashkovich, Anuj Khanna, Anirban Gangopadhyay, Michael D’Egidio, Laura Willson.
Porting Implementation of Packet Utilization Standard from ADA to JAVA Annelie Hultman (TEC-EME) Donata Pedrazzani (TEC-EMS) ESA/ESTEC 2004 JPUS de-briefing.
Compiler Construction
Chapter 10 Implementing Subprograms. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Chapter 10 Topics The General Semantics of Calls and Returns.
ITEC 320 Lecture 10 Packages (2). Review Packages –What parts do they have? –Syntax?
COMPILERS Symbol Tables hussein suleman uct csc3003s 2007.
Basic Semantics Associating meaning with language entities.
ADT ITEC 320 Lecture 22. ADT Review Generic lists –Ada compilation workout Recursive algorithms –What would a recursive copy look like? Project 4 is up.
CSC3315 (Spring 2008)1 CSC 3315 Subprograms Hamid Harroud School of Science and Engineering, Akhawayn University
Ch. 5 Ch. 51 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (more notes) Dr. Carter Tiernan.
Chapter 27 The World Wide Web and XML. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.27-2 Topics in this Chapter The Web and the Internet.
ISBN Chapter 10 Implementing Subprograms.
Chap#11 What is User Support?
Ch Ch jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (notes, notes, notes) Dr. Carter Tiernan.
Dictionary based interchanges for iSURF -An Interoperability Service Utility for Collaborative Supply Chain Planning across Multiple Domains David Webber.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Ch. 5 Ch. 51 jcmt Summer 2003Programming Languages CSE3302 Programming Languages (more notes) Summer 2003 Dr. Carter Tiernan.
CS562 Advanced Java and Internet Application Introduction to the Computer Warehouse Web Application. Java Server Pages (JSP) Technology. By Team Alpha.
Systems Analysis and Design 8th Edition
Chapter 10 Implementing Subprograms. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Chapter 10 Topics The General Semantics of Calls and Returns.
10-1 Chapter 10: Implementing Subprograms The General Semantics of Calls and Returns Implementing “Simple” Subprograms Implementing Subprograms with Stack-Dynamic.
ISBN Chapter 10 Implementing Subprograms.
Implementing Subprograms
Copyright © 2012 Pearson Education, Inc. Chapter 10 Advanced Topics.
Programming Languages Meeting 3 September 9/10, 2014.
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
ISBN Chapter 10 Implementing Subprograms.
AdaControl A free ASIS based tool J-P. Rosen Adalog.
Implementing Subprograms
Internet Made Easy! Make sure all your information is always up to date and instantly available to all your clients.
Run-Time Environments Chapter 7
Implementing Subprograms
Implementing Subprograms
Using ASIS to Generate C++ Bindings
Implementing Subprograms
Presentation transcript:

Copyright © 1999, Aonix Aonix ASIS Workshop ‘99 Overview What is holding ASIS back? Toolkit and Extensions Layers Guidelines Integrating tools Demonstration Brainstorming Data Decomposition Annex Tool Launchers Future Directions Promoting ASIS New Tools Other

Copyright © 1999, Aonix Aonix Expanding ASIS Steve Blake Aonix What is ASIS? The ASIS Toolkit The ASIS Extensions Guidelines Functionality Components for Integrated Tools Integrated Suite Demonstration An Interface to the Ada 95 Compilation Environment

Copyright © 1999, Aonix Aonix What is ASIS? Ada Source Code CompileLink A P L I C A T I O N SYSTEMSYSTEM

Copyright © 1999, Aonix Aonix Syntactic Information Object Latitude 0.0AB :=: List of IdentifiersSubtype IndicationInitial Expression Object Declaration Ada syntax is summarized in Ada 95 RM, Annex P as variant of Backus-Naur Form For example: object_declaration ::== defining_identifier_list : [aliased] [constant] subtype_indication [:= expression]; |... For the Ada object declaration => A,B: Latitude := 0.0; Syntactic Element Tree Representation => ASIS can extract desired syntactic information for every syntactic category Of the 367 ASIS Queries, most support syntactic tree analysis

Copyright © 1999, Aonix Aonix Semantic Information These mechanisms allow ASIS to traverse the syntactic tree like Hypertext allows one to traverse a document Type Latitude Range Defining Identifier Static Simple Expressions Full Type Declaration Real Range Specification Type Definition Real Type Definition Floating Point Definition Ada semantics are provided via mechanisms such as Corresponding_: Corresponding_Type_Declaration, Corresponding_Name_Definition, Corresponding_Called_Function, Corresponding_Called_Entity, Corresponding_Type, Corresponding_Body, Corresponding_Entry, etc. Object Latitude 0.0AB :=: List of IdentifiersSubtype IndicationInitial Expression Object Declaration Digits 8 Static Expression Corresponding_Name_Declaration A := A + B; Corresponding_ Name_Declaration Corresponding_Expression_Type

Copyright © 1999, Aonix Aonix Tools portable to Ada environments supporting ASIS Interface Examples of Tools Built on ASIS Ada Environment Code Restructuring Tools Code Browsing and Navigation Tools Coding Style and Standards Compliance Tools Cross Reference Tools Data Flow Analysis Tools Dependency Tree Analysis Tools Design Tools Document Generation Tools Invocation (Call) Tree Analysis Tools Language-sensitive Editing and Prettyprinting Tools Language Translation Tools Quality Assessment Tools Reverse Engineering Tools Re-Engineering Tools Safety & Security Compliance Tools Static Correctness Verifiers Tasking Analysis Tools Test-case Generation & Coverage Analysis Tools Usage, Quality, & Complexity Metrics Tools ASIS Interface

Copyright © 1999, Aonix Aonix What is Holding ASIS Back? ASIS has a steep learning curve –Large interface with few examples ASIS is primitive –It takes a lot of queries to make a tool ASIS only covers static semantics –Does not address dynamic program attributes ASIS is not complete –There are “holes” in the standard

Copyright © 1999, Aonix Aonix What is the Solution? Expand ASIS in 2 directions –Toolkit query layer Serve as examples to reduce the learning curve Higher level abstractions do more with less Portable and interchangable with different vendors –Extension layer Can address dynamic semantics Fills holes and gaps Not as portable as the Tookit layer

Copyright © 1999, Aonix Aonix The ASIS Toolkit Ada Environment ASIS Interface ASIS.Toolkit Layer Higher level, abstract, secondary queries built from ASIS primitives and other portable services

Copyright © 1999, Aonix Aonix The ASIS Extensions Ada Environment ASIS Interface ASIS.Toolkit Layer Higher level, abstract, secondary queries built from implementation, host, or target dependent services. Can use Toolkit layer. ASIS.Extensions Layer Host or Target

Copyright © 1999, Aonix Aonix Guidelines Make it Possible They allow vendors to independently build Toolkit and Extensions to ASIS that will: –Promote portability for tools using the interfaces –Organize additions along clear paths –Expand easily while avoiding name collisions –Enhance understandability and usability –Mix and match with toolkits from other vendors –Provide the foundation for integrated tool sets

Copyright © 1999, Aonix Aonix Guidelines Make it Possible Add ONLY TWO new child packages to ASIS –Asis.Toolkit –Asis.Extensions Vendors identify themselves as children and then add unlimited descendents –Asis.Extensions.GNAT –Asis.Toolkit.ObjectAda.Call Trees –Asis.Toolkit.Apex.Expressions

Copyright © 1999, Aonix Aonix Guidelines Make it Possible Toolkit queries are implemented with ASIS primitives, other Toolkit queries, or common portable services and data structures. Extensions interfaces can make use of vendor specific, host or target dependent and other non-portable services. Can use Toolkit queries.

Copyright © 1999, Aonix Aonix Toolkit Functionality is Limitless Initialize and Finalize the environment and context Select compilation units (using filters, wild carding) Classify elements (Is_Package, Is_Task, Is_Global, …) Classify types (cut through derivations and privates) Object Oriented queries (Controlling_Parameter, Corr_Tagged_Type) Provide Lists, Trees, Sorting and other utilities Offer generic report templates Build iterative structures like Call Trees, Dependency Graphs Perform Source Transformations

Copyright © 1999, Aonix Aonix Extension Functionality  Type and object sizes and alignments  Record layout information: component positions, first_bit, width  Array ranges and component sizes  Subprogram frame sizes and stack offsets of local objects  Addresses of subprograms, tasks, data within a target specific partition or program  Filename, directory, or other host dependent functions

Copyright © 1999, Aonix Aonix An Integrated Tool Suite Toolkit and Extensions queries provide the building blocks for individual tools Asis.Extensions.ObjectAda.HTML is a simple interface that can glue individual tool output into an easily navigated set of reports

Copyright © 1999, Aonix Aonix package Asis.Extensions.ObjectAda.HTML is Operations to form HTML anchors and links function Anchor (Declaration : in Asis.Declaration) return String; Returns an HTML anchor created for the Declaration function Link (URL : in String; Anchor : in String; Image : in String) return String; -- Returns an HTML link created from the Image to its URL and Anchor function Link (Anchor : in Asis.Declaration; Image : in String) return String; Returns an HTML link created from the Image to the Anchor function Link (Expression : in Asis.Expression) return String; Returns an HTML link created from the Expression to its -- declaration end Asis.Extensions.ObjectAda.HTML;

Copyright © 1999, Aonix Aonix Tool Suite: Source Navigator Transforms the original source into a browsable file with links connecting semantically related elements. –Names linked to declarations –Declarations linked to completions –Bodies linked to corresponding declarations

Copyright © 1999, Aonix Aonix Tool Suite: Profiler Creates compilable copy of the source and inserts a unique controlled object declaration in callable entities The controlled object’s Adjust and Finalize procedures are invoked whenever a callee’s scope is entered and exited. The callee’s count and timing information is collected and saved at runtime. A report tool constructs the profile report with links to the Navigator sources.

Copyright © 1999, Aonix Aonix Tool Suite: Call Tree Report Uses the Toolkit Call_Trees package to build a call tree of a main program Walks the Call_Tree using the generic traverse routine and generates the output report. The tool constructs the call tree report with local anchors and links to the Navigator sources.

Copyright © 1999, Aonix Aonix Integrated Tool Output with Navigation Links Profiler Report Elapsed time: seconds. ACCEPT Pack_is_a_prime.Task_is_prime.start Id calls using seconds (% ) TASK Main180.Calc Id 5 30 calls using seconds (% ) TASK Pack_is_a_prime.Task_is_prime Id calls using seconds (% ) PROC Main180 Id 6 30 calls using seconds (% ) TASK Testprofiler.Do_Main Id 7 2 calls using seconds (% ) procedure Main180 IS Thread_1 : Task_factorial; Thread_2 : Task_factorial; Thread_3 : Task_is_prime; Factorial: Positive; Prime : Boolean; task Calc is entry Go; end Calc; task body Calc is separate; begin Calc.Go; Thread_1.Finish( factorial ); -- Obtain result with main180; with Ada.Text_IO; procedure Testprofiler is I : Integer; task type Do_Main is entry Go; end Do_Main; task body Do_Main is separate; T1, T2: Do_Main; separate(Main180) task body Calc is begin accept GO; Thread_1.Start(5); -- Start factorial calculation Thread_2.Start(7); -- Start factorial calculation delay 1.0; --### DEBUG Thread_3.Start(97); -- Start is_prime calculation end Calc; ~ procedure Main180 IS Call Tree Report Testprofiler | entry T1.Go at line 45 | entry T2.Go at line 46 | procedure Proc1 at line 48 | | function "+" at line 30 | | function "<" at line 31 | | procedure Proc1 at line 32 * RECURSIVE * * REPEAT * | procedure Main180 at line 49 | | entry Calc.Go at line 22 | | entry Thread_1.finish at line 24 | | procedure Put at line 25 | | procedure Put at line 26 * REPEAT * | | function Positive at line 26 | | procedure New_Line at line 26 | | entry Thread_2.finish at line 28 | | procedure Put at line 29 * REPEAT * | | procedure Put at line 30 * REPEAT * | | function Positive at line 30 | | procedure New_Line at line 30 * REPEAT * | | entry Thread_3.finish at line 32 | | procedure Put at line 33 * REPEAT * | | procedure Put at line 34 * REPEAT * | | procedure New_Line at line 34 * REPEAT * | procedure Proc1 at line 50 * REPEAT * | procedure Proc2 at line 51 | | procedure Proc1 at line 38 * REPEAT *

Copyright © 1999, Aonix Aonix How to Get ASIS Artifacts (including Toolkit interfaces) Also mirrored on sw-eng host for ftp on Internet => sw-eng.falls-church.va.us ASIS 95 specification is complete and ready for use: (Microsoft Word, postscript, ASCII, & HTML) ASIS is now available as ISO/IEC International Standard ISO/IEC 15291:1999 Information technology — Programming languages — Ada Semantic Interface Specification (ASIS) ASIS Home Page => Also available are tutorials, papers, examples, bibliography