Difference between revisions of "Advanced Object Design with Patterns and Agile Modeling"

 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Overview ==
 
== Overview ==
4-5 days. If the 4-day version; the sessions are 8:15am-5:45pm (for example). If the 5-day session, sessions are 9:00am-5:00pm (for example)
+
4 days. probably 9:00-17:00
 
<br>
 
<br>
 
<br>
 
<br>
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.
+
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 software 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 -- author of one of the world's most popular texts on software design -- extensive experience coaching and applying OOD since the mid 1980s.
 
<br>
 
<br>
 
<br>
 
<br>
Line 9: Line 9:
 
<br>
 
<br>
 
<br>
 
<br>
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.  
+
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.  
 
<br>
 
<br>
 
<br>
 
<br>
 
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.
 
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
 
 
 
== Audience ==
 
Developers, architects and other technical leaders
 
 
 
== Level ==
 
Advanced: This course expects the attendees understand the fundamentals of object-oriented design, and extends and expands on those existing skills.
 
 
  
  
Line 34: Line 21:
 
== Objectives ==
 
== Objectives ==
 
Upon completion of this course, students should be able to:
 
Upon completion of this course, students should be able to:
* design with the “Gang of Four” (GoF) design patterns
+
* 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)
 
* apply refactorings to patterns (Kerievsky)
* design package or component structure for low dependency impact
+
<br>
* do agile modeling
+
<br>
 
 
 
 
 
== Outline ==
 
== Outline ==
* Process Agility and Design Agility
+
* agile modeling
* Design Patterns: Motivation and Categories
+
* domain modeling
* Agile Modeling
+
* exploring together the GRASP principles: Information Expert, Creator, Facade Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, Protected Variations
* Core Architectural and Design Principles
+
* SOLID principles
* Patterns for Varying Single Algorithms
+
* class hierarchy design
* Patterns for Varying Instance Behavior
+
* introduction to design patterns for object-oriented development & architecture
* Patterns for Access Control
+
* exploring together: Adapter, Proxy, Decorator, Abstract Singleton, Simple Factory
* Patterns for Structural Decomposition
+
* exploring together: Strategy, Composite, Policy
* Patterns for Organization or Communication of Work
+
* exploring together: Command, Memento, Command Processor
* Patterns for Varying Event Response
+
* exploring together: Observer, Template Method
* Patterns for Varying Interfaces
+
* exploring together: Abstract Factory, Factory Method
* Patterns for Creation
+
* exploring together: State
* Patterns for Varying Implementations
+
* exploring together: Facade, Bridge, Builder, Chain of Responsibility
* Patterns for Handling State
+
* exploring together: Iterator, Interpreter, Mediator, Prototype
* Patterns for Varying Interactions
+
<br>
* Designing a Logical Architecture with Patterns
+
<br>
* Designing Package Structure
 
* Refactoring to Patterns
 
 
 
  
 
== Related Courses ==
 
== Related Courses ==
Line 68: Line 53:
 
* [[Agile Acceptance Test-Driven Development: Requirements as Executable Tests]]
 
* [[Agile Acceptance Test-Driven Development: Requirements as Executable Tests]]
 
* [[Agile Architecture: Process and Design Tips to Support Flexible Systems]]
 
* [[Agile Architecture: Process and Design Tips to Support Flexible Systems]]
 
+
<br>
 
+
<br>
 
== Maximum Participants ==
 
== Maximum Participants ==
16
+
20
 +
<br>
 +
<br>
 +
== Environment - Room, Tools, Texts ==
 +
ACTION: Please order this text for each student:
  
 
== Environment - Room, Tools, Texts ==
 
 
Text: [http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062/ref=sr_1_1/002-2801511-2159202?ie=UTF8&s=books&qid=1194351090&sr=1-1 Applying UML & Patterns: Introduction to Object-Oriented Analysis & Design, & Iterative Development]
 
Text: [http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062/ref=sr_1_1/002-2801511-2159202?ie=UTF8&s=books&qid=1194351090&sr=1-1 Applying UML & Patterns: Introduction to Object-Oriented Analysis & Design, & Iterative Development]
  
 +
<br>
  
 +
ACTION: Ensure the room meets these requirements, and order the related supplies:
 
[[Course Environment - Workshop Style7]]
 
[[Course Environment - Workshop Style7]]
 +
 +
<br>
 +
 +
ACTION: Ask Craig for a PDF of the course notes, and arranging printing a copy for each student.

Latest revision as of 12:12, 29 November 2019

Overview

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 software 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 -- author of one of the world's most popular texts on software design -- 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.

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



Related Courses

Before:

After:



Maximum Participants

20

Environment - Room, Tools, Texts

ACTION: Please order this text for each student:

Text: Applying UML & Patterns: Introduction to Object-Oriented Analysis & Design, & Iterative Development


ACTION: Ensure the room meets these requirements, and order the related supplies: Course Environment - Workshop Style7


ACTION: Ask Craig for a PDF of the course notes, and arranging printing a copy for each student.