Very often, change and evolution activities focus only on fixing defects
after a software system has been deployed. While the source code is
evolving, the architecture, design and documentation are not updated. In
contrast, in our vision of the process, software change and evolution
should take place in a disciplined, intelligent and economically viable
way.
There is the need to investigate methods and approaches to recover and validate traceability links between software artifacts at different levels of abstraction. Great savings can be obtained if automatic or semiautomatic approaches are used to help assess traceability links. Those traceability links can be subsequently exploited to evaluate the impact of changes, to define the priority and schedule the order of changes, and to ensure that changes didn't affect expected behavior.
A second issue is related to traceability of behavioral information. Traceability links must be established not only between artifacts describing the software structure, but also between artifacts detailing the interaction of components and the component semantics. We hold that traceability must be extended to documents such as UML sequence, activity and state diagrams. This in turn requires that as-is information be recovered or validated on an existing system. Recovering interaction and semantic information is itself challenging. Preliminary results to recover behavioral information have been achieved by researchers such as L. Briand, M. Ernst, E. Makinen, T. Systa and M. J. Harrold. This research should rely on approaches already available to collect scenario data and infer sequence diagrams (e.g. L. Briand Carleton TR-SCE-04-04); this is to say that research focus should be concentrated on traceability mapping.
The horizontal dimension for a given abstraction level (e.g. design or code) is the dimension in which artifacts evolve over time. Most of the approaches developed to recover and validate vertical traceability mappings are readily available for this dimension.
When considered within a context of horizontal evolution, code-region duplication (non- duplication) corresponds to unchanged (changed) areas of code across releases. This information is critical to the development of models used to predict the effort that will be required to change and evolve software applications, and also helps identify elements that are more evolvable than others. Based on recent results and extension in OO clone detection, we will study the evolvability of OO design and architectural patterns. The goal is to identify patterns that promote program understanding and changeability, thereby reducing defect density. It is worth pointing out that virtually no work exists in this area; for example, no empirical evidence is available as to whether or not OO design patterns promote program comprehension, and only a few works address the problem of OO design pattern defects.
Distributed development and evolution
Software systems represent valuable company assets that must be preserved over time. Change and evolution management policies and strategies involve at least two different levels of granularity: the macro and micro levels. The macro level is that at which a company manages its IT portfolio and makes macro-economic decisions. For instance, should a company wish to replace an existing IT component with a new software system, it must first conduct a feasibility assessment. The variables involved include the company's financial status, anticipated market trends, the costs of acquiring a new software product and training employees, total cost of ownership of the new software, and the cost of data migration. Other variables driving the decision have to be considered as well: for example, the risks associated with possible failure in data migration or with the software vendor's financial status and liability. The micro level refers to project-level company decisions. Going on with our example, once the decision to evolve the proprietary software has been made, the software change and evolution process has to actually be implemented. This in turn calls for decisions such as partially or entirely outsourcing the maintenance and evolution process, defining the staffing level and evolution plan, reshaping the workforce, organizing the work packages, or defining schedules using Pert and Gantt charts. The already complex situation is made even more challenging by a new industry trend. Traditionally, the choice was either to make or to buy. However, the new market created by the service-oriented paradigm offers a new opportunity: instead of buying or making, it is now possible to rent a service. This research focuses on approaches to alleviating the issues mentioned above. Macro- and micro-level decisions are interconnected, the former being influenced by the latter, and vice-versa. Research will be set within the framework of planning and managing distributed software change and evolution projects. Distribution enables expertise to be drawn into play in spite of geographical distance, thus reducing costs. However, distributed software projects are more complex to plan, manage and co-ordinate than a single site project.