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.