Conference Paper

Towards Automating Source-Consistent UML Refactorings

DOI: 10.1007/978-3-540-45221-8_15 Conference: «UML» 2003 - The Unified Modeling Language, Modeling Languages and Applications, 6th International Conference, San Francisco, CA, USA, October 20-24, 2003, Proceedings
Source: DBLP


With the increased interest in refactoring, UML tool vendors seek ways to support software developers in applying a (sequence of) refactoring(s). The problem with such tools is that the UML metamodel - on which their repos- itory is based - is inadequate to maintain the consistency between the model and the code while one of them gets refactored. Therefore, we propose a set of minimal extensions to the UML metamodel, which is sufficient to reason about refactoring for all common OO languages. For instance, by specifying pre- and postconditions in OCL, we are able to compose primitive refactorings, verify preservation of program behavior, and trigger refactorings based on code smells. This way, we provide future MDA tools with the ability to improve existing UML designs, yet keeping them in synch with the underlying code base.

Download full-text


Available from: Tom Mens,
  • Source
    • "concrete composite Move Code Gorp et al. [26] concrete composite Move Code concrete composite Replace Code Sunyé et al. [27] "
    [Show abstract] [Hide abstract]
    ABSTRACT: Changes play a central role in software evolution, where the types of changes are as multifarious as their consequences. When changing software, impact analysis and regression testing are required to preserve the quality of the system. However, without a consistent classification of types of change operations, a well-founded impact analysis methodology cannot be developed. Existing works which analyze and apply change types are typically limited to a certain aspect of software, e.g. source code or architecture. They also lack a thorough investigation of change types, which lead to duplicated proposals and the absence of a consistent taxonomy. In this paper, we review the usage of change types for impact analysis and regression testing, and illustrate how both activities are affected by different types of changes. Therefore, we outline how existing work deals with different types and granularities of changes. Our main contribution is a generic, graph-based description of changes which distinguishes between atomic and composite change types. We show how existing change types and classifications can be mapped onto our proposed approach and change taxonomy. Finally, we illustrate how our proposed change types can support real developer activities, such as refactorings, impact analysis, and regression testing.
  • Source
    • "An approach to describe a refactoring in an abstract way is to use meta models of source code. The meta models FAMIX (Tichelaar, 2001), MOOSE (Ducasse et al., 2000), and UML (Van Gorp et al., 2003) are used for describing refactorings of OOP languages independently from the OOP language at hand. Therefore, FAMIX, MOOSE, as well as UML cannot be used to abstract artifacts of MLSAs in general. "
    [Show abstract] [Hide abstract]
    ABSTRACT: Different programming languages can be involved in the implementation of a single software application. In these software applications, source code of one programming language interacts with code of a different language. By refactoring an artifact of one programming language, the interaction of this artifact with an artifact written in another programming language may break. We present a study on refactoring an software application that contains artifacts of different languages.
    ICSOFT 2011 - Proceedings of the 6th International Conference on Software and Data Technologies, Volume 2, Seville, Spain, 18-21 July, 2011; 01/2011
  • Source
    • "At the model level, refactorings can be applied to any of the design models of a Web application, i.e., according to the generic development approach described in Section 2.3, to the application, navigation and presentation models. Since the application model of a Web application is, for most methods, similar to a UML class diagram, refactorings that may be applied to this model are basically the same described in [21] [24]. Therefore, we will focus on refactorings that can be applied to the navigation and presentation models, which we call Web model refactorings, or specifically, navigation model refactorings and presentation model refactorings, respectively. "
    [Show abstract] [Hide abstract]
    ABSTRACT: Refactoring has been growing in importance with recent software engineering approaches, particularly agile methodologies, which promote continuous improvement of an application's code and design. Web applications are especially suitable for refactoring because of their rapid development and continuous evolution. Refactoring is about applying transformations that preserve program behavior. Code refactorings apply transformations to the source code while model refactorings apply to design models, both with the purpose of increasing internal qualities like maintainability and extensibility. In this paper we propose Web model refactorings as transformations that apply to the design models of a Web application. Particularly, we define refactorings on the navigation and presentation models, and present examples. Since changing these models impacts on what the user perceives, the intent of Web model refactorings is to improve external qualities like usability. They may also help to introduce Web patterns in a Web application.
    Web Site Evolution, 2007. WSE 2007. 9th IEEE International Workshop on; 11/2007
Show more