did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780470092408

Object-Oriented Analysis and Design Understanding System Development with UML 2.0

by
  • ISBN13:

    9780470092408

  • ISBN10:

    0470092408

  • Edition: 1st
  • Format: Paperback
  • Copyright: 2005-05-20
  • Publisher: WILEY

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.

Purchase Benefits

List Price: $93.81 Save up to $67.93
  • Rent Book $50.66
    Add to Cart Free Shipping Icon Free Shipping

    TERM
    PRICE
    DUE
    USUALLY SHIPS IN 24-48 HOURS
    *This item is part of an exclusive publisher rental program and requires an additional convenience fee. This fee will be reflected in the shopping cart.

Supplemental Materials

What is included with this book?

Summary

Covering the breadth of a large topic, this book provides a thorough grounding in object-oriented concepts, the software development process, UML and multi-tier technologies. After covering some basic ground work underpinning OO software projects, the book follows the steps of a typical development project (Requirements Capture - Design - Specification & Test), showing how an abstract problem is taken through to a concrete solution. The book is programming language agnostic - so code is kept to a minimum to avoid detail and deviation into implementation minutiae.A single case study running through the text provides a realistic example showing development from an initial proposal through to a finished system. Key artifacts such as the requirements document and detailed designs are included. For each aspect of the case study, there is an exercise for the reader to produce similar documents for a different system. An online Exam Tool on the accompanying website is provided for readers to check their level of understanding.

Author Biography

Mike O'Docherty, Manchester UK, is an IT Training Consultant for IBM and Manchester University. He has delivered  OOA&D courses to undergraduates and  MSc students and professionals.

Table of Contents

