The purpose of the talk is to show how this large-scale application model helps us to understand the overall structure of a system, how strata help us to clarify our thoughts, and how it encourages the separation of concerns such as the technical v. the problem domain, policy v. mechanism, and the buy-or-build decision - and of course why this style of architecture is relevant to ease of refactoring and software restructuring under changing and multiple requirement sets.
Assuming an application is made up of a number of components, the strata proposed is based on how specific to the particular requirements of an application each component is. More specific (and therefore less reusable) components are placed in the higher layers, and the more general, reusable components are in the lower layers. Since general non-application components are less likely to change than application specific ones, this leads to a stable system as all dependencies are downward in the direction of stability, and so changes tend not to propagate across the system as a whole.
** regarding: layers
As well as presenting the reference model, this talk also discusses and clarifies in concrete terms the meaning of one architectural layer being above another. Perhaps surprisingly, the meaning of the layering metaphor is the subject of some confusion. Specific examples of this are given in the talk - though not yet shown on the slides.
(Note; this is suggested a 90 minute presentation however it can be extended to a full half-day, one day or two day workshop. I also have two other agile presentations which I can submit if interest is there - these cover agile planning).
Outline/Structure of the Talk
* introduction and overview.
* overview of the five strata
* each strata in detail
* a simple application (dvd store) worked example demonstrating the strata ina practical sense
* summary and q&a
At the end of the session delegages will:
* understand the five strata presented and which (e.g. Java, Ruby) software packages in an application live in which strata
* understand how using the agile architecture presented eases change.
* understand the basics of designing and or refactoring using the strata.
software architects and designers who want their software to be easy to change