Business System Analysis Bookstore
In Association with Amazon.com
Help PicoSearch
Looking for Business Analysis Training

Object-Oriented and Classical Software Engineering - ISE

Buy the Book
Summary TOC Preface Author Look Inside Comments
Stephen R. Schach
November 2001, McGraw Hill, Hardcover, 744 pages, ISBN 0072554509

Instructor-led, virtual, and self-paced training for Business Analysts What Do Business Analysts Do?
How to Develop and Use UML Models for Business Analysis
How to Prepare and Facilitate a Successful JAD Session
Business Analysis and Requirements Gathering Blitz
e-Learning, virtual workshops and webinars Try our new Virtual Workshops and e-Coaching
for today's Business System Analysts (BA's) and Subject Matter Experts (SME's)

Summary
Buy the book

Classical and Object-Oriented Software Engineering is designed for an introductory software engineering course. This book provides an excellent introduction to software engineering fundamentals, covering both traditional and object-oriented techniques.

Schach's unique organization and style makes it excellent for use in a classroom setting. It presents the underlying software engineering theory in Part I and follows it up with the more practical life-cycle material in Part II. Many software engineering books are more like reference books, which do not provide the appropriate fundamentals before inundating students with implementation details.

In this edition, more practical material has been added to help students understand how to use what they are learning. This has been done through the use of "How To" boxes and greater implementation detail in the case study. Additionally, the new edition contains the references to the most current literature and includes an overview of extreme programmming.

The website in this edition will be more extensive. It will include Solutions, PowerPoints that incorporate lecture notes, newly developed self-quiz questions, and source code for the term project and case study.

KEY FEATURES:

  • Balanced coverage of the object-oriented paradigm with the classical paradigm (found throughout the book)
  • Unified Modeling Language (UML) is used throughout the book for object-oriented analysis and design and wherever diagrams depict objects and their interrelationships.
  • More emphasis on practical applications that help students learn how to implement what they are learning. This has been done in part by the inclusion of more "How To" boxes and greater implementation detail that is provided on the case study.
  • There is new coverage on ISO/IEC 12207 and a new section on Extreme Programming. Additionally, new references have been added to help students sort through the literature.
  • PowerPoint slides ,which integrate the figures and new lecture notes, will be available for this edition.
  • The fifth edition of the book is language independent. All of the code examples are in pseudocode, and complete implementation of the case study is given in both C++ and Java.
  • Part II of the book contains a running case study to help students understand how to perform the various techniques they are learning.
  • Schach now gives more emphasis on teams by giving the topic its own chapter in the new edition (Chapter 4).
  • The sections on the Capability Maturity Model (CMM), ISO/IEC 15504 (SPICE), and ISO 9000 have been updated.
  • This book also comes with a term project that where students work in teams. This allows them to get used to colloborating with others in software design, preparing them better for the real world.
  • www.mhhe.com/schach A more robust website is new to this edition. It contains PowerPoints, Solutions, Source Code (term project and case study), and Self-Quizzes.
 
analysis bookstore top
BA books: Table of Contents
Buy the book

Part I Introduction to Software Engineering

1 The Scope of Software Engineering

2 The Software Process

3 Software Life-Cycle Models

4 Teams

5 The Tools of the Trade

6 Testing

7 From Modules to Objects

8 Reusability, Portability, and Interoperability

9 Planning and Estimating

 

Part II The Phases of the Software Life Cycle

10 Requirements Phase

11 Specification Phase

12 Object-Oriented Analysis Phase

13 Design Phase

14 Implementation Phase

15 Implementation and Integration Phase

16 Maintenance Phase


Appendices

Appendix A Broadlands Area Children's Hospital

Appendix B Software Engineering Resources

Appendix C Air Gourmet Case Study: C Rapid Prototype

Appendix D Air Gourmet Case Study: Java Rapid Prototype

Appendix E Air Gourmet Case Study: Structured Systems Analysis

Appendix F Air Gourmet Case Study: Software Project Management Plan

Appendix G Air Gourmet Case Study: Object-Oriented Analysis

Appendix H Air Gourmet Case Study: Design for C++ Implementation

Appendix I Air Gourmet Case Study: Design for Java Implementation

Appendix J Air Gourmet Case Study: Black-Box Test Cases

Appendix K Air Gourmet Case Study: C++ Source Code

Appendix L Air Gourmet Case Study: Java Source Code

 
analysis bookstore top
Preface
Buy the book

The fourth edition of this book was published in two versions, one with code examples presented in C++ and the other in Java. However, software engineering essentially is language independent, and in any event, there are relatively few code examples in this book. Accordingly, in this edition, I 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 utilized the pseudocode instruction print. (The one exception is the new case study, where complete implementation details are given in both C++ and Java.) Therefore, the fifth edition can be considered a unification of the two versions of the fourth edition.

Pedagogics is the theme of the fifth edition. All through this book, I added material to highlight key aspects of each chapter. For example, there are How to Perform boxes that summarize important techniques such as object-oriented analysis and object-oriented design. In addition, new synopses and outlines assist both the student and the instructor. Also, to provide additional material on how to perform the various techniques of software engineering, the case study in this edition is presented in greater detail than in the fourth edition.

The fourth edition included a chapter entitled “Teams and the Tools of Their Trade.” As part of the stress on pedagogics in this new edition, the material has been updated and split into two, to focus more clearly on each of the separate underlying topics. In this edition, Chapter 4 is devoted to teams, whereas the tools used by software engineers are described in Chapter 5.

As before, I include both classical and object-oriented material, notwithstanding the virtually unanimous agreement that the object-oriented paradigm is superior to the classical (structured) paradigm. My decision might surprise some readers; surely an up-to-date software engineering textbook should describe only the object-oriented paradigm and treat the classical paradigm, at best, as a historical footnote. This is not the case. Despite the widespread enthusiasm for the object-oriented paradigm and the rapidly accumulating evidence of its superiority over the classical paradigm, it nevertheless is essential to include material on the classical paradigm. There are three reasons for this.

First, it is impossible to appreciate why object-oriented technology is superior to classical technology without fully understanding the classical approach and how it differs from the object-oriented approach.
The second reason why both the classical and object-oriented paradigms are included is that technology transfer is a slow process. The vast majority of software organizations have not yet adopted the object-oriented paradigm. It therefore is likely that many of the students who use this book will be employed by organizations that still use classical software engineering techniques. Furthermore, even if an organization is using the object-oriented approach for developing new software, existing software still has to be maintained, and this legacy software is not object oriented. Therefore, excluding classical material would not be fair to many of the students who use this text.
A third reason for including both paradigms is that a student who is employed at an organization considering the transition to object-oriented technology will be able to advise that organization regarding both the strengths and the weaknesses of the new paradigm. So, as in the previous edition, the classical and object-oriented approaches are compared, contrasted, and analyzed.

The fourth edition was the first software engineering textbook to utilize the Unified Modeling Language (UML), which was introduced shortly before that edition was published. In the intervening three years, UML has been formally standardized and become so widely used that any textbook that does not use UML to describe object-oriented analysis and design immediately would be obsolete. Therefore, I continue to use UML for object-oriented analysis and object-oriented design, as well as wherever diagrams depict objects and their interrelationships.

Another then-new topic introduced into the fourth edition was design patterns. As with UML, design patterns now are part of mainstream software engineering. The material on design patterns therefore has been retained and strengthened.

A new topic in this edition is extreme programming (XP).XPstill is controversial, but I feel that students need an overview of the topic so they can decide for themselves whether XP is merely a fad or a genuine major breakthrough in software engineering.

In the previous edition, I stressed the importance of documentation, maintenance, reuse, portability, testing, and CASE tools. In this edition, all these concepts are stressed equally firmly. It is no use teaching students the latest techniques unless they appreciate the importance of the basics of software engineering.
As in the fourth edition, particular 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, there are many briefer references 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 still is the concept that underlies the book as a whole. To control the process, we have to be able to measure what is happening to the project.

Accordingly, the emphasis on metrics is retained.With regard to process improvement, the material on the capability maturity model (CMM) and ISO/IEC 15504 (SPICE) has been updated, and material on ISO/IEC 12207 has been added. As in the fourth edition, this book contains over 600 references. I selected current research papers as well as classic articles and books whose message remains fresh and relevant. There is no question that software engineering is a rapidly moving field and that 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 programming language such as Pascal, C, C++, Ada, BASIC, COBOL, FORTRAN, or Java. In addition, the reader is expected to have taken a course in data structures.

HOW THE FIFTH EDITION IS ORGANIZED


Like the fourth edition of this book, the fifth edition is written for both the traditional one-semester and the newer two-semester software engineering curriculum. In the traditional one-semester (or one-quarter) course, the instructor has to rush through the theoretical material to provide the students the knowledge and skills needed for the term project as soon as possible. The need for haste is so that the students can commence the term project early enough to complete it by the end of the semester.

To cater to a one-semester, project-based software engineering course, Part 2 of this book covers the life cycle, phase by phase, and Part 1 contains the theoretical material needed to understand Part 2. For example, Part 1 introduces the reader to CASE, metrics, and testing; each chapter of Part 2 contains a section on CASE tools for that phase, a section on metrics for that phase, and a section on testing during that phase. Part 1 is kept short to enable the instructor to start Part 2 relatively early in the semester. Furthermore, the last two chapters of Part 1 (Chapters 8 and 9) may be postponed and taught in parallel with Part 2. The class then can begin developing the term project as soon as possible.

We turn now to the two-semester software engineering curriculum. More and more computer science and computer engineering departments are realizing that the overwhelming preponderance of their graduates find employment as software engineers. As a result, many colleges and universities introduced a two-semester (or two-quarter) software engineering sequence. The first course is largely theoretical (but almost always there is a small project of some sort). The second course consists of a major team-based term project, usually a capstone project. When the term project is in the second course, there is no need for the instructor to rush to start Part 2.

Therefore, an instructor teaching a one-semester (or one-quarter) sequence using the fifth edition covers most of Chapters 1 through 7, then starts Part 2 (Chapters 10 through 16). Chapters 8 and 9 can then be taught in parallel with Part 2 or at the end of the course, while the students are implementing the term project. When teaching the two-semester sequence, the chapters of the book are taught in order; the class now is fully prepared for the team-based term project they will develop in the following semester.

To ensure that the key software engineering techniques of Part 2 truly are understood, each is presented twice. First, whenever a technique is introduced, it is illustrated by means of the elevator problem. The elevator problem is the correct size for the reader to be able to see the technique applied to a complete problem, and it has enough subtleties to highlight both the strengths and weaknesses of the technique being taught. Then, the relevant portion of the new case study is presented toward the end of each chapter. This detailed solution provides the second illustration of each
technique.


THE PROBLEM SETS

As in the previous edition, there are four types of problems. First, the end of each chapter contains a number of exercises intended to highlight key points. These exercises are self-contained; the technical information for all the exercises can be found in this book.

Second, there is a software term project. It is designed to be solved by students working in teams of three, the smallest number of team members that cannot confer over a standard telephone. The term project comprises 16 separate components, each tied to the relevant chapter. For example, design is the topic of Chapter 13, so in that chapter the component of the term project is concerned with software design. By breaking a large project into smaller, well-defined pieces, the instructor can monitor the progress of the class more closely. The structure of the term project is such that an instructor may freely apply the 16 components to any other project that he or she chooses.

Because this book is written for use by graduate students as well as upper-class undergraduates, the third type of problem is based on research papers in the software engineering literature. In each chapter, an important paper has been chosen; wherever possible, a paper related to object-oriented software engineering has been selected.
The student is asked to read the paper and answer a question relating its contents. Of course, the instructor is free to assign any other research paper; the For Further Reading section at the end of each chapter includes a wide variety of relevant papers. The fourth type of problem relates to the case study. This type of problemwas first introduced in the third edition in response to instructors who feel that their students learn more by modifying an existing product than by developing a product from scratch. Many senior software engineers in the industry agree with that viewpoint.

Accordingly, each chapter in which the case study is presented has at least three problems that require the student to modify the case study in some way. For example, in one chapter the student is asked to redesign the case study using a different design technique from the one used for the case study. In another chapter, the student is asked what the effectwould have been of performing the steps of the object-oriented analysis in a different order. To make it easy to modify the source code of the case study, it is available on theWorldWideWeb at www.mhhe.com/engcs/compsci/schach. The web site also has transparency masters for all the figures in this book, as well as a complete set of PowerPoint lecture notes.

The Instructor’s Solution Manual
contains detailed solutions to all the exercises, as well as to the term project. The Instructor’s Solution Manual is vailable from McGraw-Hill.


ACKNOWLEDGMENTS


I am indebted to those who reviewed this edition, including:


Arvin Agah (University of Kansas)
Thaddeus R. Crews, Jr. (Western Kentucky University)
Eduardo B. Fernandez (Florida Atlantic University)
Michael Godfrey (Cornell University)
Scott Hawker (University of Alabama)
Thomas B. Horton (Florida Atlantic University)
Gail Kaiser (Columbia University)
Laxmikant V. Kale (University of Illinois)
Helene Kershner (University of Buffalo)
Chung Lee (California State Polytechnic University at Pomona)
Richard A. Lejk (University of North Carolina, Charlotte)
Susan A. Mengel (Texas Technological University)
David S. Rosenblum (University of California at Irvine)
Shmuel Rotenstreich (George Washington University)
Wendel Scarbrough (Azusa Pacific University)
Gerald B. Sheble (Iowa State)
Jie We (City University of New York)
David Workman (University of Central Florida)

I thank two individuals who made contributions to earlier books. First, Jeff Gray once again made numerous insightful suggestions. In particular, I am grateful for his many ideas regarding Chapter 8. Also, he once again is a coauthor of the Instructor’s Solution Manual. Second, my son David has made a number of helpful contributions to the book and again is a coauthor of the Instructor’s Solution Manual.

Since 1999, I have been involved in joint research with Dr. Amir Tomer of RAFAEL and the Technion, Israel Institute of Technology. The papers we wrote together are nominally on maintenance. However, the issue underlying our research is the nature of software engineering. A direct consequence of working with Amir is that I gained new insight into software engineering. I have incorporated many of these ideas into this edition.

Turning now to my publisher, McGraw-Hill, I am truly grateful to executive editor Betsy Jones and developmental editor Emily Gray for their assistance from start to finish. I particularly appreciate their suggestions regarding giving equal stress to both C++ and Java in an integrated volume. Rick Hecker was the ideal project manager in every way. I was most fortunate to have Gnomi Schrift Gouldin as the copy editor for this book. She greatly improved the readability of my manuscript, and I am grateful for her many suggestions.

I would like to thank the many instructors from all over the world who sent mee-mail concerning the fourth edition. I am exceedingly appreciative of their suggestions, comments, and criticisms. I look forward with anticipation to receiving instructors’ feedback on this edition also.

My e-mail address is srs@vuse.vanderbilt.edu.


Students, too, have been most helpful. First, I thank my students at Vanderbilt for their many questions and comments, both inside and outside the classroom. I also an most grateful for the provocative questions and constructive suggestions e-mailed me by students from all over the world. I look forward keenly to student feedback on this edition, too.

Finally, as always, I thank my family for their continual support. When I started writing books, my limited free time had to be shared between my young children and my current book project. Now that my children are adults and work with me on my books, writing has become a family activity. For the tenth time, it is my privilege to dedicate this book to my wife, Sharon, and my children, David and Lauren, with love.


Stephen R. Schach

 
analysis bookstore top
Author info
Buy the book
Steve Schach obtained an M.S. in Physics at the Weizmann Institute of Science in 1972, and a Ph.D. in Applied Mathematics at the University of Cape Town in 1973. Between 1972 and 1983, he held faculty positions in the Departments of Applied Mathematics and Computer Science at the University of Cape Town. In 1983 he joined the Department of Computer Science at Vanderbilt University.

He has written a number of textbooks on software engineering and object-oriented software engineering and has over 100 refereed publications to his name, including refereed videotapes. He consults and teaches short courses internationally on a variety of software engineering topics, including reuse, CASE, and the object-oriented paradigm.

 
analysis bookstore top
 
NEW RELEASES
Agile
Benchmarking
Best Practices
Business Systems Analysis
CASE
Data Analysis
  Data Models
Data Normalization
Data Repository
Entity Relationship Diagrams
Miscellaneous
Data Warehouse
Enterprise Architecture
Enterprise Resource Planning (ERP)
  Peoplesoft
SAP
Miscellaneous
Humor
Internet
  E-Commerce
Miscellaneous
Interviewing Techniques
Methodologies
  Information Engineering
Structured System Development
System Development Life Cycle (SDLC)
Miscellaneous
Object Oriented
  Business Objects
Object Oriented Analysis
Object Oriented Design
Object Oriented Modeling
Object Oriented Testing
State Transition Diagrams
Problem Analysis
Process Analysis
  Data Flow Diagrams
Decision Tables
Event Response Diagrams
Flowcharts
Process Models
Miscellaneous
Process Improvement (BPI)
Related Topics
  Knowledge Management
Philosophies
Request for Proposal (RFP)
Risk Management
Six Sigma
Software Reuse
Strategic Planning
Requirements
  Business Rules
Prototyping
Requirements Analysis
Requirements Definition
Requirements Documentation
Requirements Engineering
Requirements Gathering
Requirements Management
Requirements Traceability
System Specifications
User Interfaces
Miscellaneous
Test Management
  Defect Tracking
Test Planning
Testing Methodologies
Testing Tools
Validation & Verification
Miscellaneous
Testing Phases
  Acceptance Testing
Configuration Testing
Integration Testing
Performance Testing
System Testing
Unit Testing
Usability Testing
Testing Techniques
  Black Box Testing
Object Oriented Testing
Regression Testing
Test Cases
Test Data Engineering
Walkthroughs
White Box Testing
Miscellaneous
Unified Modeling Language (UML)
Usability Engineering
  Prototyping
Task Analysis
Usability Testing
User Interfaces
Miscellaneous
Use Cases
Workflow Analysis
Working in Teams
  Conducting Meetings
Facilitation
JAD
Rapid Application Development (RAD)
Miscellaneous
Search:
Keywords:
Home Links Add a book Request Link Exchange BA Skills Test Training Needs Assessment