i
Instructor’s Solutions Manual
to accompany
OBJECT-ORIENTED
AND CLASSICAL
SOFTWARE ENGINEERING
Seventh Edition
Stephen R. Schach
Vanderbilt University
Prepared by
Stephen R. Schach
Vanderbilt University
Kristin C. Irwin
Lauren S. Ryder
McGraw-Hill
1221 Avenue of the Americas
New York, NY 10020
ii
Instructor’s Solutions Manual to accompany OBJECT-ORIENTED AND CLASSICAL SOFT-
WARE ENGINEERING, SEVENTH EDITION by Stephen R. Schach.
Copyright © 2007 by McGraw-Hill, Inc.
All rights reserved under International and Pan-American Copyright Convention. No part of this
book may be reproduced in any form or by any means, electronic or mechanical, including photo-
copying, without permission in writing from the publisher, except for classroom use for instruc-
tors using OBJECT-ORIENTED AND CLASSICAL SOFTWARE ENGINEERING, SEVENTH
EDITION as a course text, and provided that the reproduced materials are retrieved by the in-
structor and either permanently secured or destroyed after such classroom use. All inquiries
should be addressed to McGraw-Hill, Inc., 1221 Avenue of the Americas, New York, NY 10020.
Published in the United States by McGraw-Hill, Inc.
The programs in this book have been included for their instructional value. They have been
tested with care but are not guaranteed for any particular purpose. The publisher does not offer
any warranties or representations, nor does it accept any liabilities with respect to the programs.
Many of the designations used by manufactures and sellers to distinguish their products are
claimed as trademarks. The publisher has made every attempt to supply trademark information
about manufacturers and their products mentioned in this book.
ISBN:
Manufactured in the United States of America
To our families
iii
iv
THE FOLLOWING ARE REGISTERED TRADEMARKS:
IBM Rational Rose
Microsoft Visual C++
UNIX
v
Preface
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
Chapter 9
Chapter 10
Chapter 11
Chapter 12
Chapter 13
Chapter 14
Chapter 15
Chapter 16
CONTENTS
.................................................................................................. vi
The Scope of Software Engineering ......................................1–1
Software Life-Cycle Models ..................................................2–1
The Software Process.............................................................3–1
Teams ....................................................................................4–1
The Tools of the Trade...........................................................5–1
Testing....................................................................................6–1
From Modules to Objects.......................................................7–1
Reusability and Portability.....................................................8–1
Planning and Estimating ........................................................9–1
Requirements .......................................................................10–1
Classical Analysis ................................................................11–1
Object-Oriented Analysis.....................................................12–1
Design ..................................................................................13–1
Implementation ....................................................................14–1
Postdelivery Maintenance ....................................................15–1
More on UML ......................................................................16–1
vi
TO THE INSTRUCTOR
Object-Oriented and Classical Software Engineering can be used as a textbook at two different
levels. The material can be used for a junior/senior level course, or for a first year graduate-level
course. Furthermore, it can be used for a one-semester or a two-semester software engineering
course sequence. Not only does the instructor have the freedom to present the lecture material at
the appropriate level for the class, but the wide variety of problems allows the instructor to focus
the course in a way that will achieve the desired course objectives.
HOW THIS INSTRUCTOR’S MANUAL IS ORGANIZED
This preface contains teaching suggestions relating to the book as a whole. Each chapter consists
of material relating to the corresponding chapter of Object-Oriented and Classical Software
Engineering, namely, teaching suggestions for that specific chapter and solutions to the problems
and term project component for that chapter.
ABOUT THE PROBLEM SETS
There are five different types of problems: exercises, the running object-oriented analysis and
design projects, the term project, case study problems, and readings in software engineering. The
exercises are of different types, including essay-type problems, numerical problems, and prob-
lems that essentially require nothing more than understanding what was taught in class.
In my opinion, it is most important that students get experience working in teams developing a
software product from beginning to end. In the software industry, almost all products are devel-
oped by teams, and I believe that we shortchange our students if we do not give them this experi-
ence. The size of the team is critical. Three is the smallest team that cannot collaborate over a
standard telephone; the term project in the book was designed for teams of that size, and it works
well. Of course, few students are considerate enough to ensure that the class size will always be
a multiple of three—there will usually have to be one or two teams of size four! The problem
with teams of more than three members is that one or two students always seem to end up doing
all the work, whereas a team of three usually shares the load evenly among the team members.
vii
An important issue is whether to assign students to teams or allow students to choose their own.
Until recently, I used to let my students choose their own teams. A few years ago, however, I
realized that most teams seem to be composed of students of roughly equal ability. Conse-
quently, the brighter students did not obtain experience in working with less competent people,
experience they would need in the real world; and the weaker students did not learn from the
brighter students. In addition, students from non-English speaking backgrounds tended to form
their own teams, thereby missing an opportunity to improve their language skills
Accordingly, for the past few years I have assigned students to teams on the basis of alphabetical
order of first names, and this has worked extremely well. (Using first names rather than last
names almost always results in a more random mix of students.)
A difficulty that can arise with teams is that one team member complains that he or she is doing
all the work, and that it is unfair that all three team members should get the same grade. To
obviate this problem, I give 10 percent of the overall grade for team effort; at the end of the
course, the members of each team evaluate the extent to which their fellow team members
contributed to the team. For example, if a student feels that a specific member of the team tried
his or her utmost to contribute to every assignment, the student would give that team member
10/10. On the other hand, if the team member never came to team meetings and did not
contribute anything toward the team effort, the student would give that team member 0/10 for the
team effort grade.
The case study problems were included because many instructors feel that beginners can learn
more from modifying an existing solution than by struggling to create a new solution from
scratch. This approach is particularly appropriate to the study of software engineering; after all,
the majority of software professionals modify (maintain) existing products, rather than create
(develop) new products.
I strongly recommend that the three running object-oriented analysis and design projects be as-
signed. When I taught a one-semester software engineering course, I assigned the running
object-oriented analysis and design projects as team projects. Now that I teach a two-semester
course sequence, I assign them as individual projects in the first semester, and the term project is
the group project for the second semester.
When teaching undergraduate students, I strongly suggest that most of the exercises be assigned,
together with either the term project or the case study problems, depending on the abilities of the
students. It would be too much to expect the class to complete both the term project and selected
case study problems.
The fifth type of problem in the text is based on readings in software engineering. This material
is more suitable for graduate students than undergraduates. When teaching graduate students, I
assign equal weight to the exercises, object-oriented analysis and design projects, readings, and
term project. Of course, it is unreasonable to assign all the exercises and readings as well as the
entire term project, so I select from the exercises and readings.
At the end of the course, I feel that I have succeeded if the students have learned how to specify,
plan, design, implement, maintain, test, and so on, working as a member of a team. The best way
viii
I can determine this is to make the course project-oriented. I grade the components of the term
project extremely carefully. I experiment with the students’ implementations, ask walkthrough-
style questions about their designs, and so on. Students generally enjoy showing off their work,
so I organize sessions at which I examine the work of each team in the presence of their class-
mates; teams have the option of a private demonstration, of course, but no team has as yet chosen
this.
The term project has been designed generically. That is to say, it consists of fifteen components
that can be applied to any term project of the instructor’s choosing, not just the project in Object-
Oriented and Classical Software Engineering, seventh edition. The project has been broken up
into pieces so that the instructor can soon detect if a team has fallen behind. If this happens,
remedial action can quickly be taken to help the team get back on track. Also, asking for fifteen
different items to be handed in on fifteen different occasions usually results in documentation of
higher quality than if the specifications, design, implementation, and so on are all handed in at
the end of the semester. Finally, it is much easier to grade fifteen small pieces of a term project
during the semester than one gargantuan project at a time when there are end-of-semester
deadlines to meet.
LECTURE OUTLINES
Returning to the lecture material, I comfortably cover the entire book in one semester, including
time for questions and discussion. When teaching a one-semester course to undergraduates, I do
it as follows:
Lecture 1
Lectures 2–4
Lectures 5–6
Lectures 7–8
Lecture 9
Lectures 10–11
Lectures 12–14
Lectures 15–17
Lectures 18–19
Lectures 20–23
Lecture 24
Lectures 25–27
Lectures 28–31
Lectures 32–35
Lectures 36–37
Lectures 38–39
Lectures 40–41
Lectures 42–44
Lecture 45
Course objectives, introduction to software engineering teams
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 10
Chapter 11
Midterm examination
Chapter 12
Chapter 13
Chapter 14
Chapter 15
Chapter 16
Chapter 8
Chapter 9
Course review and wrap-up