The purpose of this book is to make the reader famliar with software
engineering for distributed systems. Software engineering is a valuable
discipline in the develop- ment of software. The reader has surely heard
of software systems completed months or years later than scheduled with
huge cost overruns, systems which on completion did not provide the
performance promised, and systems so catastrophic that they had to be
abandoned without ever doing any useful work. Software engi- neering is
the discipline of creating and maintaining software; when used in con-
junction with more general methods for effective management its use does
reduce the incidence of horrors mentioned above. The book gives a good
impression of software engineering particularly for dis- tributed
systems. It emphasises the relationship between software life cycles,
meth- ods, tools and project management, and how these constitute the
framework of an open software engineering environment, especially in the
development of distrib- uted software systems. There is no closed
software engineering environment which can encompass the full range of
software missions, just as no single flight plan, airplane or pilot can
perform all aviation missions. There are some common activities in
software engi- neering which must be addressed independent of the
applied life cycle or methodol- ogy. Different life cycles, methods,
related tools and project management ap- proaches should fit in such a
software engineering framework.