TY - JOUR A1 - Hirschfeld, Robert A1 - Kawarnura, Katsuya T1 - Dynamic service adaptation JF - Software : practice & experience N2 - Change can be observed in our environment and in the technology we build. While changes in the environment happen continuously and implicitly, our technology has to be kept in sync with the changing world around it. Although we can prepare for some of the changes for most of them we cannot. This is especially true for next-generation mobile communication systems that are expected to support the creation of a ubiquitous society where virtually everything is connected and made available within an organic information network. Resources will frequently join or leave the network, new types of media or new combinations of existing types will be used to interact and cooperate, and services will be tailored to preferences and needs of individual customers to better meet their needs. This paper outlines our research in the area of dynamic service adaptation to provide concepts and technologies allowing for such environments. Copyright (C) 2006 John Wiley & Sons, Ltd. KW - dynamic service adaptation KW - DSA KW - aspect-oriented programming KW - dynamic AOP Y1 - 2006 U6 - https://doi.org/10.1002/spe.766 SN - 0038-0644 SN - 1097-024X VL - 36 IS - 11-12 SP - 1115 EP - 1131 PB - Wiley CY - Chichester ER - TY - JOUR A1 - Haupt, Michael A1 - Adams, Bram A1 - Timbermont, Stijn A1 - Gibbs, Celina A1 - Coady, Yvonne A1 - Hirschfeld, Robert T1 - Disentangling virtual machine architecture N2 - Virtual machine (VM) implementations are made of intricately intertwined subsystems, interacting largely through implicit dependencies. As the degree of crosscutting present in VMs is very high, VM implementations exhibit significant internal complexity. This study proposes an architecture approach for VMs that regards a VM as a composite of service modules coordinated through explicit bidirectional interfaces. Aspect-oriented programming techniques are used to establish these interfaces, to coordinate module interaction, and to declaratively express concrete VM architectures. A VM architecture description language is presented in a case study, illustrating the application of the proposed architectural principles. Y1 - 2009 UR - http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=4124007 U6 - https://doi.org/10.1049/iet-sen.2007.0121 SN - 1751-8806 ER - TY - BOOK A1 - Geller, Felix A1 - Hirschfeld, Robert A1 - Bracha, Gilad T1 - Pattern Matching for an object-oriented and dynamically typed programming language N2 - Pattern matching is a well-established concept in the functional programming community. It provides the means for concisely identifying and destructuring values of interest. This enables a clean separation of data structures and respective functionality, as well as dispatching functionality based on more than a single value. Unfortunately, expressive pattern matching facilities are seldomly incorporated in present object-oriented programming languages. We present a seamless integration of pattern matching facilities in an object-oriented and dynamically typed programming language: Newspeak. We describe language extensions to improve the practicability and integrate our additions with the existing programming environment for Newspeak. This report is based on the first author’s master’s thesis. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 36 KW - Pattern Matching KW - Musterabgleich KW - Muster KW - Objekt-Orientiertes Programmieren KW - Dynamische Typ Systeme KW - Pattern Matching KW - Patterns KW - Object-Oriented Programming KW - Dynamic Type System Y1 - 2010 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-43035 SN - 978-3-86956-065-6 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - BOOK A1 - Haupt, Michael A1 - Marr, Stefan A1 - Hirschfeld, Robert T1 - CSOM/PL : a virtual machine product line N2 - CSOM/PL is a software product line (SPL) derived from applying multi-dimensional separation of concerns (MDSOC) techniques to the domain of high-level language virtual machine (VM) implementations. For CSOM/PL, we modularised CSOM, a Smalltalk VM implemented in C, using VMADL (virtual machine architecture description language). Several features of the original CSOM were encapsulated in VMADL modules and composed in various combinations. In an evaluation of our approach, we show that applying MDSOC and SPL principles to a domain as complex as that of VMs is not only feasible but beneficial, as it improves understandability, maintainability, and configurability of VM implementations without harming performance. N2 - CSOM/PL ist eine Softwareproduktfamilie (software product line, SPL), die erstellt wurde, indem Techniken der mehrdimensionalen Belangtrennung (multi-dimensional separation of concerns, MDSOC) auf die Domäne der virtuellen Maschinen (VM) für höhere Programmiersprachen angewendet wurden. Dazu wurde CSOM, eine in C implementierte Smalltalk-VM, mittels VMADL (virtual machine architecture description language) in Module zerlegt. Etliche Eigenschaften von CSOM wurden in VMADL-Module gekapselt und auf unterschiedliche Weisen komponiert. Die Auswertung des Ansatzes zeigt, dass die Anwendung von MDSOC- und SPL-Prinzipien auf die komplexe VM-Domäne nicht nur machbar ist, sondern darüber hinaus auch Vorteile mit sich bringt, da die Verständlichkeit, Wartbarkeit und Konfigurierbarkeit von VM-Implementierungen ohne Beeinträchtigung der Ausführungsgeschwindigkeit verbessert werden. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 48 KW - Virtuelle Maschinen KW - Architektur KW - Softwareproduktlinien KW - mehrdimensionale Belangtrennung KW - Virtual machines KW - architecture KW - software product lines KW - multi-dimensional separation of concerns Y1 - 2011 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-52332 SN - 978-3-86956-134-9 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - JOUR A1 - Hirschfeld, Robert A1 - Steinert, Bastian A1 - Lincke, Jens T1 - Agile software development in virtual collaboration environments Y1 - 2011 SN - 978-3-642-13756-3 ER - TY - JOUR A1 - Lincke, Jens A1 - Appeltauer, Malte A1 - Steinert, Bastian A1 - Hirschfeld, Robert T1 - An open implementation for context-oriented layer composition in ContextJS JF - Science of computer programming N2 - Context-oriented programming (COP) provides dedicated support for defining and composing variations to a basic program behavior. A variation, which is defined within a layer, can be de-/activated for the dynamic extent of a code block. While this mechanism allows for control flow-specific scoping, expressing behavior adaptations can demand alternative scopes. For instance, adaptations can depend on dynamic object structure rather than control flow. We present scenarios for behavior adaptation and identify the need for new scoping mechanisms. The increasing number of scoping mechanisms calls for new language abstractions representing them. We suggest to open the implementation of scoping mechanisms so that developers can extend the COP language core according to their specific needs. Our open implementation moves layer composition into objects to be affected and with that closer to the method dispatch to be changed. We discuss the implementation of established COP scoping mechanisms using our approach and present new scoping mechanisms developed for our enhancements to Lively Kernel. KW - ContextJS KW - Context-oriented programming KW - Open implementations KW - Dynamic adaptation KW - Scope Y1 - 2011 U6 - https://doi.org/10.1016/j.scico.2010.11.013 SN - 0167-6423 VL - 76 IS - 12 SP - 1194 EP - 1209 PB - Elsevier CY - Amsterdam ER - TY - BOOK A1 - Kleine, Matthias A1 - Hirschfeld, Robert A1 - Bracha, Gilad T1 - An abstraction for version control systems T3 - Technische Berichte des Hasso-Plattner-Instituts für Softwaresystemtechnik an der Universität Potsdam N2 - Versionsverwaltungssysteme (VCS) ermöglichen es Entwicklern, Änderungen an Softwareartifakten zu verwalten. VCS werden mit Hilfe einer Vielzahl verschiedener Werkzeuge bedient, wie z.\,B. graphische Front-ends oder Kommandozeilenwerkzeuge. Es ist wünschenswert mit einzelnen solcher Werkzeuge unterschiedliche VCS bedienen zu können. Bislang hat sich jedoch keine Abstraktion für Versionsverwaltungssysteme durchgesetzt, mit deren Hilfe solche Werkzeuge erstellt werden können. Stattdessen implementieren Werkzeuge zur Interaktion mit mehreren VCS ad-hoc Lösungen. Diese Masterarbeit stellt Pur vor, eine Abstraktion über Versionsverwaltungskonzepte. Mit Hilfe von Pur können Anwendungsprogramme entwickelt werden, die mit mehreren Versionsverwaltungssystemen interagieren können. Im Rahmen dieser Arbeit wird eine Implementierung dieser Abstraktion bereitgestellt und mit Hilfe eines Anwendungsprogramms validiert. N2 - Version Control Systems (VCS) allow developers to manage changes to software artifacts. Developers interact with VCSs through a variety of client programs, such as graphical front-ends or command line tools. It is desirable to use the same version control client program against different VCSs. Unfortunately, no established abstraction over VCS concepts exists. Instead, VCS client programs implement ad-hoc solutions to support interaction with multiple VCSs. This thesis presents Pur, an abstraction over version control concepts that allows building rich client programs that can interact with multiple VCSs. We provide an implementation of this abstraction and validate it by implementing a client application. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 54 Y1 - 2011 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-55629 SN - 978-3-86956-158-5 SN - 1613-5652 SN - 2191-1665 IS - 54 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - JOUR A1 - Steinert, Bastian A1 - Hirschfeld, Robert T1 - Applying design knowledge to programming Y1 - 2012 ER - TY - JOUR A1 - Hirschfeld, Robert A1 - Perscheid, Michael A1 - Haupt, Michael T1 - Explicit use-case representation in object-oriented programming languages JF - ACM SIGPLAN notices N2 - Use-cases are considered an integral part of most contemporary development processes since they describe a software system's expected behavior from the perspective of its prospective users. However, the presence of and traceability to use-cases is increasingly lost in later more code-centric development activities. Use-cases, being well-encapsulated at the level of requirements descriptions, eventually lead to crosscutting concerns in system design and source code. Tracing which parts of the system contribute to which use-cases is therefore hard and so limits understandability. In this paper, we propose an approach to making use-cases first-class entities in both the programming language and the runtime environment. Having use-cases present in the code and the running system will allow developers, maintainers, and operators to easily associate their units of work with what matters to the users. We suggest the combination of use-cases, acceptance tests, and dynamic analysis to automatically associate source code with use-cases. We present UseCasePy, an implementation of our approach to use-case-centered development in Python, and its application to the Django Web framework. KW - design KW - languages KW - use-cases KW - separation of concerns KW - traceability Y1 - 2012 U6 - https://doi.org/10.1145/2168696.2047856 SN - 0362-1340 VL - 47 IS - 2 SP - 51 EP - 60 PB - Association for Computing Machinery CY - New York ER - TY - BOOK A1 - Appeltauer, Malte A1 - Hirschfeld, Robert T1 - The JCop language specification : Version 1.0, April 2012 N2 - Program behavior that relies on contextual information, such as physical location or network accessibility, is common in today's applications, yet its representation is not sufficiently supported by programming languages. With context-oriented programming (COP), such context-dependent behavioral variations can be explicitly modularized and dynamically activated. In general, COP could be used to manage any context-specific behavior. However, its contemporary realizations limit the control of dynamic adaptation. This, in turn, limits the interaction of COP's adaptation mechanisms with widely used architectures, such as event-based, mobile, and distributed programming. The JCop programming language extends Java with language constructs for context-oriented programming and additionally provides a domain-specific aspect language for declarative control over runtime adaptations. As a result, these redesigned implementations are more concise and better modularized than their counterparts using plain COP. JCop's main features have been described in our previous publications. However, a complete language specification has not been presented so far. This report presents the entire JCop language including the syntax and semantics of its new language constructs. N2 - Das Verhalten von modernen Software-Anwendungen benötigt häufig Informationen über den Kontext ihrer Ausführung, z.B. die geografische Position, die Tageszeit oder die aktuelle Netzwerkbandbreite. Dennoch bieten heutige Programmiersprachen nur wenig Unterstützung für die Repräsentation kontextspezifischen Verhaltens. Kontextorientiertes Programmieren ist ein Ansatz, der die explizite Modularisierung und Laufzeitaktivierung von kontextspezifischem Verhalten auf der Ebene von Programmiersprachkonstrukten ermöglicht. Die bisherigen Umsetzungen von kontextorientiertem Programmieren schränken jedoch die Kontrolle der Laufzeitaktivierungen solches kontextspezifischen Verhaltens ein. Daraus folgt eine Einschränkung der Anwendungsbereiche für kontextorientiertes Programmieren, unter anderem für solche Domänen, in denen Programme sehr häufig kontextabhängiges Verhalten bereitstellen, z.B. ereignisbasierte, mobile und dienstorientierte Systeme. Die Programmiersprache JCop erweitert Java um Sprachkonstrukte für kontextorientieres Programmieren und bietet zusätzlich eine domänenspezifische Aspektsprach an, mit deren Hilfe Laufzeitadaptionen deklarativ spezifiziert werden können. Die Kernkonzepte von JCop wurden bereits in mehrern Publikationen vorgestellt, dieser Bericht enthält nun eine umfassende Sprachspezifikation von JCop. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 59 KW - Programming Languages KW - Context-oriented Programming KW - Aspect-oriented Programming KW - Java KW - JCop KW - runtime adaptations Y1 - 2012 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-60208 SN - 978-3-86956-193-6 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - BOOK A1 - Calmez, Conrad A1 - Hesse, Hubert A1 - Siegmund, Benjamin A1 - Stamm, Sebastian A1 - Thomschke, Astrid A1 - Hirschfeld, Robert A1 - Ingalls, Dan A1 - Lincke, Jens T1 - Explorative authoring of Active Web content in a mobile environment N2 - Developing rich Web applications can be a complex job - especially when it comes to mobile device support. Web-based environments such as Lively Webwerkstatt can help developers implement such applications by making the development process more direct and interactive. Further the process of developing software is collaborative which creates the need that the development environment offers collaboration facilities. This report describes extensions of the webbased development environment Lively Webwerkstatt such that it can be used in a mobile environment. The extensions are collaboration mechanisms, user interface adaptations but as well event processing and performance measuring on mobile devices. N2 - Vielseitige Webanwendungen zu entwickeln kann eine komplexe Aufgabe sein - besonders wenn es die Unterstützung mobiler Geräte betrifft. Webbasierte Umgebungen wie Lively Kernel können Entwicklern helfen Webanwendungen zu entwickeln, indem sie den Entwicklungsprozess direkter und interaktiver gestalten. Zudem sind Entwicklungsprozesse von Software kollaborativ, d.h. Enwicklungsumgebungen müssen so gestaltet sein, dass sie mit kollaborativen Elementen zu unterstützen. Diese Arbeit beschreibt die Erweiterungen der webbasierten Entwicklungsumgebung Lively Webwerkstatt, so dass diese in einer mobilen Umgebung genutzt werden kann. Die Reichweite dieser Erweiterungen erstreckt sich von Kollaborationsmechanismen und Benutzerschnittstellen bis hin zu Eventbehandlung und Performanzmessungen auf mobilen Geräten. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 72 KW - Web applications KW - Mobile Application Development KW - CSCW KW - Lively Kernel Y1 - 2013 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-64054 SN - 978-3-86956-232-2 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - JOUR A1 - Steinert, Bastian A1 - Cassou, Damien A1 - Hirschfeld, Robert T1 - CoExist overcoming aversion to change preserving immediate access to source code and run-time information of previous development states JF - ACM SIGPLAN notices N2 - Programmers make many changes to the program to eventually find a good solution for a given task. In this course of change, every intermediate development state can of value, when, for example, a promising ideas suddenly turn out inappropriate or the interplay of objects turns out more complex than initially expected before making changes. Programmers would benefit from tool support that provides immediate access to source code and run-time of previous development states of interest. We present IDE extensions, implemented for Squeak/Smalltalk, to preserve, retrieve, and work with this information. With such tool support, programmers can work without worries because they can rely on tools that help them with whatever their explorations will reveal. They no longer have to follow certain best practices only to avoid undesired consequences of changing code. KW - Design KW - Experimentation KW - Human Factors KW - Continuous Testing KW - Continuous Versioning KW - Debugging KW - Evolution KW - Explore-first Programming KW - Fault Localization KW - Prototyping Y1 - 2013 U6 - https://doi.org/10.1145/2480360.2384591 SN - 0362-1340 VL - 48 IS - 2 SP - 107 EP - 117 PB - Association for Computing Machinery CY - New York ER - TY - BOOK A1 - Felgentreff, Tim A1 - Borning, Alan A1 - Hirschfeld, Robert T1 - Babelsberg : specifying and solving constraints on object behavior N2 - Constraints allow developers to specify desired properties of systems in a number of domains, and have those properties be maintained automatically. This results in compact, declarative code, avoiding scattered code to check and imperatively re-satisfy invariants. Despite these advantages, constraint programming is not yet widespread, with standard imperative programming still the norm. There is a long history of research on integrating constraint programming with the imperative paradigm. However, this integration typically does not unify the constructs for encapsulation and abstraction from both paradigms. This impedes re-use of modules, as client code written in one paradigm can only use modules written to support that paradigm. Modules require redundant definitions if they are to be used in both paradigms. We present a language – Babelsberg – that unifies the constructs for en- capsulation and abstraction by using only object-oriented method definitions for both declarative and imperative code. Our prototype – Babelsberg/R – is an extension to Ruby, and continues to support Ruby’s object-oriented se- mantics. It allows programmers to add constraints to existing Ruby programs in incremental steps by placing them on the results of normal object-oriented message sends. It is implemented by modifying a state-of-the-art Ruby virtual machine. The performance of standard object-oriented code without con- straints is only modestly impacted, with typically less than 10% overhead compared with the unmodified virtual machine. Furthermore, our architec- ture for adding multiple constraint solvers allows Babelsberg to deal with constraints in a variety of domains. We argue that our approach provides a useful step toward making con- straint solving a generic tool for object-oriented programmers. We also provide example applications, written in our Ruby-based implementation, which use constraints in a variety of application domains, including interactive graphics, circuit simulations, data streaming with both hard and soft constraints on performance, and configuration file Management. N2 - Constraints – Beschränkungen und Abhängigkeiten zwischen Systemteilen – erlauben es Entwicklern, erwünschte Eigenschaften von Systemen zu spezifizieren, sodass diese automatisch sichergestellt werden. Das führt zu kompaktem, deklarativem Quelltext, und vermeidet verstreute Anweisungen, die wiederholt Invarianten prüfen und wiederherstellen müssen. Trotz dieser Vorteile ist Programmieren mit Constraints nicht verbreitet, sondern imperatives Programmieren die Norm. Es gibt eine lange Forschungsgeschichte zur Integration von Constraints mit imperativem Programmieren. Jedoch vereinheitlicht diese Integration nicht die Programmierkonstrukte zur Abstraktion und Kapselung beider Paradigmen. Das verhindert die Wiederverwendung von Modulen, da Quelltext, der in einem Paradigma geschrieben wurde, nur Module verwenden kann, die so geschrieben sind, dass sie dieses Paradigma unterstützen. Module benötigen daher redundante Definitionen, wenn sie in beiden Paradigmen zur Verfügung stehen sollen. Wir präsentieren hier eine Sprache – Babelsberg – welche die Konstrukte zur Abstraktion und Kapselung vereinheitlicht, indem sie bekannte objektorientierte Methodendefinitionen sowohl für deklarativen, als auch für imperativen Code verwendet. Unser Prototyp –Babelsberg/R – ist eine Erweiterung von Ruby, und unterstützt Rubys objektorientierte Semantik. Dieser erlaubt es Programmieren, Constraints schrittweise zu existierenden Ruby Programmen hinzuzufügen, indem diese auf den Ergebnissen von Methodenaufrufen deklariert werden. Der Prototyp ist auf Basis einer virtuellen Maschine für Ruby implementiert, wobei die Ausführungsgeschwindigkeit von objektorienterten Programmteilen ohne Constraints nur minimal – typischerweise weniger als 10% – beeinträchtigt wird. Weiterhin erlaubt es unsere Architektur, je nach Anwendungsfall, mehrere Lösungsalgorithmen für Constraints zu verwenden. Wir argumentieren, dass unser Ansatz einen nützlichen Schritt darstellt, um Programmieren mit Constraints zu einem allgemeinen Werkzeug für objektorientierte Programmierer zu machen. Wir zeigen Beispielanwendungen, die unserer Ruby-basierten Implementierung geschrieben sind, welche Constraints in einer Reihe von Anwendungen verwenden: Für interaktive Grafik, Schaltkreissimulation, Datenströme mit sowohl harten, als auch weichen Constraints bezüglich ihrer Geschwindigkeit, und Konfigurationsverwaltung. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 81 KW - Constraints KW - Beschränkungen und Abhängigkeiten KW - Objekt-orientiertes Programmieren mit Constraints KW - Constraints KW - Object Constraint Programming Y1 - 2013 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-67296 SN - 978-3-86956-265-0 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - BOOK A1 - Pape, Tobias A1 - Treffer, Arian A1 - Hirschfeld, Robert A1 - Haupt, Michael T1 - Extending a Java Virtual Machine to Dynamic Object-oriented Languages N2 - There are two common approaches to implement a virtual machine (VM) for a dynamic object-oriented language. On the one hand, it can be implemented in a C-like language for best performance and maximum control over the resulting executable. On the other hand, it can be implemented in a language such as Java that allows for higher-level abstractions. These abstractions, such as proper object-oriented modularization, automatic memory management, or interfaces, are missing in C-like languages but they can simplify the implementation of prevalent but complex concepts in VMs, such as garbage collectors (GCs) or just-in-time compilers (JITs). Yet, the implementation of a dynamic object-oriented language in Java eventually results in two VMs on top of each other (double stack), which impedes performance. For statically typed languages, the Maxine VM solves this problem; it is written in Java but can be executed without a Java virtual machine (JVM). However, it is currently not possible to execute dynamic object-oriented languages in Maxine. This work presents an approach to bringing object models and execution models of dynamic object-oriented languages to the Maxine VM and the application of this approach to Squeak/Smalltalk. The representation of objects in and the execution of dynamic object-oriented languages pose certain challenges to the Maxine VM that lacks certain variation points necessary to enable an effortless and straightforward implementation of dynamic object-oriented languages' execution models. The implementation of Squeak/Smalltalk in Maxine as a feasibility study is to unveil such missing variation points. N2 - Es gibt zwei übliche Wege, um eine virtuelle Maschine (VM) für eine dynamische objektorientierte Programmiersprache zu implementieren. Einerseits kann sie in einer C-ähnlichen Programmiersprache geschrieben werden, um bestmögliche Leistung zu erzielen und größtmöglichen Einfluss auf das sich ergebende ausführbare Programm zu haben. Andererseits kann sie in einer Sprache wie Java geschrieben werden, die weitreichendere Abstraktionen als die C-ähnlichen Sprachen erlaubt. Diese Abstraktionen, beispielsweise echte objektorientierte Modularisierung, automatische Speicherverwaltung oder explizite Schnittstellen, erlauben eine vereinfachtes Implementieren von VM-typischen, aber komplexen Konzepten, wie Speicherbereinigung (garbage collector, GCs) oder just-in-time-Compilern (JITs). Wird eine dynamische objektorientierte Programmiersprache in Java geschrieben, ist jedoch mit Leistungseinbußen zu rechen, da effektiv zwei aufeinander aufbauende virtuelle Maschinen entstehen. Die Maxine VM löst diese Problem für statisch getypte Programmiersprachen; sie ist in Java geschrieben, kann aber ohne jegliche Java VM (JVM) laufen. Es ist jedoch momentan nicht möglich, dynamische objektorientierte Programmiersprachen in Maxine auszuführen. Diese Arbeit stellt einen Ansatz zur Umsetzung von Objekt- und Ausführungsmodellen dynamischer objektorientierter Programmiersprachen innerhalb der Maxine VM vor, sowie dessen Anwendung auf Squeak/Smalltalk. Dabei stellt die Representation von Objekten und die Ausführung dynamischer objektorientierter Programmiersprachen bestimmte Heraus- und Anforderungen an die Maxine VM, die trotz des Fokus auf Modularität und Konfigurierbarkeit einige Variationspunkte vermissen lässt, welche wiederum für eine einfache Implementierung von besagten Ausführungsmodellen jedoch unerlässlich sind. Daher sollen durch eine testweise Implementierung von Squeak/Smalltalk in Maxine eben jene Variationspunkte identifiziert werden. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 82 Y1 - 2013 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-67438 SN - 978-3-86956-266-7 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - JOUR A1 - Weiher, Marcel A1 - Hirschfeld, Robert T1 - Polymorphic identifiers: uniform resource access in objective-smalltalk JF - ACM SIGPLAN notices N2 - In object-oriented programming, polymorphic dispatch of operations decouples clients from specific providers of services and allows implementations to be modified or substituted without affecting clients. The Uniform Access Principle (UAP) tries to extend these qualities to resource access by demanding that access to state be indistinguishable from access to operations. Despite language features supporting the UAP, the overall goal of substitutability has not been achieved for either alternative resources such as keyed storage, files or web pages, or for alternate access mechanisms: specific kinds of resources are bound to specific access mechanisms and vice versa. Changing storage or access patterns either requires changes to both clients and service providers and trying to maintain the UAP imposes significant penalties in terms of code-duplication and/or performance overhead. We propose introducing first class identifiers as polymorphic names for storage locations to solve these problems. With these Polymorphic Identifiers, we show that we can provide uniform access to a wide variety of resource types as well as storage and access mechanisms, whether parametrized or direct, without affecting client code, without causing code duplication or significant performance penalties. KW - Identifiers KW - REST KW - Uniform Access Principle KW - Extensibility Y1 - 2014 U6 - https://doi.org/10.1145/2508168.2508169 SN - 0362-1340 SN - 1558-1160 VL - 49 IS - 2 SP - 61 EP - 71 PB - Association for Computing Machinery CY - New York ER - TY - BOOK A1 - Meinel, Christoph A1 - Plattner, Hasso A1 - Döllner, Jürgen Roland Friedrich A1 - Weske, Mathias A1 - Polze, Andreas A1 - Hirschfeld, Robert A1 - Naumann, Felix A1 - Giese, Holger A1 - Baudisch, Patrick T1 - Proceedings of the 7th Ph.D. Retreat of the HPI Research School on Service-oriented Systems Engineering N2 - Design and Implementation of service-oriented architectures imposes a huge number of research questions from the fields of software engineering, system analysis and modeling, adaptability, and application integration. Component orientation and web services are two approaches for design and realization of complex web-based system. Both approaches allow for dynamic application adaptation as well as integration of enterprise application. Commonly used technologies, such as J2EE and .NET, form de facto standards for the realization of complex distributed systems. Evolution of component systems has lead to web services and service-based architectures. This has been manifested in a multitude of industry standards and initiatives such as XML, WSDL UDDI, SOAP, etc. All these achievements lead to a new and promising paradigm in IT systems engineering which proposes to design complex software solutions as collaboration of contractually defined software services. Service-Oriented Systems Engineering represents a symbiosis of best practices in object-orientation, component-based development, distributed computing, and business process management. It provides integration of business and IT concerns. The annual Ph.D. Retreat of the Research School provides each member the opportunity to present his/her current state of their research and to give an outline of a prospective Ph.D. thesis. Due to the interdisciplinary structure of the Research Scholl, this technical report covers a wide range of research topics. These include but are not limited to: Self-Adaptive Service-Oriented Systems, Operating System Support for Service-Oriented Systems, Architecture and Modeling of Service-Oriented Systems, Adaptive Process Management, Services Composition and Workflow Planning, Security Engineering of Service-Based IT Systems, Quantitative Analysis and Optimization of Service-Oriented Systems, Service-Oriented Systems in 3D Computer Graphics sowie Service-Oriented Geoinformatics. N2 - Der Entwurf und die Realisierung dienstbasierender Architekturen wirft eine Vielzahl von Forschungsfragestellungen aus den Gebieten der Softwaretechnik, der Systemmodellierung und -analyse, sowie der Adaptierbarkeit und Integration von Applikationen auf. Komponentenorientierung und WebServices sind zwei Ansätze für den effizienten Entwurf und die Realisierung komplexer Web-basierender Systeme. Sie ermöglichen die Reaktion auf wechselnde Anforderungen ebenso, wie die Integration großer komplexer Softwaresysteme. Heute übliche Technologien, wie J2EE und .NET, sind de facto Standards für die Entwicklung großer verteilter Systeme. Die Evolution solcher Komponentensysteme führt über WebServices zu dienstbasierenden Architekturen. Dies manifestiert sich in einer Vielzahl von Industriestandards und Initiativen wie XML, WSDL, UDDI, SOAP. All diese Schritte führen letztlich zu einem neuen, vielversprechenden Paradigma für IT Systeme, nach dem komplexe Softwarelösungen durch die Integration vertraglich vereinbarter Software-Dienste aufgebaut werden sollen. "Service-Oriented Systems Engineering" repräsentiert die Symbiose bewährter Praktiken aus den Gebieten der Objektorientierung, der Komponentenprogrammierung, des verteilten Rechnen sowie der Geschäftsprozesse und berücksichtigt auch die Integration von Geschäftsanliegen und Informationstechnologien. Die Klausurtagung des Forschungskollegs "Service-oriented Systems Engineering" findet einmal jährlich statt und bietet allen Kollegiaten die Möglichkeit den Stand ihrer aktuellen Forschung darzulegen. Bedingt durch die Querschnittstruktur des Kollegs deckt dieser Bericht ein große Bandbreite aktueller Forschungsthemen ab. Dazu zählen unter anderem Self-Adaptive Service-Oriented Systems, Operating System Support for Service-Oriented Systems, Architecture and Modeling of Service-Oriented Systems, Adaptive Process Management, Services Composition and Workflow Planning, Security Engineering of Service-Based IT Systems, Quantitative Analysis and Optimization of Service-Oriented Systems, Service-Oriented Systems in 3D Computer Graphics sowie Service-Oriented Geoinformatics. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 83 KW - Hasso-Plattner-Institut KW - Forschungskolleg KW - Klausurtagung KW - Service-oriented Systems Engineering KW - Hasso Plattner Institute KW - Research School KW - Ph.D. Retreat KW - Service-oriented Systems Engineering Y1 - 2014 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus-63490 SN - 978-3-86956-273-5 PB - Universitätsverlag Potsdam CY - Potsdam ER - TY - JOUR A1 - Bauman, Spenser A1 - Bolz, Carl Friedrich A1 - Hirschfeld, Robert A1 - Kirilichev, Vasily A1 - Pape, Tobias A1 - Siek, Jeremy G. A1 - Tobin-Hochstadt, Sam T1 - Pycket: A Tracing JIT for a Functional Language JF - ACM SIGPLAN notices N2 - We present Pycket, a high-performance tracing JIT compiler for Racket. Pycket supports a wide variety of the sophisticated features in Racket such as contracts, continuations, classes, structures, dynamic binding, and more. On average, over a standard suite of benchmarks, Pycket outperforms existing compilers, both Racket's JIT and other highly-optimizing Scheme compilers. Further, Pycket provides much better performance for Racket proxies than existing systems, dramatically reducing the overhead of contracts and gradual typing. We validate this claim with performance evaluation on multiple existing benchmark suites. The Pycket implementation is of independent interest as an application of the RPython meta-tracing framework (originally created for PyPy), which automatically generates tracing JIT compilers from interpreters. Prior work on meta-tracing focuses on bytecode interpreters, whereas Pycket is a high-level interpreter based on the CEK abstract machine and operates directly on abstract syntax trees. Pycket supports proper tail calls and first-class continuations. In the setting of a functional language, where recursion and higher-order functions are more prevalent than explicit loops, the most significant performance challenge for a tracing JIT is identifying which control flows constitute a loop-we discuss two strategies for identifying loops and measure their impact. KW - Experimentation KW - Languages KW - Measurement KW - Performance KW - JIT compilers KW - contracts KW - tracing KW - functional languages KW - Racket Y1 - 2015 U6 - https://doi.org/10.1145/2784731.2784740 SN - 0362-1340 SN - 1558-1160 VL - 50 IS - 9 SP - 22 EP - 34 PB - Association for Computing Machinery CY - New York ER - TY - JOUR A1 - Freudenberg, Bert A1 - Ingalls, Dan A1 - Felgentreff, Tim A1 - Pape, Tobias A1 - Hirschfeld, Robert T1 - SqueakJS A Modern and Practical Smalltalk that Runs in Any Browser JF - ACM SIGPLAN notices N2 - We report our experience in implementing SqueakJS, a bitcompatible implementation of Squeak/Smalltalk written in pure JavaScript. SqueakJS runs entirely in theWeb browser with a virtual file system that can be directed to a server or client-side storage. Our implementation is notable for simplicity and performance gained through adaptation to the host object memory and deployment leverage gained through the Lively Web development environment. We present several novel techniques as well as performance measurements for the resulting virtual machine. Much of this experience is potentially relevant to preserving other dynamic language systems and making them available in a browser-based environment. KW - Smalltalk KW - Squeak KW - Web browsers KW - JavaScript Y1 - 2015 U6 - https://doi.org/10.1145/10.1145/2661088.2661100 SN - 0362-1340 SN - 1558-1160 VL - 50 IS - 2 SP - 57 EP - 66 PB - Association for Computing Machinery CY - New York ER - TY - JOUR A1 - Steinert, Bastian A1 - Thamsen, Lauritz A1 - Felgentreff, Tim A1 - Hirschfeld, Robert T1 - Object Versioning to Support Recovery Needs Using Proxies to Preserve Previous Development States in Lively JF - ACM SIGPLAN notices N2 - We present object versioning as a generic approach to preserve access to previous development and application states. Version-aware references can manage the modifications made to the target object and record versions as desired. Such references can be provided without modifications to the virtual machine. We used proxies to implement the proposed concepts and demonstrate the Lively Kernel running on top of this object versioning layer. This enables Lively users to undo the effects of direct manipulation and other programming actions. KW - Programming Environments KW - Object Versioning KW - CoExist KW - JavaScript KW - Lively Kernel Y1 - 2015 U6 - https://doi.org/10.1145/2661088.2661093 SN - 0362-1340 SN - 1558-1160 VL - 50 IS - 2 SP - 113 EP - 124 PB - Association for Computing Machinery CY - New York ER - TY - BOOK A1 - Felgentreff, Tim A1 - Hirschfeld, Robert A1 - Millstein, Todd A1 - Borning, Alan T1 - Babelsberg/RML BT - executable semantics and language testing with RML N2 - New programming language designs are often evaluated on concrete implementations. However, in order to draw conclusions about the language design from the evaluation of concrete programming languages, these implementations need to be verified against the formalism of the design. To that end, we also have to ensure that the design actually meets its stated goals. A useful tool for the latter has been to create an executable semantics from a formalism that can execute a test suite of examples. However, this mechanism so far did not allow to verify an implementation against the design. Babelsberg is a new design for a family of object-constraint languages. Recently, we have developed a formal semantics to clarify some issues in the design of those languages. Supplementing this work, we report here on how this formalism is turned into an executable operational semantics using the RML system. Furthermore, we show how we extended the executable semantics to create a framework that can generate test suites for the concrete Babelsberg implementations that provide traceability from the design to the language. Finally, we discuss how these test suites helped us find and correct mistakes in the Babelsberg implementation for JavaScript. N2 - Neue Programmiersprachdesigns werden typischerweise anhand konkreter Implementierungen bewertet. Um jedoch Schlüsse aus den Erfahrungen mit einer konkreten Programmiersprache auf ein Sprachdesign ziehen zu können, muss die konkrete Sprache verifizierbar dem Design entsprechen. Zudem muss sichergestellt sein, dass das formale Design seine gesetzten Ziele auch erfüllt. Dabei haben sich ausführbare Semantiken als ein nützliches Werkzeug erwiesen, um letzteres sicherzustellen. Allerdings half dieses Werkzeug bisher nicht, auch die konkrete Implementierung gegen das Design zu verifizieren. Babelsberg ist ein neues Design für eine Familie von Objekt-Constraint Programmiersprachen, zu der wir eine formale Semantik entwickelt haben, die einige Details des Designs klarstellt. Ergänzend dazu berichten wir hier, wie dieser Formalismus in eine ausführbare Semantik mithilfe des RML Systems umgewandelt werden kann. Weiterhin zeigen wir, wie wir diese ausführbare Semantik um ein Rahmenwerk erweitert haben, mit dem sich programmatische Tests für die konkreten Babelsberg Implementierungen erzeugen lassen, welche Rückverfolgbarkeit von der Sprachimplementierung zum Sprachdesign sicherstellen. Schlussendlich diskutieren wir, wie diese Tests uns erlaubten, Fehler in der Babelsberg Implementierung für JavaScript zu finden und zu beheben. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 103 KW - object-constraint programming KW - executable semantics KW - language specification KW - Objekt-Constraint Programmierung KW - ausführbare Semantiken KW - Sprachspezifikation Y1 - 2015 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus4-83826 SN - 978-3-86956-348-0 SN - 1613-5652 SN - 2191-1665 IS - 103 PB - Universitätsverlag Potsdam CY - Potsdam ER -