Moldable Tool

*Context*. You are developing a software system, and find that the existing development tools fall short in supporting domain-specific questions about the software. page

*Problem*. How can you cheaply and effectively extend the development environment with domain-specific tools that address your application domain?

*Forces*. Generic software tools are fine for answering generic questions, but they do not scale well when addressing domain-specific questions. For example, consider a generic debugger being used to debug an event-driven application — you want to step through the chain of events, not the stack. A plugin architecture can open up an IDE to new tools, but plugins can be complex and expensive to implement, and they often do not play nicely with existing tools or with each other.

*Solution*. Make the development tools moldable to the dynamic context of the artifacts they are intended to work with [2].

[2] Andrei Chiş, Tudor Gîrba, Juraj Kubelka, Oscar Nierstrasz, Stefan Reichhart, and Aliaksei Syrel. 2017. Moldable Tools for Object-Oriented Development. In PAUSE: Present And Ulterior Software Engineering, Bertrand Meyer Manuel Mazzara (Ed.). Springer, Cham, 77–101. doi

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. To improve program comprehension, we propose to better integrate domain concepts and program comprehension tools into the development environment through moldable tools. Moldable tools are development tools that are aware of the current development context and support inexpensive creation of domain-specific extensions. We elaborate on the idea of moldable tools and show how to apply moldable tools to support object-oriented programming. Through practical examples, we show how developers can embed domain concepts into their development tools.

~

Moldability and Malleability refer to two distinct properties that are not interchangeable.