20/2/98, Amsterdam

I propose to bring out a revised 2nd edition of my book Principles of Object-Oriented Software Development, which appeared at the end of 1994. This proposal is written in response to a conversation concerning the feasibility of a 2nd edition with Sally Mortimore and Karen Mosman, both from Addison Wesley Longman, wednesday the 28th of januari, 1998.

I will first discuss the motivation for a revised 2nd edition. Then I will mention new topics the book will cover and how they fit in the book. After that, I will present a brief summary of the contents of the book, chapter by chapter, including the appendices. I will also indicate the contents of the CDROM that will be included with the book, as well as the functionality of the accompanying online version, that will be available on Internet.

This proposal can be also found on Internet, at


  www.cs.vu.nl/~eliens/online/oo/announce
  
together with an experimental online version of the first edition.

Motivation

OO is a rapidly evolving field. As a consequence my book, published in 1994, may have been considered to be outdated from the start. As an example, right after its publication, patterns came into the focus of public interest. As another example, think of the Java wave that has come over us. Clearly, a revised edition is needed in which those subjects, and other subjects, are covered, or, as in the case of CORBA, are covered in more detail.

Another reason is that the field of OO itself has matured considerably. The acceptance of UML as a modeling standard is one example. The increased utilization of CORBA for business-critical applications is another sign that (distributed) object technology is being considered as sufficiently robust.

The availability of new topics in itself is not enough to justify a 2nd edition, since new books have been published in which these topics are covered. Think only of the enormous number of books on Java... A revised 2nd edition of the book is justified though, in my opinion, since the book distinguishes itself from the competition by its approach. Set up as a series of lectures, organized around so-called slides, the book covers a large number of topics, some in depth, some more casually. From an educational point of view, the advantage of this approach is the direct availability of educational material, including the slides to be presented in classroom. For the average reader, moreover, the slides provide an overview which facilitates comprehension and recall.

For the first edition, I have already made an experimental online version, in which the slides are available electronically in such a way that they can be deployed in a classroom with a beamer. (For those who read the online version, click on the caption of a slide to enter presentation mode. See also the section in which I discuss the Online version.) As I will indicate below, when discussing the conents of the book, the new topics fit well within this approach. Without the new topics, however, the book must be considered as outdated, and will hence disappear.

Finally, another more personal reason for bringing out a revised edition is that both in research and teaching my experience with OO became more extensive, and I may even dare say that my own thoughts about OO have matured to some extent. In particular, in my group we have developed a multi-paradigm OO framework, which was already introduced in ch. 12 of my book, that has been applied in for example business process reengineering and collective improvisation on the Web. Although I do not plan to treat any of this material extensively, it does provide a basis for the examples and, moreover, the material (including articles, software and examples) will be available on the accompanying CDROM.

New topics

New topics that were not covered, or as in the case of CORBA, not covered in sufficient detail, are:

slide: New topics

As noted before, each of these topics would justify a book in itself. In my book, these topics will be introduced and explained in such a way that the student can gain hands-on experience with the associated technology. But, in addition, I will discuss the interrelations between these topics and their associated technologies, both on a technical level and a thematic level. Technically, I will draw from my experience gained in developing a multi-paradigm framework. Thematically, I will repeatedly come back to issues of modeling, component-technology, reusability and distribution. In addition, I will provide some historical context explaining the occurrence of these trends, including the anecdotical material that has become part of OO folklore. (As an example, you may have noticed my use of the phrases 'Gang of Four' and 'three amigos'.)

With respect to the last topic, the Web, I wish to add that this has been my field of interest for the past three years. The Web is a challenge in many respects. From an OO perspective, it is a playground where our notions of OO technology can be put to an ultimate test. It is also a battlefield where standards are of crucial importance, and market-share even more. As a vehicle for the dissemination of information it allows us for example to deploy visualisation technology that requires a multi-paradigm component-based approach. As an application area it provides us with the challenge to think of a development methodology for 'fragmented applications', that is applications constructed from multiple, possibly geographically distributed components, in a variety of languages (including C++, Java, Javascript, Perl) each with their own particular object model. Any of the topics mentioned before is clearly of relevance to the Web. Even UML, as one could say that 'the Web' at this stage is severly 'underdesigned'. There is a need for models that capture the functionality of the Web. UML is potentially a vehicle for creating such models. Fortunately, the relevance of the other topics is more directly evident.

The Audience

The book will primarily address an academic audience, or IT professionals with an academic interest. Nevertheless, since I am getting more and more involved in joint research with business partners and the development of extra-academic curricula, I intend to include examples of more relevance to IT in business. In particular, I will include a section on the deployment of (object-oriented) simulation for business process redesign, and a section on the 3D visualisation of business data using object technology. More than in the first edition, I will strive for a small coherent set of examples.

