Migrating Legacy Systems to Service-Oriented Architectures


Electronic Communications of the EASST
Volume 16 (2009)

Proceedings of the
Doctoral Symposium at the

International Conference on Graph Transformation
(ICGT 2008)

Migrating Legacy Systems to Service-Oriented Architectures

Carlos Matos, Reiko Heckel

15 pages

Guest Editors: Andrea Corradini, Emilio Tuosto
Managing Editors: Tiziana Margaria, Julia Padberg, Gabriele Taentzer
ECEASST Home Page: http://www.easst.org/eceasst/ ISSN 1863-2122

http://www.easst.org/eceasst/


ECEASST

Migrating Legacy Systems to Service-Oriented Architectures

Carlos Matos1,3, Reiko Heckel2

1 cmm22@mcs.le.ac.uk
2 reiko@mcs.le.ac.uk

Department of Computer Science
University of Leicester, United Kingdom

3 ATX II Tecnologias de Software S.A.
Portugal

Abstract: This paper presents a methodology for migrating legacy systems towards
Service-Oriented Architectures. The approach is based on source code analysis for
identifying the contribution of code fragments to architectural elements and graph
transformation for architectural migration, allowing for a high degree of automation.
In order to transform existing application architectures into SOAs, the methodology
has to be used in two dimensions, a technological and functional one.

The work presented here is being developed in the context of a collaboration be-
tween academia and industry, and is aimed at being applied in real reengineering
projects.

Keywords: Reengineering, SOA, Legacy

1 Introduction

Due to the frequency of change in business requirements and evolution in technology, the need
to evolve existing software systems is ever increasing. This results in demand for new methods
to support this process, in particular where the transition towards modern architectures is con-
cerned. Drivers of this demand are the adoption of object-oriented programming languages, the
advent of Web technologies and specifically of Service-Oriented Architectures.

SOAs are steadily becoming mainstream software engineering practice. Reports show that
more than 50% of large, newly developed applications and business processes designed during
the year 2007 used service-oriented architectures to some extent [AS08]. However, experience
also indicates that SOA initiatives rarely start from scratch. The technology market research firm
Gartner estimates that by 2011 (with 0.8 probability) more than 80% of existing applications will
be at least partly reengineered to participate in service-oriented architectures [NPSI06]. This
represents a significant effort for IT departments of organisations.

With this growth in SOA adoption, the need for a systematic approach towards reengineering
for SOA becomes ever more pressing. However, several principles of service-orientation pose
major challenges for such reengineering efforts:

1. The separation of business from presentation logic

2. The loosely coupled relationship between services

1 / 15 Volume 16 (2009)

mailto:cmm22@mcs.le.ac.uk
mailto:reiko@mcs.le.ac.uk


Migrating Legacy Systems to SOA

3. The coarse-grained nature of services

As legacy systems were not usually built with these concerns in mind, much effort is needed
to accommodate them. Approaches based on wrapping existing applications into web service
interfaces do not fully address these principles—a deep restructuring approach is necessary.

This paper presents a methodology to address migration of legacy software to SOA comply-
ing with the above principles while allowing for a high degree of automation and providing
support for the full reengineering cycle. We see our proposal as an instance of the horseshoe
model [KWC98], a conceptual model for reengineering at different levels, with a focus on trans-
formations at the level of architectural models. In this paper, this goal is achieved by using
techniques such as code pattern matching and graph transformation. In order to structure the
process, we propose an overall methodology, instantiated in two dimensions to address the tech-
nological and the functional evolution. The former is concerned with technical purpose of the
code and the latter focuses on its implementation of relevant business-level functionalities.

The remainder of this paper is organised as follows: Section 2 describes in more detail the
SOA properties mentioned above and Section 3 presents a general methodology for architectural
migration. Next, a summary of the technological dimension in Section 4 is presented and the
functional dimension is detailed in Section 5. Section 6 presents an initial prototype implemen-
tation of the methodology. Section 7 discusses related work and Section 8 concludes the paper
and presents future work.

2 Principles of SOA

To support the migration to SOA, it is necessary to address the properties discussed in the previ-
ous section. A more detailed description of these is made in the following paragraphs.

