Mario Cardinal
Mario Cardinal
Software Architect
The real voyage of discovery consists, not in seeking new landscapes, but in having new eyes









Communauté .Net de Montréal
January 26, 2010 / Montréal, Canada
Design Patterns
This presentation has been conceived to give you a head start in architecting with agile practices. Even if the stakes are not the same, architects can benefits from the same practices as those used by the agile software development. The only difference is that the deliverables, the end results conceived by the architects are not the same. While the agile developers focus on objects and its internal implementation, the architects focus on structures that elevate the level of abstraction by suppressing the details that have to do solely with the internal implementation. Software architecture is about creating structures to tackle complexity and to achieve simplicity. The simplest way to achieve simplicity is to divide into layers and to hide each layer behind an interface to isolate dependencies. Combining layering with agile practices provide an effective approach to cope with changes and to achieve simplicity. Architects are now responsible to design interfaces, tests and mockups, which make possible to create a new semantic level to be more precise with regard to the contract of a layer. This precision is important to effectively communicate with programmers and also to adequately validate the implementation. Since tests are executable, correctness with regard to architecture can be confirmed at any time. Overall, you will acquire fundamental knowledge not only about layered architecture but also about how to design architecture using agile practices such as test-driven design, code refactoring, interface based programming, automated unit test and continuous integration.