What is an object?
Encapsulation
Structured v.s. Object-Oriented Design
Benefits of Object-Oriented Design
Managing Dependencies
Interfaces and Polymorphism
Design Principles
Popular Object-Oriented Design Methods
UML
Typical project demands
Complexity and Failure
Productivity Impact
Coupling and Change
Barriers to Components
Managing Dependencies
Recapturing Productivity
Industry Hype
Reuse
Object-Oriented Design is hard
Learning Curve
Initial Project Impact
Source Code Impact
Tools
Alternatives
Skill development
Initial Projects
Accelerating the Learning
Curve
Tools
Why projects fail?
What to do with unsuccessful projects
Do I need an architect?
Waterfall vs. Iterative Design
Data-driven management
Extreme Programming
Agile Software Development
Test Driven Development
Addressing the motivations