|
Benefits:
·
Describes what
frameworks are, how to use them, and why they are important
·
Teaches how to design
and document frameworks
·
Shows how patterns
can make the design process more efficient
·
Discuss the
evolutionary process of frameworks
·
Discuss the Do’s and
Don’ts of framework development
Description:
Frameworks are reusable
designs for an application or a subsystem expressed as a set of classes and the
way that instances of these classes collaborate. A framework describes not only
how to partition the responsibilities of a system among its components, but
also how to think about a problem. It is therefore not only a way to reuse
code, but a way to reuse design and analysis information, as well.
Frameworks are
difficult to design because they are abstract. Framework designers must look at
many concrete applications to ensure that the abstractions that they are
designing make sense. Frameworks are difficult to learn because the user of a
framework must adopt the collaborative model of the framework. It is usually not
possible to learn a framework one class at a time, but instead several classes
have to be learned together. Nevertheless, there is a great advantage to
learning a well-designed framework, and mature frameworks (like some of the
user interface frameworks) can provide order of magnitude increases in
programmer productivity.
This tutorial
teaches how to design frameworks. It describes what they are, describes an
example-driven iterative development process for designing them, and describes
a set of object-oriented design patterns and a set of transformations for
applying the design patterns. The design patterns and the set of
transformations (refactorings) are useful for making any object-oriented design
more flexible and reusable, but they are essential in framework design. The
tutorial also describes how to document a framework, and it covers a little bit
of topics like testing, scheduling. and performance tuning.
We've worked on
several different frameworks, and the examples used depend partly on our audience,
though we always use several frameworks as examples. Our examples include
technical computer science topics like code generation, file systems, and
virtual memory, more general interest topics like structured drawing editors
and user interface systems, and one application area: a framework for
accounting.
Who Should
Attend:
This course is recommended for object-oriented
designers and system developers, as well as systems analysts and project leaders;
specifically those who are creating reusable components and enterprise
frameworks to be used within their organizations. To complete the course
exercises, attendees should understand object-oriented programming concepts and
have some experience coding in Java, Smalltalk, or C++. It is also recommended that the attendees
should already understand Design Patterns, or have taken the Design Patterns
course.
The number of people that can attend this course is
25 maximum; though in practice smaller numbers lead to better interaction. We
customize the course every time we give it, and have different versions for Java,
C++, and Smalltalk audiences.
|