{'fraction_non_alphanumeric': 0.02346805736636245, 'fraction_numerical': 0.0, 'mean_word_length': 5.189516129032258, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Component-based tool development

This paper describes an emerging approach for the construction of software-engineering research tools, which is characterized by the use of preexisting components (e.g., off-the-shelf products, integrated development environments, and domain-specific tools) to realize tool functionalities. This approach can be seen as an instantiation of component-based development for the domain of tool building in academia. Building of tools in this manner is already pursued by many researchers, presumable because this approach promises to be more effective compared to coding a tool from scratch. For example, tools can be quickly prototyped and evolved in response to user input or new research directions. Also, tools can be more usable and adoption friendly. I have explored issues surrounding tool building with components in my dissertation and have found that there is little work that evaluates and reflects on the impact of this approach. However, since this approach has its unique benefits and drawbacks and since it is increasingly employed by researchers, it becomes more and more important to improve upon the current practice, which can be characterized as ad hoc. This paper is a first step in this direction. It introduces and reflects on component-based tool building, identifying suitable components to construct maintenance tools, providing a catalog of tool examples that leverage the identified components, and discussing issues that need to be addressed to advance the state-of-the-art.