Refine
Year of publication
Document Type
- Monograph/Edited Volume (27)
- Article (18)
- Report (1)
Is part of the Bibliography
- yes (46)
Keywords
- Lively Kernel (4)
- Smalltalk (4)
- Debugging (3)
- Squeak (3)
- Experimentation (2)
- Forschungskolleg (2)
- Hasso Plattner Institute (2)
- Hasso-Plattner-Institut (2)
- Java (2)
- JavaScript (2)
- Klausurtagung (2)
- Live-Programmierung (2)
- Prototyping (2)
- Python (2)
- Service-oriented Systems Engineering (2)
- Versionsverwaltung (2)
- Visualisierung (2)
- Werkzeuge (2)
- collection types (2)
- continuous integration (2)
- exploratory programming (2)
- kontinuierliche Integration (2)
- live programming (2)
- memory optimization (2)
- software engineering (2)
- tools (2)
- version control (2)
- virtual machines (2)
- virtuelle Maschinen (2)
- visualization (2)
- AI Lab (1)
- Abhängigkeiten (1)
- Abschlussbericht (1)
- Algorithmen (1)
- Analog-zu-Digital-Konvertierung (1)
- Anfragesprache (1)
- Architektur (1)
- Aspect-oriented Programming (1)
- Benutzerinteraktion (1)
- Beschränkungen und Abhängigkeiten (1)
- Blockheizkraftwerke (1)
- CSCW (1)
- CoExist (1)
- Constraints (1)
- Context-oriented Programming (1)
- Context-oriented programming (1)
- ContextErlang (1)
- ContextJS (1)
- Continuous Testing (1)
- Continuous Versioning (1)
- Custom Writable Class (1)
- DSA (1)
- Data structure optimization (1)
- Datenbank (1)
- Datensatz (1)
- Datenvisualisierung (1)
- Design (1)
- Distributed debugging (1)
- Domain Objects (1)
- Dynamic Type System (1)
- Dynamic adaptation (1)
- Dynamic analysis (1)
- Dynamische Typ Systeme (1)
- Effizienz (1)
- Energiesparen (1)
- Evolution (1)
- Explore-first Programming (1)
- Extensibility (1)
- FRP (1)
- Fault Localization (1)
- Field study (1)
- Functional Lenses (1)
- Geschäftsanwendungen (1)
- GitHub (1)
- Hauptspeicherdatenbank (1)
- Heuristiken (1)
- Human Factors (1)
- Häkeln (1)
- Identifiers (1)
- Implementation (1)
- Interpreter (1)
- JCop (1)
- JIT (1)
- JIT compilers (1)
- KI-Labor (1)
- Languages (1)
- Literature review (1)
- Liveness (1)
- Measurement (1)
- Mehrfamilienhäuser (1)
- Meta-tracing (1)
- Mobile Application Development (1)
- Morphic (1)
- Muster (1)
- Musterabgleich (1)
- Nebenläufigkeit (1)
- Newspeak (1)
- Object Constraint Programming (1)
- Object Versioning (1)
- Object-Oriented Programming (1)
- Objekt-Constraint Programmierung (1)
- Objekt-Orientiertes Programmieren (1)
- Objekt-orientiertes Programmieren mit Constraints (1)
- Online survey (1)
- Open implementations (1)
- Optimierungen (1)
- Pattern Matching (1)
- Patterns (1)
- Performance (1)
- Ph.D. Retreat (1)
- Ph.D. retreat (1)
- Prognosen (1)
- Programmieren (1)
- Programmiererlebnis (1)
- Programmierkonzepte (1)
- Programming Environments (1)
- Programming Languages (1)
- REST (1)
- Racket (1)
- Record and refinement (1)
- Record and replay (1)
- Regressionstests (1)
- Research School (1)
- Ruby (1)
- Sammlungsdatentypen (1)
- Schriftartgestaltung (1)
- Schriftrendering (1)
- Scope (1)
- Scrollytelling (1)
- Serialisierung (1)
- Skript-Entwicklungsumgebungen (1)
- Softwarearchitektur (1)
- Softwareproduktlinien (1)
- Softwaretests (1)
- Source Code Readability (1)
- Spaltenlayout (1)
- Speicheroptimierungen (1)
- Sprachspezifikation (1)
- StackOverflow (1)
- Synchronisation (1)
- Testergebnisse (1)
- Testpriorisierungs (1)
- Transaktionen (1)
- Travis CI (1)
- Uniform Access Principle (1)
- Unveränderlichkeit (1)
- Value classes (1)
- Virtual machines (1)
- Virtuelle Maschinen (1)
- Visualisierungskonzept-Exploration (1)
- Web applications (1)
- Web browsers (1)
- Zugriffskontrolle (1)
- access control (1)
- active layers (1)
- algorithms (1)
- analog-to-digital conversion (1)
- architecture (1)
- architecture recovery (1)
- aspect-oriented programming (1)
- ausführbare Semantiken (1)
- benutzergenerierte Inhalte (1)
- cogeneration units (1)
- comprehension (1)
- computer-aided design (1)
- context groups (1)
- contextual-variability modeling (1)
- continuous testing (1)
- contracts (1)
- crochet (1)
- data set (1)
- data visualization (1)
- debugging (1)
- demografische Informationen (1)
- demographic information (1)
- dependencies (1)
- design (1)
- digital picture archive (1)
- digitales Bildarchiv (1)
- direct manipulation (1)
- direkte Manipulation (1)
- dynamic typing (1)
- dynamic AOP (1)
- dynamic programming languages (1)
- dynamic service adaptation (1)
- dynamic typing (1)
- dynamische Programmiersprachen (1)
- dynamische Sprachen (1)
- efficiency (1)
- energy savings (1)
- entity-component-system (1)
- executable semantics (1)
- exploratives Programmieren (1)
- final report (1)
- font engineering (1)
- font rendering (1)
- forecasts (1)
- functional languages (1)
- functional lenses (1)
- functional programming (1)
- funktionale Programmierung (1)
- group-based behavior adaptation (1)
- heuristics (1)
- immutable values (1)
- implied methods (1)
- integrated development environments (1)
- integrierte Entwicklungsumgebungen (1)
- interactive media (1)
- interaktive Medien (1)
- interpreters (1)
- intuitive Benutzeroberflächen (1)
- intuitive interfaces (1)
- kontinuierliches Testen (1)
- language specification (1)
- languages (1)
- left recursion (1)
- lively groups (1)
- lively kernel (1)
- liveness (1)
- mehrdimensionale Belangtrennung (1)
- mehrsprachige Ausführungsumgebungen (1)
- modularity (1)
- morphic (1)
- multi-dimensional separation of concerns (1)
- multi-family residential buildings (1)
- object-constraint programming (1)
- object-oriented languages (1)
- object-oriented programming (1)
- objektorientiertes Programmieren (1)
- optimizations (1)
- packrat parsing (1)
- parsing expression grammars (1)
- periodic tasks (1)
- periodische Aufgaben (1)
- polyglot execution environments (1)
- predicated generic functions (1)
- program (1)
- programming (1)
- programming experience (1)
- prototyping (1)
- reactive (1)
- reactive object queries (1)
- reaktive Programmierung (1)
- rechnerunterstütztes Konstruieren (1)
- regression testing (1)
- remodularization (1)
- research school (1)
- runtime adaptations (1)
- scripting environments (1)
- scrollytelling (1)
- separation of concerns (1)
- serialization (1)
- service-oriented systems engineering (1)
- small talk (1)
- smalltalk (1)
- software architecture (1)
- software development (1)
- software product lines (1)
- software tests (1)
- squeak (1)
- synchronization (1)
- test case prioritization (1)
- test results (1)
- traceability (1)
- tracing (1)
- use-cases (1)
- user interaction (1)
- user-generated content (1)
- visual language (1)
- visual languages (1)
- visualization concept exploration (1)
- visuelle Sprache (1)
- visuelle Sprachen (1)
- web-based development (1)
- web-based development environment (1)
- web-basierte Entwicklungsumgebung (1)
- webbasierte Entwicklung (1)
ecoControl
(2015)
Eine dezentrale Energieversorgung ist ein erster Schritt in Richtung Energiewende. Dabei werden auch in Mehrfamilienhäusern vermehrt verschiedene Strom- und Wärmeerzeuger eingesetzt.
Besonders in Deutschland kommen in diesem Zusammenhang Blockheizkraftwerke immer häufiger zum Einsatz, weil sie Gas sehr effizient in Strom und Wärme umwandeln können. Außerdem ermöglichen sie, im Zusammenspiel mit anderen Energiesystemen wie beispielsweise Photovoltaik-Anlagen, eine kontinuierliche und dezentrale Energieversorgung.
Bei dem Betrieb von unterschiedlichen Energiesystemen ist es wünschenswert, dass die Systeme aufeinander abgestimmt arbeiten. Allerdings ist es bisher schwierig, heterogene Energiesysteme effizient miteinander zu betreiben. Dadurch bleiben Einsparungspotentiale ungenutzt.
Eine zentrale Steuerung kann deshalb die Effizienz des Gesamtsystems verbessern.
Mit ecoControl stellen wir einen erweiterbaren Prototypen vor, der die Kooperation von Energiesystemen optimiert und Umweltfaktoren miteinbezieht.
Dazu stellt die Software eine einheitliche Bedienungsoberfläche zur Konfiguration aller Systeme zur Verfügung. Außerdem bietet sie die Möglichkeit, Optimierungsalgorithmen mit Hilfe einer Programmierschnittstelle zu entwickeln, zu testen und auszuführen.
Innerhalb solcher Algorithmen können von ecoControl bereitgestellte Vorhersagen genutzt werden. Diese Vorhersagen basieren auf dem individuellen Verhalten von jedem Energiesystem, Wettervorhersagen und auf Prognosen des Energieverbrauchs. Mithilfe einer Simulation können Techniker unterschiedliche Konfigurationen und Optimierungen sofort ausprobieren, ohne diese über einen langen Zeitraum an realen Geräten testen zu müssen.
ecoControl hilft darüber hinaus auch Hausverwaltungen und Vermietern bei der Verwaltung und Analyse der Energiekosten.
Wir haben anhand von Fallbeispielen gezeigt, dass Optimierungsalgorithmen, welche die Nutzung von Wärmespeichern verbessern, die Effizienz des Gesamtsystems erheblich verbessern können.
Schließlich kommen wir zu dem Schluss, dass ecoControl in einem nächsten Schritt unter echten Bedingungen getestet werden muss, sobald eine geeignete Hardwarekomponente verfügbar ist. Über diese Schnittstelle werden die Messwerte an ecoControl gesendet und Steuersignale an die Geräte weitergeleitet.
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.
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.
Storage strategies have been proposed as a run-time optimization for the PyPy Python implementation and have shown promising results for optimizing execution speed and memory requirements. However, it remained unclear whether the approach works equally well in other dynamic languages. Furthermore, while PyPy is based on RPython, a language to write VMs with reusable components such as a tracing just-in-time compiler and garbage collection, the strategies design itself was not generalized to be reusable across languages implemented using that same toolchain. In this paper, we present a general design and implementation for storage strategies and show how they can be reused across different RPython-based languages. We evaluate the performance of our implementation for RSqueak, an RPython-based VM for Squeak/Smalltalk and show that storage strategies may indeed off er performance benefits for certain workloads in other dynamic programming languages. We furthermore evaluate the generality of our implementation by applying it to Topaz, a Ruby VM, and Pycket, a Racket implementation.
Proceedings of the HPI Research School on Service-oriented Systems Engineering 2020 Fall Retreat
(2021)
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.
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 school, this technical report covers a wide range of topics. These include but are not limited to: Human Computer Interaction and Computer Vision as Service; Service-oriented Geovisualization Systems; Algorithm Engineering for Service-oriented Systems; Modeling and Verification of Self-adaptive Service-oriented Systems; Tools and Methods for Software Engineering in Service-oriented Systems; Security Engineering of Service-based IT Systems; Service-oriented Information Systems; Evolutionary Transition of Enterprise Applications to Service Orientation; Operating System Abstractions for Service-oriented Computing; and Services Specification, Composition, and Enactment.