A Methodology for the Automated Introduction of Design Patterns

Mel O'Cinneide, Patrick Nixon

Research output: A Conference proceeding or a Chapter in BookConference contributionpeer-review

47 Citations (Scopus)
60 Downloads (Pure)

Abstract

In reengineering legacy code it is frequently useful to introduce a design pattern in order to add clarity to the system and thus facilitate further program evolution. We show that this type of transformation can be automated in a pragmatic manner and present a methodology for the development of design pattern transformations. We address the issues of the definition of a starting point for the transformation, the decomposition of a pattern into mini-patterns and the development of corresponding mini-transformations that can introduce these mini-patterns to a program. We argue that behaviour preservation is a key issue and develop a rigorous argument of this for each mini-transformation we discover. The architecture of an existing software prototype is also discussed and the results of applying this methodology to develop a transformation for the Factory Method pattern are presented.
Original languageEnglish
Title of host publicationProceedings IEEE International Conference on Software Maintenance
Subtitle of host publicationSoftware Maintenance for Business Change, 1999 (ICSM'99).
Place of PublicationUnited States
PublisherIEEE, Institute of Electrical and Electronics Engineers
Pages1-10
Number of pages10
ISBN (Print)0769500161
DOIs
Publication statusPublished - 1999
Externally publishedYes
EventIEEE International Conference on Software Maintenance-1999 (ICSM ’ 99) - Keble College, Oxford, United Kingdom
Duration: 30 Aug 19993 Sept 1999

Conference

ConferenceIEEE International Conference on Software Maintenance-1999 (ICSM ’ 99)
Abbreviated titleICSM 99
Country/TerritoryUnited Kingdom
CityOxford
Period30/08/993/09/99

Fingerprint

Dive into the research topics of 'A Methodology for the Automated Introduction of Design Patterns'. Together they form a unique fingerprint.

Cite this