A Formal Model Driven Approach to Dependable Software

A Formal Model Driven Approach to Dependable Software Evolution
Feng Chen, Hongji Yang and Bing Qiao
Software Technology Research Laboratory
De Montfort University, Leicester, UK
fengchen, hyang, bqiao @dmu.ac.uk
William Cheng-Chung Chu
Software Engineering and Technology Center
TungHai University, Taiwan
[email protected]
Abstract
legacy source code will then facilitate the migration of
legacy systems in the subsequent forward engineering
steps. A recent research trend in reengineering area carries
the idea further and moves into model driven perspective
which is in the context of model transformation and
abstraction. In this way, software can be evolved at the
model level without regard for technological aspects and
software reengineering can then be achieved effectively
from more abstract level.
Dependability in the face of software evolution is
currently a grand challenge. The dependability of systems
is defined as the reliance that can justifiably be placed on
the service the system delivers. To build trustworthy
systems from legacy systems is urging dependability
concerns to be considered at the architectural level. One of
the most exciting outcomes of those efforts is OMG’s
Model Driven Architecture (MDA) which aims at a
unified model based framework for software evolution
[16]. Current work on instantiating an architectural model
into an executing platform is being carried out that relates
dependability concerns from the early to late stages of
software engineering by following the principles of MDA
[8].
Formal methods aim to provide mathematical
foundation for the design and verification of software
systems, which can prevent the introduction of fault.
However, formal methods are too limited to effectively
handle large and complex system development. In [9], it is
suggested that people can more effectively use formal
methods by putting more emphasis on formal models and
on domain-specific formal methods. A formal model
definition ensures a consistent interpretation of the legacy
system and provides a solid theoretical foundation for the
dependable software evolution. This paper will focus on
formal model transformation technology to extract
different level of models from legacy source code. In
Section 2, background and some current researches are
reviewed. In Section 3, formal model transformation
approach to software reengineering is presented. In
Section 4, a prototype CASE tool, Maintainer Integration
Platform (MIP), is introduced which supports the
proposed approach. In Section 5, a case study is used to
test the proposed approach and the prototype tool, and
finally, in Section 6, the paper is concluded and further
research directions are also discussed.
The paper proposes a unified formal model driven
approach to software evolution based on both program
transformation and model transformation of legacy
systems. A formal model definition ensures a consistent
interpretation of the legacy system and provides a
theoretical foundation for dependable software evolution.
The theoretical foundation is based on the construction of
a wide spectrum language for reengineering, known as
WSL, which enjoys a sound formal semantics. The
architecture and working flow of the approach are
proposed, and the mappings between WSL and PSL in
MDA provide an engaging combination of traditional
program
transformation
and
modern
model
transformation, which shows that the proposed approach
is feasible and promising in its domain. A prototype tool is
developed to test the approach and a case study is used
for experiments with the proposed approach and the
prototype tool. Conclusion is drawn based on analysis
and further research directions are also discussed.
Keywords: Software Evolution, Software Reengineering,
Formal Method, Model Transformation, Wide Spectrum
Language (WSL), Model Driven Architecture (MDA)
1. Introduction
Constant innovation of information technology and
ever-changing market requirements reduce more and more
existing software to legacy status. Generating software
through reusing legacy systems has been a primary
solution and software reengineering has the potential to
improve software productivity and quality across the
entire software life cycle. The purpose of software
reengineering is both to utilise existing software to take
advantage of new technologies and to enable new
development efforts to take advantage of reusing existing
software.
Software reengineering consists of mainly two parts,
reverse engineering and forward engineering [1, 10]. The
classical reengineering technology starts at the level of
program source code which is the most or only reliable
information on a legacy system. The program
transformation and specification abstractions derived from
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
2. Background
2.1 Software Model
The term “model” is used in many contexts and often
has different meanings. Generally, a model can mean an
abstraction and representation of the important factors of a
complex reality, which is different from the thing it
models, yet has the same main characteristics as the
original. With a model, people can build up an
understanding to the point where it is natural to answer a
question by modelling it into some simpler context,
answering the question with the model, and then
interpreting the answer [14]. Models help people by
letting them work at a higher level of abstraction. A model
may hide or mask details and bring out the big picture.
A model plays the analogous role in software
development. Creating a model of a system is a useful
way to understand a system. Software modelling is an
essential part of large complex software projects. Software
modelling assumes that abstract models convey
information more effectively than source code. People
should use abstract models to enhance their understanding
of a system and to provide a common base for others to
discuss it [21]. A model is always written in a language.
To enable automatic transformation of a model, the
language should be well defined, which has a well-defined
form (syntax) and meaning (semantics) that can be
interpreted automatically by a computer [6].
tools, some sorts of common model exchange format are
needed. XMI is an XML standard for exchanging UML
models.
2.3 Model Driven Architecture
OMG’s Model Driven Architecture (MDA) intends to
achieve language, vendor and middleware neutral
software development. MDA focuses on various models
existing in different phases of software development. A
model could be a Computation Independent Model (CIM)
or a Computational Model (CM). Both of them describe a
system in a logic way. The former, also known as
requirement model, does not involve technical factors,
while the latter does. The computational model in MDA
presents its most distinguishing features which exist in
two forms: Platform Independent Model (PIM) or
Platform Specific Model (PSM). PIM and PSM could be
written in any formal languages that make them
understandable by both human and machines. A series of
PIM and PSM models construct a hierarchy of abstract
levels. MDA models at different abstract levels can be
transformed automatically to each other according to
transformation rules.
Define PIM Meta Model
Define PSM Meta Model
Define Transformation Rules
PIM
2.2 UML, MOF and XMI
PIM2PSM Rules
Design Business Logic
Unified Modelling Language (UML) has become the
worldwide de facto standard for the visualisation and the
modelling of complex object-oriented and component
based systems. It has significant tool support and a wide
spread acceptance to developers, software architects and
engineers. Rumbaugh et al [17] identifies three viewpoints
necessary for understanding a software system: the objects
manipulated by the computation (the data model), the
manipulations themselves (functional model), and how the
manipulations are organised and synchronised (the
dynamic model). UML, through its various UML
diagrams, encompasses all of Rumbaugh’s views.
According to the UML Specification, the UML is
actually an instance of the MOF (Meta Object Facility)
meta-metamodel. The MOF defines a set of interfaces,
which can be used to define different interoperable
metamodels (including the UML metamodel). A
metamodel is in fact an abstract language for some kinds
of metadata.
In order to enable the developers to achieve the same
understanding and interpretation of the model when this
model is exchanged among different technologies and
PSM
Map onto Implementation Technology
Produce Final System
PSM2Code Rules
Code
Figure 1. MDA process
Figure 1 shows the process of applying MDA.
Transformation is carried out by automatic tools that take
a PIM as input and produce a specific PSM as output.
Nowadays MDA is supported by many tools. The
Arcstyler is a MDA tool [5] which supports the whole
application life cycle of software development. Arcstyler
can import existing models that are compliant to XMI or
create models from existing Java code. Arcstyler used the
term MDA-Cartridges for the model transformation.
Arcstyler provides the predefined cartridges for a number
of technologies and platforms, such as Java, J2EE
and .NET. Using the cartridge concept one could define
the transformation rules for a new technology or platform
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
like CORBA, VB, VC etc. Nevertheless, all the existing
MDA tools mainly focus on the forward software
engineering.
3. Model Driven Approach for Software
Reengineering
system from constructs, modules up to the system
architecture composed of interconnected components.
Written in a formalised platform independent language,
the extracted architecture description is a Platform
Independent Model (PIM) and can be forward engineered
within MDA environment to produce new PIMs that can
be later transformed into any PSMs automatically.
3.1 Reengineering within MDA
Current Model Driven Development (MDD) is an
extension to the MDA and is mainly focusing on the
forward engineering part of software reengineering.
Model Reverse Engineering is to produce descriptive
model from existing systems that was previously
produced somehow. In fact modelling and reverse
engineering both refer to the activity of creating
descriptive models which describe an existing system [4].
Although MDA provides a framework for automatic
transformations between models at different levels of
abstraction, few researches have been done in respect of
the reverse transformations between PIM, PSM and Code
Models, which requires that “a transformation can be
applied not only from source to target, but also back from
target to source”.
Bidirectional transformations can be achieved in two
ways [6]. The first is that both transformations are
performed according to one transformation definition. The
second is that transformation definitions are specified
such that they are each other's inverse. Transformation
from low level to higher level models means loss of
specific information which may not have their
counterparts at all. To achieve complete bidirectional
transformations between models is only possible if the
semantic gap between the different models can be filled
with knowledge.
There is often no need to transform an MDA compliant
system reversely, for it conforms to the requirements of an
evolvable system and could be understandable and
maintainable as long as all the PIM documents are
available. The application of bidirectional transformations
is actually in situations where the system was not
developed in MDA environment and is now required to be
transformed into an evolvable system that conforms to the
standards of MDA. To achieve this goal, reverse
engineering techniques have to be used to understand the
legacy system.
Figure 2 shows a possible process of software
reengineering within MDA environment [15]. Initial
components are firstly identified in a system through
system decomposition techniques. The decomposed
system is then translated equivalently into a Platform
Specific Model (PSM) written in a Platform Specific
Language (PSL). After restructuring the PSL code,
abstraction rules are applied to get abstractions of the
Parse Code
Produce Platform Specific Model
Y
N
Reverse Engineer Legacy System
If the legacy
system was
built on MDA?
Propose Legacy Concept Model
Produce Architecture Description
Produce Platform Independent Model
Figure 2. Reengineering within MDA
3.2 Wide Spectrum Language (WSL)
If a software specification is written in a formallydefined mathematical language, it is possible to prove that
a given program is a correct implementation of a given
specification and if a language includes both mathematical
specifications and low-level programming constructs, then
this language can be termed as the Wide Spectrum
Language (WSL) [23, 18, 19]. WSL was adopted because,
among many reasons, its ability for proven
transformations and the ability to represent high and low
levels of abstraction which make it well suited for reverse
engineering purposes. By translating a legacy system’s
source code to WSL as an intermediate language, it’s
therefore possible to support multiple languages
translation. The use of intermediate representations allows
the reengineering effort to be divided up into smaller steps
rather than as a monolithic source to target domain
reengineering effort [11]. WSL is built on formal methods
and supports both object oriented and structural elements
of software systems.
z
WSL Kernel Language
The WSL language is built up in a series of layers from
a small mathematically tractable “kernel language”. This
kernel language consists of the following primitive
statements [18, 19]:
Assertion {P} - if formula P is true, the statement
terminates; otherwise, it aborts or never terminates
Guard [Q] – restricts previous non-determinism to
statements whose condition for execution requires Q
Add variables: add (X) adds the variables in X to the
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
state space
Remove variables: remove(X) removes the variables in
X from the state space
Sequence (S1:S2) executes S1 followed by S2
Non-deterministic choice: chooses one of S1 or S2 for
execution, the choice being made non-deterministically
Recursion – a statement, S1, may contain occurrences
of X as one or more of its component statements. These
statements represent recursive calls to the procedure
whose body is S1.
z
Extensions of WSL Kernel Language
By building on the basic constructs of the WSL
language, extensions to the WSL language include simple
assignment, deterministic iteration (do-while loops) and
deterministic choice (if-then) statements along with blocks
of statements within procedure calls.
In order to support Object Oriented Technology, the
WSL kernel language was extended to include such
constructs as class structure which contains both variables
(attributes) and procedures (methods or operations).
1. Class Definition
Class T
Var
Ti : xi; /* Attributes of Class */
Proc
mj(In pinjk:Tk, Out poutjl:T_l)
/* Methods of Class */
Begin
Aj; /* WSL statements */
End.
End
This statement is the class building declaration. It
defines a class named T, which has data fields xi of type
Ti and methods mj. pinjk stands for the input parameters
of method mj, and poutjl stands for the output parameters
of method mj.
2. Class Hierarchy
T extends T’
This statement is used to build the object hierarchy. It
declares that class T is a subclass of class T’. Therefore, T
inherits the properties of T’.
3. Field Reference
x.d
This is object field reference. x is an object, and d is a
field of x.
4. Method Invocation
x.m (In ek, Out yl)
This invokes the method m in object x.
5. Object Declaration
T:x
This statement defines x as a variable of type T. If T is
a class, x will be an object of class T.
There are some other extensions of WSL for domain
specific purpose, e.g. real time applications, which can be
found in [23, 10].
z
Program Transformation
A program transformation can be defined as a process
that modifies a program into a different form yet the
program retains its original external behaviour. The
purpose of the WSL transformations is to transform a
program, using mathematically-proven transformations,
into a more refined or simplified program. By doing so,
the program’s complexity is reduced with the program’s
original functionality preserved.
Martin Ward has utilised program transformations in
WSL to derive efficient algorithms from abstract
specifications [18, 19]. One of the focuses of Ward’s work
is to develop transformations that refine a program’s
specification, expressed in terms of first order logic and
set theory, into an efficient algorithm. Transformations are
used in reverse engineering partially in order to derive of
concise specifications from program source code [19].
Once a source program has been translated into WSL,
the WSL representation may then be input to such tools as
FermaT transformation system [19] that has the capability
for program transformations, code reductions, etc of this
WSL representation. FermaT is an industrial-strength
reengineering tool, which allows transformations and code
simplification to be carried out automatically.
3.3 Formal Model Transformation
Model transformation is the equivalent of program
transformation, but applied to models instead of programs.
Many of the techniques that are used for program
transformation can also be applied in the context of model
transformation [22]. This part explains the technique for
organising and maintaining legacy system models. It
shows how to produce several views of a legacy system
for reduction in model complexity through abstraction.
From the reverse engineering point of view,
transformation is a way of abstraction through changing
the abstract level of a processed model, providing multiple
levels of abstraction for every type of components. Model
transformation focuses on high level modelling
components while program transformation can still be
used for low level source code transformation.
Put in the MDA context, reverse engineering technique
is designed for PSLs, not numerous programming
languages. All kinds of software systems for reverse
engineering will be translated into one PSL and be tackled
by one set of reverse engineering techniques as long as
these systems are implemented on a same platform. As the
number of platform technologies is much less than that of
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
programming languages, this will significantly reduce the
complexity of designing reverse engineering techniques.
In addition to the PSL itself, all kinds of specification
extraction rules (translation, abstraction or transformation
rules) are defined in OCL [20]. A translation rule is used
between a programming language and a Platform Specific
Language (PSL), an abstraction rule is used between two
PSL models at different abstract levels and a
transformation rule is used between a final Platform
Specific Model and a PIM.
that there is an abstraction rule from the source code to the
target code abstracting the left-hand side operand to the
right-hand side operand at a higher level of abstraction.
The symbol => is used as a binary operator with two
operands, which means that there is a transformation rule
from the source code to the target code transforming the
left-hand side operand to the right-hand side operand with
platform specific information left out.
z
The principle of abstraction is that, through the
abstraction process, the high-level views of a system can
be achieved without being interested in all low-level
details. The following rules are defined based on the
program abstraction theory [10], where the “Entity” is
defined for a group of statements in PSL with independent
functionality, and the “Abstraction” represents the type of
all the abstraction rules in PSL.
— Transitive Abstraction Rule denotes that a set of
abstraction rules can be concatenated to make up a
new rule. The source of the new rule is that of the
first abstraction rule in the set, and the target of the
new rule is that of the last abstraction rule in the set.
Figure 4 shows a transitive abstraction rule.
Notations for Specification Extraction Rules
There is a set of OCL notations for Specification
Extraction rules. Figure 3 shows the corresponding
grammar rules [15]:
<ruleType> := “Translation” | “Abstraction” | “Transformation”
<paramsList> := <varName>: <varType> = <expression>;
| <paramsList> <paramsList>
<params> := params <paramsList>
<sourcesList> := <varName>: <modelType>::<modelElement>;
| <sourcesList> <sourcesList>
<sources> := sources <sourcesList>
<targetsList> := <varName>: <modelType>::<modelElement>;
| <targetsList> <targetsList>
<targets> := targets <targetsList>
<sourceInvariant> := source invariant <booleanExpression>;
<targetInvairiant> := target invariant <booleanExpression>;
<mappingRulesListForTranslation> := <operand> <=> <operand>:<ruleName>;
| <operand> <=> <operand>
| <mappingRulesListForTranslation> <mappingRulesListForTranslation>
<mappingRulesListForAbstraction> := <operand> ~> <operand>:<ruleName>;
| <operand> -> <operand>
| <mappingRulesListForAbstraction> <mappingRulesListForAbstraction>
<mappingRulesListForTransformation> := <operand> => <operand>:<ruleName>;
| <operand> => <operand>
| <mappingRulesListForTransformation> <mappingRulesListForTransformation>
<mappingRules> := mappings <mappingRulesListForTranslation>
| <mappingRulesListForAbstraction>
| <mappingRulesListForTransformation
<specificationExtractionRule> := <ruleType> <ruleName> (<sourceRef>, <targetRef>) {
<params>
<sources>
<targets>
<sourceInvariant>
<targetInvariant>
<mappingRules>
| <sources>
<targets>
<sourceInvariant>
<targetInvariant>
<mappingRules>
}
z
Abstraction Transitive (PSL, PSL) {
params
a1: PSL::Abstraction;
a2: PSL::Abstraction;
sources
p1: PSL::Entity;
p2: PSL::Entity;
targets
p3: PSL::Entity;
source invariant
p1 ~> p2: (a1) and p2 ~> p3: (a2);
target invariant
ture;
mappings
p1 ~> p3: (a1, a2);
}
Figure 4. Transitive abstraction rule
—
Figure 3. Notations for specification extraction
rules
Every Specification Extraction rule begins with one of
the
keywords:
“Translation”,
“Abstraction”
or
“Transformation” and a name. All mapping rules come
after the keyword “mappings”. The symbol <=> is used as
a binary operator with two operands, which means that
there is a translation rule from the source code to the
target code translating the left-hand side operand to the
right-hand side operand equivalently. The symbol ~> is
used as a binary operator with two operands, which means
Model Abstraction Rules
—
—
—
Abstraction Reflexive Rule denotes that any entity
is the abstraction of itself.
Monotonic Abstraction Rule denotes that if entity
p1 and p3 can be abstracted by abstraction rules a1
and a2 respectively to produce entity p2 and p4, the
result of functional transformation f1, with p1 and p3
as arguments, can be abstracted by the combination
of a1 and a2 to the result of functional transformation
f1, with p2 and p4 as arguments.
Weakening Abstraction Rule is used to eliminate
inessential information
Attribute Abstraction Rule eliminates “set” and
“get” operations and abstracts into PSL attribute with
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
—
appropriate visibility.
Sequence Folding Abstraction Rule shows that if
no contradiction is caused when substituting the
sequential relation between two entities to
conjunction relation, then the sequence of entities
can be folded through conjunction.
The following abstraction rules are used to simplify
relationships. Interconnections between procedures,
modules/objects and components that are judged as
irrelevant will be abstracted or hidden in the model
representation.
— Primitive Component Rule: Initial component is
defined as primitive component, which can be source
file, program module and subsystem.
— Component Composition Rule:
Component
composition is to combine two components when
they have direct connectors, such as procedure call or
shared variable, may be combined into one
component.
— Trivial Component Rule:
If a part of the
system’s functionality is considered too “trivial” to
be kept in high level abstraction, the components
related to this part of functionality are identified as
“trivial components”, which should be abstracted
away in architecture abstraction.
— Primitive Relationship
Rule:
Initial
connector is defined as direct connector which can
be shared resources, function or procedure call, interprocess call, etc.
— Relationship Composition Rule:
to combine
two connectors connecting the same component set
into one connector.
— Trivial Relationship Rule: If all the components
connecting to a connector are trivial components,
this connector is considered trivial connector and
should be abstracted away in architecture abstraction.
z
Translation between WSL and PSL
Ideally, a PSL should be the same language used to
write a Specification Extraction rule. This could improve
the consistency of modelling and facilitate the
implementation of automatic tools. However, OCL itself
is not a programming language, but a declarative language,
which states what actions to perform, instead of how. A
language consisting of programming constructs is still
required for PSL. WSL is a suitable choice which can be
used as part of PSL.
Mapping from WSL to PSL and from PSL to WSL
needs translation rules: (1) the translation between WSL
constructs and PSL defined in OCL; (2) the translation of
primitives and operators between WSL and PSL, or (3)
the translation between WSL compound statements and
PSL.
context PSL::Class
def:
attributes() = feature->select(isTypeOf(Attribute));
operations() = feature->select(isTypeOf(Operation));
Translation Class2Class (WSL, PSL) {
sources
c1: WSL::Class;
targets
c2: PSL::Class;
source invariant true;
target invariant true;
mappings
c1.attributes()<=> c2.attributes();
c1.operations()<=> c2.operations();
}
Figure 5. Translation between WSL class and
PSL class
Figure 5 shows a translation between WSL Class and
PSL Class. A translation rule is defined to translate WSL
class into PSL class, which denotes that:
— A PSL class consists of attributes and operations.
— Every WSL class is translated into a PSL class.
— Every operation in the WSL class is translated into
an operation in PSL class.
— Every attribute (private, protected, or public) of the
WSL class is translated into an attribute in the PSL
class with the identical visibility.
In this way, PSL is used to define the counterparts of
other WSL constructs, such as “interface” and “exception”,
and the corresponding translation rules.
z
Mathematical Model
When the PSL is translated into WSL file, we have an
optional way to establish a mathematical model instance.
A mathematical model M [3] is a quadruple (T, C, F, A)
where T is a finite universe of objects, C is a constants
chosen from T, F is a finite set of functions and A is some
constraints in equations. An important advantage of
mathematical model is to have a standardised way of
checking out answers to questions like [14]:
—
—
—
—
TYPE: What kind of objects is involved?
CONSTANTS: What special values are important?
FUNCTIONS: How are objects of each kind created
and used?
ASSERTIONS: What facts can I really count on?
General rules are needed. This is the hardest part.
In [10], WSL, together with the abstraction and object
extraction rules were defined in Interval Temporal Logic
(ITL) [12], which can be interpreted in M.
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
4. Maintainer Integration Platform (MIP)
From the above analysis, an integrated platform
support is very important to successful automation of the
proposed approach. The Maintainer Integration Platform
(MIP) is an extensible platform for software reengineering,
which provides a plug-in mechanism. A plug-in is the
smallest unit of MIP function that can be developed and
delivered separately. Usually a small tool is written as a
single plug-in, whereas a complex tool has its
functionality split across several plug-ins. Except for a
small kernel known as the Platform Runtime, all of the
MIP functionalities are located in plug-ins.
Other Software Application
M-MA
Kernel
Runtime
Application Plug-ins
M-UML
…
Core System
Transforma
tion Engine
M-DOC
Repository
Access
Repository
DB
…
XML
…
Figure 6. MIP architecture
tool are some examples of application plug-ins. MIP UML
(M-UML) is being developed for supporting the principles
of MDA.
5. Case Study
Model-driven development claims to offer the
improvements even to assembly program [6, 13]. The case
study performed for this research tried in the same way to
reengineer a small assembly language project with 11
modules.
The M-UML tool collects information from different
sources and uses the Transformation Engine to generate
WSL files from the assembler files. The assembler
modules are broken down into little pieces and each piece
is put into an action (a little procedure without
parameters). In the current version, two diagrams are
extracted, UML Class Diagram and UML Activity
Diagram. The static view of the class diagram represents
actually a mixture of call graphs, data catalogues and
function catalogues. The dynamic view of the activity
diagram on the other hand shows the interaction among
the legacy system components/modules. After the
extraction of the Class Diagram and the Activity Diagram,
transformation rules are applied to group and abstract the
related elements. To handle large quantities of classes, the
M-UML presentation tool supports expand/collapse of
packages and classes. Figure 7 shows an example of
different models and views for a slice of code in
assembler and WSL. The M-UML presentation tool shows
a transformation result in Figure 8.
Figure 6 shows the architecture of MIP, which
illustrates the preliminary vision for integration points
between the MIP components as well as the interactions
between these systems. The system can be expressed in
three Layers:
—
—
—
Repository (Database + XML files)
Core System
Application Plug-ins
Information in different transformed models and in
multiple abstract views at various levels of detail is stored
in a repository.
A small Core System provides essential functionalities,
including: (1) Kernel Runtime, which provides the plug-in
management and communication functionalities; (2)
Transformation Engine, which is the extension of FermaT
Transformation Engine and provides the program and
model transformation functionalities; and (3) Repository
Access functionalities. Based on this core system, more
plug-ins provide furthermore functionalities.
Application Plug-ins are a set of tools for the end-users
and maintainers, including visualisation and analysis
modules. MIP UML (M-UML) tool, MIP Maintainer
Assistant (M-MA) tool and MIP Documentation (M-DOC)
Figure 7. Different models and views for a slice of
code
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006
[3]
[4]
[5]
[6]
[7]
[8]
Figure 8. A transformation result by M-UML tool
6. Conclusions and Future Work
[9]
[10]
[11]
To conclude this study, a general framework and
methodology handling model driven software evolution is
proposed. It provides a unified solution to facilitating
legacy system reengineering. The traditional program
transformation and modern model transformation
technologies are amalgamated harmoniously and formally
based on the WSL. The prototype tool and the case study
show that the proposed approach is workable and
dependable for a real legacy system even written in
assembly language.
This approach has been applied on small to medium
examples. The obtained results reveal that:
(1) The abstracted entities are hard to be named.
(2) Since the transformation will change the software
structure, the traceability of transformation is another big
issue. Feature modelling in our previous work [2, 7] is a
promising solution.
7. Acknowledgment
The authors would like to thank Matthias Ladkau,
Stefan Natelberg, Peer Bartels and Shaoyun Li, for the
development of prototype tool on the topics presented in
this paper.
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
References
[1]
[2]
E. Chikofsky and J. Cross, "Reverse Engineering and
Design Recovery: a Taxonomy", IEEE Software, 7(1), Jan.
1990, pp.13-17.
F. Chen, S. Li, H. Yang, C. Wang and W. Chu, “Feature
Analysis for Service-Oriented Reengineering”, IEEE 12th
ASIA-PACIFIC Software Engineering Conference (APSEC
2005), Taipei, Taiwan, Dec. 2005.
[20]
[21]
[22]
[23]
D. Embley, Object-Oriented Systems Analysis: a ModelDriven Approach, Prentice Hall, 1992.
J. Favre, “Foundations of Model (Driven) (Reverse)
Engineering: Models”, Int. workshop Dagsthul, 2004.
IO-Software: Homepage, http://www.io-software.com.
A. Kleppe, J. Warmer and W. Bast, MDA Explained: The
Model Driven Architecture: Practice and Promise,
Addison Wesley, Boston, USA, 2003.
S. Li, F. Chen, Z. Liang and H. Yang, “Using FeatureOriented Analysis to Recover Legacy Software Design for
Software Evolution”, International Conference on
Software Engineering and Knowledge Engineering
(SEKE'05), Taipei, Taiwan, July 2005.
R. Lemos, C. Gacek and A. Romanovsky, “Software
Architectures for Dependable Evolving Systems”, Grand
Challenge on Dependable System Evolution (GC6), Grand
Challenges in Computing, 2004.
Luqi and J. Goguen, "Formal Methods: Promises and
Problems", IEEE Software, Jan./Feb. 1997, pp.73-85.
X. Liu “Abstraction: A Notation for Reverse Engineering”,
Ph.D. Thesis, De Montfort University, England, 1999.
D. Millicev, “Domain Mapping Using Extended UML
Object Diagrams”, IEEE Software, IEEE Press, New York,
USA, pp. 90-97.
B. Moszkowski, Executing Temporal Logic Programs,
Cambridge University Press, Cambridge, UK, 1986.
A. MacDonald, D. Russell and B. Atchison, “Model-driven
Development within a Legacy System: An Industry
Experience Report”, In Proceedings of the 2005 Australian
Software Engineering Conference (ASWEC’05), 2005, pp.
14-22.
T. Myers, Equations, Models, and Programs: a
Mathematical Introduction to Computer, Prentice Hall,
1988.
B. Qiao, “Evolution of WEB-based Systems in Model
Driven Architecture”, Ph.D. Thesis, De Montfort
University, England, 2005.
B. Qiao, H. Yang, W. Chu and B. Xu, “Bridging Legacy
Systems to Model Driven Architecture”, In Proceedings of
the 27th Annual International Conference on Computer
Software and Applications, IEEE Computer Society,
Washington, DC, 2003, pp.304-309.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy and W.
Lorensen, Object-Oriented Modelling and Design,
Prentice-Hall, Upper Saddle, NJ, USA, 1991.
M. Ward, “Program Analysis by Formal Transformation”,
Computer Journal, Vol.39, No.7, 1996, pp.596-618.
M. Ward, “The FermaT Assembler Re-engineering
Workbench”, In Proceedings of the 17th. IEEE
International Conference on Software Maintenance
(ICSM'01), 2001, pp.659-662.
J. Warmer, The Object Constraint Language: Getting Your
Models Ready for MDA, Addison-Wesley, 2003.
I. Warren, The Renaissance of Legacy Systems: Method
Support for Software-system Evoluion, Springer-Verlag,
1999.
Wiki:
Homepage,
http://www.programtransformation.org/Transform/ModelTransformation.
H. Yang and M. Ward, Successful Evolution of Software
Systems, Artech House, Norwood, MA, USA, 2003.
Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06)
0-7695-2655-1/06 $20.00 © 2006