Software AutomationMarch 1997 1 Managing the Evolution of Reusable Assets Theo D’Hondt Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel.

Slides:



Advertisements
Similar presentations
1 A Graph Rewriting Formalism for Object-Oriented Software Evolution Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije.
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
1 Reuse Contracts Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel WWW:
Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System modeling 2.
CS 211 Inheritance AAA.
Classes & Objects Computer Science I Last updated 9/30/10.
SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 5 Architecture-Driven Component Development.
Chapter 6: Design of Expert Systems
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
The Semantic Web Week 13 Module Website: Lecture: Knowledge Acquisition / Engineering Practical: Getting to know.
1 Software Testing and Quality Assurance Lecture 28 – Testing Class Hierarchies.
7M822 Software Engineering: System Models 14 September 2009.
Building software from reusable components.
Reuse Basic concepts. Rationale for reuse  Save calendar time  Save person hours  Reduce process risk  Increased quality  Standards compliance.
Design Patterns.
Software Engineering Reuse.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 2.
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
Cybersecurity: Engineering a Secure Information Technology Organization, 1st Edition Chapter 7 Software Supporting Processes and Software Reuse.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Yu SunUniversity of Alabama at Birmingham PAR Works Jeff Gray University of Alabama Montpellier, France July 3rd, 2013 This research is supported.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
02/10/2015 Page 1 R. Theeuws Siemens Atea Filename: CBD_ervaring Werkgroep Component Based Developments Ervaring CBD.
Forte Seminar, April Reusable Components Ready for Distribution Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel
SOFTWARE REUSABILITY AJAYINDER SINGH CSC What is Software Reuse Software reuse is the process of implementing or updating software systems using.
©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions.
Chapter 7 System models.
System models l Abstract descriptions of systems whose requirements are being analysed.
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
Software Engineering. Introduction Objective To familiarize students to the fundamental concepts, techniques, processes, methods and tools of Software.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
A Formal Model for Object-Oriented Software Reuse Kim Mens Programming Technology Lab Vrije Universiteit Brussel FNRS MeetingMay 6th, 1997.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Developing Product Line Components Jan Bosch Professor of Software Engineering University of Groningen, Netherlands
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2000 Lecture # 2 - September 14, 2004.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
February 2000Programming Technology Lab, Vrije Universiteit Brussel Reuse Contracts Managing the evolution of reusable components Dr. Tom Mens Programming.
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology.
October 19, 1998Doctoral Symposium OOPSLA’98 Kim Mens Intentional annotations for evolving object-oriented software Kim Mens Programming Technology Lab.
2000 Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel.
4 June 1998, Mulhouse, France > ‘98 International Workshop Tom Mens Carine Lucas & Patrick Steyaert Programming Technology.
Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine Lucas Programming Technology Lab, Vrije Universiteit Brussel.
A Formalism for Transformational Software Evolution Programming Technology Lab Vrije Universiteit Brussel, Belgium Tom Mens
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
August 1997 Carine Lucas 1 Documenting Reuse and Evolution with Reuse Contracts Carine Lucas August 1997.
A Method for Improving Code Reuse System Prasanthi.S.
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Chapter 17 - Component-based software engineering
Chapter 18 Maintaining Information Systems
Section 8 Discussion Points
Chapter 6: Design of Expert Systems
Abstract descriptions of systems whose requirements are being analysed
Designing Software for Ease of Extension and Contraction
A Declarative Evolution Framework for Object-Oriented Design Patterns
Logical architecture refinement
OOP vs Structured Programming
Effort Estimation for Changing Requirements
Fundaments of Game Design
A Methodology for the Documentation and Management of Reusable Assets
Reuse Contracts: Managing the Evolution of Reusable Assets
Chapter 17 - Component-based software engineering
Model-based Adaptation for Self-Healing Systems David Garlan, Bradley Schmert ELSEVIER Sciences of Computer Programming 57 (2005) 이경렬
Presentation transcript:

Software AutomationMarch Managing the Evolution of Reusable Assets Theo D’Hondt Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel

Software AutomationMarch Activities

Software AutomationMarch Conventional Software Engineering

Software AutomationMarch Software Engineering 1975 A.D.

Software AutomationMarch Software Engineering 1985 A.D.

Software AutomationMarch Recent Insight

Software AutomationMarch Engineering Techniques in Software… Modularity

Software AutomationMarch Modularity

Software AutomationMarch Engineering Techniques in Software… Reuse

Software AutomationMarch Reuse

Software AutomationMarch Software Engineering 1995 A.D.

Software AutomationMarch Development Method

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

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

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

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

Software AutomationMarch Composition Problem ! Traffic Technical Visioning Tape

Software AutomationMarch Challenges: Impact Analysis Changing a method

Software AutomationMarch Example TapeManager add(Tape) addAll(TapeSet) OOTVTapeManager add(Tape) TapeManager addAll(TapeSet) add(Tape) addAll(TapeSet) OOTVTapeManager add(Tape) addAll(TapeSet) no notification notify parent class change

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

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

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

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

Software AutomationMarch Evolution and Composition Changing a method

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

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

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

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

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

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

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

Software AutomationMarch Reuse Contracts for Inheritance Asset reuser Asset provider 3 rules for detecting conflicts TapeManager add() addAll() [add] Refinement  add […] 3 formally 3 non-coercively 3 formally 3 disciplined

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