Practical
Aspects of Software ReEngineering and Code Transformation.
Introduction
According
to Hammer and Champey [1] the progression of events in the New Economy follows
the following pattern: “customer takes
control, competition intensifies and change becomes constant. There is an
urgent need for transformation”.
For all modern business organizations, business transformation, i.e., opening
new markets, delivering through new channels, creating services of added value
to the customers, is a critical success factor. Moreover, through the advent of
the Internet and Wireless Applications, business is, more and more, directly
driven through software-based solutions. However, according to analysts such as
Gartner and IDC, 80% of the world's business runs on COBOL and each manually
re-written line costs $6 – $23. More than 75% of e-business
solutions reuse existing
systems and 60% – 80% of an average company’s IT budget is spent on maintaining
existing mainframe systems. Operating at such costs and having hundreds of
thousands of lines of code under market pressure makes almost every
organization to seriously think about software reengineering solutions.
Software
reengineering is an umbrella that covers a range of activities: from techniques
that aim to provide valuable information to maintenance and redevelopment
teams, to automatic or semi-automatic support for transforming software
artefacts to different forms at various levels of abstraction. This tutorial
aims to introduce the audience to the field of software reengineering in
general and the area of software transformation in particular. It provides an
overview of available software reengineering techniques and their applicability
in practice scenarios. Emphasis is given on code transformation by presenting
some of the state-of-the-art techniques and supporting technologies
complemented by a number of industry case studies that provide a “flavour” of
the applicability, potential and issues of transformation solutions. A very special and also very important,
transformation scenario, the Web-enabling of legacy systems, will also be
discussed and the potential solutions will be presented. The tutorial will
conclude by providing a survey and categorization of available industry and
academic reengineering tools.
Learning
Outcomes: By the end of
the tutorial, participants will have good understanding of software
reengineering and its techniques, challenges, practical scenarios and tools.
They will understand what code transformation is, what it is used for in
practice and what code transformation tools can do. They will understand what
Web-enabling is, why it is needed, and what technology supports it.
The
Target Audience:
Software practitioners and academics and postgraduate students interested in
software reengineering.
Required
Level of Expertise: The
tutorial requires general background in software development and familiarity of
the terminology in the field.
Duration: Full Day – 6 hours.
Tutorial Background: This is a new tutorial, developed
specifically for CAiSE’05
Tutorial
Outline:
1.
Introduction To Reengineering (2 hours)
1.1
What is
Software Reengineering? Why is it Useful? – A Brief
Market Analysis.
1.2
Reengineering
Techniques
1.2.1
Overview and
Categorization.
1.2.2
Terminology and
(some) underlying theory.
1.3 Reengineering practice scenarios and symptoms.
2. Code
Transformation (2 ½ hours)
2.1
Techniques and
Technologies
2.2
Code Transformation industrial case studies (COBOL code
transformation live tool demonstration)
3.
Approaches to Web-Enabling Legacy Systems (1 hour)
3.1 Web-enabling
via Data Access
3.2 Web-enabling
via Logic Access
3.3 Web-enabling
via Presentation Access
4.
Survey and Categorization of Reengineering
Tools. (1/2 hour)
4.1 Tools
Categories and Features.
4.2 Tools
architecture(s).
References
[1] M.Hammer and J.Champey. Reengineering The Corporation: A Manifesto for
Business Revolution. Nicholas Brealey Publishing, 1998.
Presenters’ Biography
Georgios
Koutsoukos is a Senior Solutions Analyst
at ATX Software, an IT company specialized in application’s development,
software architectures and reengineering solutions. His professional experience spans a variety of roles:
object-oriented developer, engineering process coach, software solutions designer,
instructor, and solutions innovation researcher. He has published and presented
several papers on the modelling, design and implementation of software systems,
with emphasis on the methodological aspects and tool support for
architecture-based software evolution and systems’ reengineering. He holds an
MSc in Enterprise Information Systems from King’s College London.
Dr. Mohammad El-Ramly is a lecturer in the Department of Computer Sciences, University of Leicester,
UK, where he teaches a postgraduate module on software reengineering besides
other software engineering subjects. His research interests include software
reengineering, reverse engineering and evolution and the application of data
mining methods to software data, particularly the practical aspects of these
topics. He invented a process for interaction pattern mining, which he applied
in light user interface reengineering, while doing his PhD at University of
Alberta, Canada (2003), in a joint project with an industrial partner, Celcorp.
His research results were published in major software engineering and data
mining conferences and journals. He is currently involved in Leg2Net, an
EU-funded project for research and technology transfer between University of
Leicester and ATX Software. He is researching the invention of practical
software architecture recovery methods suitable for integration in industrial
reengineering tools.