Overview

To give an indication of the contents of the book I have included the adapted preface of the 1st edition.

Features of this book

Intended readers

This book may be used as the primary text for a course on OOP or independently as study or reference material. It may be used by the following categories of readers: Naturally, this is not meant to exclude other readers. For instance, researchers may find the book useful for its treatment of foundational issues. Programmers may benefit from the hints and example programs in Java and C++. Another reason for using this book may be its compact representation of already familiar material and the references to other (often research) literature. The book is meant to be self-contained. As prior knowledge, however, a general background in computer science (that is, computer languages and data structures as a minimum) is required.

Organization

The book is divided into four parts. Each part presents the issues involved in object-oriented programming from a different perspective, which may be characterized respectively as software engineering and design, languages and system development, abstract data types and polymorphism, and applications and frameworks.

Part I: Designing Object-Oriented Systems

1. Introduction:

This chapter gives an introduction to the area of object-oriented software development. It gives a global view on the object-oriented life cycle and discusses object-orientation as a paradigm of programming. It discusses a number the trends and technologies that have come into the focus of public attention and indicates their relevance to 'object-orientation'. It further presents an overview of the material covered with reference to the literature used and suggestions for further reading.

2. Idioms and Patterns*:

This chapter introduces idioms and design patterns as means to capture recurrent structures and solutions in object-oriented programming. It will distinguish between idioms as solutions tied to a particular language and patterns which are the product of rational design. As an example, a canonical approach to developing concrete data types in C++ is presented.

3. Object-oriented design:

This chapter discusses the process of software development and the various modeling perspectives involved in analysis and design. Included is a brief tutorial on the use of UML. It further explains the issues involved in arriving at a proper object model and introduces the notion of contract as an instrument to capture the relationships between object classes.

4. Developing an application*:

In this chapter we will develop a complete application and discuss all the issues involved in it's design and realization. Included will be a description of the hush framework that has been used to realize this application.

Part II: Object-Oriented Languages and Systems

5. Object-oriented languages:

This chapter provides a comparison between object-oriented languages, including Smalltalk, Eiffel, C++ and Java. It will further discuss a number of alternative languages, included Perl, Self and Javascript, each with their own object model, and will treat issues such as dynamic inheritance by delegation. and meta-level architectures for class-based languages.

6. Distributed Object Technology*:

This chapter gives a detailed introduction to CORBA, including a number of simple examples. It will discuss the relation between component-technology and distributed object technology, and will give a brief overview of the solutions that are available on the market, including Microsoft COM/ActiveX, JavaBeans, Java RMI and (CORBA) OpenDoc.

7. Software Architectures*:

In this chapter we will explore how software architecture affects design and implementation. It will treat design patterns for distributed object systems. We will also discuss the requirements for heterogeneous systems and, finally, we will look at the technical issues involved in developing multi-lingual systems. As an example it will be shown how to employ the native interface to embed an existing framework in Java.

Part III: Foundations of Object-Oriented Modeling

8. Abstract data types:

This chapter considers the notion of abstract data types from the perspective of types as constraints. It presents an algebraic approach in which objects may be characterized as algebras. Further, it explains the difference between the classical approach of realizing abstract data types in procedural languages and the realization of abstract data types in object-oriented languages. The implications of a more pragmatic conception of types is also discussed.

9. Polymorphism:

This chapter discusses inheritance from a declarative perspective, and gives a precise characterization of the subtype relation. It further discusses the various flavors of polymorphism and presents a type theoretical treatment of genericity and overloading. Also, type calculi that capture data hiding and self-reference are given. These insights will be related to the realization of polymorphism in Eiffel, C++ and Java.

10. Behavioral refinement:

This chapter extends the notion of types as constraints to include behavioral properties. It presents an assertion logic for the verification of programs and discusses the operational model underlying the verification of object behavior based on traces. It further gives precise guidelines to determine whether classes that are syntactical subtypes satisfy the behavioral refinement relation. Finally, an overview is given of formal approaches to characterize the behavior of collections of objects.

Part IV: Object-Oriented Application Frameworks

11. Business Process Redesign*:

In this chapter we look at the opportunities IT offers in (re)designing business processes. In particular, we will look at (object-oriented) simulation as a means to capture the logistical aspects involved in business process modeling, and in addition we will look at how simulation models can be made available as to allow decision making, by deploying visualisation and dissemination over the Web.

12. Web-based applications*:

In this chapter we will look at how object technology may be applied to the Web. We will look both at client-side extensions and server-side solutions. In particular, we will look at systems that employ CORBA in addition to other Web-technologies. We will also briefly look at another new trend in computing, intelligent, mobile agents, and we will argue that agents are a direct derivation from object-technology.

