logo资料库

Object-Oriented Software Engineering Using UML Patterns and JAVA.pdf

第1页 / 共817页
第2页 / 共817页
第3页 / 共817页
第4页 / 共817页
第5页 / 共817页
第6页 / 共817页
第7页 / 共817页
第8页 / 共817页
资料共817页,剩余部分请下载后查看
Cover
Copyright
Title Page
Table of Contents
Foreword
Preface
Acknowledgments
PART I: Getting Started
Chapter 1 Introduction to Software Engineering
1.1 Introduction: Software Engineering Failures
1.2 What Is Software Engineering?
1.3 Software Engineering Concepts
1.4 Software Engineering Development Activities
1.5 Managing Software Development
1.6 ARENA Case Study
1.7 Further Reading
1.8 Exercises
Chapter 2 Modeling with UML
2.1 Introduction
2.2 An Overview of UML
2.3 Modeling Concepts
2.4 A Deeper View into UML
2.5 Further Readings
2.6 Exercises
Chapter 3 Project Organization and Communication
3.1 Introduction: A Rocket Example
3.2 An Overview of Projects
3.3 Project Organization Concepts
3.4 Project Communication Concepts
3.5 Organizational Activities
3.6 Further Readings
3.7 Exercises
PART II: Dealing with Complexity
Chapter 4 Requirements Elicitation
4.1 Introduction: Usability Examples
4.2 An Overview of Requirements Elicitation
4.3 Requirements Elicitation Concepts
4.4 Requirements Elicitation Activities
4.5 Managing Requirements Elicitation
4.6 ARENA Case Study
4.7 Further Readings
4.8 Exercises
Chapter 5 Analysis
5.1 Introduction: An Optical Illusion
5.2 An Overview of Analysis
5.3 Analysis Concepts
5.4 Analysis Activities: From Use Cases to Objects
5.5 Managing Analysis
5.6 ARENA Case Study
5.7 Further Readings
5.8 Exercises
Chapter 6 System Design: Decomposing the System
6.1 Introduction: A Floor Plan Example
6.2 An Overview of System Design
6.3 System Design Concepts
6.4 System Design Activities: From Objects to Subsystems
6.5 Further Readings
6.6 Exercises
Chapter 7 System Design: Addressing Design Goals
7.1 Introduction: A Redundancy Example
7.2 An Overview of System Design Activities
7.3 Concepts: UML Deployment Diagrams
7.4 System Design Activities: Addressing Design Goals
7.5 Managing System Design
7.6 ARENA Case Study
7.7 Further Readings
7.8 Exercises
Chapter 8 Object Design: Reusing Pattern Solutions
8.1 Introduction: Bloopers
8.2 An Overview of Object Design
8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns
8.4 Reuse Activities: Selecting Design Patterns and Components
8.5 Managing Reuse
8.6 ARENA Case Study
8.7 Further Readings
8.8 Exercises
Chapter 9 Object Design: Specifying Interfaces
9.1 Introduction: A Railroad Example
9.2 An Overview of Interface Specification
9.3 Interface Specification Concepts
9.4 Interface Specification Activities
9.5 Managing Object Design
9.6 ARENA Case Study
9.7 Further Readings
9.8 Exercises
Chapter 10 Mapping Models to Code
10.1 Introduction: A Book Example
10.2 An Overview of Mapping
10.3 Mapping Concepts
10.4 Mapping Activities
10.5 Managing Implementation
10.6 ARENA Case Study
10.7 Further Readings
10.8 Exercises
Chapter 11 Testing
11.1 Introduction: Testing The Space Shuttle
11.2 An Overview of Testing
11.3 Testing Concepts
11.4 Testing Activities
11.5 Managing Testing
11.6 Further Readings
11.7 Exercises
PART III: Managing Change
Chapter 12 Rationale Management
12.1 Introduction: Slicing Ham
12.2 An Overview of Rationale
12.3 Rationale Concepts
12.4 Rationale Activities: From Issues to Decisions
12.5 Managing Rationale
12.6 Further Readings
12.7 Exercises
Chapter 13 Configuration Management
13.1 Introduction: An Aircraft Example
13.2 An Overview of Configuration Management
13.3 Configuration Management Concepts
13.4 Configuration Management Activities
13.5 Managing Configuration Management
13.6 Further Readings
13.7 Exercises
Chapter 14 Project Management
14.1 Introduction: The STS-51L Launch Decision
14.2 An Overview of Project Management
14.3 Project Management Concepts
14.4 Classical Project Management Activities
14.5 Agile Project Management Activities
14.6 Further Readings
14.7 Exercises
Chapter 15 Software Life Cycle
15.1 Introduction: Polynesian Navigation
15.2 IEEE 1074: Standard for Developing Life Cycle Processes
15.3 Characterizing the Maturity of Software Life Cycle Models
15.4 Life Cycle Models
15.5 Further Readings
15.6 Exercises
Chapter 16 Methodologies: Putting It All Together
16.1 Introduction: The First Ascent of K2
16.2 Project Environment
16.3 Methodology Issues
16.4 A Spectrum of Methodologies
16.5 Case Studies
16.6 Further Readings
16.7 Exercises
PART IV: Appendices
Appendix A: Design Patterns
A.1 Abstract Factory: Encapsulating Platforms
A.2 Adapter: Wrapping Around Legacy Code
A.3 Bridge: Allowing for Alternate Implementations
A.4 Command: Encapsulating Control Flow
A.5 Composite: Representing Recursive Hierarchies
A.6 Facade: Encapsulating Subsystems
A.7 Observer: Decoupling Entities from Views
A.8 Proxy: Encapsulating Expensive Objects
A.9 Strategy: Encapsulating Algorithms
A.10 Heuristics for Selecting Design Patterns
Appendix B: Glossary
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Appendix C: Bibliography
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Object-Oriented Software Engineering Using UML, Patterns, and Java™ Third Edition Bernd Bruegge & Allen H. Dutoit Technical University of Munich Department of Computer Science Munich, Germany Carnegie Mellon University School of Computer Science Pittsburgh, PA, United States Boston Columbus Indianapolis New York San Francisco Upper Saddle River Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto Delhi Mexico City Sao Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo Prentice Hall
Vice President and Editorial Director, ECS: Marcia J. Horton Editor in Chief: Michael Hirsch Executive Editor: Tracy Dunkelberger Assistant Editor: Melinda Haggerty Editorial Assistant: Allison Michael Director of Marketing: Margaret Waples Marketing Manager: Erin Davis Marketing Coordinator: Kathryn Ferranti Senior Managing Editor: Scott Disanno Senior Operations Supervisor: Alan Fischer Operations Specialist: Lisa McDowell Art Director: Kenny Beck Cover Designer: Bruce Kenselaar Media Editor: Dan Sandin Copyright © 2010, 2004, 2000 Pearson Education, Inc., publishing as Prentice Hall. All rights reserved. Manufactured in the United States of America. This publication is protected by Copyright, and permission should be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. To obtain permission(s) to use material from this work, please submit a written request to Pearson Education, Inc., Permissions Department, One Lake Street, Upper Saddle River, NJ, 07458. Many of the designations by manufacturers and seller to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed in initial caps or all caps. Quote of Chapter 1 from Object-Oriented Analysis and Design with Applications by Booch, © 1994 Benjamin Cummings Publishing Company Inc. Reprinted by permission of Pearson Education, Inc. Quotes of Chapters 2 & 12 from Zen and the Art of Motorcycle Maintenance by Robert Pirsig, © 1974 by Robert Pirsig. Reprinted by permission of HarperCollins Publishers Inc. William Morrow. For British Commonwealth excluding Canada, Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig published by Bodley Head. Used by persmission of The Random House Group Limited. Quote of Chapter 6 from The Emperor’s Old Clothes by C. A. R. Hoare, © 1981 Association for Computing Machinery, Inc. Reprinted by permission. Quote of Chapter 13 from Chapterhouse: Dune by Frank Herbert, © 1985 by Frank Herbert. Used by permission of Berkeley Publishing Group, a division of Penguin Group (USA) Inc. All other chapter quotes are in the public domain or fall within the realm of fair use. Book photos: Bernd Bruegge, Rich Korf, and Blake Ward Library of Congress Cataloging-in-Publication Data on File 10 9 8 7 6 5 4 3 2 1 Prentice Hall is an imprint of www.pearsonhighered.com ISBN 10: 0-13-606125-7 ISBN 13: 978-0-13-606125-0
To Goeg, Toby, and Clara. —B.B. To my family: Vicky, Eleni, Anna-Maria, Michelle, and Chris with love. —A.H.D.
This page intentionally left blank
Foreword Over ten years ago, I read about a software engineering course taught by Bernd Bruegge at Carnegie-Mellon University. In software engineering courses at many other universities, small groups of 3 or 4 students were assigned several toy problems during a semester with deadlines of less than a month. On such small projects, one strong programmer can carry the whole team by brute force. It isn’t necessary to learn communication skills, use modeling tools, or deal with the ambiguities of actual problems. Students come away unprepared for the complexities of real- world development. In Bruegge’s course, the entire class worked on a single, semester-long project to produce a query-oriented navigation system for the city of Pittsburgh. They had to build on the interactive mapping system produced by the previous semester’s class. The clients were managers for the county planning department and port authority. The geographic and bus schedule data had misspellings, inaccuracies, and incompatible formats. The students produced an accepted system of over 27,000 lines of code. What a difference from the toy projects taught at many other places! Students came away from the course with an appreciation of the need for strategy, organization, and tools to deal with the complexity and messiness of the real world. They learned software engineering the only way one learns any craft—by practicing it on realistic cases. This book is a reflection of that pragmatic philosophy of software development as an engineering discipline. The authors adopt a point of view—an object-oriented approach using UML—that makes the many facets of software engineering approachable to students. They cover both the modeling techniques and the human communications skills needed to achieve success. They also include several chapters on managing change, a topic that appears in every real project but which is often neglected in texts. Readers of this book will gain a solid appreciation of the rich scope and complexity of software engineering. v
vi Foreword I particularly enjoyed the many illuminating anecdotes selected from a wide range of fields. These provide lively examples of problems large and small that illustrate the subtleties and traps that engineers must confront. Any book that makes relevant examples of Polynesian navigation, the tangled history of the text of Tolkien’s Lord of the Rings, and grandmother’s recipe for trimming hams is not only useful but also fun to read. Jim Rumbaugh
Preface The K2 towers at 8,611 meters in the Karakorum range of the western Himalayas. It is the second highest peak of the world and is considered the most difficult 8000er to climb. An expedition to the K2 typically lasts several months in the summer, when the weather is most favorable. Even in summer, snowstorms are frequent. An expedition requires thousands of pounds of equipment, including climbing gear, severe weather protection gear, tents, food, communication equipment, and pay and shoes for hundreds of porters. Planning such an expedition takes a significant amount of time in the life of a climber and requires dozens of participants in supporting roles. Once on site, many unexpected events, such as avalanches, porter strikes, or equipment failures, will force the climbers to adapt, find new solutions, or retreat. The success rate for expeditions to the K2 is currently less than 40%. The United States National Airspace System (NAS) monitors and controls air traffic in the United States. The NAS includes more than 18,300 airports, 21 air route traffic control centers, and over 460 control towers. These add up to more than 34,000 pieces of equipment, including radar systems, communication switches, radios, computer systems, and displays. The current infrastructure is aging rapidly. The computers supporting the 21 air route traffic control centers, for example, are IBM 3083 mainframes that date back to the early 1980s. In 1996, the United States government initiated a program to modernize the NAS infrastructure, including improvements such as satellite navigation, digital controller/pilot communications, and a higher degree of automation in controlling the air routes, deciding the order in which aircraft land, and controlling ground traffic as aircraft move from and to the runways. Such a complex infrastructure, however, can only be modernized incrementally. Consequently, while new components offering new functionality are introduced, older components still need to be supported. For example, during the transition period, a controller will have to be able to use both analog and digital voice channels to communicate with pilots. Finally, the modernization of the vii
分享到:
收藏