Reusing software assets in agile development organizations - a management tool: a case at a medium sized software development organization

Research background Organization have been building on existing knowledge since the beginning of ages. The reuse of existing knowledge has proven to be a valuable basis for increasing employee productivity and product quality. In the software industry the reuse of knowledge manifests itself in software assets such as code components, functional designs and test cases. The reuse of this kind of knowledge is also referred to as software reuse. Software reuse is well described as a two-fold process. On one side software reuse is about creating reusable assets and on the other side it is about using these reusable assets in building new solutions. The reuse of existing software assets offers intuitively great benefits, but unfortunately it has never reached its full potential. Within the normal project scope the creation of reusable assets is at its best a secondary concern, as the focus of a project is on creating a project specific solution as fast as possible and with minimal resources. In order to leverage knowledge outside the project scope additional resources are required. These resources are not always available and are more difficult to justify. One of the organizations reusing existing knowledge in order to create new applications is the case organization. The medium sized software development organization is interestingly enough also working with agile development methodologies, imposing possible additional constraints on the reuse of software assets. Agile development methodologies are characterized by smaller project teams, informal processes and multiple development iterations. The use of these informal processes and the emphasis on communication and collaboration over extensive documentation can impose additional constraints on the leverage of knowledge outside the project scope. The reuse of software assets in combination with agile development methodologies is fairly unknown in literature. Problem The problem of software reuse in agile development environments is a complex one. When analyzing the problem in more depth it appeared that there is no holistic approach to address software reuse issues. Without such an approach an organization is not able to address specific software reuse issues and to identify potential improvement areas for achieving even greater benefits. Furthermore organizations are not always aware of the possibilities of reaching higher reuse levels and certainly do not know how to do this. In order to address this problem a literature survey was performed with the purpose to extract requirements on the management tool for addressing those reuse issues. The requirements are extracted from the analysis of the concepts „software reuse‟, „agile development methodologies‟ and „software reuse frameworks / models‟. Solution The proposed solution is a software reuse management tool. The management tool provides the structure and the mechanisms for addressing software reuse issues. Although the tool was intended to be specific for typical agile development environments, the decision was made not to do this, as agile development methodologies can be successfully applied in more complex environments. The management tool is based on two main components, a reuse maturity model and an assessment method. The reuse maturity model consists of five maturity levels and fifteen reuse factors. The maturity levels are incremental plateaus for addressing software reuse. The reuse factors are factors describing relevant aspects of software reuse. The reuse factors are allocated incrementally to the maturity levels. In order to provide the user of the management tool structure, the reuse factors are allocated VI The management tool is based on two main components, a reuse maturity model and an assessment method. The reuse maturity model consists of five maturity levels and fifteen reuse factors. The maturity levels are incremental plateaus for addressing software reuse. The reuse factors are factors described in literature as factors influencing software reuse, quite similar to success factors. In order provide the users mechanisms to structure the reuse factors they are organized in categories according to the BTOPP (business, technology, organization, process and people) model. Within the results of the literature review two reuse factors are emphasized because of their importance for agile development methodologies. Namely the reuse factors „communication channels and support‟ and „communication tool support‟. These two reuse factors are, however, expected to be similar important for other development environments. Each combination, of a reuse factor and a maturity level, is represented by a set of reuse practices. These reuse practices are the result of operationalizing a reuse factor and can be measured by the assessment method component. The assessment method component adds a score and a relevance to each reuse factor. The score represents the state of a reuse factor in a maturity level and the relevance variable serves as an indicator for the importance of a reuse factor in a specific context. By using the relevance variable an organization can make the management tool specific for their individual context, which can possible be one where agile development methodologies are utilized. The assessment method component can be used to indicate strong and weak points of an organization. Recommendations The management tool has been successfully applied at the case company and proved to be valuable for structuring ideas related to software reuse. Based on the application of the management tool it also became clear that software reuse can occur without having highly standardized reuse processes and physically separated reuse teams as mentioned in traditional literature. Furthermore the relevance variable appeared to be one of the most important aspects of the management tool, making it possible to tailor the tool to the needs of the organization. Organizations applying the management tool are recommended to use a neutral individual for the assessment process and to record the results of the assessment process. Based on this research it appeared that the recorded results can provide a valuable background for explaining the assessment results. The neutral individual can be used to guide the assessment process. Furthermore he or she can be used to gather and process the results. The results can afterwards be presented to the organization in subject.