2.1 The separation of business from presentation logic

In legacy applications it is common to find, mixed up in a kind of “architectural spaghetti”,
code fragments concerned with database access, business logic, presentation aspects and ex-
ception handling, among others. It is not possible to derive services directly while business
logic is tightly coupled with presentation logic. Therefore, an appropriate decomposition of the
code is required such that “pure” business functions are isolated as candidate services or ser-
vice constituents. This technological dimension of reengineering towards SOA amounts to an
architectural transformation towards a multi-tiered architecture.

2.2 The loosely coupled relationship between services

It is common to find a complex network of dependencies between different functionalities in ex-
isting systems. However, service-orientation principles state that services must interact without
tight, cross-service dependencies [Erl05]. Therefore, a decomposition of different functionalities
is required to provide a degree of independence.

Proc. Doctoral Symposium ICGT 2008 2 / 15



ECEASST

Network 
Barrier

Consuming
applications

Business
processes

(A) Coarse-grained 
services (e.g. WS)

(B) Internal services 
(mix of fine and 
coarse-grained)

(C) Fine-grained 
operations

Figure 1: Service granularity across application tiers

2.3 The coarse-grained nature of services

Legacy applications typically consist of elements that are of a fine-grained nature, for instance
components with operations that represent logical units of work, like reading individual items of
data. OO class methods are an example of such fine-grained operations. The notion of service,
however, is of a different, more coarse-grained nature. Services represent logical groupings
of, possibly fine-grained, operations, work on top of larger data sets, and in general expose
a greater range of functionality. In particular, services that are deployed and consumed over
a network must exhibit such a property in order to limit the number of remote consumer-to-
provider roundtrips and the corresponding processing cycles.

Figure 1 presents a graphical representation of granularity across different application tiers.
In an SOA context, legacy logical units of work have to be appropriately composed and reengi-
neered in order to form services of desired granularity and of adequate support for multi-party
business processes.

3 General Methodology of Architectural Migration

Depending on the intended target architecture, changes are required along either the technolog-
ical or functional dimensions or, as is the case with SOAs, both. Technological restructuring is
used in the layering of software systems and may lead to a 3-tiered architecture, separating logic,
data, and user interface (UI). This process addresses the principle of separation between busi-
ness and presentation logic. Functional restructuring separates components which, after having
replaced their UI tier with an appropriate interface and being grouped according to specific pa-
rameters, represent services. This dimension addresses the properties of loosely coupled services
and their coarse-grained nature.

3 / 15 Volume 16 (2009)



Migrating Legacy Systems to SOA

Annotated
Source Code

Source
Graph Model

R1

Annotated
Target Code

Target
Graph Model

Metamodel

3

4

2 4

Target
Constraints

R2 R3

Source Code 1

<<instantiates>> <<instantiates>> <<conforms­to>>

1. Code annotation
2. Reverse engineering
3. Redesign
4. Forward engineering

Figure 2: General methodology

The general methodology instanced for both technological and functional dimensions is pre-
sented in Figure 2. This consists of the steps described in the next subsections.

3.1 Code annotation

At this stage, the source code is annotated by code categories. Blocks of source code are labelled
according to the different elements of the target architecture they will be mapped to. This process
is largely automated but, depending on the source system, requires some level of input from
the developer that is driving the process. This activity can thus be seen as an interleaving of
automated and manual code annotations.

The code categories to be used in this step depend on the target architecture. If migrating to
a 3-tier system, the categories to consider are UI, Logic and Data, as is described in this paper
for the technological dimension. The categories for the functional dimension are related to the
contribution of source code to particular services (e.g. managing accounts, customers, etc).

3.2 Reverse engineering

Based on the information gathered from the annotation process, this step obtains a graph repre-
sentation of the code. This graph will not have a 1-1 mapping with the source code, and its level
of detail depends on the annotation. Structural elements that are annotated as contributing to just
one category are represented by a single node. If instead they are fragmented into several cate-
gories, each of these fragments has a separate representation in the model. Since, for example, a
method completely identified as belonging to the user interface is represented by one node only,
this allows the model to be much more succinct than the code, leading to highly scalable solu-
tion. Another benefit of a graph representation is that it allows transformations to be described
in an intuitive, visual way.

