| |
| |
| |
Introduction | |
| |
| |
| |
Background | |
| |
| |
| |
A Brief History of Programming | |
| |
| |
| |
Methodologies | |
| |
| |
| |
About this Book | |
| |
| |
| |
Setting the Scene | |
| |
| |
| |
Object Concepts | |
| |
| |
| |
Introduction | |
| |
| |
| |
What Is an Object? | |
| |
| |
| |
Identical or Equal? | |
| |
| |
| |
Depicting Objects | |
| |
| |
| |
Encapsulation | |
| |
| |
| |
Association and Aggregation | |
| |
| |
| |
Graphs and Trees | |
| |
| |
| |
Links and Navigability | |
| |
| |
| |
Messages | |
| |
| |
| |
Invoking an Operation | |
| |
| |
| |
An Example Collaboration | |
| |
| |
| |
How and Object-Oriented Program Works | |
| |
| |
| |
Garbage Collection | |
| |
| |
| |
Classes | |
| |
| |
| |
What Does a Class Define? | |
| |
| |
| |
Shared Data and Shared Operations | |
| |
| |
| |
Types | |
| |
| |
| |
Terminology | |
| |
| |
| |
Reusing Code | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Activity 1 | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Inheritance | |
| |
| |
| |
Introduction | |
| |
| |
| |
Designing a Class Hierarchy | |
| |
| |
| |
Adding Implementations to a Class Hierarchy | |
| |
| |
| |
Abstract Classes | |
| |
| |
| |
Redefining Methods | |
| |
| |
| |
Implementing a Stack Class | |
| |
| |
| |
Multiple Inheritance | |
| |
| |
| |
Guidelines for Using Inheritance | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Type Systems | |
| |
| |
| |
Introduction | |
| |
| |
| |
Dynamic and Static Type Systems | |
| |
| |
| |
Polymorphism | |
| |
| |
| |
Dynamic Binding | |
| |
| |
| |
Polymorphism Guideline | |
| |
| |
| |
Type Casting | |
| |
| |
| |
Explicit Casts | |
| |
| |
| |
Genericity with Templates | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Activity 2 | |
| |
| |
Answers to Activity 3 | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Software Development Methodologies | |
| |
| |
| |
Introduction | |
| |
| |
| |
Classical Phases in Software Production | |
| |
| |
| |
Software Engineering and the Waterfall Methodology | |
| |
| |
| |
New Methodologies | |
| |
| |
| |
Object-Oriented Methodologies | |
| |
| |
| |
Ripple Overview | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Understanding the Problem | |
| |
| |
| |
Gathering Requirements | |
| |
| |
| |
Introduction | |
| |
| |
| |
The Birth of a System | |
| |
| |
| |
Use Cases | |
| |
| |
| |
Business Perspective | |
| |
| |
| |
Developer Perspective | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Analyzing the Problem | |
| |
| |
| |
Introduction | |
| |
| |
| |
Why Do Analysis? | |
| |
| |
| |
Overview of the Analysis Process | |
| |
| |
| |
Static Analysis | |
| |
| |
| |
Dynamic Analysis | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Activity 4 | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Designing the Solution | |
| |
| |
| |
Designing the System Architecture | |
| |
| |
| |
Introduction | |
| |
| |
| |
Design Priorities | |
| |
| |
| |
Steps in System Design | |
| |
| |
| |
Choosing a Networked System Topology | |
| |
| |
| |
Designing for Concurrency | |
| |
| |
| |
Designing for Security | |
| |
| |
| |
Partitioning Software | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Choosing Technologies | |
| |
| |
| |
Introduction | |
| |
| |
| |
Client Tier Technologies | |
| |
| |
| |
Client Tier to Middle Tier Protocols | |
| |
| |
| |
Middle Tier Technologies | |
| |
| |
| |
Middle Tier to Data Tier Technologies | |
| |
| |
| |
Other Technologies | |
| |
| |
| |
Typical Front-End Configurations | |
| |
| |
| |
Back-End Configurations | |
| |
| |
| |
Java E-Commerce Configuration | |
| |
| |
| |
UML Packages | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Designing the Subsystems | |
| |
| |
| |
Introduction | |
| |
| |
| |
Mapping the Analysis Class Model into the Design Class Model | |
| |
| |
| |
Handling Persistence with a Relational Database | |
| |
| |
| |
Finalizing the User Interfaces | |
| |
| |
| |
Designing the Business Services | |
| |
| |
| |
Using Patterns, Frameworks and Libraries | |
| |
| |
| |
Transactions | |
| |
| |
| |
Handling Multiple Activities | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Reusable Design Patterns | |
| |
| |
| |
Introduction | |
| |
| |
| |
A Pattern Template | |
| |
| |
| |
Common Design Patterns | |
| |
| |
| |
Using Patterns | |
| |
| |
| |
Discovering, Combining and Adapting Patterns | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
| |
Specifying the Interfaces of Classes | |
| |
| |
| |
Introduction | |
| |
| |
| |
What Is a Specification? | |
| |
| |
| |
Formal Specification | |
| |
| |
| |
Informal Specification | |
| |
| |
| |
Dynamic Checking | |
| |
| |
| |
Object-Oriented Specification | |
| |
| |
| |
Design by Contract | |
| |
| |
| |
Informal Specification in Java | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
Review Questions | |
| |
| |
Answers to Review Questions | |
| |
| |
| |
Continuous Testing | |
| |
| |
| |
Introduction | |
| |
| |
| |
Testing Terminology | |
| |
| |
| |
Types of Test | |
| |
| |
| |
Automating Tests | |
| |
| |
| |
Preparing for Testing | |
| |
| |
| |
Testing Strategies | |
| |
| |
| |
What to Test For | |
| |
| |
| |
Test-Driven Development | |
| |
| |
| |
An Example of Test-Driven Development using JUnit | |
| |
| |
| |
Summary | |
| |
| |
Further Reading | |
| |
| |
| |
Ripple Summary | |
| |
| |
| |
Coot Case Study | |
| |
| |
| |
Business Requirements | |
| |
| |
| |
Customer's Mission Statement | |
| |
| |
| |
Actor List | |
| |
| |
| |
Use Case List | |
| |
| |
| |
Use Case Communication Diagrams | |
| |
| |
| |
Use Case Activity Diagrams | |
| |
| |
| |
Use Case Details | |
| |
| |
| |
System Requirements | |
| |
| |
| |
User Interface Sketches | |
| |
| |
| |
Actor List | |
| |
| |
| |
Use Case List | |
| |
| |
| |
Use Case Diagram | |
| |
| |
| |
Use Case Survey | |
| |
| |
| |
Use Case Details | |
| |
| |
| |
Supplementary Requirements | |
| |
| |
| |
Use Case Priorities | |
| |
| |
| |
Analysis | |
| |
| |
| |
Class Diagram | |
| |
| |
| |
Attributes | |
| |
| |
| |
Operation List | |
| |
| |
| |
State Machine for a Reservation | |
| |
| |
| |
Use Case Realization | |
| |
| |
| |
System Design | |
| |
| |
| |
Technology Choices | |
| |
| |
| |
Layer Diagram | |
| |
| |
| |
Layer Interaction Policy | |
| |
| |
| |
Packages | |
| |
| |
| |
Deployment Diagram | |
| |
| |
| |
Security Policy | |
| |
| |
| |
Concurrency Policy | |
| |
| |
| |
Subsystem Design | |
| |
| |
| |
Business Services | |
| |
| |
| |
ServletsLayer Class Diagram | |
| |
| |
| |
ServletsLayer Field List | |
| |
| |
| |
ServletsLayer Message List | |
| |
| |
| |
ServerLayer Class Diagram | |
| |
| |
| |
ServerLayer Field List | |
| |
| |
| |
ServerLayer Message List | |
| |
| |
| |
BusinessLayer Class Diagram | |
| |
| |
| |
BusinessLayer Field List | |
| |
| |
| |
Protocol Objects Class Diagram | |
| |
| |
| |
Database Schema | |
| |
| |
| |
User Interface Design | |
| |
| |
| |
Business Service Realization | |
| |
| |
| |
Class Specification | |
| |
| |
| |
Server Class Specification | |
| |
| |
| |
Business Logic Class Specification | |
| |
| |
| |
Outline Test Plan | |
| |
| |
| |
Introduction | |
| |
| |
| |
The Impact of Spirals and Increments | |
| |
| |
| |
Testing of Non-Code Artifacts | |
| |
| |
| |
Code Reviews | |
| |
| |
| |
Test-Driven Development | |
| |
| |
| |
Assertions | |
| |
| |
| |
Testing Phase | |
| |
| |
| |
Documentation Testing | |
| |
| |
| |
Build Testing | |
| |
| |
| |
Test Documentation and Logging | |
| |
| |
| |
Testing Activities by Phase | |
| |
| |
| |
Glossary | |
| |
| |
| |
Summary of UML Notation Used | |
| |
| |
Bibliography | |
| |
| |
Index | |