1 / 35

Framework Theory

Framework Theory. Product Line Reuse. Motivation. I have presented some design principles 3-1-2 process: encapsulate variation and delegate Compositional design it is better to reuse using delegation than inheritance let someone else do the dirty job

jadzia
Download Presentation

Framework Theory

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. Framework Theory Product Line Reuse Henrik Bærbak Christensen

  2. Motivation • I have presented some design principles • 3-1-2 process: encapsulate variation and delegate • Compositional design • it is better to reuse using delegation than inheritance • let someone else do the dirty job • Iterative and Incremental search for variability • supported by TDD • supported by refactoring • ... and on the way discovered some patterns Henrik Bærbak Christensen 2

  3. Abstracting [GoF] • What I have actually done is to show you the pieces that together form the puzzle called frameworks: • Framework: • A framework is a set of cooperating classes that make up a reusable design for a specific class of software. • Exercise: • Is the pay station a framework given this definition? • Argue why MiniDraw is a framework. Henrik Bærbak Christensen 3

  4. Framework Characteristics • A framework is characterized by • reuse of both design as well as executable code • reuse with a well defined domain • high reuse percentage (70-90%) • must be customized for customer’s particular need • Example: • HP printer software • Eclipse IDE plug-in architecture • CelciusTech C&C for ships • Java Swing Henrik Bærbak Christensen 4

  5. HotSpots… • ”Separate code that changes from • the code that doesn’t” • Hotspots: Code point where specialisation code can alter behaviour or add behaviour to a framework. • Also known as: • Hooks / hook methods • Variability point Henrik Bærbak Christensen 5

  6. Example • The pay station system has hotspots regarding • receipt type • rate policy • display output • weekend determination • but fixed behaviour concerning • coin types (payment options), numerical only display, only buy and cancel buttons, etc. • Domain: Pay stations • no reuse in the electronic warfare domain  Henrik Bærbak Christensen 6

  7. Other Definitions Framework is: reusable design of an application or subsystem represented by a set of abstract classes and the way objects in these classes collaborate [Ralph Johnson, OOPSLA 97] A framework is a set of cooperating classes that make up a reusable design for a specific class of software [GoF p. 26] A framework is the skeleton of an application that can be customized by an application developer [Fayad et al. §1] A framework defines a high-level language with which applications within a domain are created through specialization. [Fayad et al. §16] A partial design and implementation for an application in a given domain [Gurp & Bosch] Henrik Bærbak Christensen Henrik Bærbak Christensen 7

  8. Central aspects Skeleton / design / high-level language … provide behaviour on high level of abstraction: a design/skeleton/architecture Application/class of software … has a well defined domain where it provides behaviour Cooperating / collaborating classes … define and limit interaction patterns (protocol) between well defined roles Customize/abstract classes/reusable/specialize … can be tailored to a concrete context Classes/implementation/skeleton ... is reuse of code as well as reuse of design Henrik Bærbak Christensen Henrik Bærbak Christensen 8

  9. HotSpot Implementions Customization Techniques 9 Henrik Bærbak Christensen

  10. HotSpots • Exercise: List techniques to make the hotspots • Hint: Consider techniques used in • MiniDraw • Swing • Java RMI • Collection classes • Eclipse • C library sorting algorithms • Z80 interrupt vector handling • Assembler • Does a Framework require object-orientation? Henrik Bærbak Christensen 10

  11. Template Method The central OO pattern to separate frozen and hot code Henrik Bærbak Christensen

  12. Template Method • Intent (Original GoF statement) • Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. • Restatement • Some steps in the algorithm are fixed but some steps I would like to keep open for future modifications to the behaviour Henrik Bærbak Christensen 12

  13. GoF Structure The structure in GoF is a polymorphicvariant handling technique: Henrik Bærbak Christensen 13

  14. Analysis I have already intensively analyzed the inheritance based solution. But: Favour object composition over class inheritance Henrik Bærbak Christensen 14

  15. Exercise Rewrite the GoF structure to its compositional equivalent that is behavioural equivalent but follows the three principles of flexible design. Henrik Bærbak Christensen 15

  16. Exercise public void addPayment( int coinValue ) { switch ( coinValue ) { case 5: case 10: case 25: break; default: throw new IllegalCoinException("Invalid coin: "+coinValue+" cent."); } insertedSoFar += coinValue; _timeBought = rateStrategy.calculateTime(insertedSoFar); } Identify template method in the pay station: Henrik Bærbak Christensen 16

  17. Template Method Terminology The terms that we associate with the two ways of implementing Template Method: • Original: subclassing+override hook methods • New: interface implementation + delegate to hooks Henrik Bærbak Christensen Henrik Bærbak Christensen 17

  18. Inversion of Control Protocols in Frameworks

  19. Design and Code Reuse • “Cooperating / collaborating classes • … define and limit interaction patterns (protocol) between well defined roles” • Frameworks require users (=developers) to understand the interaction patterns between objects in the FW and their own customization objects. That is, understand the protocol. • Ex: Understand the editor↔tool protocol in MiniDraw • One TA tried to invoke activate on a tool (and ended with an infinite loop) • activate is a method called by MiniDraw when a tool is activated! Henrik Bærbak Christensen

  20. Where is the protocol? • So: The framework dictates the protocol! • The question is: How? Henrik Bærbak Christensen

  21. Protocol • The protocol arise because objects in the framework invokes methods on objects that are defined by you. • These methods/functions/procedures that are predefined by the framework to be ‘overridable’ or customizable are called hotspots. • A framework contains frozen code with embedded hotspots where your (unfrozen) code may be called. Henrik Bærbak Christensen

  22. Inversion of Control • Protocol is important in frameworks • Interaction patterns between roles, some implemented in frozen code (framework) and some in hot code (variability points/our code) • Template Method form the protocol skeleton • Fixed structure + hooks for steps to vary • Thus frameworks dictate the flow of control • Inversion of control Henrik Bærbak Christensen Henrik Bærbak Christensen 22

  23. Inversion of Control I call math.sin(x), but MiniDraw calls currentTool.mousePressed(x,y). Henrik Bærbak Christensen Henrik Bærbak Christensen 23

  24. Inversion of Control • Note: inversion of control is not a ’required’ characteristics of a framework in some author’s view • RMI is an example. The control inversion is difficult to spot... Henrik Bærbak Christensen Henrik Bærbak Christensen 24

  25. Another Case for Composition Henrik Bærbak Christensen

  26. Mixing Two Frameworks Based upon the inheritance based template method Henrik Bærbak Christensen 26

  27. Mixing Two Frameworks But it does work using compositional template method Henrik Bærbak Christensen 27

  28. Example from MiniDraw • The Swing developers haven’t read the book therefore there is no JPanelRole interface . However we can still combine the frameworks because MiniDraw expose all roles through interfaces Henrik Bærbak Christensen

  29. Framework Types

  30. Framework types What is Java Swing? What is Minidraw? Henrik Bærbak Christensen Henrik Bærbak Christensen 30

  31. Product Line Architectures Henrik Bærbak Christensen

  32. Software Engineering Institute • SEI in Pittsburgh • (associated with Carnegie Mellon University) Henrik Bærbak Christensen 32

  33. Analysis • Characteristics • software intensive system • common, managed, set of features • needs of particular market segment • developed from a common set of core assets • prescribed way • Exercise: Compare PayStation Henrik Bærbak Christensen 33

  34. Framework/Product Line • In my view the technical aspects of a product line is covered by the framework concept • A framework is a set of cooperating classes that make up a reusable design for a specific class of software. Henrik Bærbak Christensen 34

  35. Organisation Aspect • The organisation aspect, however, is important: • managed set of features • developed in a prescribed way • market segment Henrik Bærbak Christensen 35

More Related