The graph model is based on a metamodel that consists of a type graph that contains: code
structure information, its categorisation and association to architectural elements. An example
is shown later (cf. Section 6) when discussing a prototype implementation. This metamodel is

Proc. Doctoral Symposium ICGT 2008 4 / 15



ECEASST

general enough to accommodate both the source and target system, but also intermediate stages
of the redesign transformation. Additionally, it contains the code categories that were available
throughout the code annotation step.

3.3 Redesign

This step uses graph transformation rules to produce the target architecture. The rules conceptu-
ally extend the graph transformation suggested by Mens et al in [MDJ02] to formalise refactor-
ing [Fow99]. The intended result is expressed by an extra set of constraints over the metamodel,
which are satisfied when the transformation is complete. For instance, it is possible to specify a
constraint that ensures there are no direct edges from a code fragment of a specific category to
another of a specific different category. The code categorisation provides the control required to
automate the transformation process, limiting the need for user input to the code annotation step.
Rule components (left-hand side, right-hand side and negative application conditions), as well
as source, target and intermediate graphs are instances of the metamodel. In the technological
dimension the rules aim to re-organise the model into a 3-tier architecture, thus complying to the
SOA property described in property 2.1. The rules for the functional dimension restructure the
model so that services comply to properties 2.2 and 2.3.

3.4 Forward engineering

The final step is the process of obtaining the target code. This can be achieved by keeping a
log of the transformations that are applied at model level and use this to drive the code level
transformations. The result of this step, the annotated code in relation with a graph model, has
the same structure as the input to step 1, thus allowing for several iterations of the whole process.

This is particularly relevant if the reengineering is directed towards service-oriented systems.
In this case, the transformation has to address both technological and functional dimensions,
i.e., respectively, transformation into a three-tier architecture and decomposition into functional
components.

One of the main goals of this methodology is to allow a high degree of automation. Man-
ual intervention, if any, is only required in step 1. A more detailed description of the general
methodology can be found in [HCM+08].

4 Technological Dimension

In this section we summarise the instance of the general methodology for the technological
dimension. A more detailed description can be found in [CMHE07].

4.1 Code annotation

The code annotation step of the technological dimension is based on code pattern matching
rules. These are used to automatically identify what source code fragments belong to User
Interface, Logic and Data access concerns. Rules can be specific to a programming language (e.g.

5 / 15 Volume 16 (2009)



Migrating Legacy Systems to SOA

annotating with UI all static method calls to Classes known to deal with presentation aspects),
specific to a development paradigm (e.g. assuming OO code) or even technology independent
(e.g. rules based in matches from other rules). Although a majority of code patterns can be
used in reused for multiple projects, differences in the involved technologies, or unusual coding
patterns, make it necessary to have manual intervention.

Some code statements can be considered to fall in more than one category. An example would
be the result of a UI method call being used directly in a Logic operation. Since we can perform
the annotation at the abstract syntax tree (AST) [KG98] level, it is possible to separate the parts
that belong to one category from the others. In terms of transformation this example would lead
to the direct UI call being replaced by a Controller method call (in the context of a Model-View-
Controller pattern). Similar approaches are used for other kinds of mixed category statements.

4.2 Reverse engineering

The reverse engineering step is fully automated and is achieved by taking the annotated code as
input and generating a graph model complying to the specified metamodel. In this representation
it is possible to see links between the different architectural concerns and have an overall feel on
how the original application is structured.

4.3 Redesign

The redesign step is achieved by executing a set of graph transformation rules over the source
graph model. The resulting model, which is achieved automatically, will comply to the specified
target constraints and reflect a correct separation between the concerns UI, Logic and Data ac-
cess. This guarantees, for example, that there are no direct calls from the UI to the Data access
layer or calls from Data access to Logic.

4.4 Forward engineering

In order to obtain the final code, the forward engineering step uses the information gathered in
the redesign step to drive code transformations. Regarding object-oriented applications, this can
be achieved via code refactorings.

5 Functional Dimension

In this section we describe the instance of the general methodology for the functional dimension.

5.1 Code annotation

