Preface of the book Object-Oriented Software Engineering: Practical Software Development using UML and Java (Second Edition)By Timothy C. Lethbridge and Robert Laganière
Our focus in this book is software engineering knowledge and skills that readers can put into immediate practical use. The book is designed to be used in second-year post-secondary software engineering courses, although it has been used in introductory software engineering courses at all levels. It will also be valuable to programming practitioners who want to develop a better understanding of modern software engineering.
We have taught software engineering courses for fourteen years, and have attempted to tune the book so it is both useful and enjoyable to students. Feedback from former students has been gratifying - some have reported that they regularly use it as a reference in their jobs. Our industrial experience performing software development, consulting and professional training has also allowed us to focus on material that is important to the employers of these students.
Using the book in a software engineering degree program
Software engineering is becoming an established discipline, separate from computer science and computer engineering. As a witness to this, in 2004 The IEEE Computer Society and the ACM approved Software Engineering 2004 (SE2004), a document outlining what should be taught in any undergraduate software engineering program. The first author of this book played a leading role in that project, and this book is specifically designed as a textbook for CCSE course SE201. See the web site sites.computer.org/ccse .
At the University of Ottawa, we teach the material in this book over a 12-week period during the first semester of the second year. By that time, students have completed two semesters of computer science - including object-oriented programming in Java. They take a course in data structures and algorithms in parallel with this course, and subsequently take advanced software engineering courses that expand their knowledge of the material we introduce here.
Students who have studied the material in this course should be particularly employable in co-op or summer jobs. Employers are looking for students who understand what constitutes a good requirement, can apply fundamental design principles, can use UML properly, can translate requirements and designs into good quality programs, and can effectively test those programs. This book gives a practical grounding in all of these skills.
The book is structured so that in a 12-week course or unit, it can be taught using three hours a week of classroom instruction, plus regular supervised and unsupervised laboratory time. Each year we assign a selection of the exercises, many of which students work on in groups. This second edition of the book updates many exercises and introduces many new ones.
Prior to studying this book, readers should understand the basic notions of object-oriented programming, although Chapter 2 gives a brief review of these concepts. We have selected Java as the language used for programming examples since it is a complete, simple and popular object-oriented language. Motivated readers who know other object-oriented languages should be able to pick up the necessary Java from the material provided in Chapter 2 and the book's website, and as they work through the exercises.
Material on the web site
We have prepared a web site with many resources to support readers and teachers. The address is: www.lloseng.com.
Here you will find sets of presentation slides, source code, answers to exercises, links to all the web-based references, a knowledge base summarizing many of the concepts presented, videotapes of lectures, and various other learning aids.
Themes taught throughout the book
Woven throughout the book are nine themes that we believe are basic to contemporary software engineering. Each of these themes is revisited in many chapters, and is taught in the context of concrete examples and exercises.
Changes in the second edition
In the second edition, we have made a wide variety of small changes to keep up with changes in the field. The following are some of the more significant changes:
Structure of the book
Size. The book is small enough so that instructors can realistically require students to read it all during a 12-week course. We present a suggested schedule below.
Depth. Rather than covering all aspects of software engineering, we present in reasonable depth a cohesive collection of material that will give readers a foundation in topics central to the field. We focus on material that is immediately applicable in industrial software projects.
Examples and exercises. Readers can practice applying the concepts, since we provide an extensive set of examples and exercises. One set of project exercises is based on a fully implemented small system, which we provide. This means that, rather than always programming from scratch, readers are able to spend their time thinking about higher-level analysis and design issues, yet they can still practice implementation of their ideas. Readers also come to appreciate reuse, since the implemented system is based on a framework that is applicable to a wide variety of client-server systems. The exercises vary widely in difficulty; some are easy and simply encourage the reader to think about what they have read; others are intended to motivate advanced readers. Many exercises have fully explained answers available in the student's answer manual; other answers are available in a manual only available to instructors.
Sequencing. The sequence of material in the book is designed to allow students to rapidly start work on real problems requiring analysis, design and implementation. As readers perform several iterations of project work, we introduce topics they will need in each iteration. The early part of the book, for example, introduces the knowledge about object orientation and architecture that they will need to understand the project work. Then we move on to requirements and object-oriented analysis, focusing initially on use cases and static modeling. Later, we introduce dynamic modeling.
Use of this book in a 12-week course
The following is a suggested schedule for using this book in a second-year university course. For the main body of the book, Chapters 3 to 10, the allocated time corresponds roughly to the length of each chapter.
The authors use this book in a 12-week course, where each week has three hours of lecture as well as three hours of lab and tutorial time. Students are expected to read all the chapters, although the lectures focus most heavily on the core material in Chapters 3 through 10, and particularly Chapters 3, 5, 8 and 9.
We also anticipate that students work on a selection of exercises with deliverables about four times during the course. We also expect them to deliver three iterations of the project. We have provided suggested project activities at the end of many chapters.
Other orderings are possible. In particular, the order in which Chapters 6 through 11 can be covered is flexible. Also, parts of many chapters could be skipped in order to give greater emphasis to other material.
We would like to thank the following people who helped us improve this book:
Direct links to buy the book from
wider list of bookstores.|