Font Size: a A A

Research On Changeability Driven Software Design Improvement

Posted on:2008-05-12Degree:DoctorType:Dissertation
Country:ChinaCandidate:T FengFull Text:PDF
GTID:1118360212497678Subject:Computer software and theory
Abstract/Summary:PDF Full Text Request
An important problem demanding prompt solution with today's software developing is to deal with the change and expansion of software products. Changeability driven software design improvement, which is the technique and process of modifying software design in order to increase the changeability of the system, is an effective way to enable smooth software change. It plays an important role in improving software quality, facilitating software maintenance and evolution.On the basis of summarizing related works, aiming to enrich approaches of improving software design changeability, this paper explores the approach of changeability driven software design improvement following 7 aspects. (1) Based on the study of software quality models, a detection framework for discovering the design flaws relating to software changeability is proposed. (2) Applying artificial intelligence technology, a CBR (Case Based Reasoning) based automated software design improvement approach is presented. (3) Focusing on dynamic behavior of software architecture, a dynamic change impact analysis on software architecture is proposed based on slicing technique. (4) An architecture description method and corresponding description language is presented to build the relationship between architecture level design and class level design. (5) To deal with legacy system without consistent design document, an approach of extracting design patterns from Java source code is illustrated. (6) In order to verify the improvement of changeability, a probability based method is provided to compare the two designs before and after the software design improvement. (7) An approach of Java source code change prediction according to the changes in design is presented.The main conclusions and contributions of this dissertation are listed as follows: 1. A framework for detecting design flaws related to software changeability and a changeability metric model are proposed.Detection of design flaws is the prerequisite of design improvement. The most popular design flaw detection strategies are classified into two categories: metric based methods and subjective judgement based methods. Based on the former and especially focusing on the design flaws relating to changeability, a changeability flaws detection framework which is consist of design quality level, characteristic metric level, basic metric level and basic fact level, is provided. This framework is mainly used to discover the symptoms of changeability related design flaws but not to locate the position of the design fragment. According to the framework, a changeability metric model integrating metrics on complexity, coupling, cohesion and polymorphism is provided.2. A CBR (Case Based Reasoning) based automated software design improvement approach is proposed.Applying artificial intelligence technology, a software design improving approach, based on micro-architecture anti-pattern and case based reasoning, is presented to improve software quality and changeability. In this approach, problematic, inflexible structures and corresponding refactoring alternatives at micro-architecture level are formally defined and described as cases. Their organization and index mechanism in case base are studied. Followed 4R procedures of CBR, similarity measurement methods on class diagrams, sequence diagrams, OO quality metric factors and semantic constraints are discussed. Based on measurement results, some algorithms on identifying anti-patterns instances in a given original design and replacing them by designs with high quality are presented. Furthermore, a supporting system CBDIT was developed to aid this approach.3. An approach of dynamic change impact analysis on software architecture is proposed. The design of software architecture has great influence on the system changeability and change impact analysis on software architecture level is an effective mean to evaluate software changeability. A component interaction trace based approach is proposed to support dynamic change impact analysis at software architecture level. To a given architectural change, the approach determines the architecture elements causing the change and impacted by the change, and generates regression test case suite. Firstly, composition based software architecture and component interaction trace are defined. An algorithm for generating component interaction trace from static structure model of software architecture and sequence diagram is provided. Secondly, the taxonomy of changes on software architecture is presented, according to which a set of impact rules are suggested to determine the transfer of the changes in component and among components. Thirdly, by performing slicing on component interaction traces according to impact rules, the impact analysis results are obtained. Finally, the architecture design of SOCIAT, a tool supporting our approach, is developed and explained.4. A software architecture description language is presented.In order to build the relationship between the architecture level design and class level design so that the foundation of study on the relationship of changes between the two levels could be create, an architecture description language, FRADL, are presented. Adapting OO framework and role type as essential building block, FRADL absorbs the advantages of many existing ADLs, such as Wright and C2, and avoids the disadvantages of them. Especially, OO framework as component makes the component more extensible and inheritable. The component and the connector defined in FRADL have the character of transparency. FRADL compromises between the strictness and implementation simpleness. Moreover, it facilitates the concurrency and testability by assembling the whole system through the script definition of the connector.5. An approach of extracting design patterns from Java source code is proposed.To legacy systems without consistent design documents, applying program comprehension technique to extract design fragment from source code is an important step towards changeability driven software design improvement. A Java source code oriented design pattern detection method is proposed as an attempt of extracting design fragment from source code. This paper describes a method of presenting design pattern, defining a source information model and its extraction mechanism. Through matching pattern model and source information model, an algorithm of detecting pattern instances is illustrated. Especially, the container problem that come across in design pattern detection and resolution of it are discussed. Finally, the results of executing the search algorithm are analyzed and optimized as far as the relation between design patterns and design pattern instances are concerned.6. A probability based approach for verifying the changeability driven software design improvement is proposed.With the objective of verifying the results of the changeability driven software design improvement, this paper proposes a probability based approach to evaluate the possibility of future change of the designs. This method divides the changes of any class into five categories: internal change, inheritance change, delegation change, aggregation change and initialization change. The change probability of any class is the joint probability of the five probabilities of those five kinds of changes. This method uses condition probability of change in one class to calculate the probability of change of another class relating to it with relationships of inheritance, delegation and so on. The average probability of all classes of a design is indicated as the change probability of the design. By comparing the change probability of the two designs before and after the changeability driven software design improvement, the effectiveness of the improvement can be verified.7. An approach of predicting source code change by analizing the design changes is proposed.Another attempt to evaluating the cost of changes to two different designs is presented by comparing the source code changes caused by the design changes. An approach of mapping object-oriented design changes to program changes are proposed, so that the prediction of possible source code change effort can be made. This approach focus on the definition and taxonomy of atomic changes and composite changes at both level, according to which change impact analysis algorithms are proposed and applied to conclude the change mapping rules from UML based design model to Java source code. A supporting tool implementing the heuristics is designed and a case study on an open source project is conducted to validate our method. In conclusion, this paper studies the changeability driven software design improvement, and enriches the existing research. To some extent, our work contributes in improving software quality, facilitating software maintenance and evolution.
Keywords/Search Tags:Software Changeability, Software Design Improvement, Case-based Reasoning, Software Maintenance, Change Impact Analysis, Software Architecture, Architecture Slicing, Program Comprehension, Object-oriented Design Metrics, Design Pattern, Anti-Pattern
PDF Full Text Request
Related items