December 2024
What is this page?
This page lists works of an author who doesn't have a ResearchGate profile or hasn't added the works to their profile yet. It is automatically generated from public (personal) data to further our legitimate goal of comprehensive and accurate scientific recordkeeping. If you are this author and want this page removed, please let us know.
Publications (87)
October 2024
·
2 Reads
September 2024
·
3 Reads
Moldable development supports decision-making by making software systems explainable. This is done by making it cheap to add numerous custom tools to your software, turning it into a live, explorable domain model. Based on several years of experience of applying moldable development to both open-source and industrial systems, we have identified several mutually supporting patterns to explain how moldable development works in practice. This paper targets (i) readers curious to learn about moldable development, (ii) current users of the Glamorous Toolkit moldable IDE wanting to learn best practices, and (iii) developers interested in applying moldable development using other platforms and technology.
August 2024
·
12 Reads
Debugging is hard. Interactive debuggers are mostly the same. They show you a stack, a way to sample the state of the stack, and, if the debugger is live, a way to step through execution. The standard interactive debugger for a general-purpose programming language provided by a mainstream IDE mostly offers a low-level interface in terms of generic language constructs to track down and fix bugs. A custom debugger, such as those developed for specific application domains, offers alternative interfaces more suitable to the specific execution context of the program being debugged. Custom debuggers offering contextual debugging views and actions can greatly improve our ability to reason about the current problem. Implementing such custom debuggers, however, is non-trivial, and poses a barrier to improving the debugging experience. In this paper we introduce "moldable exceptions", a lightweight mechanism to adapt a debugger's interface based on contextual information provided by a raised exception. We present, through a series of examples, how moldable exceptions can enhance a live programming environment.
August 2024
·
31 Reads
Software systems should be explainable, that is, they should help us to answer questions while exploring, developing or using them. Textual documentation is a very weak form of explanation, since it is not causally connected to the code, so easily gets out of date. Tests, on the other hand, are causally connected to code, but they are also a weak form of explanation. Although some tests encode interesting scenarios that answer certain questions about how the system works, most tests don't make interesting reading. Examples are tests that are also factories for interesting system entities. Instead of simply succeeding or failing, an example returns the object under test so that it can be inspected, or reused to compose further tests. An example is causally connected to the system, is always live and tested, and can be embedded into live documentation. Although technically examples constitute just a small change to the way that to test methods work, their impact is potentially ground-breaking. We show (i) how Example-Driven Development (EDD) enriches TDD with live programming, (ii) how examples can be molded with tiny tools to answer analysis questions, and (iii) how examples can be embedded within live documentation to make a system explainable.
October 2022
·
4 Reads
·
3 Citations
September 2017
·
96 Reads
·
8 Citations
Object-oriented programming aims to facilitate navigation between domain concepts and the code that addresses those domains by enabling developers to directly model those domain concepts in the code. To make informed decisions, developers then formulate detailed and domain-specific questions about their systems in terms of domain concepts and use tools to explore available information and answer those questions. Development tools however focus mainly on object-oriented idioms and do not expose or exploit domain concepts constructed on top of object-oriented programming idioms. Analysis tools are typically not tightly integrated with development tools. This has a negative effect on program comprehension, increasing the effort and the time for obtaining answers.
October 2016
·
22 Reads
·
5 Citations
Software systems involve many different kinds of domain-specific and interrelated software entities. A common strategy employed by developers to deal with this reality is to perform exploratory investigations by means of searching. Nevertheless, most integrated development environments (IDEs) support searching through generic and disconnected search tools. This impedes search tasks over domain-specific entities, as considerable effort is wasted by developers locating and linking data and concepts relevant to their application domains. To tackle this problem we propose Spotter, a moldable framework for supporting contextual-aware searching in IDEs by enabling developers to easily create custom searches for domain objects. In this paper we motivate a set of requirements for Spotter and show, through usage scenarios, that Spotter improves program comprehension by reducing the effort required to find and search through concepts from a wide range of domains. Furthermore, we show that by taking code into account, Spotter can provide a single entry point for embedding search support within an IDE.
July 2016
·
42 Reads
·
5 Citations
Developing and evolving software requires developers to continuously make decisions about how to steer the design and implementation of their applications. To make informed decisions developers commonly formulate detailed and domain-specific questions about their software systems and use tools to explore available information and answer those questions. Development tools however focus on generic programming tasks while program comprehension and analysis tools typically are not tightly integrated with their development tools and environments. This has a negative effect on program comprehension as it increases the effort and the time needed to obtain an answer. To improve program comprehension we propose that developers build software using development tools tailored to their specific application domains, as this can directly answer domain-specific questions. We introduce moldable development as an approach for developing software in which developers evolve development tools together with their applications. In this paper we sketch the idea of moldable development and give examples to illustrate how it can be applied in practice. Through these examples we show that given a low cost for extending development tools, developers can create relevant and useful customizations to help them evolve their own applications.
May 2016
·
22 Reads
·
5 Citations
Citations (75)
... Moldable development is made possible with the help of moldable tools [7], such as code browsers, debuggers, and object inspectors, that can adapt themselves to the run-time context of an application to enable these analysis tools. For example, consider the screenshot of a Ludo 4 game in figure Figure 10. ...
- Citing Chapter
September 2017
... Using an internal DSL, the authors have created 100 custom searches for 30 different data types. On average, extending Moldable Spotter with a new type of search required 8 lines of code [161]. ...
- Citing Conference Paper
October 2015
... The authors introduce metrics calculated from the version control system (VCS) data and serve as proxies of real knowledge. Girba et al. [14] define the ownership over files by the ratio of lines a developer changed to the total number of lines. Fritz et al. [12,13] formulate the degree of authorship of a developer over a file by assessing each developer's interaction with the file compared to other developers' interactions. ...
- Citing Article
January 2005
... SPOTTER [16] is a framework for the creation of custom search processors in the Pharo environment. Although such search processors have access also to runtime data, and in theory, a tool similar to RuntimeSearch could be built, no such search processor was described in the article. ...
- Citing Conference Paper
October 2016
... Se encontraron también artículos que buscan establecer herramientas para mejorar los entornos de programación y así mejorar también la experiencia del programador: (i) en [53] se propone una nueva forma de exploración de objetos, mejorando así el uso de los selectores de métodos de interpretación estricta, lo que tiene efectos positivos en programadores novatos; (ii) En [54] se presentan herramientas moldeables para dar soporte a la tarea de comprensión del código según el dominio que se esté trabajando, con el objetivo de minimizar el esfuerzo que hacen los programadores por entender un código; (iii) Los autores en [55] muestran un estudio para utilizar la fijación de la vista del programador para establecer el foco del teclado en un entorno de programación, y de esta manera disminuir la cantidad de errores y facilitar el trabajo del programador que generalmente utiliza varias pantallas a la vez; finalmente, (iv) en [56] los autores identifican la variedad de hilos de trabajo que sigue el programador y propone mejoras a los IDEs para dar mejor soporte a las múltiples tareas que realiza el programador. Además, establece que el desarrollo de software es una colaboración entre un programador y un IDE, por lo que le da una visión del trabajo del programador muy ligada a la herramienta. ...
- Citing Conference Paper
July 2016
... We will thus conduct an iterative evaluation involving several of the bug day events that happen every month in the Pharo community. We will collect user data using a previously developed recording tool [13]. The collected data will consist of discussion, shared objects, and taken issues. ...
- Citing Conference Paper
September 2015
... In [11], Khan et al. proposed a tool, called Vimetrik, using the KNIME plugin to support the software metrics query through visual workflow modeling approach. Gîrba and Chiş developed a toolkit, called Glamorous [4], to support creating some visualizations of the software system utilizing the underlying integrated development environment. Merino et al. [13] developed a tool, called MetaVis, in which they classify the frequently asked questions by developers, mine the tags from these questions, and then show the resulting tag-iconic cloudbased visualization. ...
- Citing Conference Paper
September 2015
... Their approach Software Feathers is intended to support developers in getting a first overview of a software project and to deticting interesting code entities. Fernandez et al. extended an approach by Lewis et al. [30], that generates 2D glyphs in order to identify classes with the same dependencies and similar set of methods [19]. Chuah and Eick proposed the three glyph visualizations InfoBUG, Time-wheel, and 3D-wheel for the task of visualizing project-oriented software data [9]. ...
- Citing Conference Paper
May 2016
... [6] The tool is based on the Roassal visualization engine and builds upon the GTInspector tool [15], which provides users with navigation and basic interactions (e.g., zoom-in/out, pop-up, view center), and GTSpotter [16], which is used to search less frequent tags that can be difficult to find visually. MetaVis supports the following workflow: (1) users explore the cloud and select a visualization of their interest, (2) they inspect the associated code example and adapt it for their needs, and finally (3) they are able to put it into action and view the outcome visualization. ...
- Citing Conference Paper
October 2015
... Usage. We built a simple but effective environment to edit and run GitMultipile scripts, built on top of GTInspector [7]. Figure 10 illustrates the GitMultipile execution environment. ...
- Citing Conference Paper
October 2015