It is shown how software metrics and architectural patterns can be used for the management of software evolution. In the presented architecture-centric software evolution method the quality of a software system is assured in the software design phase by computing various kinds of design metrics from the system architecture, by automatically exploring instances of design patterns and anti-patterns from the architecture, and by reporting potential quality problems to the designers. The same analysis is applied in the implementation phase to the software code, thus ensuring that it matches the quality and structure of the reference architecture. Finally, the quality of the ultimate system is predicted by studying the development history of previous projects with a similar composition of characteristic software metrics and patterns. The architecture-centric software evolution method is supported by two integrated software tools, the metrics and pattern-mining tool Maisa and the reverse-engineering tool Columbus.
Many important product quality characteristics, such as performance and maintainability, cannot be added on late in the development, and hence early warnings of poor quality expectation would be very useful to allow early corrective measures. To produce such information, we base product quality prediction on measurements and calculations of the UML design diagrams of the software. Some design metrics may be used as direct predictors of quality; as an example, cohesion and coupling metrics are generally considered good predictors of the maintainability of the product. On the other hand, certain quality characteristics, e.g., performance, require more complex analysis of the design by computing predictions of the execution time of a typical use case with user provided information of the input size and attributes. Another way of taking advantage of the design diagrams is by detecting design patterns and anti-patterns in the design, and using these as predictors of the final product quality. While using design patterns is considered to have a positive effect on the quality and productivity of the development process, their effect in product quality is more complex and may in fact be positive or negative, depending on the context. We suggest using the pattern library to store information of the previous uses of the patterns and the quality of the corresponding systems, to predict the quality effects of the design patterns . In our paper, we present a tool for measuring UML diagrams of the product to predict three central product quality characteristics, size, understandability, and performance. The tool also detects all occurrences of a previously defined set of design patterns and antipatterns from the diagrams. Our paper reports industrial experience in using the tool to detect patterns and measure quality of design diagrams.
A software architecture is the key artifact in software design, describing the main elements of a software system and their interrelationships. We present a method for automatically analyzing the quality of an architecture by searching for architectural and design patterns from it. In addition to approximating the quality of the design, the extracted patterns can also be used for predicting the quality of the actual system. The method is demonstrated by an industrial case over a complex telephone exchange software.
The use of design patterns in object-oriented software development is recommended to improve both the software structure and the development process. On the other hand, their e ect on the performance of the nal product may greatly depend on the particular application and the projected workload. In addition to intentional use, the design may also contain patterns (and anti-patterns) that have not been used on purpose. We propose an approach where all patterns and anti-patterns embedded in the design are discovered by a mining tool and their performance e ects are evaluated using previous experience stored in a pattern library.