The code annotation phase in the functional dimension presents more challenges than that of the
technological dimension. While in the latter there is a big common ground between different ap-
plications (especially if they share the choice of technology), the former depends on application
features. This, and the different nature of the two dimensions, also has an effect on the strategy
of approach.

Proc. Doctoral Symposium ICGT 2008 6 / 15



ECEASST

The functional code annotation phase consists of two tasks:

1. operation identification

2. grouping of operations into services

In this paper, operation stands for a functionality that is likely to be at a too low granularity to be
considered as a service in an SOA context. The categories used in this dimension are not known
beforehand. It is during the code annotation step that these will be extracted. The names drawn
to identify each category are based in the operation identifier thus, depending on the accuracy of
these, it may be necessary to intervene manually so adequate names are used.

The identification of operations in source code is performed by first of all locating their entry
points. The techniques used for this purpose include:

• Code belonging to the Logic layer that is invoked by the UI - Code that is directly called
from user interface components typically represent entry points to relevant functionality;

• External API’s (e.g. from IDL files) - APIs that are published for external follow well
known structures;

• Code that falls into a typical pattern of control / data flow - There are many code patterns
that can help to identify entry points to application functionalities (an example is given in
Section 6.1);

• Entry point for code that is mapped to more than one operation - Blocks of code that are
used by several different application functionalities have entry points that are likely to lead
to relevant operations (given that this is a very general approach, granularity of code blocks
identified using it may vary greatly).

• Known feature location techniques such as LSI [MSRM04], which is a static approach,
and SBP [AG05], a dynamic technique. There are some feature location techniques that
have been tested in different environments, typically to aid in software maintenance tasks,
and that presented their effectiveness.

The dependencies between each operation entry point and the remaining code can be determined
using slicing techniques. A list of candidate operations can then be presented to the developer
driving the process allowing human intervention / input either for manual adaptations (supported,
for example, by feature location techniques LSI and SBP as mentioned above) or for a new
automated round of operation identification.

In the second step of service extraction operations previously obtained are grouped into co-
herent services. This is an inherently semi-automated task where operations that are related in
some manner are grouped together. Automation proposes ranked groupings of operations by us-
ing metrics, including: overlapping between operations, actors involved, information about data
accessed and similarity measure (e.g. using LSI). User input can then be given to decide which
grouping to use, either by selecting one from the proposed automatically or by making manual
assignments. The result is the source code annotated according to the operations and services
that it will be mapped to afterwards to produce the graph model and drive the redesign process.

7 / 15 Volume 16 (2009)



Migrating Legacy Systems to SOA

5.2 Reverse engineering

The reverse engineering step of the functional dimension has exactly the same requirements as
for the technological dimension. This makes it possible to use the same implementation of this
step for both.

5.3 Redesign

The graph transformation rules used in this dimension are designed so that operations are grouped
into meaningful services (as defined in the annotation step) and so that services have loosely cou-
pled relations, thus complying with the last two SOA properties mentioned in Section 2.

Where in the technological dimension we have mainly rules for decomposing code structures,
here there are, additionally, rules that compose/group code structures. The former are used to
guarantee loose coupling and the latter to build the adequate granularity of services throughout
the system.

5.4 Forward engineering

Despite the differences in the code annotation and redesign steps, the forward engineering step
of the functional dimension follows the same principles that were defined for the technological
dimension. Due to this, it is possible to use the same implementation of this step for both cases.

6 Initial Prototype

A prototype is being developed to apply the methodology described here. An initial implemen-
tation was demonstrated, using a small banking application in Java as scenario, at a SENSORIA
project meeting [SEN]. This version did not yet perform the full code transformation and fo-
cused mainly on the technological dimension, but already supported the full reengineering cycle.
The following subsections summarise this implementation for each step of the methodology.

6.1 Code annotation

The code annotation step was implemented using CareStudio (Figure 3 provides a screenshot
of the application). This is an Eclipse plugin based on a tool by ATX (L-CARE), allowing
the specification and execution of code pattern matching rules and storing the resulting mark-
ings/annotations in an XML file. The patterns are defined over an XML representation of the
AST of the code. Rules for pattern matching are defined as XPath queries that can range from
simple expressions to a combination of an arbitrary number of expressions, using the output of
one expression as parameters for others. Next we provide a couple of examples of code pattern
matching rules that exists in the prototype, the first belonging to the technological dimension and
the second one to the functional dimension. Some expressions were simplified for readability.

