Class
Lean Architecture and Agile Feature Implementation
Taught by James O. Coplien
March 22-23, 2010 in Tel Aviv, Israel
Jeff Sutherland says that he has not, and would not, run a Scrum project without doing an up-front architecture. He also says that product backlog items should be enabling specifications. What is the grounding of your Scrum project in good architecture and in enabling specifications for User Stories? And how is your Scrum doing? Learn how to vastly improve your team’s velocity and quality with concrete foundations and techniques that lead to good system architecture.
This course is based on the forthcoming Wiley book, Lean Architecture for Agile Software Development. All attendees registering here at scrumtraininginstitute.com will receive a free copy of the book when it is published (scheduled for May 2010).
(The prices and other terms posted here at scrumtraininginstitute.com apply only for registration at this site in accordance with the terms set out herein. Current and former clients of Pacific Software should contact Pacific Software directly for registration. By registering here you certify that your registration affiliation does not qualify you either as a current or former client of Pacific Software.)
Registration for this class has closed.
Description
There is a popular misconception that Agile development means “no up-front architecture!” Yet every major school of Agile practice advocates architecture. You can do a great Agile architecture in one week or in a single sprint! In this course we’ll teach you how great projects do architecture the Agile way.
The first day of the course examines the goals of Agile development and architecture together. Agile is about human engagment; in programs, that implies interactive interface. It also means responding to change; in software, that means responding keystroke by keystroke rather than card deck by card deck. The objects in the program derive from end user mental models of the business domain. The first step of Agile architecture is to find these objects — the “Model” objects of MVC. At the end of the first day you will know how to create an overall framework that separates domain objects from Use Case code, so that each part can respond to its own pace of change. You will also know how to capture the domain design using object-oriented languages, making it possible to refine domain concepts in a piecemeal, Agile way.
In the second day of the course, we focus on how to incrementally inject new Use Cases into domain objects. Use cases are not objects; yet, in a good OO world, they are not functions, either. We show how to express Use Cases as interactions between roles. We also show how to implement roles in most common object-oriented programming languages, and how to inject those roles dynamically into the domain objects. This architecture, called DCI (for Data, Context and Interaction) was designed by Trygve Reenskaug, the inventor of Model-View-Controller, to more accurately capture the end user mental model and to give the programmer code structures that are easy to reason about. The end result is programs that capture end user mental models (individuals and interactions over processes and tools), a more seamless transition from requirements to code (customer collaboration over contracts), software that is simpler and easier to reason about and sometimes prove correct (working software over documentation), and flexible software that is much easier to change than in traditional object orientation.
The course focuses on interactive systems and draws from a broad range of sources including Trygve Reenskaug’s work on architectural underpinnings of MVC and his new work on the DCI architecture, Jim Coplien’s lightweight domain analysis, dressed-down Use Cases, and role-based development. The course is for architects, designers, and programmers, and is programming-language neutral.
