Tutorial: "Advanced Principles of Agile Object Oriented Class and Component design"
Time: Wednesday 13:00 - 16:00
Location: Bayside 201
What happens to software? Why does is rot over time? How can a development team prevent this rot, and prevent good designs from becoming legacy code? How can we be sure our designs are good in the first place? How do you manage the structure of large agile and object oriented systems? What is the best way to break that structure into components? What should the components contain, and how should they be interrelated? How can we effectively partition a system into independently deployable components?
This tutorial starts with five agile principles that guide the design of object oriented class structures. These principles govern the composition, structure and interdependencies between classes in large object oriented systems. The principles include: The Open Closed Principle, The Liskov Substitution Principle, and the Dependency Inversion Principle, among others. The tutorial goes on to present the 6 principles of object oriented component design. The first three are principles of component cohesion, which discuss the rules for how classes should be allocated to components. The second three are the principle of component coupling, which discuss how comonents should be related to one another. Principles include “The Common Closure Principle, the Stable Dependencies Principle, and the Acyclic Dependencies Principle, among others.


