Table Of ContentOBJECT-ORIENTED TECHNOLOGY AND
COMPUTING SYSTEMS RE-ENGINEERING
SICILLLUM MAIORAT CIVITATIS CICESTRIE
Mediaeval Seals of Mayors of the Roman and Georgian
city of Chichester in 1502 & 1530. The seals provided
derivative motifs for the Horwood Publishing colophon
Object-Oriented Technology and
Computing Systems Re-Engineering
H. Zedan
and
A. Cau
both of
Software Technical Research Laboratory
De Montfort University
Leicester
Horwood Publishing
Chichester
About the Authors
Professor Hussein Zedan has been working for over a decade on formal
specification and analysis of (distributed) real-time systems with the long-
term aim of building a coherent set of conceptual frameworks and methods
for the development and assessment of such systems. Central to this
objective is the narrowing of the gap between the theoreticians and the
practitioners by promoting and developing tools to assist the development of
such systems. He had graduated from Cairo University in 1973 with a BSc
in mathematics and added an MSc in 1977 by research on algebraic
topology. He then came to England and gained his PhD at Bristol
University for research on numerical computation. He is now the Technical
Director of the Software Technology Research Laboratory in De Montfort
University, Leicester.
Dr Antonio Cau graduated in computer science at Eindhoven University of
Technology in Holland where he also obtained an MSc in 1989. In 1995 he
obtained his PhD for research on the compositional refinement of reactive
systems from Christia Albrechts University at Kiel in Germany. Coming to
England, he worked as Research Associate in the Engineeering and Physical
Sciences Researc Council on a project dealing with the compositional
specification and verification of computing systems. He is now Research
Fellow at De Montfort University, Leicester, working alongside Professor
Zedan in the Software Technology Research Laboratory.
Table of Contents
Preface
ix
1 OO Design Methodology for Hybrid Systems 1
Viktor Friesen and Andre Nordwig: Technische Universitdt Berlin, Germany
Matthias Weber: Daimler-Benz AG, Germany
1.1 Introduction 1
1.2 Notation 3
1.3 Some initial elements of a design methodology 8
1.4 Tool support 10
1.5 An example 11
1.6 Conclusions 14
1.7 References 15
2 Design Patterns and Formal Development 17
Kevin Lano and Stephen Goldsack: Imperial College, U.K.
2.1 Object-oriented design patterns 17
2.2 Object state attributes and invariants 18
2.3 Control system example 22
2.4 Some further "standard" design structures 29
2.5 Verification 31
2.6 Conclusion 32
2.7 References 32
3 Devising Coexistence Strategies for Objects with Legacy Systems 35
Gerardo Canfora, Aniello Cimitile, Andrea De Lucia: Universita del Sannio, Italy
Giuseppe A. Di Lucca: Universita di Napoli "Federico II", Italy
3.1 Introduction 36
3.2 The ERCOLE project: background information and goals 37
3.3 Coexistence strategies for systems that exhibit data interactions 38
3.4 The data integrity problem 39
3.5 The constraints in the scenario of minimal reengineering 41
3.6 Concluding remarks 44
3.7 Acknowledgements 45
3.8 References 45
vi Contents
4 Object-Oriented Model for Expert Systems Implementation 47
F. AlonsoAmo, J. L. Fuertes, L. Martinez, C. Montes andR. Navajo: UPM, Splainii
4.1 Introduction . . Al
4.2 From the application domain to the implementation domain . . 48
4.3 Reusable open model for expert system implementation (ROMES) . . .. . . 50
4.4 ROMES model application . . 55
4.5 Comparative analysis . . 58
4.6 Conclusions . . 58
4.7 References . . 59
5 Re-engineering Requirements Specifications for Reuse 61
Wing Lam: University of Hertfordshire, U.K.
5.1 Motivation: Towards requirements reuse in practice . . 61
5.2 The case for requirements reuse . . 62
5.3 Reflecting on experience: The R2 model of reuse . . 63
5.4 Model illustration 1 . . 65
5.5 Model illustration 2 . . 68
5.6 Further Issues: Suitability, validation and generality . . 70
5.7 Literature review . . 71
5.8 Conclusions , . 73
5.9 References . 73
6 Object-Oriented Development Of X-Ray Spectrometer Software 77
Tuomas Ihme: VTT Electronics, Finland
6.1 Introduction . 78
6.2 System requirements specification . 79
6.3 System architecture definition . 80
6.4 Subsystem analysis . 81
6.5 Subsystem design . 85
6.6 Discussion . 88
6.7 Conclusions . 89
6.8 Acknowledgements . 89
6.9 References . 89
7 Pre-processing COBOL Programs for Reverse Engineering 91
Jan Kwiatkowski and Ireneusz Puchalski: Wroclaw University of Technology, Po'llea nd
Hongji Yang: De Montfort University, U.K.
7.1 Introduction and background . 92
7.2 Overview and design of COBOL pre-processor . 98
7.3 Implementation . 104
7.4 Conclusions and future work . 108
7.5 References . 108
Contents jj
v
8 Agent Oriented Programming Language LASS 111
Mihal Badjonski, Mirjana Lvanovic and Zoran Budimac: Univ. ofNoviSad, Yugoslavia
8.1 Introduction Ill
8.2 LASS 112
8.3 LASS specification of a personal digital assistant 116
8.4 Related work 118
8.5 Conclusion 119
8.6 References 120
9 Fair Objects 122
Paul Gibson and Dominique Miry: Universite Henri Poincare, France
9.1 Introduction 122
9.2 Semantic framework 124
9.3 Fair objects 131
9.4 Telephone feature examples 137
9.5 Conclusion 139
9.6 References 139
10 Systems of Systems as Communicating Structures 141
Vadim Kotov: Hewlett-Packard Laboratories, USA
10.1 Introduction 141
10.2 Communicating structures 143
10.3 C++/CSIM constructs 144
10.4 The communicating structure objects 145
10.5 The communicating processes 146
10.6 CSL parts kit 147
10.7 Conclusion 152
10.8 Acknowledgment 154
10.9 References 154
11 Suitability of CORBA as a Heterogeneous Distributed Platform 155
Amelia Piatt: De Montfort University, U.K.
PaulMc Kee: BTResearch Laboratories, U.K.
11.1 Introduction 156
11.2 CORBA 156
11.3 Critical review of CORBA 160
11.4 Summary and conclusions 164
11.5 References 164
12 Using OO Design to Enhance Procedural Software 166
Mandy Chessell: IBM United Kingdom Ltd, U.K.
Franco Civello: University of Brighton, U.K.
12.1 Introduction 167
12.2 Approach to modelling and design 168
12.3 Modelling techniques and model features 170
12.4 Implementation 175
viii
Contents
12.5 Conclusions 179
12.6 References 180
13 Reengineering Procedural Software 182
Sagar Pidaparthi, Paul Luker and Hussein Zedan: De Montfort University, U.K.
13.1 Introduction 183
13.2 Distinction between translation And transformation 185
13.3 Object-oriented perspective of a procedural program 185
13.4 Basic design transformations 186
13.5 Design transformation process 190
13.6 Transformation of event processor simulator design 194
13.7 Conclusions 194
13.8 References 196
Preface
There are many important and challenging issues in building software systems. Moreover,
the complexity of such systems is continuously increasing. This, together with the sobering
experience that the difficulty in building such systems grows much faster than their size,
makes a disciplined, systematic and rigorous methodology essential for attaining a 'rea
sonable' level of dependability and trust in these systems. In response to this, an intense
research activity has developed resulting in the production of several structured and formal
development techniques that have been successfully applied in forward engineering such
systems. For example, in the field of structured methods, we find SSDM, Yourdon, Jack
son, CORE and HOOD whilst formal techniques include assertional methods, temporal
logic, process algebra and automata.
Furthermore, object-oriented programming, over the past few years, has been recog
nised as the best way currently available for structuring software systems. It emphasises
grouping together data and operation performed on them, encapsulating the whole behind
a clean interface, and organising the resulting entities in a hierarchy based on specialisation
in functionalities. In this way, it provides an excellent support for the construction of large
scale systems, which can be built cheaply out of reusable components and which can be
adapted easily to changing requirements.
To date, object technology has largely been a field of practitioners, who were driven by
an intuitive understanding of the important concepts, arising out of the experience of build
ing actual systems. There has been relatively little effort to develop formal theories about
these concepts. However, in order for the field to mature, a more formal understanding
of the basic concepts is necessary, forming a solid foundation for refinement and further
development.
In addition, there exist many software components that are still in use and are in a
legacy state. With the advent of new architectures, the need to introduce new functionalities
and the improvement in design techniques, there is a strong need for efficient and cost-
effective techniques to 're-engineer' these components maintaining its continuity of use.
The process of re-engineering a system often requires the construction of a higher level
abstraction of the system, a process known as reverse engineering ; and the development
of a new system starting from its higher level of requirement specification (i.e. forward
engineering). Recognising the functionality of an existing code is often seen as being the
most difficult aspect of the process of re-engineering. To successfully re-engineer a system,
we need to identify design decisions, intended use and domain specific details.
In the area of forward engineering, both formal techniques and structured methodolo
gies have been applied. The use of the former in industry is not as widespread as the later