Abstract:
Software projects are difficult to manage and too many of them end in failure. One explanation for the high failure rate is that managers are not taking prudent measures to assess and manage the risks involved in these projects. Countering these threats to success, the incidence of failure can be reduced therefore successful software project maintenance necessitates a well-defined strategy to manage changes and minimize risks associated with the future operation of the software. Software maintainers usually are not engaged in the initial software development cycle. Before maintainers can modify a program, they must understand how it operates. This research established that there exists a number of architecture evaluation methods each with a specific objective to attain, furthermore this research established that the Architecture-Level Prediction of Software Maintenance method (ALPSM) provides a comprehensive process support for maintenance software quality assessment, however this method is deficient because it does not address the risks of complexity that might be introduced to a module / component as a result of the maintenance. This revelation from literature led us to develop a Method for Software Maintenance Risk Assessment at the Architecture Level (MSMRAAL). The MSMRAAL method uses a number of parameters which have been well documented in literature on how they are/can be applied. The key components that MSMRAAL uses are UML, Design patterns and Cyclomatic Complexity measure. For the maintainer to determine the maintainability risk the MSMRAAL can be applied i.e. an architectural maintenance scenario is identified from which the analysis of the software architectures is performed on scenario specifications since they model the abstract architecture and implementation details and describe the system using compositions of components and connectors. An experiment was designed to validate the MSMRAAL method. From the results of the experiment it was established that MSMRAAL is useful in determining Cyclomatic Complexity measure of modules under maintenance. Furthermore this research established that problem-solution implementation mechanisms complexity vary depending on the programming language design feature chosen for coding. This is evident as it was established in this research that strategy design pattern coding mechanism was of lower complexity as compared to modular implementation mechanism. Risk assessment on architecture implementation mechanism is of much significance since it enables the software maintainers to establish the complexity of a module under maintenance thus establish its maintainability risk level; this is very critical in decision making as to whether the module under consideration should be upgraded or redesigned for implementation depending on the module’s complexity value.