Indus - Java Program Slicer

Size: px
Start display at page:

Download "Indus - Java Program Slicer"

Transcription

1 Venkatesh Prasad Ranganath, Kansas State University Table of Contents Background... 1 Program Slicing... 1 Dependences... 1 Java Program Slicer... 2 Design and Architecture... 2 Design Rationale... 2 Architecture... 3 Implementation details... 5 Bird's eye view... 5 The Details... 7 Closing Note... 9 Bibliography... 9 Background Program Slicing Program slicing is a well known (at least in the research arena) program analysis technique that can be used to find the program points 1 affected by a given program point and vice versa. Given a program point the slicing algorithm identifies the program points that affect the given program point. The program in which the slice is identified is referred to as substrate program, the given program point is referred to as slice criterion, and the identified program points constitute a program slice w.r.t. the given criteria 2. A program slice constructed by identifying program points that affect a given program point is called a backward slice. A program slice composed of program points affected by a program point is called a forward slice. We use the term complete slice to indicate a program slice which is the union of both backward and forward slice w.r.t the given criteria. We refer to this aspect of the slice as type of the slice. It is clear to see that the program points identified as mentioned above may not constitute an executable program. Hence, we introduce the term executable slice to indicate that a slice is executable. Dependences The concept of a program point affecting/affected by another program point is captured as dependences. Dependence can be thought of as a relation between two program points x and y that indicates if x depends on y. In a dependence relation between x and y where x depends on y, we refer to x as the dependent and y as the dependee 3. There are many notions of dependences and data and control dependence are the most common and simple notions of dependences that can occur even in simple non-procedural sequential programs. In a 1 A program point may be an expression or a statement in a program. 2 We shall use criteria and slice criteria interchangeably. Likewise, we shall use slice and program slice interchangeably. 3 We shall often refer to dependent program points as the dependent and dependee program point as the dependee. 1

2 simple setting data dependence indicates if the variable being read at a program point is influenced by another program point at which the same variable is being written. Similarly, control dependence indicates if the flow of control to a program point is dependent on another program point. Given the notion of dependences, a program slice can be thought of as the transitive closure of the slice criteria based on dependence relation. Please refer to the user guide of StaticAnalyses module for more information about dependences. Java Program Slicer Most of the literature about program slicing concentrates on it's use for the purpose of program understanding. Lately there have been efforts to apply slicing in areas such as error detection [cite Snelting/ Krinke] and model size reduction in model checking [CorbettICSE00]. The last application has been our driving force to design and implement a program slicer for Java in Java. 4. Bandera is a tool kit that can be used to verify properties about a Java program via model checking. Given a property various tools are used to extract a model of the program from the source and verify if it has the given property, hence, verifying the program also has the property. During the process of extracting a model, we have applied a program slicing to prune out parts of the program that are not necessary to discharge the existence of the given property. Our first implementation of a Java program slicer was unsuccessful from 2 reasons. One reason was it was buggy. The second reason was that it was tightly coupled with Bandera. Both these reasons compelled us to design and implement a Java program slicer from scratch, hence, the current product and the document you are reading! Please refer to [HatcliffSAS99] for more information about slicing for the purpose of model checking. Design and Architecture Design Rationale Any one with a mind for software engineering will realize that dependence information and program slicing should not be tightly coupled as the latter depends on the former while the former does not depend on the latter. Hence, we have separated the slicer from dependence analyses. This means that the slicer module depends on "a" dependence module to provide the information it requires via a well defined "minimalistic" interface. Hence, the slicer can be composed with any implementation of the specified interface. Similarly, any application requiring dependence information can use the dependence analyses as is 5 The net effect being we were able to break down the previous single large chunk of the slicer into two smaller reusable modules. Our previous implementation of the slicer was monolithic as it was specifically designed and implemented for Bandera. Hence, it was geared to generate executable backward slices. As mentioned before this is just one type of a slice that can be generated. Our experience indicates that various types of slices and various properties required of the slice can be combined in various ways and not all combinations are valid. For example, it may be possible to collect minimal extra program points, such as return statements in procedures, along with minor alterations to the slice into a backward slice to make it executable such that the behavior of the slice is identical to that of the substrate program up until the program points that are the slice criteria. However, the same is not true for forward slices as the future state of the program depends on the previous states beyond the criteria, hence, requiring a backward slice from the criteria and this makes the slice a complete slice. This is the reason we decoupled the generation of a type of a slice and ensuring any property, such as executability, required of the slice. This is reflected "as is" in 4 In accordance with "Every good work of software starts by scratching a developer's personal itch", one of the 7 lessons in "The Cathedral and The Bazaar" document. 5 May be with a thin interface adaptation layer. 2

3 the design by having a module to generate the slice of a type while another module "massages" the generated slice so that it possesses the required property. We refer to the former module as the slicing engine and the latter is considered as part of post processing phase. Figure 1. The design of the Slicer Most literature on slicing do not make the distinction between the identification of the slice and the representation of the slice as they do not consider the end application. For those familiar with slicing this may seem rather too subtle and artificial but it is not. The reason being that by definition a program slice is the just some parts of the program picked based on some algorithm by tracking dependences and this process only concerns the identification of these parts and nothing more. The application that uses the slice decides on the representation of the slice. If the application is a visual program understanding tool, it may require the slice to be represented as tagged AST nodes. An application that validates program slicers will require that the slice to be residualized as a XML document which can be compared with another XML document containing the expected slice. If slicing was used to remove unnecessary code, say logging, from the code base as a form of optimization then slice will require the slice to residualized into executable form, say a class file in Java. This clearly indicates that the process of identification of the slice and the representation of the slice are two different activities and we have used this distinction to further modularize our design by breaking down the post processing into slice post processing phase and residualization phase. One major ramification of the above distinction is that it enables one to view program slicing as an analysis contrary to the traditional view as a program transformation. This may enable other transformations such as specialization to be combined with program slicing. Figure 1 provides a graphical illustration of various parts of the slicer along with their dependences based on control flow between them. This modularization of the slicer renders various parts of the slicer to be libraries which leads to another benefit: customization. Given these library modules the users will be able to assemble a slicer customized to their needs without much hassle. Architecture 3

