Automating Big Refactorings for Componentization and the Move to SOA
|
|
- Joshua Fleming
- 5 years ago
- Views:
Transcription
1 Automating Big Refactorings for Componentization and the Move to SOA IBM Programming Languages and Development Environments Seminar 2008 Aharon Abadi, Ran Ettinger and Yishai Feldman Software Asset Management Group IBM Haifa Research Lab
2 Background What is Refactoring? The process of gradually improving the design of an existing software system by performing source code transformations that improve its quality in such a way that it becomes easier to maintain the system and reuse parts of it, while preserving the behavior of the original system For example: Extract Method void printowing(double amount) { printbanner(); // print details print( name: + _name); print( amount: + amount); } Source: Martin Fowler s online refactoring catalog 2 void printowing(double amount) { printbanner(); printdetails(amount); } void printdetails(double amount) { print( name: + _name); print( amount: + amount); }
3 Prior Art Refactoring to Design Patterns + 3
4 Our Interest: Big Refactorings Enterprise Architecture Patterns 4
5 The Gap: Techniques and Tools for Enterprise Refactoring?? 5
6 Automating Big Refactorings Enterprise Refactorings Separate Presentation Code from Business Logic (introduce the MVC pattern), Extract Reusable Services (implementing SOA), etc. Composition Small Refactorings Rename Paragraph, Split/Merge Paragraphs, Extract/Inline Paragraph/Section/Program, Extract Slice, Swap Consecutive (Independent) Statements/Sentences/Paragraphs/Sections, Split/Merge (Consecutive) Conditionals, Loop-Invariant Code Motion, etc. Required Quality Flexibility Allow (user-determined) choice between alternatives Applicability Avoid unnecessary rejections by precise identification of (weak) preconditions Reliability* Guarantee behavior preservation Enabling Technology Deep Program Analysis Program analysis infrastructure for legacy enterprise software systems: A powerful static analysis infrastructure using the plan-calculus intermediate representation 6 * See for examples of bugs in modern IDEs
7 Example: Introduce the MVC Pattern 7
8 As-Is Version: Photo Album Web Application Source: Alex Chaffee, draft Refactoring to MVC online article,
9 To-Be Version: Photo Album Web Application View Presentation Model Controller Source: Alex Chaffee, draft Refactoring to MVC online article, 2002 Model 9
10 Small Refactorings on the move to MVC All kinds of renaming Variables, fields, methods, etc. Extracting program entities Constants, local (temp) variables, parameters, methods (Extract Method, Replace Temp with Query, Decompose Conditional), classes (Extract Class, Extract Superclass, Extract Method Object) Some reverse refactorings too, to inline program entities Moving program entities Constants, fields, methods (Move Method, Pull-Up Method), statements (Swap Statements), classes Replace Algorithm 10
11 Shortcomings of Eclipse on the move to MVC Missing implementation for key transformations Extract Class, Extract Method Object Buggy implementation of some refactorings Extract/Inline Local Variable: Ignores potential modification of parameters (on any path from source to target location) See for examples of bugs in (earlier releases of) modern IDEs Restricted implementation of existing refactorings Extract Method: contiguous code only; weak control over parameters Move Method: Source class must have a field with type of target class Extract Local Variable: No control over location of declaration 11
12 Thanks! 12
13 Backup 13
14 Internal Representation: The Plan Calculus Wide-spectrum Specification to implementation Canonical Abstracts away from syntactic variations Language independent All legacy languages have similar capabilities Expressive Directly expresses program semantics in terms of dataflow and control-flow Convenient for machine manipulation Naturally expresses semantic transformations Rich, C A formal representation for plans in the programmer's apprentice. In Readings in Artificial intelligence and Software Engineering, C. Rich and R. C. Waters, Eds. Morgan Kaufmann Publishers, San Francisco, CA,
15 Program Sliding A family of provably-correct code-motion untangling transformations Automate slice extraction: Sequential composition of a selected slice with its complement (i.e. co-slice); Useful for refactoring, componentization, the move to SOA, obfuscation, etc. Combine statement reordering with code duplication, including duplication of assignments Sliding is particularly strong in Preserving behavior Maximizing reuse (of extracted computation s results, in the complement) Minimizing code duplication, i.e. yielding a smaller, more desirable complement; Improving applicability, i.e. less reasons to reject a request Benefit from the best of leading earlier solutions without suffering some of their respective deficiencies MOVE 0 TO TOTAL-SALE MOVE 0 TO TOTAL-PAY PERFORM VARYING i FROM 1 BY 1 UNTIL i > DAYS ADD SALE(i) TO TOTAL-SALE COMPUTE TOTAL-PAY = TOTAL-PAY + 0.1*SALE(i) IF SALE(i)>1000 ADD 50 TO TOTAL-PAY END-IF END-PERFORM COMPUTE PAY = TOTAL-PAY / DAYS COMPUTE PROFIT = 0.9*TOTAL-SALE - COST Example source: Lakhotia and Deprez (rewritten in COBOL) 15
16 Towards a COBOL Refactoring Catalog Rename Paragraph This refactoring might look trivial, but as it is with the renaming of variables, it must be done with care: the new name must be valid, it must not conflict with existing names, and it must be replaced correctly in each call (PERFORM, GO TO, etc.), without violating any column restrictions Split/Merge Paragraphs When merging two consecutive paragraphs, one must check the second is not referenced, or if it is, its reference must always follow a call to the first paragraph such that the two calls can be merged. Similarly, one must verify that any call to the first paragraph is either followed by a call to the second, or it must be a non-returning call that implies fall-through to the second paragraph Extract/Inline Paragraph/Section/Program Could support clone detection too, such that upon extraction, the tool will identify (at least exact) clones of the selected code, and suggest to replace it too with a call to the newly introduced program Extract Slice (through Sliding) First support the extraction of the code for computing a set of variables in a selected compound statement (or sentence); later add support for extraction from internal program points, i.e., the slicing criteria involves pairs of program point and (sets of) variables of interest (at that particular point); and finally support arbitrary method extraction, i.e., the slicing criteria involves a set of statements (or sentences), not necessarily contiguous, for extraction Swap Consecutive (Independent) Executable Program Entities Such as compound statements, sentences, and even paragraphs or sections Split/Merge (Consecutive) Conditionals So long as two instances of the conditional s predicate are guaranteed to evaluate similarly Loop-Invariant Code Motion Computation flavor: A loop-invariant computation is moved inside/outside that loop, as in optimizing compilers Conditional flavor: Instead of a computation, it is a loop-invariant conditional being moved If moved out, the loop itself is duplicated, for each branch of the conditional, but with each branch simplified based on the known conditional s result 16
Untangling: A Slice Extraction Refactoring
Untangling: A Slice Extraction Refactoring Ran Ettinger and Mathieu Verbaere Programming Tools Group Computing Laboratory University of Oxford Thanks to our supervisor Oege de Moor Supported by an Eclipse
More informationOn the automation of challenging refactorings through advanced method extraction techniques
On the automation of challenging refactorings through advanced method extraction techniques Ran Ettinger (RanE@il.ibm.com, https://researcher.ibm.com/researcher/view.php?person=il-rane) IBM Research Haifa
More informationOn the automation of challenging refactorings through advanced method extraction techniques
On the automation of challenging refactorings through advanced method extraction techniques Ran Ettinger (RanE@il.ibm.com), IBM Haifa Research Lab In Software Engineering Course, Ben-Gurion University
More informationOn the separation of queries from modifiers. Ran Ettinger, IBM Research Haifa CREST Open Workshop, University College London 24 January 2011
On the separation of queries from modifiers Ran Ettinger, IBM Research Haifa CREST Open Workshop, University College London 24 January 2011 Separate Query from Modifier (SQfM) A refactoring technique by
More informationOn the separation of queries from modifiers
On the separation of queries from modifiers Ran Ettinger, IBM Research Haifa COST Action IC0701 9 th MC and WG Meeting Darmstadt, Germany 29 February 2012 1 Separate Query from Modifier (SQfM) A refactoring
More informationAdministrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004
CMSC 433 Programming Language Fall 2004 Project 3 coming out Midterm October 28 Administrivia Refactoring October 14, 2004 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing
More informationRefactoring with Eclipse
Refactoring with Eclipse Seng 371 Lab 8 By Bassam Sayed Based on IBM article Explore refactoring functions in Eclipse JDT by Prashant Deva Code Refactoring Code refactoring is a disciplined way to restructure
More informationEvolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Refactoring April 24, 2007 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing Code 1 Evolving Software
More informationvoid printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) {
Refactoring References: Martin Fowler, Refactoring: Improving the Design of Existing Code; ; Bruce Wampler, The Essence of Object-Oriented Oriented Programming with Java and UML A recent OO technique that
More informationExtract Slice Refactoring. Rani Ettinger, Programming Tools Group, May 19th, 2003
Extract Slice Refactoring Rani Ettinger, Programming Tools Group, May 19th, 2003 Outline Extract Slice Refactoring: Motivation Example Mechanics Correctness issues: Behaviour Preservation Limitations and
More informationREFLECTIONS ON OPERATOR SUITES
REFLECTIONS ON OPERATOR SUITES FOR REFACTORING AND EVOLUTION Ralf Lämmel, VU & CWI, Amsterdam joint work with Jan Heering, CWI QUESTIONS What s the distance between refactoring and evolution? What are
More informationCredit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture
Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken
More informationSmall changes to code to improve it
Small changes to code to improve it 1 Refactoring Defined A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior
More informationRelational model continued. Understanding how to use the relational model. Summary of board example: with Copies as weak entity
COS 597A: Principles of Database and Information Systems Relational model continued Understanding how to use the relational model 1 with as weak entity folded into folded into branches: (br_, librarian,
More informationCOURSE 11 DESIGN PATTERNS
COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/
More informationSOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.
SOFTWARE ENGINEERING SOFTWARE EVOLUTION Saulius Ragaišis saulius.ragaisis@mif.vu.lt CSC2008 SE Software Evolution Learning Objectives: Identify the principal issues associated with software evolution and
More informationAn Evolution of Mathematical Tools
An Evolution of Mathematical Tools From Conceptualization to Formalization Here's what we do when we build a formal model (or do a computation): 0. Identify a collection of objects/events in the real world.
More informationImplementing evolution: Refactoring
2IS55 Software Evolution Sources Implementing evolution: Refactoring Alexander Serebrenik / SET / W&I 17-5-2010 PAGE 1 Last week Problem: changing code is difficult Assignment 6 Deadline: Today Assignment
More informationChapter 17. Methodology Logical Database Design for the Relational Model
Chapter 17 Methodology Logical Database Design for the Relational Model Chapter 17 - Objectives How to derive a set of relations from a conceptual data model. How to validate these relations using the
More informationReengineering II. Transforming the System
Reengineering II Transforming the System Recap: Reverse Engineering We have a detailed impression of the current state We identified the important parts We identified reengineering opportunities We have
More informationIntroduction to Compilers
Introduction to Compilers Compilers are language translators input: program in one language output: equivalent program in another language Introduction to Compilers Two types Compilers offline Data Program
More informationScaling Testing of Refactoring Engines
1 Scaling Testing of Refactoring Engines Melina Mongiovi, Rohit Gheyi (advisor) Abstract Defining and implementing refactorings is a nontrivial task since it is difficult to define preconditions to guarantee
More informationEXTRACTION OF REUSABLE COMPONENTS FROM LEGACY SYSTEMS
EXTRACTION OF REUSABLE COMPONENTS FROM LEGACY SYSTEMS Moon-Soo Lee, Yeon-June Choi, Min-Jeong Kim, Oh-Chun, Kwon Telematics S/W Platform Team, Telematics Research Division Electronics and Telecommunications
More informationGoals of Program Optimization (1 of 2)
Goals of Program Optimization (1 of 2) Goal: Improve program performance within some constraints Ask Three Key Questions for Every Optimization 1. Is it legal? 2. Is it profitable? 3. Is it compile-time
More informationThe architecture of Eiffel software 3.1 OVERVIEW classes clusters systems
3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the
More informationAspect Refactoring Verifier
Aspect Refactoring Verifier Charles Zhang and Julie Waterhouse Hans-Arno Jacobsen Centers for Advanced Studies Department of Electrical and IBM Toronto Lab Computer Engineering juliew@ca.ibm.com and Department
More informationMaking Program Refactoring Safer
Making Program Refactoring Safer Gustavo Soares 1, Rohit Gheyi 1, Dalton Serey 1 1 Department of Computing and Systems UFCG 58429-900 Campina Grande PB Brazil {gsoares,rohit,dalton}@dsc.ufcg.edu.br Abstract.
More informationProgram Syntax; Operational Semantics
9/5 Solved Program Syntax; Operational Semantics CS 536: Science of Programming, Fall 2018 A. Why Our simple programming language is a model for the kind of constructs seen in actual languages. Step-by-step
More informationBig Data Management and NoSQL Databases
NDBI040 Big Data Management and NoSQL Databases Lecture 10. Graph databases Doc. RNDr. Irena Holubova, Ph.D. holubova@ksi.mff.cuni.cz http://www.ksi.mff.cuni.cz/~holubova/ndbi040/ Graph Databases Basic
More informationChapter 3: Relational Model
Chapter 3: Relational Model Structure of Relational Databases Relational Algebra Tuple Relational Calculus Domain Relational Calculus Extended Relational-Algebra-Operations Modification of the Database
More informationRestricted Use Case Modeling Approach
RUCM TAO YUE tao@simula.no Simula Research Laboratory Restricted Use Case Modeling Approach User Manual April 2010 Preface Use case modeling is commonly applied to document requirements. Restricted Use
More informationSound and Extensible Renaming for Java
Sound and Extensible Renaming for Java Max Schäfer, Torbjörn Ekman, Oege de Moor Daniel Gąsienica Software Engineering Seminar May 12, 2009 What Is Refactoring? To rewrite existing source code in order
More informationRefactoring. Refactoring Techniques
Refactoring Refactoring Techniques Code Quality is Important! Refactoring is... A disciplined technique for restructuring an existing body of code, altering its internal structure without changing its
More informationPLT Course Project Demo Spring Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang
PLT Course Project Demo Spring 2013 Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang 1. Introduction To Code Obfuscation 2. LLVM 3. Obfuscation Techniques 1. String Transformation 2. Junk Code
More informationChapter 2: Relational Model
Chapter 2: Relational Model Database System Concepts, 5 th Ed. See www.db-book.com for conditions on re-use Chapter 2: Relational Model Structure of Relational Databases Fundamental Relational-Algebra-Operations
More informationAn Annotated Language
Hoare Logic An Annotated Language State and Semantics Expressions are interpreted as functions from states to the corresponding domain of interpretation Operators have the obvious interpretation Free of
More informationRelational Model: History
Relational Model: History Objectives of Relational Model: 1. Promote high degree of data independence 2. Eliminate redundancy, consistency, etc. problems 3. Enable proliferation of non-procedural DML s
More informationRecap: Class Diagrams
Com S 362: Object-Oriented Analysis and Design Recap: Class Diagrams Class diagrams represent design structure Three parts: name, attribute, operations Visibility, attribute type, multiplicity Association,
More informationMachine-Independent Optimizations
Chapter 9 Machine-Independent Optimizations High-level language constructs can introduce substantial run-time overhead if we naively translate each construct independently into machine code. This chapter
More informationArchitectural Design. Architectural Design. Software Architecture. Architectural Models
Architectural Design Architectural Design Chapter 6 Architectural Design: -the design the desig process for identifying: - the subsystems making up a system and - the relationships between the subsystems
More informationUnderstading Refactorings
Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations
More informationIntroduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)
Introduction to Programming Languages and Compilers CS164 11:00-12:30 TT 10 Evans 1 ICOM 4036 - Outline Prontuario Course Outline Brief History of PLs Programming Language Design Criteria Programming Language
More information4. An interpreter is a program that
1. In an aboslute loading scheme, which loader function is accomplished by programmer? A. Allocation B. LInking C. Reallocation D. both (A) and (B) 2. A compiler program written in a high level language
More informationAdvanced Compiler Construction
Advanced Compiler Construction Qing Yi class web site: www.cs.utsa.edu/~qingyi/cs6363 cs6363 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science
More informationStructural and Syntactic Pattern Recognition
Structural and Syntactic Pattern Recognition Selim Aksoy Department of Computer Engineering Bilkent University saksoy@cs.bilkent.edu.tr CS 551, Fall 2017 CS 551, Fall 2017 c 2017, Selim Aksoy (Bilkent
More informationRefactoring. Paul Jackson. School of Informatics University of Edinburgh
Refactoring Paul Jackson School of Informatics University of Edinburgh Refactoring definition Refactoring (noun) is a change made to the internal structure of software to make it easier to understand,
More informationHow to Harvest Reusable Components in Existing Software. Nikolai Mansurov Chief Scientist & Architect
How to Harvest Reusable Components in Existing Software Nikolai Mansurov Chief Scientist & Architect Overview Introduction Reuse, Architecture and MDA Option Analysis for Reengineering (OAR) Architecture
More informationOn Refactoring for Open Source Java Program
On Refactoring for Open Source Java Program Yoshiki Higo 1,Toshihiro Kamiya 2, Shinji Kusumoto 1, Katsuro Inoue 1 and Yoshio Kataoka 3 1 Graduate School of Information Science and Technology, Osaka University
More information1 Version management tools as a basis for integrating Product Derivation and Software Product Families
1 Version management tools as a basis for integrating Product Derivation and Software Product Families Jilles van Gurp, Christian Prehofer Nokia Research Center, Software and Application Technology Lab
More informationChapter 2 Overview of the Design Methodology
Chapter 2 Overview of the Design Methodology This chapter presents an overview of the design methodology which is developed in this thesis, by identifying global abstraction levels at which a distributed
More informationCS34800 Information Systems. The Relational Model Prof. Walid Aref 29 August, 2016
CS34800 Information Systems The Relational Model Prof. Walid Aref 29 August, 2016 1 Chapter: The Relational Model Structure of Relational Databases Relational Algebra Tuple Relational Calculus Domain Relational
More informationAutomatic Mining of Functionally Equivalent Code Fragments via Random Testing. Lingxiao Jiang and Zhendong Su
Automatic Mining of Functionally Equivalent Code Fragments via Random Testing Lingxiao Jiang and Zhendong Su Cloning in Software Development How New Software Product Cloning in Software Development Search
More informationCHAPTER 11 Refactoring
CHAPTER 11 Refactoring Introduction When, Why, What? Which Refactoring Tools? Demonstration: Internet Banking Iterative Development Life-cycle Prototype Consolidation: design review Expansion: concurrent
More informationAntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation
AntiPatterns EEC 421/521: Software Engineering Definition: An AntiPattern describes a commonly occurring solution to a problem that generates decidedly negative consequences Refactoring Reference: Refactoring
More informationRefactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11. University of Colorado, 2011
Refactoring Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11 University of Colorado, 2011 Credit where Credit is Due Some of the material for this lecture is taken
More informationCSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke
CSE 403 Lecture 21 Refactoring and Code Maintenance Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke slides created by Marty Stepp http://www.cs.washington.edu/403/
More informationRECODER - The Architecture of a Refactoring System
RECODER - The Architecture of a Refactoring System Andreas Ludwig Prof. U. Aßmann http://recoder.sf.net Overview ➊Programming in the Large Problems, Concepts, The Approach ➋The Architecture of RECODER
More informationHow We Refactor, and How We Know It
Emerson Murphy-Hill, Chris Parnin, Andrew P. Black How We Refactor, and How We Know It Urs Fässler 30.03.2010 Urs Fässler () How We Refactor, and How We Know It 30.03.2010 1 / 14 Refactoring Definition
More informationIn his paper of 1972, Parnas proposed the following problem [42]:
another part of its interface. (In fact, Unix pipe and filter systems do this, the file system playing the role of the repository and initialization switches playing the role of control.) Another example
More informationDetecting Structural Refactoring Conflicts Using Critical Pair Analysis
SETra 2004 Preliminary Version Detecting Structural Refactoring Conflicts Using Critical Pair Analysis Tom Mens 1 Software Engineering Lab Université de Mons-Hainaut B-7000 Mons, Belgium Gabriele Taentzer
More informationChapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design
Chapter 6 Architectural Design Lecture 1 1 Topics covered ² Architectural design decisions ² Architectural views ² Architectural patterns ² Application architectures 2 Software architecture ² The design
More informationGRASP Design Patterns A.A. 2018/2019
GRASP Design Patterns A.A. 2018/2019 Objectives Introducing design patterns Introduzione ai design pattern Designing objects and responsibilities GRASP design patterns A long corridor A passage room Does
More informationDAT159 Refactoring (Introduction)
DAT159 Refactoring (Introduction) Volker Stolz 1, with contributions by: Larissa Braz 2, Anna M. Eilertsen 3, Fernando Macías 1, Rohit Gheyi 2 Western Norway University of Applied Sciences, Universidade
More informationכללי Extreme Programming
פיתוח מער כות תוכנה מבוססות Java כללי Extreme Programming אוהד ברזילי ohadbr@tau.ac.il Based on: K. Beck: Extreme Programming Explained. E. M. Burke and B.M. Coyner: Java Extreme Programming Cookbook.
More informationCSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation
CSE 501: Compiler Construction Course outline Main focus: program analysis and transformation how to represent programs? how to analyze programs? what to analyze? how to transform programs? what transformations
More informationSAFEREFACTOR Tool for Checking Refactoring Safety
SAFEREFACTOR Tool for Checking Refactoring Safety Gustavo Soares 1, Diego Cavalcanti 1, Rohit Gheyi 1, Tiago Massoni 1, Dalton Serey 1,Márcio Cornélio 2 1 Department of Systems and Computing UFCG 2 Department
More informationHierarchical Program Representation for Program Element Matching
Hierarchical Program Representation for Program Element Matching Fernando Berzal, Juan-Carlos Cubero, and Aída Jiménez Dept. Computer Science and Artificial Intelligence, ETSIIT - University of Granada,
More informationRelaxed Memory-Consistency Models
Relaxed Memory-Consistency Models [ 9.1] In Lecture 13, we saw a number of relaxed memoryconsistency models. In this lecture, we will cover some of them in more detail. Why isn t sequential consistency
More informationEmbarcadero PowerSQL 1.1 New Features Guide. Published: July 14, 2008
Embarcadero PowerSQL 1.1 New Features Guide Published: July 14, 2008 Copyright 1994-2008 Embarcadero Technologies, Inc. Embarcadero Technologies, Inc. 100 California Street, 12th Floor San Francisco, CA
More informationAn Overview of Cost-based Optimization of Queries with Aggregates
An Overview of Cost-based Optimization of Queries with Aggregates Surajit Chaudhuri Hewlett-Packard Laboratories 1501 Page Mill Road Palo Alto, CA 94304 chaudhuri@hpl.hp.com Kyuseok Shim IBM Almaden Research
More information6. Hoare Logic and Weakest Preconditions
6. Hoare Logic and Weakest Preconditions Program Verification ETH Zurich, Spring Semester 07 Alexander J. Summers 30 Program Correctness There are many notions of correctness properties for a given program
More informationA Lightweight Language for Software Product Lines Architecture Description
A Lightweight Language for Software Product Lines Architecture Description Eduardo Silva, Ana Luisa Medeiros, Everton Cavalcante, Thais Batista DIMAp Department of Informatics and Applied Mathematics UFRN
More informationIntermediate Representation (IR)
Intermediate Representation (IR) Components and Design Goals for an IR IR encodes all knowledge the compiler has derived about source program. Simple compiler structure source code More typical compiler
More informationAccelerated Mobile Pages Advertisement and Cascading Style Sheet Merging
Technical Disclosure Commons Defensive Publications Series March 06, 2017 Accelerated Mobile Pages Advertisement and Cascading Style Sheet Merging Richard Rapp Justin Lewis Follow this and additional works
More informationEchinacea Release Notes
Echinacea Release Notes Sandbox: July, 2018 Production: September, 2018 At-a-Glance New Features and Enhancements highlights: Archiving Transactions to save on data storage Improved styling of Financial
More informationInstruction Scheduling Beyond Basic Blocks Extended Basic Blocks, Superblock Cloning, & Traces, with a quick introduction to Dominators.
Instruction Scheduling Beyond Basic Blocks Extended Basic Blocks, Superblock Cloning, & Traces, with a quick introduction to Dominators Comp 412 COMP 412 FALL 2016 source code IR Front End Optimizer Back
More informationCS232 VHDL Lecture. Types
CS232 VHDL Lecture VHSIC Hardware Description Language [VHDL] is a language used to define and describe the behavior of digital circuits. Unlike most other programming languages, VHDL is explicitly parallel.
More informationAnalyzing the Product Line Adequacy of Existing Components
Analyzing the Product Line Adequacy of Existing Components Jens Knodel and Dirk Muthig Fraunhofer Institute for Experimental Software Engineering (IESE), Fraunhofer-Platz 1, D-67663 Kaiserslautern, Germany
More informationF. Tip and M. Weintraub REFACTORING. Thanks go to Andreas Zeller for allowing incorporation of his materials
F. Tip and M. Weintraub REFACTORING Thanks go to Andreas Zeller for allowing incorporation of his materials TODAY S LECTURE anti-patterns common response to a recurring problem that is usually ineffective
More information340 Review Fall Midterm 1 Review
340 Review Fall 2016 Midterm 1 Review Concepts A. UML Class Diagrams 1. Components: Class, Association (including association name), Multiplicity Constraints, General Constraints, Generalization/Specialization,
More information10 - Integrated Development Environments
10 - Integrated Development Environments Motivation Writing a toy application with a text editor is comparatively easy. Developing a large software system with just a text editor is much more difficult
More informationCompiler Design 1. Introduction to Programming Language Design and to Compilation
Compiler Design 1 Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (Hus 1, 352) Course home page: http://user.it.uu.se/~kostis/teaching/kt1-11 If you
More informationControl-Flow Analysis
Control-Flow Analysis Dragon book [Ch. 8, Section 8.4; Ch. 9, Section 9.6] Compilers: Principles, Techniques, and Tools, 2 nd ed. by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jerey D. Ullman on reserve
More informationIBM WebSphere Studio Asset Analyzer, Version 5.1
Helping you quickly understand, enhance and maintain enterprise applications IBM, Version 5.1 Highlights n Provides interactive textual n Helps shorten the learning curve and graphic reports that help
More informationCompiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore
Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No. # 10 Lecture No. # 16 Machine-Independent Optimizations Welcome to the
More informationChapter 6 Architectural Design
Chapter 6 Architectural Design Chapter 6 Architectural Design Slide 1 Topics covered The WHAT and WHY of architectural design Architectural design decisions Architectural views/perspectives Architectural
More informationLaboratorio di Programmazione. Prof. Marco Bertini
Laboratorio di Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Code versioning: techniques and tools Software versions All software has multiple versions: Each
More informationHow metadata can reduce query and report complexity As printed in the September 2009 edition of the IBM Systems Magazine
Untangling Web Query How metadata can reduce query and report complexity As printed in the September 2009 edition of the IBM Systems Magazine Written by Gene Cobb cobbg@us.ibm.com What is Metadata? Since
More informationSoftware: Systems and Applications Software
Chapter 4 Software: Systems and Applications Software The Importance of Software in Business High Software $ Hardware Low 1950 today time An Overview of Software What is Software? See Chapter 1! Classes
More informationObjectives: On completion of this project the student should be able to:
ENGI-0655/5232 Software Construction and Evolution Project 1 Reverse Engineering Refactoring & Object Oriented Design Due date November 10, 2009-4:00 pm 1. Aims The aim of this project is to give you more
More informationR13 SET Discuss how producer-consumer problem and Dining philosopher s problem are solved using concurrency in ADA.
R13 SET - 1 III B. Tech I Semester Regular Examinations, November - 2015 1 a) What constitutes a programming environment? [3M] b) What mixed-mode assignments are allowed in C and Java? [4M] c) What is
More informationMIT Introduction to Program Analysis and Optimization. Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology
MIT 6.035 Introduction to Program Analysis and Optimization Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Program Analysis Compile-time reasoning about run-time behavior
More informationSoftware Construction
Lecture 11: Command Design Pattern Software Construction in Java for HSE Moscow Tom Verhoeff Eindhoven University of Technology Department of Mathematics & Computer Science Software Engineering & Technology
More informationSemantic Interconnection Models & Inscape. Unit Interconnection Model. Example Uses of Unit IM
Architecture and Design Intent Semantic Interconnection Models & Inscape Dewayne E Perry ENS 623A Office Hours: T/Th 11:00-12:00 perry @ ece.utexas.edu www.ece.utexas.edu/~perry/education/382v-s06/ Lecture
More informationNST: 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 informationUsing Strategies for Assessment of Functional Programming Exercises
Using Strategies for Assessment of Functional Programming Exercises Ir. Alex Gerdes Joint work with prof. dr. Johan Jeuring and dr. Bastiaan Heeren Open Universiteit Nederland School of Computer Science
More informationIBM Best Practices Working With Multiple CCM Applications Draft
Best Practices Working With Multiple CCM Applications. This document collects best practices to work with Multiple CCM applications in large size enterprise deployment topologies. Please see Best Practices
More informationAutomatic Parallelization of Sequential C Code
Automatic Parallelization of Sequential C Code Pete Gasper Department of Mathematics and Computer Science South Dakota School of Mines and Technology peter.gasper@gold.sdsmt.edu Caleb Herbst Department
More informationModel driven Engineering & Model driven Architecture
Model driven Engineering & Model driven Architecture Prof. Dr. Mark van den Brand Software Engineering and Technology Faculteit Wiskunde en Informatica Technische Universiteit Eindhoven Model driven software
More information1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation
1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page (of previous year):
More information