Data-Driven Tool Construction in Exploratory Programming Environments
Total Page:16
File Type:pdf, Size:1020Kb
Data-driven Tool Construction in Exploratory Programming Environments by Marcel Taeumel A thesis submitted to the Digital Engineering Faculty University of Potsdam in partial fulfllment of the requirements for the degree of Doctor Rerum Naturalium (Dr. rer. nat.) Advisor Prof. Dr. Robert Hirschfeld Software Architecture Group Hasso Plattner Institute University of Potsdam, Germany February 2, 2020 This work is licensed under a Creative Commons License: Attribution – NonCommercial – NoDerivatives 4.0 International. This does not apply to quoted content from other authors. To view a copy of this license visit https://creativecommons.org/licenses/by-nc-nd/4.0/ Published online at the Institutional Repository of the University of Potsdam: https://doi.org/10.25932/publishup-44428 https://nbn-resolving.org/urn:nbn:de:kobv:517-opus4-444289 Abstract This work presents a new design for programming environments that promote the exploration of domain-specifc 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-specifc tools can support decision making by representing concerns concisely with low cognitive efort. 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 modifcation of interactive tools is expensive because the glue that connects data to graphics is hard to fnd, 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 diferent and inspiring: programmers can easily build their own tools as shell scripts by confguring and combining flter 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 efort, and continuous adaptability. That is, (1) we propose an object-oriented, data-driven, declarative scripting language that reduces the amount of and governs the efects of glue code for view-model specifcations, 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 brows- ing 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 version- ing, modular code browsing, and multi-language debugging. Then, we designed a controlled experiment to measure the efect 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-specifc scripts to populate views to approach comprehension tasks from diferent angles. Our novel perspective on graphical tools can inspire the creation of new trade-ofs in modularity for both data providers and view designers. iii Acknowledgments Oh well ... it took me about seven years to conceive and present this work. Sometimes, it was not that easy to sort out the overwhelming amount of ideas, that is, to separate “Blah!” from “Aha!”to fnd added value. During that time, there were many people that supported my work, directly or indirectly, and thus infuenced my decisions. First of all, I am very grateful to my thesis advisor Robert Hirschfeld, who has been ensuring a superb work environment. You made all the books that I wanted to read available. You established numerous connec- tions with interesting people so that I kept on talking about my ideas, giving demonstrations, and thus constantly and consciously reviewing my steps. You enabled many travel arrangements so that I could ex- perience international cultures and research venues. As sensei Robert, you have been teaching me Bujinkan Budo¯ Taijutsu, which noticeably improved my observation and movement skills. Thank you for all these opportunities. I know that many organizational aspects have been carried out with care by our chair’s secretary, Sabine Wagner, to whom I am naturally very thankful, too. Second, I owe my gratitude to Bastian Steinert, who inspired my behavior with his constant drive for accuracy and diligence. Your typically deep and critical discussions about your (and my own) topics have been changing my practices for the better. It has always been enlightening to observe your presentations and learn from your research artifacts in general. Third, I am thankful to Patrick Rein, who can lend one an ear, even for the craziest of hypotheses. You are very open-minded and curious. You have always been patiently discussing my ideas, even if that efort did not contribute to your own workload. Especially during our travels to California, I enjoyed your challenging thoughts about my research. [|] I acknowledge the fnancial support I received from the HPI Research School and the Design Thinking Research Program. That support allowed me to carry out my research full-time with an unbiased focus on relevant issues in the problem domain of my choosing. Both programs fostered my progress through several workshops, where I could present my work and talk about contemporary issues with other researchers. v I am grateful to my external reviewers for exploring the (quite many) pages of this work. Thank you, Kim Mens, for welcoming me at your chair in Louvain-la-Neuve. Your critical comments on a previous version of this work helped me clarify important sections. And thank you, Michele Lanza, for having me at your chair in Lugano. The profound discussions with your group revealed relevant aspects about live programming and thus made me think. [|] I want to thank all (former and current) colleagues in our Software Architecture Group for constantly enriching the work atmosphere. You were always available for asking questions, trying out prototypes ... and breaking them. You can speak your mind and openly question my design decisions in a respectful manner. You always flled my talks with loads of feedback, even though the (efortfully prepared) slides quickly became superfuous. Thank you! Thank you for the cofee breaks. Thank you for the tea ceremonies. Thank you for the endless battles in Micro Machines or Mario Kart during (of course!) recreational lunch breaks. Thank you Malte “Red Car” Appeltauer, Michael “Blue Car” Perscheid, Jens “Lively” Lincke, Bastian “Undo” Steinert, Tobias “LATEX” Pape, Tim “Constraint” Felgentref, Toni “Concept” Mattis, Patrick “Flame Rider” Rein, Johannes “Frantic Items” Henning, Stefan “Rosalina” Ramson, Fabio “Mario” Niephaus, and Marcel “Hello Marcel!” Weiher. I also want to send a big thanks to all my fellow researchers and “travel buddies”. On our journeys abroad heading for conferences or workshops, I enjoyed each fruitful discussion or joyful small talk with you. We watched beautiful sunsets in California, observed eagles in Arizona, explored the streets of San Francisco, dared all kinds of food in Nanjing, stood on top of Table Mountain in Cape Town, or just had a beer in some local bar. Thank you Bastian Steinert, Frank Feinbube, Christian Neuhaus, Jan Klimke, Ibrahim Takuona, Sebastian Hahn, Tim Felgentref, Anja Jentzsch, Jens Lincke, Lena Herscheid, Ekaterina Bazhenova, Sabine Wagner, Daniel Richter, Lauritz Thamsen, Patrick Rein, and Johannes Henning. We shared numerous invaluable experiences. I was in the lucky position to have met and frequently visited veterans and experts in Lisp, Smalltalk, and the feld of exploratory (or live) pro- gramming. Especially during my travels in California, I enjoyed many conversations with Richard “Dick” Gabriel, Daniel “Dan” Ingalls, Eliot Miranda, Gilad Bracha, and Bert Freudenberg. Thank you all for giving me advice and historical insights. You opened my eyes to many longly existing ideas and longly known challenges. I am very grateful for this healthy mix of frustration and enlightenment. This also addresses my friends from a younger generation of Smalltalkers, namely Robert Krahn vi and Marko Röder, who few out of Potsdam to seek new teachers in the Bay Area. Thank you for never being too busy for a quick chat and thanks for all the helpful comments on my research. ... I am still sad that Andreas Raab has passed away shortly after the beginning of my doctoral studies. My questions for you will forever remain unanswered. I have been and will always be grateful for your accomplishments in the Squeak/Smalltalk community. Your work is full of mindfulness and care. Thank you. I am thankful for having colleagues and friends with whom I shared the goals and agonies of doing a PhD. We exchanged hopes and doubts, pictured (im-)possible impact of our research on humanity, or teased each other about the current page count. Thank you Sebastian Hahn, Sebastian Pasewaldt, Jan Klimke, Daniel Richter, Max Plauth, and Vera Grötz. I think we lifted some burdens from our shoulders by just talking about them. Of course, I would like to thank all my friends for helping me man- age that crucial work-life balance. We enjoyed so many activities for the body: (rock) concerts, (beach) volleyball, badminton, (ultimate) fris- bee, cycling, skiing, hiking, bouldering, (kind of) randori-ing. We en- joyed so many activities for the mind: playing board games, watching (horror) movies, cooking delightful sushi or pasta, struggling with es- cape rooms. Thank you Jens Lincke, Jirka Müller, Robert Hirschfeld, and Daniel Richter.