TY - THES A1 - Taeumel, Marcel T1 - Data-driven tool construction in exploratory programming environments T1 - Datengetriebener Werkzeugbau in explorativen Programmierumgebungen N2 - This work presents a new design for programming environments that promote the exploration of domain-specific software artifacts and the construction of graphical tools for such program comprehension tasks. In complex software projects, tool building is essential because domain- or task-specific tools can support decision making by representing concerns concisely with low cognitive effort. In contrast, generic tools can only support anticipated scenarios, which usually align with programming language concepts or well-known project domains. However, the creation and modification of interactive tools is expensive because the glue that connects data to graphics is hard to find, change, and test. Even if valuable data is available in a common format and even if promising visualizations could be populated, programmers have to invest many resources to make changes in the programming environment. Consequently, only ideas of predictably high value will be implemented. In the non-graphical, command-line world, the situation looks different and inspiring: programmers can easily build their own tools as shell scripts by configuring and combining filter programs to process data. We propose a new perspective on graphical tools and provide a concept to build and modify such tools with a focus on high quality, low effort, and continuous adaptability. That is, (1) we propose an object-oriented, data-driven, declarative scripting language that reduces the amount of and governs the effects of glue code for view-model specifications, and (2) we propose a scalable UI-design language that promotes short feedback loops in an interactive, graphical environment such as Morphic known from Self or Squeak/Smalltalk systems. We implemented our concept as a tool building environment, which we call VIVIDE, on top of Squeak/Smalltalk and Morphic. We replaced existing code browsing and debugging tools to iterate within our solution more quickly. In several case studies with undergraduate and graduate students, we observed that VIVIDE can be applied to many domains such as live language development, source-code versioning, modular code browsing, and multi-language debugging. Then, we designed a controlled experiment to measure the effect on the time to build tools. Several pilot runs showed that training is crucial and, presumably, takes days or weeks, which implies a need for further research. As a result, programmers as users can directly work with tangible representations of their software artifacts in the VIVIDE environment. Tool builders can write domain-specific scripts to populate views to approach comprehension tasks from different angles. Our novel perspective on graphical tools can inspire the creation of new trade-offs in modularity for both data providers and view designers. N2 - Diese Arbeit schlägt einen neuartigen Entwurf für Programmierumgebungen vor, welche den Umgang mit domänenspezifischen Software-Artefakten erleichtern und die Konstruktion von unterstützenden, grafischen Werkzeugen fördern. Werkzeugbau ist in komplexen Software-Projekten ein essentieller Bestandteil, weil spezifische, auf Domäne und Aufgabe angepasste, Werkzeuge relevante Themen und Konzepte klar darstellen und somit effizient zur Entscheidungsfindung beitragen können. Im Gegensatz dazu sind vorhandene, traditionelle Werkzeuge nur an allgemeinen, wiederkehrenden Anforderungen ausgerichtet, welche im Spezialfall Gedankengänge nur unzureichend abbilden können. Leider sind das Erstellen und Anpassen von interaktiven Werkzeugen teuer, weil die Beschreibungen zwischen Information und Repräsentation nur schwer auffindbar, änderbar und prüfbar sind. Selbst wenn relevante Daten verfügbar und vielversprechende Visualisierungen konfigurierbar sind, müssten Programmierer viele Ressourcen für das Verändern ihrer Programmierumgeben investieren. Folglich können nur Ideen von hohem Wert umgesetzt werden, um diese Kosten zu rechtfertigen. Dabei sieht die Situation in der textuellen Welt der Kommandozeile sehr vielversprechend aus. Dort können Programmierer einfach ihre Werkzeuge in Form von Skripten anpassen und kleine Filterprogramme kombinieren, um Daten zu verarbeiten. Wir stellen eine neuartige Perspektive auf grafische Werkzeuge vor und vermitteln dafür ein Konzept, um diese Werkzeuge mit geringem Aufwand und in hoher Qualität zu konstruieren. Im Detail beinhaltet das, erstens, eine objekt-orientierte, daten-getriebene, deklarative Skriptsprache, um die Programmierschnittstelle zwischen Information und Repräsentation zu vereinfachen. Zweitens ist dies eine skalierbare Entwurfssprache für Nutzerschnitt-stellen, welche kurze Feedback-Schleifen und Interaktivität kombiniert, wie es in den Umgebungen Self oder Squeak/Smalltalk typisch ist. Wir haben unser Konzept in Form einer neuartigen Umgebung für Werkzeugbau mit Hilfe von Squeak/Smalltalk und Morphic umgesetzt. Die Umgebung trägt den Namen VIVIDE. Damit konnten wir die bestehenden Werkzeuge von Squeak für Quelltextexploration und ausführung ersetzen, um unsere Lösung kontinuierlich zu verbessern. In mehreren Fallstudien mit Studenten konnten wir beobachten, dass sich VIVIDE in vielen Domänen anwenden lässt: interaktive Entwicklung von Programmiersprachen, modulare Versionierung und Exploration von Quelltext und Fehleranalyse von mehrsprachigen Systemen. Mit Blick auf zukünftige Forschung haben wir ebenfalls ein kontrolliertes Experiment entworfen. Nach einigen Testläufen stellte sich die Trainingsphase von VIVIDE als größte, und somit offene, Herausforderung heraus. Im Ergebnis sind wir davon überzeugt, dass Programmierer in VIVIDE direkt mit greifbaren, interaktiven Darstellungen relevanter Software-Artefakte arbeiten können. Im Rahmen des Werkzeugbaus können Programmierer kompakte, angepasste Skripte schreiben, die Visualisierungen konfigurieren, um Programmieraufgaben spezifisch aus mehreren Blickwinkeln zu betrachten. Unsere neuartige Perspektive auf grafische Werkzeuge kann damit sowohl das Bereitstellen von Informationen, als auch den Entwurf interaktiver Grafik positiv beeinflussen. KW - programming KW - tool building KW - user interaction KW - exploration KW - liveness KW - immediacy KW - direct manipulation KW - scripting languages KW - Squeak/Smalltalk KW - Programmieren KW - Werkzeugbau KW - Nutzerinteraktion KW - Exploration KW - Lebendigkeit KW - Direkte Manipulation KW - Skriptsprachen KW - Squeak/Smalltalk Y1 - 2020 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus4-444289 ER - TY - BOOK A1 - Schreiber, Robin A1 - Krahn, Robert A1 - Ingalls, Daniel H. H. A1 - Hirschfeld, Robert T1 - Transmorphic T1 - Transmorphic BT - mapping direct manipulation to source code transformations BT - Abbilden von direkter Manipulation zu Transformationen im Programmtext N2 - 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 functional 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. This however comes at the price of a more rigid, functional framework where programmers are forced to express visual entities with functional abstractions, detached from the way one intuitively thinks about the physical world. In contrast to that, the GUI Framework Morphic allows interactions in the graphical domain, such as grabbing, dragging or resizing of elements to evolve an application at runtime, providing liveness and directness in the development workflow. Modelling each visual entity through mutable abstractions however makes it difficult to ensure correctness when GUIs start to grow more complex. Furthermore, by evolving morphs at runtime through direct manipulation we diverge more and more from the symbolic description that corresponds to the morph. Given that both of these approaches have their merits and problems, is there a way to combine them in a meaningful way that preserves their respective benefits? As a solution for this problem, we propose to lift Morphic's concept of direct manipulation from the mutation of state to the transformation of source code. In particular, we will explore the design, implementation and integration of a bidirectional mapping between the graphical representation and a functional and declarative symbolic description of a graphical user interface within a self hosted development environment. We will present Transmorphic, a functional take on the Morphic GUI Framework, where the visual and structural properties of morphs are defined in a purely functional, declarative fashion. In Transmorphic, the developer is able to assemble different morphs at runtime through direct manipulation which is automatically translated into changes in the code of the application. In this way, the comprehensiveness and predictability of direct manipulation can be used in the context of a purely functional GUI, while the effects of the manipulation are reflected in a medium that is always in reach for the programmer and can even be used to incorporate the source transformations into the source files of the application. N2 - Das Definieren von graphischen Benutzeroberflächen mittels funktionaler Abstraktionen, kann die Komplexität der Verwaltung des Zustandes der Anwendung erheblich reduzieren. Aktuelle Beispiele, wie Facebook's Framework *React*, zeigen auf, wie das modellieren der visuellen Schnittstelle als eine funktionale Projektion vom Zustand der Anwendung zur graphischen Repräsentation, die Anzahl der agierenden Objekte erheblich reduzieren und so die Verlässlichkeit des Systems erhöhen kann. Der Preis für die so erreichte Stabilität, ist eine relativ statische graphische Repräsentation, die sich zur Laufzeit nicht dynamisch anpassen lässt und in der jede visuelle Entität nur mittles funktionaler Abstraktionen beschrieben werden kann, was nicht unserem intuitiven Verständnis der Welt entspricht. Im Gegensatz dazu, erlaubt das Rahmenwerk Morphic mittles Interaktionen wie Ziehen, Greifen oder Skalieren von visuellen Elementen, die grahische Darstellung der Anwendung zur Laufzeit in einer unmittelbaren ("live") und direkten Art und Weise weiter zu entwickeln. Um diese Flexibilität zu erreichen, modelliert Morphic allerdings jedes graphische Objekt mittels veränderlichem Zustand, was das Garantieren der Fehlerfreiheit von graphischen Oberfläche, insbesondere bei sehr komplexen Schnittstellen, deutlich erschwehrt. Hinzu kommt, dass die dynamischen Anpassungen zur Laufzeit dazu führen, dass sich die Oberfläche mehr und mehr von ihrer ursprünglichen symbolischen Definition entfernt, da Morphic von selbst die Änderungen in der Laufzeit nicht im Quellcode reflektieren kann. Die Frage ist also ob es eine Kombination beider Ansätze gibt, welche es vermag die Vorteile zu erhalten und Nachteile wenn möglich auszugleichen. Als Lösung für dieses Problem schlagen wir vor das Konzept der direkten Manipulation aus Morphic auf Transformationen im Quellcode zu übertragen. Hierfür werden wir das Design, die Implementierung und Integration einer bidirektionalen Abbildung zwischen graphischer Darstellung und einer funktionalen, deklarativen symbolischen Beschreibung in einer selbsterhaltenden Entwicklungsumgebung erörtern. Wir werden Transmorphic vorstellen, eine funktionale Variante des Morphic Frameworks, in der visuelle und strukturelle Eigenschaften in einer strikt funktionalen und daher deklarativen Art und Weise definiert werden. Innerhalb von Transmorphic hat der Entwickler die Möglichkeit verschieden Morphs zur Laufzeit mittels direkter Manipulation zusammenzusetzen, was direkt zu Änderungen im Quellcode der Anwendung übersetzt wird. Auf diese Weise kann die verständliche und nachvollziehbare direkte Interaktion aus Morphic, im Kontext einer vollständig funktional beschriebenen graphischen Benutzeroberfläche verwendet werden. T3 - Technische Berichte des Hasso-Plattner-Instituts für Digital Engineering an der Universität Potsdam - 110 KW - functional programming KW - morphic KW - functional lenses KW - direct manipulation KW - synchronization KW - FRP KW - reactive KW - immutable values KW - live programming KW - funktionale Programmierung KW - Morphic KW - Functional Lenses KW - direkte Manipulation KW - Synchronisation KW - FRP KW - reaktive Programmierung KW - Unveränderlichkeit KW - Live-Programmierung Y1 - 2016 U6 - http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:kobv:517-opus4-98300 SN - 978-3-86956-387-9 SN - 1613-5652 SN - 2191-1665 IS - 110 PB - Universitätsverlag Potsdam CY - Potsdam ER -