4 The slicer is available as a single unit with many modules. Each module is assigned a particular functionality. The classes of a module may solely provide the functionality of the module or collaboratively provide the functionality along with other classes in the module. Each module will also provide a welldefined interface if the functionality is aimed for extension by the user. Based on this design principle, the following modules exist in the slicer. Figure 2 provides a UML style illustration of the modules and dependences between them. slicer slicer.processing slicer.transformations tools.slicer This module is responsible for the identification of the slice, hence, it contains factory classes required to generate slice criteria, classes that contain the algorithm to identify the slice, and classes to collect the identify the slice. In our implementation, we have chosen to identify the slice by annotating the AST nodes that are part of the slice. Note that as mentioned earlier, this is a plausible representation technique as well. This module contains various forms of post processing that can be performed on the identified slice in the slice post processing phase. For example, the functionality of making a sliced executable is realized as a class with a well-defined interface. The user can implement this interface to hook in another post processing strategy. This module contains classes that transform the program based on the identified slice. One may use other transformations which may be driven by the identified slice but was not intended to be driven by it. However, the basic intention was to capture the transformations that are specific to slicing in this module. Hence, the user would find classes that can be used to residualize a slice in this module. This module contains classes that package all the relevant parts required for slicing as a "slicer" facade or tool that can be readily used by the end application. The facades adhere to Indus Tool API for the sake of consistency and compositionality. Most first time users would want to start experimenting with the tool implementation available in this module and later use these classes as examples to assemble a dedicated "slicer". toolkits This module contains adapter classes that adapt facade/tool classes available in tools.slicer module to be amenable to a tool kit via preferably a tool API. For example, we adapt the facades for Bandera in and plan to do the same for Eclipse. Figure 2. UML-style dependence/relationship between various modules in the slicer 4

5 Implementation details This implementation uses Jimple from the Soot toolkit as the intermediate representation. Soot is available from the Sable group at McGill University. Hence, the object system should be represented in Jimple to use this slicer. The reader should be comfortable with the basic concepts of Soot. Each of the modules listed in the section called Architecture is a implemented as a Java package with the same name rooted in the package edu.ksu.cis.indus. Hence, the fully qualified Java package name of the module tools.slicer is edu.ksu.cis.indus.tools.slicer. However, we shall refer to the packages via their module-based name rather than with their fully qualified Java name for the sake of simplicity. Bird's eye view tools.slicer.slicexmlizercli is a class that uses the tools.slicer.slicertool 6 to generate the slice and it residualizes the slice as an XML document and each class in the slice as a Jimple file and a class file. Following is a snippet of the main code in this class. We will provide a walk through the main control flow of this class below. public static void main(final String[] args) { final SliceXMLizer _driver =... tools.slicer.slicertoolslicertool 5

6 } _driver.initialize(); _driver.execute(); _driver.writexml(); _driver.residualize(); protected final void execute() { slicer.settagname(nameofslicetag); slicer.setsystem(scene); slicer.setrootmethods(rootmethods); slicer.setcriteria(collections.empty_list); slicer.run(phase.starting_phase, true); } The XMLizer is created and initialized in the first 2 lines of main. This is followed by the execution of the slicer which is followed by the writing of the slice and the substrate program as XML document 7 writexml and the residualization of the slice as Jimple files and class files at residualize. These documents and class files are used as artifacts in the regression test framework used to test the slicer. As we mentioned earlier we use a annotation-based approach to identify the slice. We use the inherent support in Soot to tag AST nodes to identify the slice, hence, in this step we provide the name of the tag that should be used to annotate AST nodes of the substrate program to identify them as belonging to the slice. Soot uses a Scene as a abstraction of the system that is being operated on. All the classes and it's components can be accessed from the Scene via well defined interfaces. To use the slicer the user loads up the classes that form the system into a Scene and provide it to the slice in this step. Given just the criteria, the slicer can include parts of the system that may not be relevant in a particular run. Although this information is useful in impact analysis, it is overly imprecise in most cases. Hence, the user should identify the set of methods in the system that should be considered as entry point while generating the slice. The identified entry point methods or root methods (from the view of a call graph) is provided to the slicer in this step. The slice criteria is set in this step. However, it may be shocking that the code is passing an empty collection of criteria. As the slicer was designed and implemented as part of a larger model checking project, the SlicerTool has the logic that can be switched on to auto generate criteria which are crucial to detect deadlocks in the system. These criteria would correspond exactly to enter_monitor and exit_monitor statements. As for the part of toggling switches, SlicerTool is based on Indus Tool API which has inherent support for configuration based on XML data via a SWT-based GUI. Hence, the tools.slicer package comes with a default configuration that is used if none are specified and it controls the toggling of various switches. This default configuration will use all possible dependences in their most precise mode to calculate an executable backward slice that preserves the deadlocking property of the system. The wheels start to roll here. Although the invoked method is part of the Indus Tool API, the simplified under-the-hood view is that the tool is asked to verify if it's current configuration. If so, it is asked to execute. Please refer to the documentation of Indus for the details of the arguments. The slicer tool executes in 3 stages: starting/initial, dependence calculation, and slicing. If it seems that these phases depart from the phases mentioned earlier, it is because the tool is providing a facade. A user just wanting to customize the residualization process can extend SlicerTool to alter the post processing phase suitably and use the extended version. The classes from tools.slicer.processing and transformations.slicer will be used in the post processing phase. If he/she want more fine tuned customization then they are advised to put together a new facade on lines similar to that of SlicerTool according to their needs. 6