Introduction
2(7)
Background
4(1)
A Brief History of Programming
4(1)
Methodologies
5(1)
About this Book
5(4)
Content Overview
6(1)
Case Studies
7(1)
Navigation
7(2)
Part I Setting the Scene
9(120)
Object Concepts
10(42)
Introduction
12(1)
What Is an Object?
13(3)
Identical or Equal?
16(3)
Depicting Objects
19(1)
Encapsulation
20(1)
Association and Aggregation
21(2)
Graphs and Trees
23(2)
Links and Navigability
25(2)
Messages
27(1)
Invoking an Operation
28(2)
An Example Collaboration
30(2)
How an Object-Oriented Program Works
32(1)
Garbage Collection
32(2)
Classes
34(3)
What Does a Class Define?
37(2)
Shared Data and Shared Operations
39(1)
Types
40(1)
Terminology
41(2)
Reusing Code
43(5)
Summary
48(4)
Further Reading
48(1)
Review Questions
48(2)
Answers to Activity 1
50(1)
Answers to Review Questions
50(2)
Inheritance
52(26)
Introduction
54(1)
Designing a Class Hierarchy
55(3)
Adding Implementations to a Class Hierarchy
58(1)
Abstract Classes
59(4)
Redefining Methods
63(1)
Implementing a Stack Class
64(5)
Implementing a Stack using Inheritance
65(1)
Implementing a Stack using Composition
66(2)
Inheritance versus Composition
68(1)
Multiple Inheritance
69(4)
Guidelines for Using Inheritance
73(1)
Summary
73(5)
Further Reading
74(1)
Review Questions
74(1)
Answers to Review Questions
75(3)
Type Systems
78(20)
Introduction
80(1)
Dynamic and Static Type Systems
80(2)
Polymorphism
82(3)
Polymorphic Variables
82(1)
Polymorphic Messages
83(2)
Dynamic Binding
85(2)
Polymorphism Guideline
87(1)
Type Casting
88(1)
Explicit Casts
89(2)
Genericity with Templates
91(2)
Summary
93(5)
Further Reading
93(1)
Review Questions
93(2)
Answers to Activity 2
95(1)
Answers to Activity 3
95(1)
Answers to Review Questions
96(2)
Software Development Methodologies
98(31)
Introduction
100(2)
Classical Phases in Software Production
102(4)
Requirements
102(1)
Analysis
102(1)
Design
103(1)
Specification
103(1)
Implementation
104(1)
Testing
104(1)
Deployment
104(1)
Maintenance
104(1)
Key Questions
105(1)
Software Engineering and the Waterfall Methodology
106(4)
New Methodologies
110(4)
Spiral Methodology
110(1)
Iterative Methodology
111(1)
Incremental Methodology
112(1)
Combining the Methodologies
113(1)
Object-Oriented Methodologies
114(3)
UML, RUP and XP
115(1)
The Need for Development Tools
116(1)
Ripple Overview
117(9)
Use Case Diagram
120(1)
Class Diagram (Analysis Level)
121(1)
Communication Diagram
122(1)
Deployment Diagram
123(1)
Class Diagram (Design Level)
124(1)
Sequence Diagram
125(1)
Summary
126(3)
Further Reading
126(1)
Review Questions
127(1)
Answers to Review Questions
128(1)
Part II Understanding the Problem
129(74)
Gathering Requirements
130(36)
Introduction
132(1)
The Birth of a System
133(2)
Use Cases
135(1)
Business Perspective
136(9)
Identifying Business Actors
137(1)
Writing the Project Glossary
138(1)
Identifying Business Use Cases
139(2)
Illustrating Use Cases on a Communication Diagram
141(2)
Illustrating Use Cases on an Activity Diagram
143(2)
Developer Perspective
145(17)
Specializing Actors
149(1)
Use Case Relationships
150(5)
System Use Case Details
155(1)
Preconditions, Postconditions and Inheritance
156(2)
Supplementary Requirements
158(1)
User Interface Sketches
158(1)
Prioritizing System Use Cases
159(3)
Summary
162(4)
Further Reading
162(1)
Review Questions
163(2)
Answers to Review Questions
165(1)
Analyzing the Problem
166(37)
Introduction
168(1)
Why Do Analysis?
168(1)
Overview of the Analysis Process
169(1)
Static Analysis
170(18)
Finding Classes
170(1)
Identifying Class Relationships
171(1)
Drawing Class and Object Diagrams
172(1)
Drawing Relationships
173(5)
Attributes
178(4)
Association Classes
182(1)
Tangible versus Intangible Objects
183(5)
Good Objects
188(1)
Dynamic Analysis
188(9)
Drawing Use Case Realizations
189(2)
Boundaries, Controllers and Entities
191(1)
Communication Diagram Elements
192(2)
Adding Operations to Classes
194(1)
Responsibilities
194(1)
State Modeling
195(2)
Summary
197(6)
Further Reading
197(1)
Review Questions
197(4)
Answers to Activity 4
201(1)
Answers to Review Questions
201(2)
Part III Designing the Solution
203(243)
Designing the System Architecture
204(36)
Introduction
206(1)
Design Priorities
207(1)
Steps in System Design
207(1)
Choosing a Networked System Topology
208(12)
The History of Network Architectures
208(2)
Three-Tier Architecture
210(2)
Personal Computers
212(1)
Network Computers
213(1)
The Internet and the World Wide Web
214(1)
Intranets
215(1)
Extranets and Virtual Private Networks
215(1)
Client-Server versus Distributed Architectures
216(2)
Depicting Network Topology in UML
218(2)
Designing for Concurrency
220(2)
Designing for Security
222(3)
Digital Encryption and Decryption
223(2)
General Security Rules
225(1)
Partitioning Software
225(12)
Systems and Subsystems
226(1)
Layers
227(3)
Java Layers: Applet plus RMI
230(3)
Message Flow in Layers
233(4)
Summary
237(3)
Further Reading
238(1)
Review Questions
238(1)
Answers to Review Questions
239(1)
Choosing Technologies
240(30)
Introduction
242(1)
Client Tier Technologies
242(2)
Client Tier to Middle Tier Protocols
244(2)
Middle Tier Technologies
246(1)
Middle Tier to Data Tier Technologies
247(1)
Other Technologies
248(2)
Typical Front-End Configurations
250(8)
HTML/CGI-with-Scripts
250(2)
HTML/CGI-with-Servlets
252(2)
RMI
254(1)
CORBA
255(1)
EJB
256(2)
Back-End Configurations
258(1)
Java E-Commerce Configuration
258(4)
UML Packages
262(5)
Summary
267(3)
Further Reading
267(1)
Review Questions
267(1)
Answers to Review Questions
268(2)
Designing the Subsystems
270(56)
Introduction
272(1)
Mapping the Analysis Class Model into the Design Class Model
273(11)
Mapping Operations
273(1)
Variable Types
274(1)
Visibility of Fields
274(1)
Accessors
275(1)
Mapping Classes, Attributes and Compositions
276(1)
Mapping Other Types of Association
277(5)
Universal Identifier
282(2)
Handling Persistence with a Relational Database
284(14)
Database Management Systems
285(1)
The Relational Model
286(2)
Mapping Entity Classes
288(1)
Mapping Associations
289(3)
Mapping Object State
292(6)
Finalizing the User Interfaces
298(6)
Designing the Business Services
304(8)
Using Proxies and Copies
305(2)
Classifying Business Services
307(2)
Session Identifiers
309(1)
Business Service Realization
310(2)
Using Patterns, Frameworks and Libraries
312(1)
Transactions
312(3)
Pessimistic and Optimistic Concurrency
313(1)
General Guidelines for Using Transactions with Objects
314(1)
Transactions in Upper Layers
315(1)
Handling Multiple Activities
315(6)
Controlling Multiple Tasks
315(1)
Controlling Multiple Threads
316(2)
Thread Safety
318(3)
Summary
321(5)
Further Reading
321(1)
Review Questions
322(1)
Answers to Review Questions
323(3)
Reusable Design Patterns
326(46)
Introduction
328(2)
A Brief History of Patterns
328(1)
Software Patterns Today
329(1)
A Pattern Template
330(1)
Common Design Patterns
331(36)
Observer
331(6)
Singleton
337(4)
Multiton
341(1)
Iterator
342(4)
Factory Method and Abstract Factory
346(1)
State
347(5)
Facade
352(2)
Adapter
354(2)
Strategy and Template Method
356(2)
Flyweight
358(3)
Composite
361(3)
Proxy
364(3)
Using Patterns
367(1)
Discovering, Combining and Adapting Patterns
367(3)
Summary
370(2)
Further Reading
371(1)
Specifying the Interfaces of Classes
372(34)
Introduction
374(1)
What Is a Specification?
375(1)
Formal Specification
376(2)
Informal Specification
378(2)
Dynamic Checking
380(2)
Object-Oriented Specification
382(3)
Formal Specification in OCL
383(1)
Informal Specification in Eiffel
384(1)
Design by Contract
385(11)
Contracts and Inheritance
389(2)
Reducing Error-Checking Code
391(3)
Enforcing the Contract
394(1)
Application Firewalls
395(1)
Informal Specification in Java
396(6)
Documenting a Contract using Comments
396(1)
Checking Conditions Dynamically
396(1)
Signaling Contract Violations using Runtime Exceptions
397(1)
External Systems
398(2)
Enabling and Disabling Dynamic Checks
400(2)
Summary
402(4)
Further Reading
403(1)
Review Questions
403(1)
Answers to Review Questions
404(2)
Continuous Testing
406(40)
Introduction
408(1)
Testing Terminology
408(3)
Black-Box Testing
409(1)
White-Box Testing
410(1)
Types of Test
411(10)
Unit Testing
412(1)
Integration Testing
412(1)
Alpha Testing
413(1)
Beta Testing
413(1)
Use Case Testing
414(1)
Component Testing
414(1)
Build Testing
415(2)
Load Testing
417(1)
Installation Testing
418(1)
Acceptance Testing
418(1)
Regression Tests
419(1)
Documentation Tests
419(1)
Testing for Security
419(1)
Metrics
420(1)
Automating Tests
421(1)
Preparing for Testing
422(2)
Testing Strategies
424(2)
Testing During Development
424(1)
Testing During the Testing Phase
425(1)
Testing After Release
426(1)
What to Test For
426(4)
Test-Driven Development
430(1)
An Example of Test-Driven Development using JUnit
431(14)
Testing the Car Class
433(1)
Implementing the Car Class
434(1)
Refactoring Tests
435(4)
Creating a Test Suite for Regression Testing
439(2)
Testing Across Methods
441(1)
Completing the Store Class
442(3)
Summary
445(1)
Further Reading
445(1)
A Ripple Summary
446(4)
B iCoot Case Study
450(76)
Business Requirements
450(6)
Customer's Mission Statement
450(1)
Actor List
450(1)
Use Case List
451(1)
Use Case Communication Diagrams
452(1)
Use Case Activity Diagrams
452(1)
Use Case Details
452(4)
System Requirements
456(10)
User Interface Sketches
456(4)
Actor List
460(1)
Use Case List
460(1)
Use Case Diagram
460(1)
Use Case Survey
461(1)
Use Case Details
462(3)
Supplementary Requirements
465(1)
Use Case Priorities
465(1)
Analysis
466(10)
Class Diagram
466(1)
Attributes
467(1)
Operation List
467(2)
State Machine for a Reservation
469(1)
Use Case Realization
470(6)
System Design
476(7)
Technology Choices
476(1)
Layer Diagram
477(2)
Layer Interaction Policy
479(1)
Packages
479(1)
Deployment Diagram
479(3)
Security Policy
482(1)
Concurrency Policy
482(1)
Subsystem Design
483(25)
Business Services
483(1)
ServletsLayer Class Diagram
483(1)
ServletsLayer Field List
484(1)
ServletsLayer Message List
484(1)
ServerLayer Class Diagram
485(1)
ServerLayer Field List
486(1)
ServerLayer Message List
486(1)
BusinessLayer Class Diagram
487(1)
BusinessLayer Field List
488(4)
Protocol Objects Class Diagram
492(2)
Database Schema
494(1)
User Interface Design
494(1)
Business Service Realization
494(14)
Class Specification
508(4)
Server Class Specification
508(1)
Business Logic Class Specification
509(3)
Outline Test Plan
512(5)
Introduction
512(1)
The Impact of Spirals and Increments
512(1)
Testing of Non-Code Artifacts
513(1)
Code Reviews
513(1)
Test-Driven Development
513(1)
Assertions
514(1)
Testing Phase
514(1)
Documentation Testing
515(1)
Build Testing
515(1)
Test Documentation and Logging
515(1)
Testing Activities by Phase
516(1)
Glossary
517(9)
C Summary of UML Notation Used
526(12)
Bibliography 538(3)
Index 541

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program