1. Attributes that belong to the user interface. Attributes of types that are known a priori to
belong to the UI code category can be directly identified as such. The expression used to
locate these cases is:

Proc. Doctoral Symposium ICGT 2008 8 / 15



ECEASST

Figure 3: CareStudio - an Eclipse plugin for code pattern matching - showing one occurrence of
an UI attribute declaration (rule UI Attribute).

parameter equation UI_TYPES{’;JPanel;JLabel;JTextField;JComboBox;JButton;’};
main equation ALL{//FieldDeclaration};
condition MAIN_EQ{$ALL[contains($UI_TYPES, concat(";",Type/Name/@value,";"))]};

2. Methods with high Fan-In. Methods that are called from a variety of locations in source
code are likely to have a significant role in an operation (albeit potentially of too low
granularity to be alone considered services). A detailed discussion about this technique can
be found in [MDM04] where it was used in the context of Aspect Mining. The expression
used in CareStudio to locate these situations is (variable N is a parameter for the rule):

main equation METHOD{//Method};
condition METHODCALLS{count(//FunctionOp[Name/@value=$METHOD/Name/@value]) > $N};

One consideration that can take place when analysing these pattern matching rules is that while
some have to be programming language specific, others can be very general as is the case in the
second example. Rules of the latter type have a big potential for reuse in multiple projects.

6.2 Reverse engineering

The abstract syntax tree representation, adequate for code annotation, is not scalable for the re-
design step. Here, the graph representation allows us to abstract from the specific programming

9 / 15 Volume 16 (2009)



Migrating Legacy Systems to SOA

Figure 4: Type graph for the OO paradigm.

languages involved and to describe transformations in a more abstract and intuitive way. Ad-
ditionally, given that we only represent in these graphs the elements required according to the
annotation, the model to be transformed is simpler and the transformation more performant. This
is particularly relevant when addressing the migration of large scale systems.

A specialised tool was built based on these requirements to implement the reverse engineering
step in the prototype. Because of the choice of tool for the next step, the result of this one will
be a graph model represented in EMF [Ecl].

6.3 Redesign

Like in the reverse engineering step, redesign transformations are based on a graph metamodel.
The prototype is thus using a type graph that can represent object-oriented applications. Figure 4
presents this type graph that includes both structural information about the code (bottom) but also
its categorisation and organisation in architectural components/connectors(top-right and top-left,
respectively).

Proc. Doctoral Symposium ICGT 2008 10 / 15



ECEASST

Figure 5: Move Method UI transformation rule.

The graph transformation rules were designed in the Tiger EMF Transformer tool [Tig]. This
is an Eclipse plugin application that allows the definition of rules and generates Java code that
is capable of executing them over a graph represented in EMF and that complies to the specified
type graph. The rule management features of this tool are graphical based, facilitating the rule
development.

An example of graph transformation rule can be seen in Figure 5. The top indicates the left-
hand side of the rule and the bottom refers to the right-hand side. Negative application conditions
are not shown for simplicity. This consists of the Move Method UI rule whose purpose is to
move methods identified in the code annotation step as belonging to the UI code category from
generic classes to UI ones. This rule performs one of the necessary activities of the technological
dimension to achieve the SOA property of separating UI code from business logic.

11 / 15 Volume 16 (2009)



Migrating Legacy Systems to SOA

6.4 Forward engineering

The forward engineering step of this prototype is achieved by creating a log of the redesign
step, containing information on the graph transformation rules that were applied as well as their
order and the nodes of the graph that were affected. This log is mapped to a sequence of code
refactorings which, when applied to the source code, yield the transformed target code. The tool
uses Eclipse’s built-in refactorings for this purpose so the work focused mainly in mapping graph
transformation rules to the right refactorings.

All the tools used for the prototype were implemented in Eclipse and can be used as plugins
to this IDE. The prototype is under development and the main objective is to provide means to
fully address reengineering projects. Details about future work are given in Section 8.

7 Related work

Given its wide scope, the work presented here falls into several research areas. Next we describe
related work in: source code analysis, architectural transformation and reengineering to SOA.

Source code analysis, in particular feature/concept location, is related to the first step of the
methodology described here. There are several techniques for this purpose including the work
of Marcus et al [MSRM04] in applying LSI to concept location, the scenario-based (SBP) fea-
ture identification approach of Antoniol and Gueheneuc [AG05] and the work of Eisenbarth et
al [EKS03] involving both static and dynamic feature location. These techniques are all candi-
dates to be applied in the context of an SOA migration project, considering the first step of the
methodology presented in this paper. The ARTISAn framework, described by Jakobac, Egyed
and Medvidovic in [JEM05], categorises code using an iterative user-guided method. The cate-
gories used are: “processing”, “data” and “communication”. The approach differs from ours in
several aspects. Firstly, the goal of the framework is program understanding and not the creation
of a representation that is aimed to be used as input for the transformation part of a reengineering
methodology. Another important difference is that in ARTISAn the annotation/categorisation
process (called “labeling”) is based on clues that result in the categorisation of classes only. In
our approach we need, and support, the method and code block granularity levels.

Work in the area of architecture transformation is diverse and includes examples closely re-
lated to our work. Use of graph transformation for reengineering has been suggested previ-
ously [CMW02] in a different context (migrating mainframe COBOL to client/server) with sim-
ilarities to our technological dimension. A model-based technique based on graph transformation
for a-posteriori integration of legacy applications into SOA is proposed in [Haa07]. This focuses
on generating wrappers and glue code, rather than transforming directly the source code. Ivkovic
and Kontogiannis [IK06] proposed a framework for quality-driven software architecture refac-
toring using model transformations and semantic annotations. Fahmy et al [FHC01] use graph
rewriting to specify architectural transformations at the description level. In our case, we build a
graph that models the software but also maps the code to target architectural elements. It is this
information that guides the redesign process described in this paper.

Even before the advent of SOAs, approaches for reengineering business applications were
proposed, based on the integration of legacy components after separating application logic from

Proc. Doctoral Symposium ICGT 2008 12 / 15



ECEASST

presentation [KKNS94]. Work in reengineering to SOA is new. It primarily focuses on identify-
ing and extracting services from legacy code and wrapping them for deployment. We name just
two examples in this section. Sneed [Sne06] presents a method for wrapping PL/I, COBOL, and
C/C++ code behind an XML shell which allows functions within the programs to be offered as
web services. A lighter code-independent approach was developed by Canfora et al [CFFT06],
which wraps only the presentation layer of legacy form-based UI as services. Our work is differ-
ent from other approaches, in that our goal is not just to provide existing functionality as services
but to do so while complying to the service-orientation principles described in Section 2.

8 Conclusion

The main contribution of this work is the definition of a methodology that can be used for mul-
tiple types of reengineering projects, including migration towards service-oriented architectures,
while having a high level of automation. Code pattern matching and graph transformation are
central to these aims. By applying those in the technological and functional dimensions, the re-
sult is a concrete process of addressing SOA migration projects in a systematic way. This work
is ongoing, but originated from problems in real projects and is developed together with industry.

A prototype is currently being developed to evaluate this approach in a larger scale and an
initial version is already being applied to an example application. The early tests show that this
approach can be put into practice with good results.

Next in this work is the consolidation of the code pattern matching rules for both the techno-
logical and functional dimension to achieve a more complete coverage of situations that can be
found in legacy applications. This will be done in parallel with overall improvements in the tech-
niques that will be found when testing more situations. After these activities and the prototype
is benefiting from them, further validation will consist in its application to a large sized system.

Acknowledgements: This work is partially supported by the European project IST-FET IP
SENSORIA (IST-2005-16004). Thanks to R. Correia (formerly ATX II Tecnologias de Software
S. A.) and Dr. M. El-Ramly (Cairo Univ., previously at Univ. of Leicester) for their participation.

Bibliography

[AG05] G. Antoniol, Y.-G. Gueheneuc. Feature Identification: A Novel Approach and a
Case Study. In Proc. of Int’l Conf. Software Maintenance (ICSM). Pp. 357–366.
IEEE Computer Society, Washington, DC, USA, 2005.
doi:10.1109/ICSM.2005.48

[AS08] C. Abrams, R. W. Schulte. Service-Oriented Architecture Overview and Guide to
SOA Research. Technical report G00154463, Gartner Research, January 2008.

[CFFT06] G. Canfora, A. R. Fasolino, G. Frattolillo, P. Tramontana. Migrating Interactive
Legacy Systems To Web Services. In Proc. of European Conf. Software Mainte-
nance and Reengineering (CSMR). Pp. 24–36. IEEE Computer Society, Washing-

13 / 15 Volume 16 (2009)

http://dx.doi.org/10.1109/ICSM.2005.48


Migrating Legacy Systems to SOA

ton, DC, USA, 2006.
doi:10.1109/CSMR.2006.34

[CMHE07] R. Correia, C. Matos, R. Heckel, M. El-Ramly. Architecture Migration driven by
Code Categorization. In Oquendo (ed.), Proc. of European Conf. Software Architec-
ture (ECSA). LNCS 4758, pp. 115–122. Springer-Verlag, 2007.
doi:10.1007/978-3-540-75132-8 10

[CMW02] K. Cremer, A. Marburger, B. Westfechtel. Graph-based tools for re-engineering.
Journal of Software Maintenance 14(4):257–292, 2002.
doi:10.1002/smr.254

[Ecl] Eclipse. Eclipse Modeling Framework.
http://www.eclipse.org/emf/

[EKS03] T. Eisenbarth, R. Koschke, D. Simon. Locating Features in Source Code. IEEE
Transactions on Software Engineering 29(3):210–224, 2003.
doi:10.1109/TSE.2003.1183929

[Erl05] T. Erl. Service-Oriented Architecture: Concepts, Technology, and Design. Prentice
Hall PTR, Upper Saddle River, NJ, USA, 2005.

[FHC01] H. Fahmy, R. C. Holt, J. R. Cordy. Wins and Losses of Algebraic Transformations
of Software Architectures. In Proc. of Int’l Conf. Automated Software Engineering
(ASE). Pp. 51–60. IEEE Computer Society, Washington, DC, USA, 2001.
doi:10.1109/ASE.2001.989790

[Fow99] M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley,
Boston, MA, USA, 1999.

[Haa07] T. Haase. Model-Driven Service Development for A-posteriori Application Inte-
gration. In Proc. of International Conference on e-Business Engineering (ICEBE).
Pp. 649–656. IEEE Computer Society, Washington, DC, USA, 2007.
doi:10.1109/ICEBE.2007.81

[HCM+08] R. Heckel, R. Correia, C. Matos, M. El-Ramly, G. Koutsoukos, L. Andrade. Soft-
ware Evolution. Chapter Architectural Transformations: From Legacy to Three-tier
and Services, pp. 139–170. Springer, 2008.
doi:10.1007/978-3-540-76440-3 7

[IK06] I. Ivkovic, K. Kontogiannis. A Framework for Software Architecture Refactoring
using Model Transformations and Semantic Annotations. In Proc. of European
Conf. Software Maintenance and Reengineering (CSMR). Pp. 135–144. IEEE Com-
puter Society, Washington, DC, USA, 2006.
doi:10.1109/CSMR.2006.3

[JEM05] V. Jakobac, A. Egyed, N. Medvidovic. Improving System Understanding via In-
teractive, Tailorable, Source Code Analysis. In Cerioli (ed.), Proc. of Fundamental

Proc. Doctoral Symposium ICGT 2008 14 / 15

http://dx.doi.org/10.1109/CSMR.2006.34
http://dx.doi.org/10.1007/978-3-540-75132-8_10
http://dx.doi.org/10.1002/smr.254
http://www.eclipse.org/emf/
http://dx.doi.org/10.1109/TSE.2003.1183929
http://dx.doi.org/10.1109/ASE.2001.989790
http://dx.doi.org/10.1109/ICEBE.2007.81
http://dx.doi.org/10.1007/978-3-540-76440-3_7
http://dx.doi.org/10.1109/CSMR.2006.3


ECEASST

Approaches to Software Engineering (FASE). LNCS 3442, pp. 253–268. Springer-
Verlag, 2005.
doi:10.1007/b107062

[KG98] R. Koschke, J.-F. Girard. An Intermediate Representation for Reverse Engineering
Analyses. In Proc. of Work. Conf. Reverse Engineering (WCRE). Pp. 241–250. 1998.
doi:10.1109/WCRE.1998.723194

[KKNS94] N. Kiesel, P. Klein, M. Nagl, V. Schmidt. Verteilung in betriebswirtschaftlichen An-
wendungen: Einige Bemerkungen von Seiten der Softwarearchitektur. In Jhnichen
(ed.), Online ’94 Congress VI. Pp. C.620.01–C.620.29. 1994.

[KWC98] R. Kazman, S. Woods, J. Carrière. Requirements for Integrating Software Architec-
ture and Reengineering Models: CORUM II. In Proc. of Work. Conf. Reverse En-
gineering (WCRE). Pp. 154–163. IEEE Computer Society, Washington, DC, USA,
1998.
doi:10.1109/WCRE.1998.723185

[MDJ02] T. Mens, S. Demeyer, D. Janssens. Formalising Behaviour Preserving Program
Transformations. In Corradini et al. (eds.), Proc. of Int’l Conf. Graph Transforma-
tion (ICGT). LNCS 2505, pp. 286–301. Springer-Verlag, 2002.
doi:10.1007/3-540-45832-8 22

[MDM04] M. Marin, A. van Deursen, L. Moonen. Identifying Aspects Using Fan-In Analysis.
In Proc. of Work. Conf. Reverse Engineering (WCRE). Pp. 132–141. IEEE Computer
Society, Washington, DC, USA, 2004.
doi:10.1109/WCRE.2004.23

[MSRM04] A. Marcus, A. Sergeyev, V. Rajlich, J. I. Maletic. An Information Retrieval Ap-
proach to Concept Location in Source Code. In Proc. of Work. Conf. Reverse En-
gineering (WCRE). Pp. 214–223. IEEE Computer Society, Washington, DC, USA,
2004.
doi:10.1109/WCRE.2004.10

[NPSI06] Y. V. Natis, M. Pezzini, R. W. Schulte, K. Iijima. Predicts 2007: SOA Advances.
Technical report G00144445, Gartner Research, November 2006.

[SEN] SENSORIA. Software Engineering for Service-Oriented Overlay Computers.
http://sensoria.fast.de/

[Sne06] H. Sneed. Integrating legacy Software into a Service oriented Architecture. In Proc.
of European Conf. Software Maintenance and Reengineering (CSMR). Pp. 3–14.
IEEE Computer Society, Los Alamitos, CA, USA, 2006.
doi:10.1109/CSMR.2006.28

[Tig] Tiger EMF Transformer.
http://tfs.cs.tu-berlin.de/emftrans/

15 / 15 Volume 16 (2009)

http://dx.doi.org/10.1007/b107062
http://dx.doi.org/10.1109/WCRE.1998.723194
http://dx.doi.org/10.1109/WCRE.1998.723185
http://dx.doi.org/10.1007/3-540-45832-8_22
http://dx.doi.org/10.1109/WCRE.2004.23
http://dx.doi.org/10.1109/WCRE.2004.10
http://sensoria.fast.de/
http://dx.doi.org/10.1109/CSMR.2006.28
http://tfs.cs.tu-berlin.de/emftrans/

	Introduction
	Principles of SOA
	The separation of business from presentation logic
	The loosely coupled relationship between services
	The coarse-grained nature of services

	General Methodology of Architectural Migration
	Code annotation
	Reverse engineering
	Redesign
	Forward engineering

	Technological Dimension
	Code annotation
	Reverse engineering
	Redesign
	Forward engineering

	Functional Dimension
	Code annotation
	Reverse engineering
	Redesign
	Forward engineering

	Initial Prototype
	Code annotation
	Reverse engineering
	Redesign
	Forward engineering

	Related work
	Conclusion