1 / 16

Frameworks

Understand the concept of frameworks in software engineering for creating reusable architecture and components that support a family of related applications. Learn about patterns, component integration, and key principles for successful framework development.

whyde
Download Presentation

Frameworks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Frameworks A Brief Introduction CSE870: Advanced Software Engineering: Frameworks (Cheng)

  2. Assigned Reading • Designing Reusable Classes: Johnson and Foote (JOOP88) • Original Frameworks paper • Gives guidelines for creating frameworks • Motivates frameworks • See Handouts and Links web page CSE870: Advanced Software Engineering: Frameworks (Cheng)

  3. Framework • Support reuse of detailed designs • An integrated set of components: • Collaborate to provide reusable architecture for • Family of related applications CSE870: Advanced Software Engineering: Frameworks (Cheng)

  4. Frameworks • Frameworks are semi-complete applications • Complete applications are developed by inheriting from, and • Instantiating parameterized framework components • Frameworks provide domain-specific functionality • Ex.: business, telecommunication, dbases, distributed, OS kernels • Frameworks exhibit inversion of control at run-time • Framework determines which objects and methods to invoke in response to events CSE870: Advanced Software Engineering: Frameworks (Cheng)

  5. Class Libraries vs Frameworks vs Patterns • Application • Specific • Logic Networking • Definition: • Class Libraries: • Self-contained, • Pluggable ADTs • Frameworks: • Reusable, semi-complete applications • Patterns: • Problem, solution, context Invokes ADTs Math Event Loop UI Dbase Class Library Architecture Math Networking UI Invokes Application Specific Logic Call Backs ADTs Event Loop Dbase Framework Architecture CSE870: Advanced Software Engineering: Frameworks (Cheng)

  6. Component Integration in Frameworks • Framework components are loosely coupled via “callbacks” • Callbacks allow independently developed software to be connected together • Callbacks provide a connection-point • Generic framework objects communicate with application objects • Framework provides common template methods • Application provides the variant hook methods CSE870: Advanced Software Engineering: Frameworks (Cheng)

  7. Patterns vs Frameworks • Patterns and frameworks play complementary, cooperative roles • Patterns are more abstract descriptions of frameworks • Frameworks are implemented in specific language • Complex frameworks may involve dozens of patterns • Patterns may document frameworks CSE870: Advanced Software Engineering: Frameworks (Cheng)

  8. GUI Framework • Model/View/Controller (MVC): • Smalltalk-80 UI framework • UI: 3 types of components: • models, views, controllers • view and controller objects interacting with model • Model: application object, UI-independent • View: manages region of display • Keeps it consistent with state of model • Can be nested to form complex UIs • Controller: converts user events (e.g., mouse movements and key presses) into operations on its model and view • Implement scrolling and menus CSE870: Advanced Software Engineering: Frameworks (Cheng)

  9. Example MVC • Model: FileBrowser • Views: • Top subview: String that is Pattern that matches set of files (e.g., *.h) • Middle subview: displays list of files that match pattern (e.g., Node.h, Int_node.h, etc.) • Bottom Subview: displays selected file • TextView (Top and Bottom subviews) • SelectionInListView: (Middle subview) • Controller: • Controller for each view • Mouse move from subview, activating different views CSE870: Advanced Software Engineering: Frameworks (Cheng)

  10. Variations of MVC Framework • MacApp (Macintosh applications) • Andrew Toolkit (CMU 88) • InterViews (Stanford 89) • Commercial: • zApp (OS-independent) • OpenStep (part of much bigger, comprehensive system) • Microsoft Foundation Classes CSE870: Advanced Software Engineering: Frameworks (Cheng)

  11. Key Principles How to develop successful patterns and frameworks • Separate interface from implementation • Determine what is • Common interface and (common -> stable) • Variable implementation • Allow substitutions for variable implementations via a common interface Dividing commonality from variability should be goal-oriented rather than exhaustive CSE870: Advanced Software Engineering: Frameworks (Cheng)

  12. Open/Closed Principle • Determining common vs variable components is important • Insufficient variation makes it hard for users to customize framework components • Insufficient commonality makes it hard for users to understand and depend upon framework’s behavior • Generally, dependency should always be in the direction of stability • Component should not depend on any component less stable than itself • Open/Closed Principle: • Allows most stable components to be extensible CSE870: Advanced Software Engineering: Frameworks (Cheng)

  13. Open/Closed Principle • Components should be: • Open for extension • Closed for modification • Implications: • Abstraction is good • Inheritance and polymorphism are good • Public data members and global data are bad • Run-time type identification can be bad CSE870: Advanced Software Engineering: Frameworks (Cheng)

  14. Violating Open/Closed Principle Struct Shape {/* . . . */}; Class Square : public Shape { /* . . . */} Class Circle : public Shape { /* . . . */} void draw_square {const Square &); void draw_circle {const Circle &); void draw_shape (const Shape &shape) { switch (shape.shapeType) { case SQUARE: draw Square ((const Square &) shape); break; case CIRCLE: draw Circle ((const Square &) shape); break; // etc. CSE870: Advanced Software Engineering: Frameworks (Cheng)

  15. Applying Open/Closed Principle class Shape { public: virtual void draw () const = 0; }; void draw all (const Shape &shape){ shape.draw (); } CSE870: Advanced Software Engineering: Frameworks (Cheng)

  16. Observations of Frameworks • Benefits of frameworks: • Enable direct reuse of code • Enable larger amounts of reuse than standalone functions or individual classes • Drawbacks: • High initial learning curve • Many classes, many levels of abstraction • Flow of control for reactive dispatching is non-intuitive • Verification/validation of generic components is hard CSE870: Advanced Software Engineering: Frameworks (Cheng)

More Related