{'fraction_non_alphanumeric': 0.018072289156626505, 'fraction_numerical': 0.0, 'mean_word_length': 5.291666666666667, '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}}
Harvesting design for an application framework

Framework design begins with domain analysis. Either the problem domain is analyzed to create a new design, or the solution domain is analyzed to understand how the problem has already been solved. Solution domain analysis is advantageous for at least two reasons: solutions are likely to have addressed more concerns because they have been tested in a real-world environment and they provide a source for reusable code. On the other hand, such solutions may be too implementation-specific so as to inhibit code or design reuse. The objective of harvesting is to extract as much design and code as possible from existing solutions so that it can be refined for reuse.The experiences described in this paper originated with an effort to harvest components from a customer engagement that produced a proof-of-concept patient record system. The first candidate selected for implementation was an infrastructure framework that provides task management services for an application. The framework addresses a common problem in developing GUI applications - how to organize, present, and manage a single, controlling application that has multiple sub-applications, or tasks. Because this problem had been solved on several other projects, the harvesting effort benefited greatly from the availability of multiple solutions. Although they were implemented for different domains (medicine, insurance, network management), each required similar infrastructure code to manage the various application tasks. This paper describes the harvesting process and how it was used in the development of the task management framework.