Appendices

The appendix will contain brief tutorials on Smalltalk, Eiffel, C++, Java and the distributed logic programming language DLP. It will also present an overview of UML, a tutorial on programming CORBA applications with Orbix, and sugestions for small and medium term projects.

Discussion

The adapted preface and contents overview clearly indicates the changes wrt to the first edition. For clarity I have marked the chapters that will be substantially changed with an asteriks.

Adding new topics is one thing, eliminating parts of the book, naturally, is quite another thing. Yet, I have chosen to remove the chapters on C++ (previously ch. 2), software engineering issues (ch. 4), concurrency in C++ (ch 6), composition (ch 7), software libraries (ch. 11) and hypermedia (ch 12). Some of this material, for example parts of the hypermedia chapter (12) and software engineering issues (4), will reappear elsewhere. Nevertheless, since some of this material is obsolete, and other material does not function well in classroom, it is better to remove it, and allow its space to be taken by other topics.

As concerns the amount of pages, I definitely do not want to exceed the current number of pages (513), rather I would like to cut it back to, say, 450.

I have thought about eliminating or reducing part III, which deals with foundational issues of OO. Parts of it could, for example, be replaced by material on (OO) simulation or examples of programming games. That would mean that I would, proportionally, pay more attention to my own work. Suggestions and comments of the reviewers that would help me in making a choice are welcome!

Overall I do consider the contents of the book balanced, in the sense that it treats both theoretical and technological issues. The phrase 'Principles' in the title is still justified, since despite the fact that technology is treated rather extensively, ultimately the focus is on 'abstractions', in the form of language constructs, interfaces, composition mechanisms, patterns and transparent distribution.

The online version

The first edition paper version was in itself a rich source of references to the literature and, even then, also documentation and software on the Internet.

Nowadays, paper does no longer suffice. Furthermore, in my own experience, the existence of online material does not prevent me from buying a book. As I understand, publishers are also becoming aware of the advantages of bringing out an online version. It is my intention to put the full contents of the book on the Web, and to bring out a CDROM that contains the complete book, the accompanying Instructor's Guide, as well as the software on which the examples are based. Possibly other software might be included as well. (Apart fromm Netscape, one may think for example of OrbixWeb, VOyager, the Java JDK, the Standard Template Library, and more ...)

Technically, the creation of an online version should not be a problem. The software needed for this has already been developed as part of my research project at the Vrije Universiteit, An experimental online version of the first version of my book can be found at


   www.cs.vu.nl/~eliens/online/oo
  
The reviewers are invited to look at this version and send me their comments at eliens@cs.vu.nl

The online version is organized in parts and chapters, like the paper version. From any place in the book any other part of chapter is only one or two jumps away. There are two mode, show modea, which allows for ordinary reading and browsing, and presentation mode that may be used to present the material in classroom. Currently, show mode is only available when using Netscape. In show mode, the arrows on the right may be used to access the material linearly. Presentation mode can be entered either by clicking on the caption of a slide, which results in a slide being displayed in presentation mode, or via the Instructor's Guide, which is reached by clicking on the title of a chapter or section. From there it takes another click on the moving icon to enter presentation mode, from which the sequence of slides belonging to that chapter or sequence can be presented.

As you will see, I have a strong preference for an 'implicit' interface, meaning that there are no redundant indications such as "Click here to enter presentation mode." Although it may take some time to get used to, the average reader will no doubt soon know what to do.

The online version consists primarily of static HTML pages, so that the book may be read directly from CDROM with Netscape. The slide mode makes use of dynamic HTML and is based on the Netscape developers presentation package. (Since many presenters use PowerPoint, I might consider to provide a PowerPoint version of the slides as well. Comments?)

For some selected parts, I might use some more advanced technology, for example plugins to display multimeda. A disadvantage is that it is hard to do this in a platform-independent way. However, provided that the software is included, the book could then still be read from CDROM.

Concluding remarks

Despite the amount of work involved, I think it is worthwhile to make the effort to revise the book, so that it can make its entrance into the next century. The revision includes an update with respect to the topics mentioned, as well as creating an online version with (hopefully) 'live' references. With the occurrence of the electronic classroom, ranging from the virtual networked classroom to the plain old classroom with a beamer, the book may prove its worth as a directly accessible source of material.

Time schedule

Next fall, 1998, I will have my next OO course. Until then the online material will not have been class-tested. Many of the topics mentioned, however, have already been presented in my previous courses, including the material on CORBA and patterns. Obviously, there is a need to class-test the online version, so I think it is best to aim at june '99 for a first version of the manuscript.