Agile Design and Modeling for Advanced Object Design with Patterns
From Craig Larman
4 days. probably 9:00-17:00
This popular, high-impact, and hands-on course on mastering advanced object-oriented design (OOD) and design patterns (primarily the “Gang of Four” design patterns) with agility is aimed at architects and developers of OO systems, You will learn to design with patterns, apply visual modeling in an agile modeling approach, and a suite of related advanced design topics, including the design of packages. This course is based on acclaimed industry leader Craig Larman’s extensive experience coaching and applying OOD since the mid 1980s.
In this intensive seminar there is some lecture time, but the majority is spent in small teams at vast whiteboard spaces while the coach rotates and works with each team, guiding them through the case study problems. The course proceeds through a series of case studies within which you learn design pattern skills. Other education methods include rotation reviews, multi-modal learning, and pair learning. These skills are applied repeatedly in several iterations of the case studies, as we go deeper, reinforce knowledge, and illustrate iterative and evolutionary development. New design patterns are introduced incrementally across the iterations.
Object-oriented (OO) design patterns are a critical skill of successful developers to support design agility. Various studies indicate that after initial release of a software system, at least 50% of effort and cost is spent in modification. To save money, it is skillful and economic to take a long-term view of product development and invest in simple, clear and extensible designs that reduce these costs.
You will leave this workshop with deeper skill to apply patterns and create quality designs that have agility – that support reduced modification costs and increased comprehensibility, and hence support business agility.
Methods of Education
Discussion, presentation, Q&A, workshop exercises
Programmers, architect-programmers, and other technical leaders
Advanced: This course expects the attendees understand the fundamentals of object-oriented design, and extends and expands on those existing skills.
At least six months full-time hands-on object-oriented programming experience.
Upon completion of this course, students should be able to:
- design flexibly with patterns (primarily, the “gang-of-four” design patterns)
- learn and collaborate with agile modeling
- design good type (class) hierarchies
- learn and collaborate with simple UML
- apply refactorings to patterns (Kerievsky)
- Process Agility and Design Agility
- Design Patterns: Motivation and Categories
- Agile Modeling
- Core Architectural and Design Principles
- Patterns for Varying Single Algorithms
- Patterns for Varying Instance Behavior
- Patterns for Access Control
- Patterns for Structural Decomposition
- Patterns for Organization or Communication of Work
- Patterns for Varying Event Response
- Patterns for Varying Interfaces
- Patterns for Creation
- Patterns for Varying Implementations
- Patterns for Handling State
- Patterns for Varying Interactions
- Designing a Logical Architecture with Patterns
- Refactoring to Patterns
- Agile TDD and Refactoring
- Agile Acceptance Test-Driven Development: Requirements as Executable Tests
- Agile Architecture: Process and Design Tips to Support Flexible Systems