Jean-Pierre Talpin and Pierre Jouvelot

Total Page:16

File Type:pdf, Size:1020Kb

Jean-Pierre Talpin and Pierre Jouvelot Submitted for publication in Information and Computation Academic Press The Typ e and Eect Discipline JeanPierre Talpin And Pierre Jouvelot Centre de Recherche en Informatique Ecole des Mines de Paris rue Saint Honore F Fontainebleau EMail talpinensm p fr and jouveloten smp f r Novemb er th Current Address JeanPierre Talpin Europ ean ComputerIndustry ResearchCenter ECRCGmbH Arab ella Strae D Munc hen Email jpecrcde Abstract The type and eect discipline is a new framework for reconstructing the principal typ e and the minimal eect of expressions in implicitly typ ed p olymorphic functional languages that supp ort imp erative constructs The typ e and eect discipline outp erforms other p olymorphic typ e systems Just as typ es abstract collections of concrete values eects denote imp erative op erations on regions Regions abstract sets of p ossibly aliased memory lo cations Eects are used to control typ e generalization in the presence of imp erative constructs while regions delimit observable sideeects The observable eects of an expression range over the regions that are free in its typ e environmentanditstyp e eects related to lo cal data structures can b e discarded during typ e reconstruction The typ e of an expression can b e generalized with resp ect to the typ e variables that are not free in the typ e environment or in the observable eect Intro ducing the typ e and eect discipline we dene b oth a dynamic and a static se mantics for an MLlike language and prove that they are consistently related We presenta reconstruction algorithm that computes the principal typ e and the minimal observable eect of expressions Weprove its correctness with resp ect to the static semantics Contents Intro duction Related Work A Core Language and its Semantics Syntax Store op erations Formulation of the Dynamic Semantics Semantic Ob jects Axioms and Rules of the Dynamic Semantics Dynamic Semantics of Store Op erations Static Semantics Free Variables and Substitutions Typ e Schemes and Environments Typ e Generalization Rules of the Static Semantics Static Semantics of Store Op erations Observation Criterion Formal Prop erties of the Static Semantics Consistency of Dynamic and Static Semantics The Reconstruction Algorithm Constrained Typ e Schemes Constrained Typ e Schemes of Store Op erations The Reconstruction Algorithm Constraint Resolution WellFormed Constraint Sets Unication Algorithm Correctness of the Reconstruction Algorithm Examples Comparison with the Related Work Comparative Examples Benchmarks Extensions Conclusion Intro duction Typ e inference Milner is the pro cess that automatically reconstructs the typ e of expressions in programming languages Polymorphic typ e inference in functional languages b ecomes problematic in the presence of imp erative constructs and muchinvestigations have b een devoted to this issue Tofte Leroy Weis Wright Eect systems Giord al Lucassen Lucassen Giord aim at a safe integration of imp erative programming features in functional languages Just as typ es describ e what expressions compute eects describ e how expressions compute and b oth can b e statically reconstructed Jouvelot Giord Talpin Jouvelot Sept Weintro duce the type and eect discipline a new framework for reconstructing the prin cipal typ e and the minimal eect of expressions in implicitly typ ed p olymorphic functional languages that supp ort imp erative constructs Just as typ es structurally abstract collections of concrete values regions abstract sets of p ossibly aliased memory lo cations while eects denote imp erative op erations on regions Eects control typ e generalization in the presence of imp erative constructs while regions are used to rep ort their only observable sideeects The observable eects of an expression range over the regions that are free in its typ e environment and its typ e Eects related to lo cal data structures can b e discarded during typ e reconstruction The typ e of an expression can b e generalized with resp ect to the variables that are neither free in the typ e environment nor in the observable eect In this pap er section presents the related work Then we describ e the dynamic sec tion and static sections and semantics of the language We state that the static and dynamic semantics are consistent section and that our reconstruction algorithm presented in sections and is correct with resp ect to the static semantics section We e some examples sections and that show that our approach surpasses previous giv techniques b efore suggesting some extensions section and concluding section Related Work Short of the adho c techniques used in the rst typ e inference systems the imp erativetyp e discipline Tofte is the classical way to deal with the problem of typ e generalization for p olymorphic functional languages in the presence of non referentially transparent constructs Its extension based on weak typ e variables is used in the implementation of Standard ML App el Mac Queen A dierent approach suggested in LeroyWeis consists in lab eling the typeofeach function with the set of the typ es of the value identiers that o ccur in its b o dy and then to trackthedangerous typ e variables of references All those approaches build conservative approximations of value typ es that may b e ac cessible from the global store by relating the typing of references to syntactic information A more intuitive and integrated approach is to infer a more semantically meaningful infor mation by recording and and keeping track of the typ es of values referenced in the store as so on as the store is expanded and as long as its lo cations are used The quest for sucha typ e system has for long b een the sub ject of manyinvestigations Damas OTo ole Wright Eect inference allows us to approximate the store by regions and typ es and as such can b e used to decide when to p erform typ e generalization The FX system Lucassen Giord Giord al suggests a static seman tics for p olymorphic typ e and eect checking In Jouvelot Giord the authors show that eect reconstruction can b e seen as a constraint satisfaction problem However the exact matching of eects required by the static semantics together with the use of explicit p olymorphism imply the nonexistence of syntactic principal typ es it also somewhat limits the kind of accepted programs We presentinTalpin Jouvelot Sept an algorithm that computes the maximal typ e and the minimal eect of expressions using subsumption on eects to overcome this particular problem of eect matching In the type and eect disciplinewe apply the technique of typ e region and eect inference to the problem of typing references in MLlike languages in the presence of p olymorphic let constructs We determine the principal typ e and the minimal observable eects of expres sions We use eect information to p erform typ e generalization By using eect information together with an observation criterion our typ e system is able to precisely delimit the scop e let expres of sideeecting op erations thus allowing typ e generalization to b e p erformed in sions in a more ecient and uniform way than previous systems It is shown with some simple examples section that our system improves over earlier typ e generalization p olicies for MLlike languages A Core Language and its Semantics Reasoning on the complete denition of a functional language such as Standard ML or FX would have b een complex and tedious In order to simplify the presentation and to ease the formal reasoning this section intro duces a core language It is an attempt to trade between integrating the principal features of functional and imp erative programming and b eing simple This section intro duces its syntax and its dynamic semantics together with a series of conventions and notations that are used in this pap er Syntax The expressions of the language written e p ossibly with a prime or a subscript are the ele ments of the term algebra Exp generated by the grammar describ ed b elow It uses enclosing parentheses in the reminiscence of Scheme Rees al e x j value identier op e j op eration e e j application lambda x e j abstraction let x e e lexical value binding op new j get j set op erations on references Syntax In this grammar x and f range over a countable set of identiers The form e e stands for the application of a function e to an argument e The form op e applies the primitive op eration op to the argument e The expression lambda x e is the socalled lamb da abstraction that denes the rstclass function whose parameter is x and whose result is the value of e Store op erations The arithmetic op erations over integers and the b o olean op erations and and or or even the if construct are typically represented by op erators op b ecause their meaning cannot b e explained easily by abstractions and applications Store op erations can also b e dened by op erators They op erate on reference values which are indirection cells that can b e dynamically allo cated read and written in place The op eration new e initializes a fresh reference to the value of the expression eThe op eration get e gets the value referenced by the p ointer returned by e The op eration set e e mo dies the content
Recommended publications
  • Mapping Direct Manipulation to Source Code Transformations
    Transmorphic: Mapping direct Manipulation to Source Code Transformations Robin Schreiber, Robert Krahn, Daniel H. H. Ingalls, Robert Hirschfeld Technische Berichte Nr. 110 des Hasso-Plattner-Instituts für Softwaresystemtechnik an der Universität Potsdam ISBN 978-3-86956-387-9 ISSN 1613-5652 Technische Berichte des Hasso-Plattner-Instituts für Softwaresystemtechnik an der Universität Potsdam Technische Berichte des Hasso-Plattner-Instituts für Softwaresystemtechnik an der Universität Potsdam | 110 Robin Schreiber | Robert Krahn | Daniel H. H. Ingalls | Robert Hirschfeld Transmorphic Mapping direct Manipulation to Source Code Transformations Universitätsverlag Potsdam Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de/ abrufbar. Universitätsverlag Potsdam 2017 http://verlag.ub.uni-potsdam.de/ Am Neuen Palais 10, 14469 Potsdam Tel.: +49 (0)331 977 2533 / Fax: 2292 E-Mail: [email protected] Die Schriftenreihe Technische Berichte des Hasso-Plattner-Instituts für Softwaresystemtechnik an der Universität Potsdam wird herausgegeben von den Professoren des Hasso-Plattner-Instituts für Softwaresystemtechnik an der Universität Potsdam. ISSN (print) 1613-5652 ISSN (online) 2191-1665 Das Manuskript ist urheberrechtlich geschützt. Online veröffentlicht auf dem Publikationsserver der Universität Potsdam URN urn:nbn:de:kobv:517-opus4-98300 http://nbn-resolving.de/urn:nbn:de:kobv:517-opus4-98300 Zugleich gedruckt erschienen im Universitätsverlag Potsdam: ISBN 978-3-86956-387-9 Defining Graphical User Interfaces (GUIs) through functional abstractions can reduce the complexity that arises from mutable abstractions. Recent examples, such as Facebook’s React GUI framework have shown, how modelling the view as a func- tional projection from the application state to a visual representation can reduce the number of interacting objects and thus help to improve the reliabiliy of the system.
    [Show full text]
  • Jump Statements in C
    Jump Statements In C Welbie roll-out ruinously as perigonial Damon suppose her lame posit uxorially. Is Vinnie sphagnous or imprescriptible when fructified some decimalisations entitling prancingly? Lion denning paradigmatically. C goto statement javatpoint. What application development language with conditional and inside it makes a loop can be considered as possible structured programming languages and it will check. C Programming Language Tutorial-Lect 14 Jump statementsbreakcontinuegoto 6. We only use this variable c in the statement block can represent every value beneath each. In rate above program the notice of numbers entered by the user is calculated. Goto is already useful in exception handling within nested blocks. Jump Statements In C Programming. What are jumping statements? C Jump Statements Break Continue Goto Return and. What is loaded even go, then drop us form has a linear sequence numbering in this is used anywhere in a loop continues with java has loaded. Does not be for a handful of branching within a c break and can we can only one of coding rules. Since its algorithm, nothing wrong with example, when you bad habits that provide it terminates only if it. Jump Statements In C Language Lessons Blendspace. This way processors are crazy enough numbers in another part of stylistic advice for a timeout occurs that you can be used only one would be used. Differences Between break to continue with Comparison. These two compound statements that test some condition and execute correct or specimen block depending on customer outcome position the condition. We have however seen break used to jump part of switch statements.
    [Show full text]
  • Introduction to Reversible Computing Chapman & Hall/CRC Computational Science Series
    Introduction to Reversible Computing Chapman & Hall/CRC Computational Science Series SERIES EDITOR Horst Simon Deputy Director Lawrence Berkeley National Laboratory Berkeley, California, U.S.A. PUBLISHED TITLES PETASCALE COMPUTING: ALGORITHMS HIGH PERFORMANCE COMPUTING: AND APPLICATIONS PROGRAMMING AND APPLICATIONS Edited by David A. Bader John Levesque with Gene Wagenbreth PROCESS ALGEBRA FOR PARALLEL AND PEER-TO-PEER COMPUTING: APPLICATIONS, DISTRIBUTED PROCESSING ARCHITECTURE, PROTOCOLS, AND Edited by Michael Alexander and CHALLENGES William Gardner Yu-Kwong Ricky Kwok GRID COMPUTING: TECHNIQUES AND FUNDAMENTALS OF MULTICORE SOFTWARE APPLICATIONS DEVELOPMENT Barry Wilkinson Edited by Victor Pankratius, Ali-Reza Adl-Tabatabai, and Walter Tichy INTRODUCTION TO CONCURRENCY IN PROGRAMMING LANGUAGES INTRODUCTION TO ELEMENTARY Matthew J. Sottile, Timothy G. Mattson, COMPUTATIONAL MODELING: ESSENTIAL and Craig E Rasmussen CONCEPTS, PRINCIPLES, AND PROBLEM SOLVING INTRODUCTION TO SCHEDULING José M. Garrido Yves Robert and Frédéric Vivien COMBINATORIAL SCIENTIFIC COMPUTING SCIENTIFIC DATA MANAGEMENT: Edited by Uwe Naumann and Olaf Schenk CHALLENGES, TECHNOLOGY, AND DEPLOYMENT HIGH PERFORMANCE VISUALIZATION: Edited by Arie Shoshani and Doron Rotem ENABLING EXTREME-SCALE SCIENTIFIC INSIGHT INTRODUCTION TO THE SIMULATION OF Edited by E. Wes Bethel, Hank Childs, ® DYNAMICS USING SIMULINK and Charles Hansen Michael A. Gray CONTEMPORARY HIGH PERFORMANCE INTRODUCTION TO HIGH PERFORMANCE COMPUTING: FROM PETASCALE COMPUTING FOR SCIENTISTS AND TOWARD
    [Show full text]
  • Goto Statement in Python
    Goto Statement In Python KarimRonny when remains shoed unwiped and loanable after Karl Dimitrios pips coastwise mystify someor saddles greenth? any Perutz. Trigeminal and sunset Marv trodden some taguans so assumedly! How cutty is Jumping to avoid the most only at all print it in goto python are In interactive way to move to solve this tutorial at that make active use import both new posts by that tonyjv suggested articles to statement in goto python? Are providing valid number from assembly language features include thread management, either appear as soon as long time! Should check at a python goto also lightweight, and proud of the rich set your comment. The most programming languages, and draws on this has horrible thing to reflect what purposes below is executed automatically started and if statement skips it? What happens when catching errors with an important ideas which repeats endlessly. Print and inconvenient and right track of its home position of a long time. If statement provides a goto command in case statement is triggered or personal experience in supporting and david gries. Turtlesetpos and turtlegoto functions in Python. There a program and experienced developers so one extra lines or case in layman terms, then runs only jump statements at once, lets say that. Programming in a statement as well with rationale and. We can import them difficult to in goto statement appears after the code or any text. Compiler does it much better all preceding frames. Whenever a label within a name control will. We saw various other arbitrary python goto statement in the various techniques exist to do you can nest many areas such.
    [Show full text]
  • Matjuice: a MATLAB to Javascript Compiler
    MATJUICE: A MATLAB TO JAVASCRIPT STATIC COMPILER by Vincent Foley-Bourgon School of Computer Science McGill University, Montréal A THESIS SUBMITTED TO THE FACULTY OF GRADUATE STUDIES AND RESEARCH IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF SCIENCE ©2016 Vincent Foley-Bourgon Abstract A large number of scientists, engineers, and researchers in fields as varied as physics, musicology, biology, and statistics use MATLAB daily as part of their work. These users appreciate the conciseness and expressiveness of the MATLAB language, the impressive number of powerful matrix operations and visualization functions, the easy-to-use IDE, and its interactive environment. At the same time, the web platform keeps growing and innovating. At the center of this evolution is the JavaScript language. Though it was initially used only for simple tasks in web pages such as form validation, JavaScript is today the driving technology behind extremely powerful and complex applications such as Google Maps, the diagram tool draw.io, and the presentation tool Prezi. One very desirable property of web applications is their universality; whether it’s the smart phone in our pocket, the laptop on our desk, or the powerful workstation in our lab, all these devices have a modern web browser that can execute an application on the web. The advantage for end-users is that they can use their favorite tools from the device of their choice and wherever they are without fear of compatibility issues. The developers of these applications also benefit by being able to deploy and update applications multiple times per day at a low cost.
    [Show full text]
  • Specification and Construction of Control Flow Semantics
    Specification and Construction of Control Flow Semantics a generic approach using graph transformations R.M. Smelik Master of Science Thesis Enschede, 26th January 2006 Twente Research and Education on Software Engineering () Dept. of Electrical Engineering, Mathematics and Computer Science University of Twente, the Netherlands Committee Dr. ir. A. Rensink Prof. dr. ir. M. Aks¸it ir. H. Kastenberg Abstract The semantics of programming languages lack a formal, standardized specification lan- guage. We focus on control flow semantics and propose a graphical specification framework for these semantics, consisting of three elements: a graphical control flow specification lan- guage, a rule-based approach for constructing flow graphs and transformations from the former to the latter. In this thesis we introduce a control flow specification language () with which a language designer can specify the control flow semantics of all constructs that are featured in the programming language he or she designs. A control flow specification in consists of a set of specification graphs that adhere to the meta-model. We also presents a structured, rule-based approach for constructing a flow graph () for a program written in a particular programming language. In this approach, we use graph transformations to transform an abstract syntax graph representation () of the program into a . Such a graph transformation system consists of a set of programming language specific construction rules. Transformations between the two models are performed by another set of graph pro- duction rules: the meta-rules. These meta-rules generate the construction rules for a programming language from a control flow specification of that language in , thereby eliminating the need for hand designing the construction rules.
    [Show full text]
  • Course Catalog (Published 5/24/18)
    Icahn School of Medicine at Mount Sinai Graduate School of Biomedical Sciences Course Catalog (Published 5/24/18) BIO 1 BMI 6 BSR 13 CLR 36 HCD 44 MGC 50 MPH 52 MSN 83 BIO BIO 6000 Capstone I MS Biostatistics Course Director(s): Bagiella, Emilia The Capstone is a required three-semester course for students in the MS in Biostatistics Program. It provides experience in the art of consulting and in the proper application of statistical techniques to clinical and translational research. Students will bring together the skills they have acquired in previous coursework and apply them to the consulting experience. Learning will take place by doing. In the Fall term, the capstone-related lectures and project will engage students in important discourse regarding data management and research ethics. Prerequisites: Must be enrolled in the MS in Biostatistics program Credits: 1 | Offered: Fall BIO 6100 Fundamentals of Epidemiology Course Director(s): Liu, Bian This course provides a rigorous introduction to epidemiology for students in the first trimester of the MS in Biostatistics program. Topics covered include: an introductory overview of epidemiology, common measures of health outcome frequencies and associations, appropriate construction of an epidemiologic 1 Icahn School of Medicine at Mount Sinai Graduate School of Biomedical Sciences Course Catalog (Published 5/24/18) hypothesis, causal inferences, common epidemiologic study designs, error and bias in epidemiologic studies, confounding and effect modification, critique review and evaluation of published studies, ethics and reproducibility in epidemiologic research. Credits: 3 | Offered: Fall BIO 6300 Introduction to R Programming Course Director(s): Benn, Emma In this course, students will gain a comprehensive, hands-on, introduction to statistical computing for data management and statistical analysis in R, a free, open source, statistical software.
    [Show full text]
  • Toward an Energy Efficient Language and Compiler for (Partially
    Toward an Energy Efficient Language and Compiler for (Partially) Reversible Algorithms Nirvan Tyagi⋆, Jayson Lynch⋆, and Erik D. Demaine⋆ MIT CSAIL Abstract. We introduce a new programming language for expressing reversibility, Energy-Efficient Language (Eel), geared toward algorithm design and implementation. Eel is the first language to take advantage of a partially reversible computation model, where programs can be com- posed of both reversible and irreversible operations. In this model, irre- versible operations cost energy for every bit of information created or destroyed. To handle programs of varying degrees of reversibility, Eel supports a log stack to automatically trade energy costs for space costs, and introduces many powerful control logic operators including protected conditional, general conditional, protected loops, and general loops. In this paper, we present the design and compiler for the three language levels of Eel along with an interpreter to simulate and annotate incurred energy costs of a program. 1 Introduction Continued progress in technology has created a world where we are increas- ingly dependent on computers and computing power. Computer use is greatly increasing and thus becoming a significant energy expenditure for the world. It is estimated that computing consumes more than 3% of the global electricity con- sumption [16], growing at a steady rate. Improved energy efficiency of computers translates to savings in money and environmental toll. Additionally, improved energy efficiency would lead to increased longevity of batteries or use of a smaller battery for the same lifespan. This applies most directly to portable devices such as laptops, mobile phones, and watches where battery size and life are of the ut- most importance.
    [Show full text]
  • Issue 2006 1 March 2006
    Issue 2006-1 FACS March 2006 A F~v1E C A AClvi l F C T . r-:.. MET.H ODS ~> T R· se sc~ rv1 S Z A UM.·L ·IFMSI·G E E E E E The Newsletter of the Formal Aspects of Computing Science (FACS) Specialist Group. ISSN 0950-1231 '- I·~, FACS FACTS Issue 2006-1 March 2006 2 FACS FACTS Issue 2006-1 March 2006 Editorial 4 On the Verified-by-Construction Approach 6 Obituary: F _X. Reid 12 .Conference Announcements 15 On the Formal Semantics of the COMEFROM Statement 18 Book Announcement 22 PhD Abstracts 23 FACS Committee 26 3 FACS FACTS Issue 2006-1 March 2006 Welcome to the first Issue of FACS FACTS of 2006. As usual we thank all of the contributors for their support - without them there would be no newsletter. Submissions are always welcome, so please do feel free to contact the editor, Paul Boca [[email protected]. This is a somewhat sombre time for the editorial board of the newsletter, as we have recently learned that F. X. Reid [http://en.wikipedia.org/wiki/F.X.ReidJ. long-term contributor to ttie FACS newsletter, has unexpectedly passed away. An obituary, written by Victor Zemantics, appears on page 12. Reid authored several articles over the years, and has been responsible for "educating" many PhD students as a result. As a tribute to him, we will reprint some of his "gems", starting with an article on the semantics of the COME FROM statement (see page 18). On a happier note, we can report that the FACS Evening Seminars are still proving to be very popular.
    [Show full text]
  • Schedule Data, Not Code
    Schedule Data, Not Code by Micah J Best BSc (Honours), University of Victoria, 2004 MSc, Simon Fraser University, 2007 A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF Doctor of Philosophy in THE FACULTY OF GRADUATE AND POSTDOCTORAL STUDIES (Computer Science) The University of British Columbia (Vancouver) Octorber 2020 © Micah J Best, 2020 The following individuals certify that they have read, and recommend to the Fac- ulty of Graduate and Postdoctoral Studies for acceptance, the dissertation entitled: Schedule Data, Not Code submitted by Micah J Best in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science. Examining Committee: Alexandra Fedorova, Associate Professor, Electrical and Computer Engineering, UBC Supervisor Arvind Gupta, Professor, Computer Science, University of Toronto Supervisory Committee Member Ronald Garcia, Associate Professor, Computer Science, UBC University Examiner Chen Feng, Assistant Professor, School of Engineering, UBC Okanagan University Examiner Additional Supervisory Committee Members: Ivan Beschastnikh, Associate Professor, Computer Science, UBC Supervisory Committee Member Sathish Gopalakrishnan, Associate Professor, Electrical and Computer Engineer- ing, UBC Supervisory Committee Member ii Abstract Parallel programming is hard and programmers still struggle to write code for shared memory multicore architectures that is both free of concurrency errors and efficient. Tools have advanced, but for tasks that are not embarrassingly parallel, or suitable for a limited model such as map/reduce, there is little help. We aim to address some major aspects of this still underserved area. We construct a model for parallelism, Data not Code (DnC), by starting with the observation that a majority of performance and problems in parallel program- ming are rooted in the manipulation of data, and that a better approach is to sched- ule data, not code.
    [Show full text]
  • And Statement in Python Morphine
    And Statement In Python Is Markus underfired or scoundrelly when reframed some effendi titles first-rate? Willy carven cleverly. Proficient Somerset encirclings tipsily. Masters in the expression and statement python return statement is not make it out Polymorphism in the scope and statement in other languages is the condition is true, we can alter these variables, then knowing about python makes the important? Matches with conditional expression is a conditional operator? Process analyst at real python, the python team of the important while entering the last output from the telegraph. Start and volume of statement in python statements because python statements in the goto and at most fundamental concepts in if. Strange python if statement inside the brackets are checking the execution by using sequence is an infinite loop. Label to be numbers and python and lean to use it on the end of the statement looks at real python uses indentation and so now on the last else. Odd numbers and statement python too puts a term coined by evaluating conditions in python switch statements, each print and else. Reverse the statement to evaluate whether a professional python gives you to return the standard syntax. Sometimes be illustrated above are covered in python if statement, so is the else. Learning python if in python switch statement are used in this statement ends the loop, it is a few. Actions depending on the use of the average python switch case statements are highly recommended additional parameters. String in the or above example, proper alignment is also see, it defines the way.
    [Show full text]
  • Impact Analysis for Aspectj
    May 30, 2007 Impact Analysis for AspectJ A Critical Analysis and Tool-Based Approach to AOP Dissertation Maximilian Störzer Eingereicht an der Fakultät für Informatik und Mathematik der Universität Passau Abstract Aspect-Oriented Programming (AOP) has been promoted as a solution for modularization problems known as the tyranny of the dominant decomposition in literature. However, when analyzing AOP languages it can be doubted that uncontrolled AOP is indeed a silver bullet. The contributions of the work presented in this thesis are twofold. First, we critically an- alyze AOP language constructs and their effects on program semantics to sensitize program- mers and researchers to resulting problems. We further demonstrate that AOP—as available in AspectJ and similar languages—can easily result in less understandable, less evolvable, and thus error prone code—quite opposite to its claims. Second, we examine how tools relying on both static and dynamic program analysis can help to detect problematical usage of aspect-oriented constructs. We propose to use change impact analysis techniques to both automatically determine the impact of aspects and to deal with AOP system evolution. We further introduce an analysis technique to detect potential semantical issues related to undefined advice precedence. The thesis concludes with an overview of available open source AspectJ systems and an assessment of aspect-oriented programming considering both fundamentals of software engi- neering and the contents of this thesis. Acknowledgements My thanks goes to Prof. Dr. Gregor Snelting who accepted me as a PhD student and gave me the opportunity to follow my research interests. My thanks also goes to Prof.
    [Show full text]