1 / 35

Managing the Evolution of Reusable Assets

Managing the Evolution of Reusable Assets. Theo D’Hondt Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel. Activities. Conventional Software Engineering. Software Engineering 1975 A.D. Software Engineering 1985 A.D. Recent Insight. Engineering Techniques in Software….

dieter
Download Presentation

Managing the Evolution of Reusable Assets

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. Managing the Evolution of Reusable Assets Theo D’Hondt Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel

  2. Activities

  3. Conventional Software Engineering

  4. Software Engineering 1975 A.D.

  5. Software Engineering 1985 A.D.

  6. Recent Insight

  7. Engineering Techniques in Software… Modularity

  8. Modularity

  9. Engineering Techniques in Software… Reuse

  10. Reuse

  11. Software Engineering 1995 A.D.

  12. Development Method

  13. Reuse assets are the gold coins of software engineering. Legacy is the dirty word of software engineering.

  14. What can Go Wrong… • Arian 4 • well tested software • proven correctly • Arian 5 • reuse of pieces of Ariane 4 software • result: trivial error (floating point error), large consequences • What happened ? • changed flight specifications

  15. Our Example: Tape Management TapeManipulation Tape manipulates TapeManager accept(Tape) identification kvu associate(script) manages manipulate(Tape) register(Tape) transfer(Tape) • Tapes are manipulated • - adding scripts, visioning • Tapes are managed • - tracking, kvu checking

  16. Tape Components TapeManipulation Tape manipulates TapeManager accept(Tape) identification kvu associate(script) manages manipulate(Tape) register(Tape) transfer(Tape) Shipping-Receiving Traffic Visioning Technical Visioning receive(Tape) ship(Tape) location?(Tape) manipulate(Tape) manipulate(Tape) tape manipulation internal to visioning depends on kvu, script present, ...

  17. Technical Visioning Traffic Tape Composition Problem !

  18. Challenges: Impact Analysis Changing a method

  19. Example TapeManager TapeManager parent class change add(Tape) add(Tape) addAll(TapeSet) addAll(TapeSet) OOTVTapeManager OOTVTapeManager notify notify add(Tape) add(Tape) addAll(TapeSet) addAll(TapeSet) no notification

  20. Challenges: Proliferation of Versions • Application A • MyTapeManager • Tape • Repository • Tapemanager • Tapes • Application B • MyTape • Application C • XTapeManager Maintenance problem: version management Development problem: design for reuse

  21. ? Visioning manipulate(Tape) Challenges: Design for Reuse TapeManipulation TapeManager accept(Tape) manipulate(Tape) register(Tape) transfer(Tape) How to improve reusability? Traffic ... ... location?(Tape)

  22. Reuse Contracts Asset provider Asset reuser • declares what assump-tions can be made about the asset • declares how an asset can be reused • formally, non-coercively • declares what assumptions are made about the asset • declares how an asset is reused • formally,disciplined • rules for change propagation

  23. Contracts & Specialisation Clauses tm:TapeManager implementation will invoke transfer, manip… notify(...) 3.transfer [notify] 2.accept [manipulate, transfer] 4.transfer [accept] m:TapeManip… next:TapeManip… 1.accept accept(Tape) accept(Tape) manipulate(Tape) transfer(Tape) tape transfer contract Contracts declare the assumptions that can be made about a class and how a it can be reused.

  24. Evolution and Composition Changing a method

  25. Remember TapeManipulation Tape manipulates TapeManager accept(Tape) identification kvu associate(script) manages manipulate(Tape) register(Tape) transfer(Tape) Shipping-Receiving Traffic Visioning Technical Visioning receive(Tape) ship(Tape) location?(Tape) manipulate(Tape) manipulate(Tape) Composition Problem !

  26. Traffic Traffic Changing Assumptions Assumption made by reuser (before change) TapeManip.transfer [notify] Assumes What can be assumed (after composition or change) Actually gets TapeManip.transfer []

  27. BUT… TapeManager TapeManip.transfer [notify] …concrete parent class … Assumes Traffic notify(...) Too verbose Does not document how TapeManager is actually reused

  28. Declaring How a Class is Actually Reused TapeManager TapeManager documenting different kinds of reuse notify (...) notify (...) • Refinement • notify [+track] Traffic Traffic track track notify [track] notify [track]

  29. Different Kinds of Reuse • Assumption “preserving” • Concretisation: filling in the “hotspots” • Refinement: refining the overall design • Extension: adding new behaviour • Assumption “breaching” • Abstraction: generalisation • Coarsening: performance optimisation • Cancellation: fixes

  30. Estimating Impact of Changes • Coarsening • addAll [-add] TapeManager TapeManager add(Tape) add(Tape) addAll(TapeSet)[add] addAll(TapeSet) [] • Refinement • add [+notify] • Refinement • add [+notify] OOTVTapeManager OOTVTapeManager notify notify add(Tape) [notify] add(Tape) [notify] addAll(TapeSet) [add] addAll(TapeSet) [add] # addAll needs to be overridden too

  31. Estimating Composability tape transfer contract TapeManager TapeManipulation notify (...) transfer (Tape) [notify] • Refinement • notify [+track] • Coarsening • transfer [-notify] Traffic Technical Visioning track transfer (Tape) [] notify [track] # composition problem

  32. Reuse Contracts for Inheritance Asset provider Asset reuser TapeManager • Refinement • add […] add() addAll() [add] • formally • non-coercively • formally • disciplined • rules for detecting conflicts

  33. Conclusion • New style of software engineering • modularity  reuse objects • learn about the problem domain as you go along with projects • Challenges • supporting reuse • supporting evolution • Reuse Contracts • incrementally turn software artifacts in assets

More Related