Student Edition | Instructor Edition | Information Center | Home
Object-Oriented Software Engineering
Information Center
Sample Chapter
Preface
Table of Contents
Features

Feedback
Help Center




Features

Features of This Book:

  • The Unified Process is still largely the methodology of choice for object-oriented software development. Throughout this book, the student is therefore exposed to both the theory and the practice of the Unified Process.
  • In Chapter 1 (“The Scope of Object-Oriented Software Engineering”), the strengths of the object-oriented paradigm are analyzed in depth.
  • The iterative-and-incremental life-cycle model has been introduced as early as possible, namely, in Chapter 2 (“Software Life-Cycle Models”). Agile processes are also discussed in this chapter.
  • In Chapter 3 (“The Software Process”), the workflows (activities) and processes of the Unified Process are introduced, and the need for two-dimensional life-cycle models is explained.
  • A wide variety of ways of organizing software teams are presented in Chapter 4 (“Teams”), including teams for agile processes and for open-source software development.
  • Chapter 5 (“Tools of the Trade”), includes information on important classes of CASE tools.
  • The importance of continual testing is stressed in Chapter 6 (“Testing”).
  • Objects are the focus of attention in Chapter 7 (“From Modules to Objects”).
  • In Chapter 8 (“Reusability and Portability”), design patterns have been stressed.
  • The new IEEE standard for software project management plans is presented in Chapter 9 (“Planning and Estimating”).
  • Chapter 10 (“The Requirements Workflow”), Chapter 11 (“The Analysis Workflow”), Chapter 12 (“The Design Workflow”), and Chapter 13 (“The Implementation Workflow”) are largely devoted to the workflows (activities) of the Unified Process.
  • The material in Chapter 13 (“The Implementation Workflow”) clearly distinguishes between implementation and integration.
  • The importance of postdelivery maintenance is stressed in Chapter 14. Chapter 15 provides additional material on UML to prepare the student thoroughly for employment in the software industry. This chapter is of particular use to instructors who utilize this book for the two-semester software engineering course sequence. In the second semester, in addition to developing the team-based term project or a capstone project, the student can acquire additional knowledge of UML, beyond what is needed for this book.
  • There are two running case studies. The MSG Foundation case study and the elevator problem case study have been developed using the Unified Process. Java and C++ implementations are available online at www.mhhe.com/schach.
  • In addition to the two running case studies that are used to illustrate the complete life cycle, seven mini case studies highlight specific topics, such as the moving-target problem, stepwise refinement, design patterns, and postdelivery maintenance.
  • I stress the importance of documentation, maintenance, reuse, portability, testing, and CASE tools. It is no use teaching students the latest ideas unless they appreciate the importance of the basics of object-oriented software engineering.
  • Attention is paid to object-oriented life cycle models, object-oriented analysis, object-oriented design, management implications of the object oriented paradigm, and the testing and maintenance of object oriented software. Metrics for the object-oriented paradigm also are included. In addition, many briefer references are made to objects, a paragraph or even only a sentence in length. The reason is that the object-oriented paradigm is not just concerned with how the various phases are performed but rather permeates the way we think about software engineering. Object technology pervades this book.
  • The software process underlies the book as a whole. To control the process, we have to be able to measure what is happening to the project. Accordingly, there is an emphasis on metrics. With regard to process improvement, there is material on the capability maturity model (CMM), ISO/IEC 15504 (SPICE), and ISO/IEC 12207; the people capability maturity model (P–CMM) has been included in the chapter on teams.
  • The book is language independent; the few code examples are presented in C++ and Java, and I have made every effort to smooth over language-dependent details and ensure that the code examples are equally clear to C++ and Java users. For example, instead of using cout for C++ output and System.out.println for Java output, I have utilized the pseudocode instruction print. (The one exception is the second case study, where complete implementation details are given in both C++ and Java.)
  • This book contains over 600 references. I have selected current research papers as well as classic articles and books whose message remains fresh and relevant. There is no question that object-oriented software engineering is a rapidly moving field, and students therefore need to know the latest results and where in the literature to find them. At the same time, today’s cutting-edge research is based on yesterday’s truths, and I see no reason to exclude an older reference if its ideas are as applicable today as they originally were.
  • With regard to prerequisites, it is assumed that the reader is familiar with one high-level object-oriented programming language such as C++ or Java. In addition, the reader is expected to have taken a course in data structures.