The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin Reengineering of Large-Scale Polylingual Systems Mark.

Slides:



Advertisements
Similar presentations
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
Advertisements

Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
CHAPTER 1: AN OVERVIEW OF COMPUTERS AND LOGIC. Objectives 2  Understand computer components and operations  Describe the steps involved in the programming.
Reverse Engineering © SERG Code Cloning: Detection, Classification, and Refactoring.
COMP171 Data Structure & Algorithm Tutorial 1 TA: M.Y.Chan.
Chapter 1 Introduction to Object- Oriented Programming and Problem Solving.
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming.
Computers: Tools for an Information Age
Programming Languages Structure
CS 290C: Formal Models for Web Software Lecture 6: Model Driven Development for Web Software with WebML Instructor: Tevfik Bultan.
Describing Syntax and Semantics
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Programming Logic and Design, Introductory, Fourth Edition1 Understanding Computer Components and Operations (continued) A program must be free of syntax.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 4 Object and Object-Relational Databases (Part ½: Object-Oriented Concepts) Lecturer: H.Ben Othmen Department of Computer Science, Umm Al-Qura.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Your Interactive Guide to the Digital World Discovering Computers 2012.
CS102 Introduction to Computer Programming
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming.
Chapter Introduction to Computers and Programming 1.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
An Introduction Chapter Chapter 1 Introduction2 Computer Systems  Programmable machines  Hardware + Software (program) HardwareProgram.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
UNIVERSITI TENAGA NASIONAL “Generates Professionals” CHAPTER 4 : Part 2 INTRODUCTION TO SOFTWARE DEVELOPMENT: PROGRAMMING & LANGUAGES.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming 1.
Chapter 1: Introduction to Computers and Programming.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1: Introduction to Computers and Programming.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Chapter 1: A First Program Using C#. Programming Computer program – A set of instructions that tells a computer what to do – Also called software Software.
A Z Approach in Validating ORA-SS Data Models Scott Uk-Jin Lee Jing Sun Gillian Dobbie Yuan Fang Li.
{ Graphite Grigory Arashkovich, Anuj Khanna, Anirban Gangopadhyay, Michael D’Egidio, Laura Willson.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Chapter 1: Introducing JAVA. 2 Introduction Why JAVA Applets and Server Side Programming Very rich GUI libraries Portability (machine independence) A.
From Code to XLIFF Bridging the Chasm Dr. Stephen Flinter Connect Global Solutions LRC Conference – 19 November 2003.
Computer Concepts 2014 Chapter 12 Computer Programming.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 11: Compiler II: Code Generation slide 1www.idc.ac.il/tecs.
Generic API Test tool By Moshe Sapir Almog Masika.
Computer Programs and Programming Languages What are low-level languages and high-level languages? High-level language Low-level language Machine-dependent.
Model Driven Development An introduction. Overview Using Models Using Models in Software Feasibility of MDA MDA Technologies The Unified Modeling Language.
Chapter 12 Computer Programming. Chapter Contents Chapter 12: Computer Programming 2  Section A: Programming Basics  Section B: Procedural Programming.
An Object-Oriented Approach to Programming Logic and Design Chapter 1 An Overview of Computers and Logic.
McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 4 Computer Software.
Efficient RDF Storage and Retrieval in Jena2 Written by: Kevin Wilkinson, Craig Sayers, Harumi Kuno, Dave Reynolds Presented by: Umer Fareed 파리드.
Module 4 Part 2 Introduction To Software Development : Programming & Languages Introduction To Software Development : Programming & Languages.
XML Grammar and Parser for WSOL Kruti Patel, Vladimir Tosic, Bernard Pagurek Network Management & Artificial Intelligence Lab Department of Systems & Computer.
Getting started with Programming using IDE. JAVA JAVA IS A PROGRAMMING LANGUAGE AND A PLATFORM. IT CAN BE USED TO DELIVER AND RUN HIGHLY INTERACTIVE DYNAMIC.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
FOUNDATION IN INFORMATION TECHNOLOGY (CS-T-101) TOPIC : INFORMATION SYSTEM – SOFTWARE.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
Cross Language Clone Analysis Team 2 February 3, 2011.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Connecting Architecture Reconstruction Frameworks Ivan Bowman, Michael Godfrey, Ric Holt Software Architecture Group University of Waterloo CoSET ‘99 May.
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
Chapter 1: Introduction to Computers and Programming.
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
Software, IEE Proceedings, Vol.152, Num.3, June 2005,Page(s): Prasanthi.S March, Java-based component framework for dynamic reconfiguration.
Introduction to Compiler Construction
CSCI-235 Micro-Computer Applications
Designing Software for Ease of Extension and Contraction
Presentation transcript:

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin Reengineering of Large-Scale Polylingual Systems Mark Grechanik, Dewayne E. Perry, and Don Batory

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 2 Polylingual Systems Polylingual systems consist of interoperating programs (or COTS components) that are written in two or more languages or are run on two or more platforms  Native type system is the type system of a host language in which a program is written  A program written in a host language interoperates with a program based on a Foreign Type System (FTS) PnPn PkPk P n  P k P n  P k

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 3 Examples of Polylingual Systems A C++ program and an EJB interoperate P C++ P Java P C++  P Java P C++  P Java A C# program and a Python program interoperate P C# P Python P C#  P Python P C#  P Python

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 4 Large-Scale Polylingual Systems P1P1 P2P2 P3P3 P4P4 … PnPn Polylingual systems can be represented as graphs of interoperating programs  Circles mean programs  Arrows mean interoperating APIs For a clique with n programs, the complexity of APIs used to interoperate programs is O(n 2 ) We need a scalable approach for designing, implementing, and maintaining large-scale polylingual systems!

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 5 Assumptions Reflection is available for all platforms The cost of reflection is insignificant  Hardware is powerful and cheap  Cost of network communications outweighs the cost of reflection the order of magnitude Polylingual systems are based on recursive type systems

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 6 Core Abstraction Int n = R[“CEO”][“CTO”][“Geeks”] CEO CFOCTO Test Geeks Name Bonus Name Salary Geeks CEO CTO Geeks

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 7 Operations On Reification Operators Copy Creates a copy of an element or attribute and adds it to its new location. All properties of an element or an attribute are cloned including all nested elements Move It is identical to the copy operation except for the automatic removal of the original element or attribute upon completion of copying Add It appends elements and attributes under a given path Remove It removes elements and attributes from the given path. If a removed element contains nested elements then the entire branch of the graph under the removed element is deleted Relational Compares graphs and their elements with constants, variables, or other graphs Logic set Computes various logic set operations such as intersection, union, cartesian product, complement, and difference Composition Composes two reification operators

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 8 Our Solution: Reification Object-Oriented Framework (ROOF) Basic idea: each component in a polylingual system is represented as a graph of objects and a uniform set of APIs is provided to navigate and manipulate these objects We use the generality of graphs to develop a language and platform-independent solution for polylingual systems Reification Object-Oriented Framework  Reify objects from an FTS to the host language  Remote objects become first-class objects  Reification is based on reflection  ROOF hides all the complexity that programmers have to deal with today

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 9 Birds-Eye View of the ROOF CORBA.NetXMLHTMLDBMS Reification Object-Oriented Framework (ROOF) Foreign Object Reification Language (FOREL)

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 10 … String s; s = R[“H2”][“B”][“FONT”]; … C++ Program Reification Mechanism <FONT size=“2"> Hello World! HTML Parser

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 11 Reification Mechanism R HTML C++ <FONT size=“2"> Hello World! HTML Parser from … String s; s = R[“H2”][“B”][“FONT”]; … C++ Program to

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 12 Reification Mechanism R HTML C++ <FONT size=“2"> Hello World! HTML Parser … String s; s = R[“H2”][“B”][“FONT”]; … C++ Program

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 13 Reification Mechanism R HTML C++ <FONT size=“2"> Hello World! HTML Parser … String s; s = R[“H2”][“B”][“FONT”]; … C++ Program R

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 14 Reification Mechanism R HTML C++ <FONT size=“2"> Hello World! HTML Parser H2 B FONT Hello World! … String s; s = R[“H2”][“B”][“FONT”]; … C++ Program H2B FONT S

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 15 … String s; s = R[“JCls”][“GetString”]; … C# Program Reification Mechanism class JCls { String GetString() { return( new String( “Hello World!”)); } Java Virtual Machine

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 16 R Java C# class JCls { String GetString() { return( new String( “Hello World!”)); } Java Virtual Machine Reification Mechanism from … String s; s = R[“JCls”][“GetString”]; … C# Program to

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 17 Reification Mechanism R Java C# class JCls { String GetString() { return( new String( “Hello World!”)); } Java Virtual Machine … String s; s = R[“JCls”][“GetString”]; … C# Program

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 18 Reification Mechanism R Java C# class JCls { String GetString() { return( new String( “Hello World!”)); } Java Virtual Machine … String s; s = R[“JCls”][“GetString”]; … C# Program R

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 19 Reification Mechanism R Java C# class JCls { String GetString() { return( new String( “Hello World!”)); } Java Virtual Machine … String s; s = R[“JCls”][“GetString”]; … C# Program JCls GetString Hello World! JCls GetString S

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 20 Properties of the ROOF Our solution does not introduce  Additional type systems  Hard-to-learn API  Special constraints that affect programmer’s decisions to share objects ROOF allows programmers to  Avoid using any naming mechanisms  Type check foreign objects at compile time  Other reasons

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 21 FORTRESS We exploit properties of FOREL-based code to recover high-level design of polylingual systems with a high degree of automation Our solution is FOReign Types Reverse Engineering Semantic System (FORTRESS)  Normalize code to conform to FOREL grammar  Analyze FOREL-based code using program analysis techniques (CFA and DFA)  Infer schemas that describe FTS models and operations executed against them

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 22 GUI Visualization Engine FORTRESS Process Normalized code Compiler Front end Program Analysis Schema Inference

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 23 FTS RE Algorithm 1) Parse the source code and build an AST 2) Build a control flow graph 3) Build a data flow graph 4) For each branch in the control flow graph do a) Detect reachability of statements accessing and manipulating reified types b) Create schema definitions from reified types c) Translate operations on reified type instances to operations of the schema definition elements d) Output the schema and operations on its instances 5) End For Program Analysis Schema Inference Output Generation

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 24 Schema Inference SELECT u.Name, c.Course FROM User u, Courses c WHERE u.ID = c.ID;  Two tables: User and Courses  Attributes Name and ID in User table  Attributes Course and ID in Course table  Declaration of attribute ID in both tables is the same or compatible

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 25 Schema Inference

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 26 Schema Inference in FTSs ReificationOperator R; float var = ; R[“CEO”][“CTO”](“Salary”) = var; What can we infer from this statement?  The structure of a branch of the data flow Composite type CEO of some FTS Attribute Salary of type CTO The type of this attribute and a value that it is assigned in this branch

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 27 Schema Inference in FORTS CEO CTO Salary R[“CEO”][“CTO”](“Salary”) = var; CEO CTO Salary

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 28 Synergy Program analysis and schema inference engine is a powerful combination  Create the schemas that reflect the semistructured data operated by the code  Relate different FTSs by analyzing a single FTS program  Create high-level design by relating actions to schemas rather than variables and functions IJ Q

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 29 Output Generation Outputs  schemas describing FTSs  instructions in readable format that manipulate instances of schemas Visualization Tool  Presents a single high-level view of FTSs  Models program execution and visualizes its aspects

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 30 FORTRESS Architecture FOREL code Compiler Front end Control Flow Analyzer Data Flow Analyzer Schema Inference Engine Visualization Driver GUI AST

The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin 31 Conclusion We show how the ROOF serves the underlying mechanism enabling the verification of large-scale polylingual systems  Reduce the complexity from O(n 2 ) to 1  Provide uniform API for graph navigation and manipulation with precise semantics assigned to operations Enable an effective reverse engineering process Removes pain associated with understanding of legacy software No existing solution addresses this problem