Agile Design and Modeling for Advanced Object Design with Patterns
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.
Prerequisites
At least six months full-time hands-on object-oriented programming experience.
Objectives
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)
Outline
- agile modeling
- domain modeling
- exploring together the GRASP principles: Information Expert, Creator, Facade Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations
- SOLID principles
- class hierarchy design
- introduction to design patterns for object-oriented development & architecture
- exploring together: Adapter, Proxy, Decorator, Abstract Singleton, Simple Factory
- exploring together: Strategy, Composite, Policy
- exploring together: Command, Memento, Command Processor
- exploring together: Observer, Template Method
- exploring together: Abstract Factory, Factory Method
- exploring together: State
- exploring together: Facade, Bridge, Builder, Chain of Responsibility
- exploring together: Iterator, Interpreter, Mediator, Prototype
Craig Larman has been named one of the top 20 Agile influencers of all time and is the author of several books on scaling lean & agile development.
In addition to debugging and re-designing organizations, Craig is an expert in designing (and helping people to design) software systems. He is the author of Applying UML & Patterns: Object-Oriented Analysis & Design, one of the world's best-selling texts on software design, translated to many languages and used worldwide in universities and industry as the standard for introducing analysis and design, modeling, design patterns, architecture, and OOA/D.
Craig is also the co-creator of LeSS (Large-Scale Scrum), and since 2005 has worked with clients to apply the LeSS framework for scaling lean thinking and agile development to large, multisite, and offshore development.
Craig has served as the lead coach of large-scale lean software development adoption at Xerox, and serves or has served as a consultant for LeSS at Ericsson, JP Morgan, Cisco-Tandberg, Bank of America Merrill Lynch, Alcatel-Lucent, UBS, bwin.party, Nokia Networks and Siemens Networks, and Ion Trading, among many other clients. Craig has also served as chief scientist at Valtech and while living in Bengaluru India, at Valtech's development centre helped to create agile offshore development with LeSS.
He is one of the very first Certified Scrum Trainers and Practicing ScrumMasters, starting in the 1990s while at Chevron Research.
Craig holds a B.Sc. and M.Sc. in computer science from beautiful SFU in Vancouver, BC, with research emphasis in artificial intelligence (having very little of his own).