Preface
The Material
This textbook is intended as an introduction for students at the college freshman level to software development. As such, it is not simply an introduction to programming, nor should it be used as a reference for any particular programming language. It is expected that the instructors and students may need other sources of materials for the language covered, including detailed language and analysis/design notation references and compiler manuals. This book will cover the important syntactical and semantic aspects of the programming language, however.
The following phases of software development are covered in this book, and their importance is implied by the ordering of the list:
Of course, there are many different models for software design, and many different methods used for creating those designs and using them. This book will teach the Responsibility-Driven Design (RDD) approach, championed by Rebecca Wirfs-Brock [] and others. Implied in this method is an object orientation (OO), and a tendency to discover the behavior of an object before its structure is mapped out. Although this approach is not well suited to absolutely every problem, the author feels strongly that object technology encompasses by far the largest and most common groups of problems that most software engineers will face. It is also our opinion that that RDD is the best way to get students thinking in an object orientation, and designing reliable software from the beginning.
The analyses and designs will be illustrated using the Unified Modeling Language (UML), a standard recently proposed by Booch, Rumbaugh, and Jacobson [].
Although not a programming text, this text is appropriate for a 1- or 2- year introductory software sequence taken by students majoring in computer science, software engineering, and computer engineering. Most students at this beginning level, whether they have some software background or not, cannot easily grasp a purely conceptual course. The information provided, and the teaching style, need to be heavily based on learning by example. This means that a programming language will be introduced, but it will be used not only as a means to get computers to do what you want them to do, but also as a language to illustrate examples of the concepts being emphasized in this book.
Eiffel was chosen as the programming language for the initial edition of this book; here are the reasons why:
It is purely object-oriented.
It has a simple, easy-to-learn syntax.
Its semantics are also quite simple for an object-oriented language.
The memory model is simple (automatic management; no exposed pointers)
It contains direct support for programming by contract
It is frequently cited by leaders in the field (even those who do not use it regularly) as one of the best examples of many important OO ideas.
Despite is simplicity, the language is industrial strength, and has been used successfully in many businesses having different needs for large, complex applications.
Eiffel is the language currently taught to first year students at the author's university, Rochester Institute of Technology.
Organizational Philosophy
Because it should be possible to easily adapt this book to other programming languages that meet most of the above criteria, the book's chapters can be separated into two categories: those that teach concepts, and stay away from language-specific issues, and those that illustrate those concepts in the chosen language. Since it is clearly a bad idea to teach an introductory course all in concepts or all in programming, the chapters are interspersed. This means that the reader will have a chance to absorb conceptual issues in small chunks before being given the "relief" of seeing examples in real code, and being given the opportunity to practice some of those concepts in exercises.
For Now...
Early drafts of the book will not include homework assignments; they will come later. However, a few exercises are suggested within the main text. In addition, some of the figures are missing at this time
On the other hand, it is expected that either separate laboratory manuals will become available as a separate book one can purchase, or that catalogs of pertinent assignments will be made available from the web site set up for this book, using contributions of the author, and hopefully, others as well.