Abstract
Software architecture is critical to a software system. As software evolves, complexity accumulates through various maintenance activities: such as bug fixes, feature additions, etc., inevitably resulting in architecture degradation that negatively impacts a system’s maintainability. Despite decades of research about software measurement and analysis, it is still a challenge for development teams to reliably measure the maintainability of software architecture and precisely diagnose architecture problems incurring maintenance difficulties. Numerous software metrics have been proposed to measure software quality, but they haven’t demonstrated the reliability to indicate architecture maintainability, nor to compare the maintainability of different projects. Bug prediction, code smells and antipatterns have been proposed to predict defective files and detect design flaws. However, bug prediction studies never considering architecture problems among the detected files, which are the root causes of maintenance pain; code smells detection techniques tend to report a large number of problems, many of which are false positives; detecting anti-pattern heavily depends on the skill of architecture analysts. These make the existing techniques hard to be used to precisely find the true problems causing maintenance difficulties. This dissertation presents our methodology that advances our ability to monitor the variations of software architecture maintainability by using reliable measurement, and identify the architecture flaws that should be addressed to reduce maintenance difficulties. Our proposed methodology consists of three parts as follows: 1) we proposed a novel metric which has presented similar properties as real-word metrics, and could be used to reliably measure software maintainability. Based on the proposed metric, we created an industrial benchmark serving as a “health chart” of software maintainability. Like real-world growth chart, managers and architects could compare their projects with the benchmark to assess the maintainability level of their projects, the abnormal results would signal a early symptom of architecture degradation; 2) We also proposed a history measure, which indicates how well the maintenance tasks could be implemented independently during evolution process. This history-based measure could help to monitor the real-time interactions of maintenance tasks, which can not be reflected by syntax-based metrics; 3) Software measurements provide us a coarse assessment of the maintainability of software architecture. To pinpoint the root causes of maintenance difficulty, we then automatically identified a suite of architecture design flaws, the real architecture problems which have caused high maintenance costs in software system. Our studies have shown that our methodology could faithfully measure maintainability of software architecture and precisely diagnose the true architecture problems in a project, which helps development teams decide if, when, where and how to refactor.%%%%Ph.D., Computer…
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have