Course Overview: Frameworks offer a means of increasing the size and scale of object-oriented code reuse. Whereas the traditional reuse of classes is aimed at the reuse of specific abstractions (classes), frameworks provide a means of reusing a group of classes whose instances collaborate to solve a larger problem. As such, a framework offers a general solution to a particular problem, thereby allowing that solution to be specialized and applied to each particular instance of that problem.
This two-day class provides a hands-on approach to developing frameworks. It explains what a frameworks is and offers both categorizations and examples of frameworks. It explains the process of developing a framework, including how design patterns relate to frameworks. It then asks students to design and implement some small frameworks.
Note that this course includes the implementation of frameworks. All students should bring a laptop with an appropriate development environment running on it. The laptop need not have a web server running on it, as none of the frameworks use a web server.
Target Audience: This course is beneficial to individuals who are engaged in object-oriented development and who are also interested in the development of frameworks. A significant portion of this class involves laboratory exercises in which students design and implement small frameworks.
Prerequisites: The attendee should possess a thorough understanding of basic object-oriented concepts and should have some experience with object-oriented design and C# programming. Attendees should also know the fundamentals of the Unified Modeling Language (UML) notation and should be familiar with the patterns in the Design Patterns book by Gamma et al.
Introduction: A brief discussion of the goals of the course. What frameworks are and how they differ from classes- based reuse. Different types of frameworks. The required extensibility of a framework. References to books on frameworks.
Specifying Frameworks: The role of types and interfaces in the specification of frameworks. Assigning frameworks to UML packages. The specification of framework behaviors.
Framework Examples: Some examples of small frameworks developed both from generalizing a single problem and from identifying the common aspects of multiple related problems.
Developing Frameworks: Approaches for developing frameworks. Identifying and designing roles as plug-in points. The relationship of patterns to frameworks, and the use of patterns in framework “hot spots.”