7 We will get into the guts of the slicer in the next section. Figure 3. SlicerTool Configuration GUI As the slicer adheres to Indus Tool API it comes with a built in configuration GUI (as illustrated in Figure 3) that can be used from inside the application using the slicer. The configuration logic comes with serialization and deserialization support as well. The Details In this section we shall deal with the implementation of the SlicerTool. In particular, we shall only 7

8 present the details of how the slicing engine is setup and driven to identify the slice which is later massaged via post processing. The following snippet is the only sequence of method invocations required on the slicing engine to identify a slice. void execute() {... engine.settagname(tagname); engine.setcgi(callgraph); engine.setslicetype( _slicerconfig.getproperty( SlicerConfiguration.SLICE_TYPE)); engine.setinitmapper(initmapper); engine.engine.setbasicblockgraphmanager(bbgmgr); engine.setanalysescontrolleranddependenciestouse( dacontroller, _slicerconfig.getnamesofdastouse()); engine.setslicecriteria(criteria); engine.initialize(); engine.slice(); postprocessslice(); } The root methods/entry point methods set on the SlicerTool earlier will be used to construct a call graph which will be used by the slicing algorithm to deal with interprocedural control flow. Hence, the call graph provided by ICallGraphInfo interface defined in StaticAnalysis project is provided to the engine in this step. The type of the slice is set in this step. Note that this does not specify anything about any additional property required of the slice. This is more of a residue of the fact that the instantiation of an object in Java is represented as 2 statements in Jimple. This is in accordance with the byte code format where the object is created by one instruction and later one initialized by another instruction. Hence, the coupling between an allocation site and the constructor invocation site needs to be explicated and this is provdied via an implementation of edu.ksu.cis.indus.interfaces.inewexpr2initmapper interface as it is done in this step. As a matter of optimization, rather than creating basic blocks of the graphs every time it is required, we cache the graphs via a edu.ksu.cis.indus.common.graph.basicblockgraphmgr class instance. Also, this makes it very easy to vary control flow graph representation used to create the basic block graph across all analyses and transformations being used. This manager instance is provided to the slicing engine in this step. In this step the slicing engine is provided with a analysis controller that was used to drive various analyses along with the IDs of the dependence analyses that should be considered while slicing. The analysis controller serves as reference container for the dependence analyses. The slicing criteria are provided to the slicing engine in this step. If the user wants to create slicing criteria on his own then he/she should use the slicer.slicecriteriafactory. In this step we request the slicing engine to initialize itself. This step should succeed for the slicer to function assuming the provided objects are in valid states. The slicing engine identifies the slice in this step by annotating/tagging the AST nodes that belong to the slice with a tag of the name provided to it. The call to postprocessslice method in the SlicerTool combines various post processing classes to massage the slice and the core of this method is given below. if (((Boolean) _slicerconfig.getproperty( 8

9 } SlicerConfiguration.EXECUTABLE_SLICE)).booleanValue()) { final ISlicePostProcessor _postprocessor = new ExecutableSlicePostProcessor(); _postprocessor.process(_methods, bbgmgr, _collector); if (_slicetype.equals(slicingengine.forward_slice)) { _gotoprocessor = new ForwardSliceGotoProcessor(_collector); } else if (_slicetype.equals(slicingengine.backward_slice)) { _gotoprocessor = new BackwardSliceGotoProcessor(_collector); } else if (_slicetype.equals(slicingengine.complete_slice)) { _gotoprocessor = new CompleteSliceGotoProcessor(_collector); } _gotoprocessor.process(_methods, bbgmgr); Closing Note The generated slice is massaged to make it executable, if required, in this step. Depending on the type of slice, a goto processor is picked. The purpose of this processing is to ensure that the control flow skeletal of the slice is identical to that of the substrate program as unconditional jumps are not considered by the slicing algorithm for the reason that they do not alter the control flow during execution. The slice is processed through the selected goto processor to provide a possibly extended slice. For the interested reader, _collector is an object that is used by the slicing engine to do bookkeeping operations pertaining to the identification of the slice. In particular, it annotates the AST nodes that are part of the slice and maintains auxiliary information about the identified slice. However, the users should be concerned with this class if they plan to add to the post processing phase. The XMLizing classes used by this project and it's parent and sibling projects use the xmlzing framework to drive the slicer. So, we urge you to peruse the source code of these classes before asking questions on the forum or the mailing list. We will be glad to answers any question you may have regarding the usage, but it probably would be faster if the user mocked an existing working piece of code while starting to use a new tool. The reader is encouraged to use the modules as is or to extend them as required. In the due process, the users are urged to submit bug reports of any bugs uncovered with suitable information about the triggering input and configuration. The interface of the modules are not fixed as the development team has not forseen all possible applications and tweaks to the slicer. Hence, the users are encouraged to raise change requests to the development team along with any feature requests they may have. However, please note that the development team may not be able to implement all requested features in which case they will assist by providing any information or alterations to enable the requested features. Please refer to Indus [ for more documentation, distribution, mailing list, forums, and links to other subprojects. We hope you have a pleasant experience using our product. Bibliography [HatcliffSAS99] John Hatcliff. James C. Corbett. Matthew B. Dwyer. Stefan Sokolowski. Hongjun 9

10 Zheng. A Formal Study of Slicing for Multi-threaded Programs with JVM Concurrency Primitives. Proceedings on the 1999 International Symposium on Static Analysis (SAS'99). Sep [CorbettICSE00] James C. Corbett. Matthew B. Dwyer. John Hatcliff. Shawn Laubach. Corina S. Pasareanu. Robby. Hongjun Zheng. Bandera: Extracting Finite-state Models from Java source code. Proceedings of the 22nd International Conference on Software Engineering (ICSE'00) June

Bandera: Extracting Finite-state Models from Java Source Code

Bandera: Extracting Finite-state Models from Java Source Code Bandera: Extracting Finite-state Models from Java Source Code James C. Corbet Matthew B. Dwyer John Hatcliff Shawn Laubach Corina S. Păsăreanu Robby Hongjun Zheng Presenter: Henrik Kragh-Hansen October

More information

Exploring the Suitability of Existing Tools for Constructing Executable Java Slices

Exploring the Suitability of Existing Tools for Constructing Executable Java Slices Exploring the Suitability of Existing Tools for Constructing Executable Java Slices Divya Iyer Submitted to the graduate degree program in Electrical Engineering and Computer Science and the Graduate Faculty

More information

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Program Partitioning - A Framework for Combining Static and Dynamic Analysis Program Partitioning - A Framework for Combining Static and Dynamic Analysis Pankaj Jalote, Vipindeep V, Taranbir Singh, Prateek Jain Department of Computer Science and Engineering Indian Institute of

More information

EINDHOVEN UNIVERSITY OF TECHNOLOGY

EINDHOVEN UNIVERSITY OF TECHNOLOGY EINDHOVEN UNIVERSITY OF TECHNOLOGY Department of Mathematics & Computer Science Exam Programming Methods, 2IP15, Wednesday 17 April 2013, 09:00 12:00 TU/e THIS IS THE EXAMINER S COPY WITH (POSSIBLY INCOMPLETE)

More information

A Slicer for UML State Machines

A Slicer for UML State Machines A Slicer for UML State Machines Vesa Ojala July 10, 2006 Abstract This document describes the data structures and algorithms used in an implementation of a slicer for UML state machines developed in the

More information

Analysis and Design with the Universal Design Pattern

Analysis and Design with the Universal Design Pattern Analysis and Design with the Universal Design Pattern by Koni Buhrer Software Engineering Specialist Rational Software Developing large software systems is notoriously difficult and unpredictable. Software

More information

DOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS

DOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS Chapter 1 : Chapter-wise Java Multiple Choice Questions and Answers Interview MCQs Java Programming questions and answers with explanation for interview, competitive examination and entrance test. Fully

More information

AADL Graphical Editor Design

AADL Graphical Editor Design AADL Graphical Editor Design Peter Feiler Software Engineering Institute phf@sei.cmu.edu Introduction An AADL specification is a set of component type and implementation declarations. They are organized

More information

Automatic Generation of Graph Models for Model Checking

Automatic Generation of Graph Models for Model Checking Automatic Generation of Graph Models for Model Checking E.J. Smulders University of Twente edwin.smulders@gmail.com ABSTRACT There exist many methods to prove the correctness of applications and verify

More information

Seminar report Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE

Seminar report Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE A Seminar report On Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE SUBMITTED TO: www.studymafia.org SUBMITTED BY: www.studymafia.org 1 Acknowledgement I would like

More information

UNIT II Requirements Analysis and Specification & Software Design

UNIT II Requirements Analysis and Specification & Software Design UNIT II Requirements Analysis and Specification & Software Design Requirements Analysis and Specification Many projects fail: because they start implementing the system: without determining whether they

More information

So, You Want to Test Your Compiler?

So, You Want to Test Your Compiler? So, You Want to Test Your Compiler? Theodore S. Norvell Electrical and Computer Engineering Memorial University October 19, 2005 Abstract We illustrate a simple method of system testing by applying it

More information

THE FOUNDATIONS OF MATHEMATICS

THE FOUNDATIONS OF MATHEMATICS THE FOUNDATIONS OF MATHEMATICS By: Sterling McKay APRIL 21, 2014 LONE STAR - MONTGOMERY Mentor: William R. Brown, MBA Mckay 1 In mathematics, truth is arguably the most essential of its components. Suppose

More information

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming Computer Science Journal of Moldova, vol.13, no.3(39), 2005 Concept as a Generalization of Class and Principles of the Concept-Oriented Programming Alexandr Savinov Abstract In the paper we describe a

More information

International Journal for Management Science And Technology (IJMST)

International Journal for Management Science And Technology (IJMST) Volume 4; Issue 03 Manuscript- 1 ISSN: 2320-8848 (Online) ISSN: 2321-0362 (Print) International Journal for Management Science And Technology (IJMST) GENERATION OF SOURCE CODE SUMMARY BY AUTOMATIC IDENTIFICATION

More information

Canonization Service for AProMoRe

Canonization Service for AProMoRe QUT Faculty of Science and Technology Canonization Service for AProMoRe Done by: Abdurrahman Alshareef Supervised by: Marcello La Rosa Semester 2-2010 Table of Contents Versions history...3 Preview...4

More information

JPred-P 2. Josh Choi, Michael Welch {joshchoi,

JPred-P 2. Josh Choi, Michael Welch {joshchoi, JPred-P 2 Josh Choi, Michael Welch {joshchoi, mjwelch}@cs.ucla.edu 1. Introduction Precondition and postcondition checking on methods aids the development process by explicitly notifying the programmer

More information

On the Definition of Sequential Consistency

On the Definition of Sequential Consistency On the Definition of Sequential Consistency Ali Sezgin Ganesh Gopalakrishnan Abstract The definition of sequential consistency is compared with an intuitive notion of correctness. A relation between what

More information

Annales UMCS Informatica AI 2 (2004) UMCS. An algorithm and case study for the object oriented abstraction.

Annales UMCS Informatica AI 2 (2004) UMCS. An algorithm and case study for the object oriented abstraction. Annales Informatica AI 2 (2004) 115-124 Annales Informatica Lublin-Polonia Sectio AI http://www.annales.umcs.lublin.pl/ An algorithm and case study for the object oriented abstraction Jakub Ratajczak Institute

More information

Evaluating the Effectiveness of Slicing for Model Reduction of Concurrent Object-Oriented Programs

Evaluating the Effectiveness of Slicing for Model Reduction of Concurrent Object-Oriented Programs University of Nebraska - Lincoln DigitalCommons@University of Nebraska - Lincoln CSE Book Chapters Computer Science and Engineering, Department of 2006 Evaluating the Effectiveness of Slicing for Model

More information

CPS221 Lecture: Threads

CPS221 Lecture: Threads Objectives CPS221 Lecture: Threads 1. To introduce threads in the context of processes 2. To introduce UML Activity Diagrams last revised 9/5/12 Materials: 1. Diagram showing state of memory for a process

More information

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014 Lesson 10A OOP Fundamentals By John B. Owen All rights reserved 2011, revised 2014 Table of Contents Objectives Definition Pointers vs containers Object vs primitives Constructors Methods Object class

More information

Concurrent Objects and Linearizability

Concurrent Objects and Linearizability Chapter 3 Concurrent Objects and Linearizability 3.1 Specifying Objects An object in languages such as Java and C++ is a container for data. Each object provides a set of methods that are the only way

More information

Creating a class from scratch with Soot

Creating a class from scratch with Soot Creating a class from scratch with Soot Feng Qian (fqian@sable.mcgill.ca) Patrick Lam (plam@sable.mcgill.ca) Chris Goard (cgoard@sable.mcgill.ca) February 4, 2005 This tutorial is based on the createclass

More information

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL 5.1 INTRODUCTION The survey presented in Chapter 1 has shown that Model based testing approach for automatic generation of test

More information

Compaq Interview Questions And Answers

Compaq Interview Questions And Answers Part A: Q1. What are the difference between java and C++? Java adopts byte code whereas C++ does not C++ supports destructor whereas java does not support. Multiple inheritance possible in C++ but not

More information

Measuring and Improving the Potential Parallelism of Sequential Java Programs

Measuring and Improving the Potential Parallelism of Sequential Java Programs Measuring and Improving the Potential Parallelism of Sequential Java Programs Thesis Presented in Partial Fulfillment of the Requirements for the Degree Master of Science in the Graduate School of The

More information

Static Analysis of Dynamic Languages. Jennifer Strater

Static Analysis of Dynamic Languages. Jennifer Strater Static Analysis of Dynamic Languages Jennifer Strater 2017-06-01 Table of Contents Introduction............................................................................... 1 The Three Compiler Options...............................................................

More information

Virtual Machine. Part II: Program Control. Building a Modern Computer From First Principles.

Virtual Machine. Part II: Program Control. Building a Modern Computer From First Principles. Virtual Machine Part II: Program Control Building a Modern Computer From First Principles www.nand2tetris.org Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 8:

More information

Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive.

Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive. Hi. My name is Jasper. Together with Richard we thought of some ways that could make a parallel approach to sequential flowsheeting attractive. Although it only partially related to CAPE-OPEN, this is

More information

CSE351 Winter 2016, Final Examination March 16, 2016

CSE351 Winter 2016, Final Examination March 16, 2016 CSE351 Winter 2016, Final Examination March 16, 2016 Please do not turn the page until 2:30. Rules: The exam is closed-book, closed-note, etc. Please stop promptly at 4:20. There are 125 (not 100) points,

More information

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1 Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies

More information

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Course Overview This course teaches programmers the skills necessary to create Java programming system applications and satisfies the

More information

The Dynamic Typing Interlude

The Dynamic Typing Interlude CHAPTER 6 The Dynamic Typing Interlude In the prior chapter, we began exploring Python s core object types in depth with a look at Python numbers. We ll resume our object type tour in the next chapter,

More information

Lecture Notes on Liveness Analysis

Lecture Notes on Liveness Analysis Lecture Notes on Liveness Analysis 15-411: Compiler Design Frank Pfenning André Platzer Lecture 4 1 Introduction We will see different kinds of program analyses in the course, most of them for the purpose

More information

SE Assignment III. 1. List and explain primitive symbols used for constructing DFDs. Illustrate the use of these symbols with the help of an example.

SE Assignment III. 1. List and explain primitive symbols used for constructing DFDs. Illustrate the use of these symbols with the help of an example. SE Assignment III 1. List and explain primitive symbols used for constructing DFDs. Illustrate the use of these symbols with the help of an example. There are essentially 5 different types of symbols used

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

THE CONCEPT OF OBJECT

THE CONCEPT OF OBJECT THE CONCEPT OF OBJECT An object may be defined as a service center equipped with a visible part (interface) and an hidden part Operation A Operation B Operation C Service center Hidden part Visible part

More information

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example

More information

Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology

Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False

More information

Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will investigate some of the implications of the principle of substitution in statically typed

More information

Design Patterns Reid Holmes

Design Patterns Reid Holmes Material and some slide content from: - Head First Design Patterns Book - GoF Design Patterns Book Design Patterns Reid Holmes GoF design patterns $ %!!!! $ "! # & Pattern vocabulary Shared vocabulary

More information

Compilers and computer architecture: A realistic compiler to MIPS

Compilers and computer architecture: A realistic compiler to MIPS 1 / 1 Compilers and computer architecture: A realistic compiler to MIPS Martin Berger November 2017 Recall the function of compilers 2 / 1 3 / 1 Recall the structure of compilers Source program Lexical

More information

Specification and Generation of Environment for Model Checking of Software Components *

Specification and Generation of Environment for Model Checking of Software Components * Specification and Generation of Environment for Model Checking of Software Components * Pavel Parizek 1, Frantisek Plasil 1,2 1 Charles University, Faculty of Mathematics and Physics, Department of Software

More information

Safety SPL/2010 SPL/20 1

Safety SPL/2010 SPL/20 1 Safety 1 system designing for concurrent execution environments system: collection of objects and their interactions system properties: Safety - nothing bad ever happens Liveness - anything ever happens

More information

From Craft to Science: Rules for Software Design -- Part II

From Craft to Science: Rules for Software Design -- Part II From Craft to Science: Rules for Software Design -- Part II by Koni Buhrer Software Engineering Specialist Rational Software Developing large software systems is notoriously difficult and unpredictable.

More information

Java EE Architecture, Part Two. Java EE architecture, part two 1

Java EE Architecture, Part Two. Java EE architecture, part two 1 Java EE Architecture, Part Two Java EE architecture, part two 1 Content Requirements on the Business layer Framework Independent Patterns Transactions Frameworks for the Business layer Java EE architecture,

More information

Software Architecture

Software Architecture Software Architecture Does software architecture global design?, architect designer? Overview What is it, why bother? Architecture Design Viewpoints and view models Architectural styles Architecture asssessment

More information

AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK

AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK Wilfrid Lefer LIUPPA - Université de Pau B.P. 1155, 64013 Pau, France e-mail: wilfrid.lefer@univ-pau.fr ABSTRACT VTK (The Visualization Toolkit) has

More information

SYMFONY2 WEB FRAMEWORK

SYMFONY2 WEB FRAMEWORK 1 5828 Foundations of Software Engineering Spring 2012 SYMFONY2 WEB FRAMEWORK By Mazin Hakeem Khaled Alanezi 2 Agenda Introduction What is a Framework? Why Use a Framework? What is Symfony2? Symfony2 from

More information

CPSC 444 Project Milestone III: Prototyping & Experiment Design Feb 6, 2018

CPSC 444 Project Milestone III: Prototyping & Experiment Design Feb 6, 2018 CPSC 444 Project Milestone III: Prototyping & Experiment Design Feb 6, 2018 OVERVIEW... 2 SUMMARY OF MILESTONE III DELIVERABLES... 2 1. Blog Update #3 - Low-fidelity Prototyping & Cognitive Walkthrough,

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

Multithreading and Interactive Programs

Multithreading and Interactive Programs Multithreading and Interactive Programs CS160: User Interfaces John Canny. Last time Model-View-Controller Break up a component into Model of the data supporting the App View determining the look of the

More information

DOMAIN-SPECIFIC ENVIRONMENT GENERATION FOR MODULAR SOFTWARE MODEL CHECKING OKSANA TKACHUK. M.S, Kansas State University, 2003

DOMAIN-SPECIFIC ENVIRONMENT GENERATION FOR MODULAR SOFTWARE MODEL CHECKING OKSANA TKACHUK. M.S, Kansas State University, 2003 DOMAIN-SPECIFIC ENVIRONMENT GENERATION FOR MODULAR SOFTWARE MODEL CHECKING by OKSANA TKACHUK M.S, Kansas State University, 2003 AN ABSTRACT OF A DISSERTATION submitted in partial fulfillment of the requirements

More information

Learning Objective. Project Objective

Learning Objective. Project Objective Table of Contents 15-440: Project 1 Remote File Storage and Access Kit (File Stack) Using Sockets and RMI Design Report Due Date: 14 Sep 2011 Final Due Date: 3 Oct 2011 Learning Objective...1 Project Objective...1

More information

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions) By the end of this course, students should CIS 1.5 Course Objectives a. Understand the concept of a program (i.e., a computer following a series of instructions) b. Understand the concept of a variable

More information

Developing a Multiagent Conference Management System Using the O-MaSE Process Framework

Developing a Multiagent Conference Management System Using the O-MaSE Process Framework Developing a Multiagent Conference Management System Using the O-MaSE Process Framework Scott A. DeLoach Department of Computing and Information Sciences, Kansas State University 234 Nichols Hall, Manhattan,

More information

Unit 1 Introduction to Software Engineering

Unit 1 Introduction to Software Engineering Unit 1 Introduction to Software Engineering João M. Fernandes Universidade do Minho Portugal Contents 1. Software Engineering 2. Software Requirements 3. Software Design 2/50 Software Engineering Engineering

More information

X-S Framework Leveraging XML on Servlet Technology

X-S Framework Leveraging XML on Servlet Technology X-S Framework Leveraging XML on Servlet Technology Rajesh Kumar R Abstract This paper talks about a XML based web application framework that is based on Java Servlet Technology. This framework leverages

More information

Verification of Java programs using networks of finite automata with discrete data.

Verification of Java programs using networks of finite automata with discrete data. Catholic University in Ružomberok Scientific Issues, Mathematica II, Ružomberok 2009 Verification of Java programs using networks of finite automata with discrete data. Bożena Woźna, Andrzej Zbrzezny Institute

More information

Instances and Classes. SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci. 24 Summer 1999 intelligence

Instances and Classes. SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci. 24 Summer 1999 intelligence Instances and Classes in SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci 24 Summer 1999 intelligence Software Engineering Over the past decade or so, one of the many areas that artificial intelligence

More information

By Chung Yeung Pang. The Cases to Tackle:

By Chung Yeung Pang. The Cases to Tackle: The Design of Service Context Framework with Integration Document Object Model and Service Process Controller for Integration of SOA in Legacy IT Systems. By Chung Yeung Pang The Cases to Tackle: Using

More information

Formal Verification of Control Software: A Case Study

Formal Verification of Control Software: A Case Study Formal Verification of Control Software: A Case Study Andreas Griesmayer 1, Roderick Bloem 1, Martin Hautzendorfer 2, and Franz Wotawa 1 1 Graz University of Technology, Austria {agriesma,rbloem,fwotawa}@ist.tu-graz.ac.at

More information

Frama-C s metrics plug-in

Frama-C s metrics plug-in Metrics Frama-C s metrics plug-in Magnesium-20151002 Richard Bonichon & Boris Yakobowski CEA LIST, Software Reliability Laboratory, Saclay, F-91191 2011 2013 CEA LIST CONTENTS Contents 1 Quick overview

More information

Let the dynamic table support the operations TABLE-INSERT and TABLE-DELETE It is convenient to use the load factor ( )

Let the dynamic table support the operations TABLE-INSERT and TABLE-DELETE It is convenient to use the load factor ( ) 17.4 Dynamic tables Let us now study the problem of dynamically expanding and contracting a table We show that the amortized cost of insertion/ deletion is only (1) Though the actual cost of an operation

More information

Problem with Scanning an Infix Expression

Problem with Scanning an Infix Expression Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix

More information

Lab 3. A Multi-Message Reader

Lab 3. A Multi-Message  Reader Lab 3 A Multi-Message Email Reader Due: Wed. 2/21 at 11PM (for Mon. aft. lab), Thurs. 2/22 at 5PM (for Mon. evening), or Thurs. 2/22 at 11 (for Tues. aft.) The goal in this week s lab is to exercise your

More information

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107 A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105

More information

Using JBI for Service-Oriented Integration (SOI)

Using JBI for Service-Oriented Integration (SOI) Using JBI for -Oriented Integration (SOI) Ron Ten-Hove, Sun Microsystems January 27, 2006 2006, Sun Microsystems Inc. Introduction How do you use a service-oriented architecture (SOA)? This is an important

More information

libcellml Documentation

libcellml Documentation libcellml Documentation Release 0.1 David Nickerson, Randall Britten August 27, 2014 Contents 1 Introducing the libcellml project 3 1.1 The motivation for the libcellml project................................

More information

Treewidth and graph minors

Treewidth and graph minors Treewidth and graph minors Lectures 9 and 10, December 29, 2011, January 5, 2012 We shall touch upon the theory of Graph Minors by Robertson and Seymour. This theory gives a very general condition under

More information

Motivation. ! Stop reinventing the wheel, try to reuse code! ! How do you organize code reuse? History: " Copy & Paste. " Collect useful files

Motivation. ! Stop reinventing the wheel, try to reuse code! ! How do you organize code reuse? History:  Copy & Paste.  Collect useful files Motivation 08 - Object-Oriented Libraries and Extensions! When you several systems, you notice that much of their code is similar.! Stop reinventing the wheel, try to reuse code!! How do you organize code

More information

Learning-Based Assume-Guarantee Verification (Tool Paper)

Learning-Based Assume-Guarantee Verification (Tool Paper) -Based Assume-Guarantee Verification (Tool Paper) Dimitra Giannakopoulou and Corina S. Păsăreanu NASA Ames Research Center, Moffett Field, CA 94035-1000, USA 1 Introduction Despite significant advances

More information

Java s Implementation of Concurrency, and how to use it in our applications.

Java s Implementation of Concurrency, and how to use it in our applications. Java s Implementation of Concurrency, and how to use it in our applications. 1 An application running on a single CPU often appears to perform many tasks at the same time. For example, a streaming audio/video

More information

COMP 250 Winter 2011 Reading: Java background January 5, 2011

COMP 250 Winter 2011 Reading: Java background January 5, 2011 Almost all of you have taken COMP 202 or equivalent, so I am assuming that you are familiar with the basic techniques and definitions of Java covered in that course. Those of you who have not taken a COMP

More information

Subject: Scheduling Region Questions and Problems of new SystemVerilog commands

Subject: Scheduling Region Questions and Problems of new SystemVerilog commands Subject: Scheduling Region Questions and Problems of new SystemVerilog commands I have read and re-read sections 14-17 of the SystemVerilog 3.1 Standard multiple times and am still confused about exactly

More information

Systems Architecture. Monolithic Systems

Systems Architecture. Monolithic Systems Systems Architecture Monolithic Systems 13 - Monolithic CSC407 1 no architecture Monolithic Systems reports static data imported data dynamic data 13 - Monolithic CSC407 2 1 Examples Most programs you

More information

Equality for Abstract Data Types

Equality for Abstract Data Types Object-Oriented Design Lecture 4 CSU 370 Fall 2008 (Pucella) Tuesday, Sep 23, 2008 Equality for Abstract Data Types Every language has mechanisms for comparing values for equality, but it is often not

More information

NST: A Unit Test Framework for Common Lisp

NST: A Unit Test Framework for Common Lisp Smart Information Flow Technologies (SIFT, LLC) TC-lispers, June 9, 2009 Outline 1 Unit testing 2 3 The basic idea Early implementations, and other lessons How it maybe should work 4 What is unit testing?

More information

Spring Interview Questions

Spring Interview Questions Spring Interview Questions By Srinivas Short description: Spring Interview Questions for the Developers. @2016 Attune World Wide All right reserved. www.attuneww.com Contents Contents 1. Preface 1.1. About

More information

Generating Continuation Passing Style Code for the Co-op Language

Generating Continuation Passing Style Code for the Co-op Language Generating Continuation Passing Style Code for the Co-op Language Mark Laarakkers University of Twente Faculty: Computer Science Chair: Software engineering Graduation committee: dr.ing. C.M. Bockisch

More information

Classes, interfaces, & documentation. Review of basic building blocks

Classes, interfaces, & documentation. Review of basic building blocks Classes, interfaces, & documentation Review of basic building blocks Objects Data structures literally, storage containers for data constitute object knowledge or state Operations an object can perform

More information

challenges in domain-specific modeling raphaël mannadiar august 27, 2009

challenges in domain-specific modeling raphaël mannadiar august 27, 2009 challenges in domain-specific modeling raphaël mannadiar august 27, 2009 raphaël mannadiar challenges in domain-specific modeling 1/59 outline 1 introduction 2 approaches 3 debugging and simulation 4 differencing

More information

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline Grade Weights Language Design and Overview of COOL CS143 Lecture 2 Project 0% I, II 10% each III, IV 1% each Midterm 1% Final 2% Written Assignments 10% 2.% each Prof. Aiken CS 143 Lecture 2 1 Prof. Aiken

More information

Threads SPL/2010 SPL/20 1

Threads SPL/2010 SPL/20 1 Threads 1 Today Processes and Scheduling Threads Abstract Object Models Computation Models Java Support for Threads 2 Process vs. Program processes as the basic unit of execution managed by OS OS as any

More information

1.1 Jadex - Engineering Goal-Oriented Agents

1.1 Jadex - Engineering Goal-Oriented Agents 1.1 Jadex - Engineering Goal-Oriented Agents In previous sections of the book agents have been considered as software artifacts that differ from objects mainly in their capability to autonomously execute

More information

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004

More information

To install Glamour on your Pharo image execute the following code:

To install Glamour on your Pharo image execute the following code: Glamour Chapter 1 Glamour with the participation of: Tudor Girba (tudor@tudorgirba.com) Browsers are a crucial instrument in understanding complex systems or models. A browser is a tool to navigate and

More information

CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures. Dan Grossman Autumn 2018

CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures. Dan Grossman Autumn 2018 CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Autumn 2018 Typical workflow concrete syntax (string) "(fn x => x + x) 4" Parsing Possible errors / warnings

More information

(Refer Slide Time: 01:40)

(Refer Slide Time: 01:40) Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #25 Javascript Part I Today will be talking about a language

More information

Executing Evaluations over Semantic Technologies using the SEALS Platform

Executing Evaluations over Semantic Technologies using the SEALS Platform Executing Evaluations over Semantic Technologies using the SEALS Platform Miguel Esteban-Gutiérrez, Raúl García-Castro, Asunción Gómez-Pérez Ontology Engineering Group, Departamento de Inteligencia Artificial.

More information

Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns

Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns Today we are going to talk about an important aspect of design that is reusability of design. How much our old design

More information

Thread Safety. Review. Today o Confinement o Threadsafe datatypes Required reading. Concurrency Wrapper Collections

Thread Safety. Review. Today o Confinement o Threadsafe datatypes Required reading. Concurrency Wrapper Collections Thread Safety Today o Confinement o Threadsafe datatypes Required reading Concurrency Wrapper Collections Optional reading The material in this lecture and the next lecture is inspired by an excellent

More information

Issues surrounding model consistency and QVT

Issues surrounding model consistency and QVT Issues surrounding model consistency and QVT Laurence Tratt, Tony Clark laurie@tratt.net, anclark@dcs.kcl.ac.uk December 6, 200. Introduction This document is intended to outline some of the issues surrounding

More information

Lecture Notes on Intermediate Representation

Lecture Notes on Intermediate Representation Lecture Notes on Intermediate Representation 15-411: Compiler Design Frank Pfenning Lecture 9 September 24, 2009 1 Introduction In this lecture we discuss the middle end of the compiler. After the source

More information

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published May 27, 2012

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published May 27, 2012 TIBCO BusinessEvents Extreme System Sizing Guide Software Release 1.0.0 Published May 27, 2012 Important Information SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED OR

More information

Program to an Interface, Not an Implementation

Program to an Interface, Not an Implementation Program to an Interface, Not an Implementation Early in the WeatherStation constructor: Barometer bar = new Barometer() ; Why is this problematic: WeatherStation depends on a specific implementation of

More information

Java Threads. COMP 585 Noteset #2 1

Java Threads. COMP 585 Noteset #2 1 Java Threads The topic of threads overlaps the boundary between software development and operation systems. Words like process, task, and thread may mean different things depending on the author and the

More information

Lecture Notes on Intermediate Representation

Lecture Notes on Intermediate Representation Lecture Notes on Intermediate Representation 15-411: Compiler Design Frank Pfenning Lecture 10 September 26, 2013 1 Introduction In this lecture we discuss the middle end of the compiler. After the source

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information