Issue 2006 1 March 2006

Total Page:16

File Type:pdf, Size:1020Kb

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. We began the year with a panel discussion, entitled Formal Methods in the Last 25 Years; more than 70 people attended. The event was organized together with Formal Methods Europe (FME), chaired by John Fitzgerald. We would like to thank FME and the Centre for Software Reliability, University of Newcastle upon Tyne for co-sponsoring the event with FACS. We are hoping to bring you a report on the event in the next issue of the newsletter, together with a reprint of the classic "Magic Roundabout" article. Peter Mosses gave the second seminar in the series this year, entitled Programming Language Description Languages: From Scott and Strachey to Semantics Online. The seminar was attended by almost 40 people - an excellent turnout for a Friday evening. At the time of writing this editorial. we are organizing the third seminar in the series, to be given on 24 April 2006 by Cliff Jones, entitled Specifying Systems that Connect to the Physical World. We expect this to be equally successful, and once again it is an opportunity for people to hear an address from another pioneer in formal methods. The seminar programme for the rest of the year is available on the BCS­ FACS website [htlp:llwww.bcs-facs.org/events/EveningSeminars1 and in the advertisement on page 14. Slides from previous seminars are available to down load from this website too. We hope you will find the programme of interest and will be able to attend - the seminars are free of charge, funded from membership subscriptions (see page 25 for a membership form). FACS held its AGM on 3 March 2006, and a report on the meeting will appear in a future issue of the newsletter. F ACS welcomes two new committee members: John Derrick (University of Sheffield) to coordinate activities relating to refinement and Mark D'lnverno (University of Westminster) to coordinate model-based specification events (on topics such as B, VDM, Z, etc.). Please do liaise with John or Mark if you are interested in being involved with events in these areas. Unfortunately, FACS has lost two of its officers, AIi Abdallah and Kevin Lano. On behalf of all the members, we would like to thank them for all their efforts over the years. In particular, AIi organized two major and very successful events for F ACS, FASec in 2002 on formal aspects of security and CSP 25 in 2004 to celebrate a quarter of a century of FACS and 4 FACS FACTS Issue 2006-1 March 2006 Communicating Sequential Processes activities. In no small measure, these helped rejuvenate FACS and both proceedings appeared as Springer LNCS volumes. We hope you will enjoy reading the current issue and again encourage you to contribute as well. M! 5 FACS FACTS Issue 2006-1 March 2006 Introduction At the VSTTE (Verified Software: Theories, Tools, Experiments) conference [http://vstte.inf.ethz.chD held in ETH Zurich in October 2005, Tony Hoare and Jay Misra presented a vision of an international Grand Challenge to construct a program verifier. This vision appears to be having a very powerful catalysing effect on getting researchers in all manner of formal development approaches to pool resources and work towards more common goals. This is borne out by the large gathering of top researchers at the VSTTE conference and by the subsequent establishment of working groups set up to refine the challenge further. This article is my attempt at making the case for the so-called verification-by-construction approach to formal development and the contribution it can make to the challenge of verified software. Why verification-by-construction is important Much discussion on the need for a powerful program verifier seems to contain the following underlying assumptions: • That a program verifier will be used mostly to verify programs • That when verification fails it is because the program contains errors While a powerful program verifier is a very valuable tool for programmers, it does not help them construct a verifiable program in the first place. Equally, the quality of any verification is dependent on the validity of the formal properties against which a program is checked. The verification-by-construclion approach helps developers who want to construct reliable software systems by addressing the following questions: • How do we construct properties against which to verify our software? • How do we construct our software so that the verification will succeed? The verification-by-construction approach is about providing design tools that help developers produce reliable software. It broadens the focus away from just being analysis of the finished product and addresses better the development process. How can verification-by-construction be achieved? Verification by construction can be achieved by having a formal framework in which models are constructed at multiple levels of abstraction and related by 6 FACS FACTS Issue 2006-1 March 2006 refinement1 relations_ The highest levels of abstraction are used to express the required behaviour in terms of the problem domain. The closer it is to the problem domain, the easier it is to validate against the informal requirements, i.e., ensure that it is the right specification. The lowest level of abstraction corresponds to an implementation or to a specification from which an efficient implementation can be derived automatically. Also critical in this framework are mechanisms for composing and decomposing models. Composition can be useful for building up specifications by combining models incorporating different requirements. Decomposition is important for relating system models to architectures of subsystem models and subsequent separate refinement of subsystems. Ensuring that two models, M1 and M2, are in a refinement relation may be achieved in one of two ways: 1) Posit-and-Prove: The developer provides both M1 and M2 and uses tools to verify that M1 is refined by M2. In some cases this might be possible using a model checker. Alternatively a tool will generate proof obligations which can be verified using powerful theorem provers or possibly checked using model checkers. Typically this approach requires properties such as invariants and variants to be provided by the developers. 2) Transformational Approach: The developer provides M1 and applies a transformation that automatically constructs M2 in a way that guarantees refinement. This might result in the generation of side conditions that will need to be verified but discharging these should be a lot less effort than proving that M1 is refined by M2 in the posit-and-prove way. One can immediately see how the transformational approach helps developers to construct software such that the verification will succeed. Unfortunately a fully transformational approach for a broad range of problems and solutions is far from being realised so that the posit-and-prove approach will rule for the foreseeable future. It might not appear immediately clear how the posit-and-prove approach helps developers to construct software for which the verification will succeed since the developer is expected to provide M2 as well as M1. This is where having multiple levels of abstraction is important. Typically there is a large abstraction gap between a good formal specification, i.e., one that is easy to validate against the requirements, and an efficient implementation. This gap means it is more difficult to be guided by the specification when constructing an implementation. By having smaller abstraction gaps between a model M1 and its intended refinement M2, it is more natural to be guided by M1 when constructing M2. Typically a refinement step incorporates a design decision about how some effect is achieved or represents an optimization of the design. With a small abstraction gap, the construction of M2 is driven by both M1 and the desired design decision or optimization. When the construction of M2 is guided by M1, then the verification that M2 refines M1 is more likely to succeed. 1 According 10 dictionary.com, '10 refine' means 'to reduce to a pure state'. Ironically our use of the term has the exact opposite meaning. The term 'reify' (as used by Cliff Jones and others) is perhaps more appropriate for what we do but is far less widespread.
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]
  • 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]
  • 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
    [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]