|
This class is taught by a Certified Scrum Trainer but is not a certification course.
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.
The agenda is tentative.
|
|

