SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson...

18
SERL - Software Engineering Research Lab slide1 Frameworks and Hooks Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

Transcript of SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson...

Page 1: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide1

Frameworks and HooksFrameworks and Hooksby

Garry FroehlichPaul Sorenson

SERL (Software Engineering Research Lab)

Page 2: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide2

Software ReuseSoftware Reuse

Software reuse is the process of creating Software reuse is the process of creating software systems from existing software software systems from existing software systems. (Krueger, 1992)systems. (Krueger, 1992)

High level languagesHigh level languages Code scavengingCode scavenging Code componentsCode components Design patternsDesign patterns Object-oriented frameworksObject-oriented frameworks Application generatorsApplication generators

Page 3: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide3

Object-Oriented Object-Oriented FrameworksFrameworks

The reusable design of The reusable design of a system or subsystem a system or subsystem implemented through implemented through a set of classes and a set of classes and their collaborations.their collaborations.

Users complete or Users complete or extend the framework extend the framework by adding or by adding or customizing customizing application specific application specific components to components to produce an application.produce an application.

Framework

ApplicationComponents

Page 4: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide4

Users and Developers of Users and Developers of FrameworksFrameworks

There are three main roles associated There are three main roles associated with frameworks:with frameworks:– Framework designersFramework designers, also called framework , also called framework

developers or framework builders, develop developers or framework builders, develop the original frameworkthe original framework

– Framework usersFramework users, also called framework , also called framework clients or application developers, use the clients or application developers, use the framework to develop applications.framework to develop applications.

– Framework maintainersFramework maintainers refine and redevelop refine and redevelop the framework to fit new requirements.the framework to fit new requirements.

Page 5: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide5

Framework DesignFramework Design

Frameworks differ from applicationsFrameworks differ from applications– the the level of abstractionlevel of abstraction is different as is different as

frameworks provide a solution for a family of frameworks provide a solution for a family of related problems, rather than a single one.related problems, rather than a single one.

– to accommodate the family of problems, the to accommodate the family of problems, the framework is framework is incompleteincomplete, incorporating , incorporating hot hot spotsspots and and hookshooks to allow customization to allow customization

Frameworks must be designed for Frameworks must be designed for flexibility, extensibility, completeness flexibility, extensibility, completeness and ease of use.and ease of use.

Page 6: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide6

HotDraw OverviewHotDraw Overview

A framework for A framework for developing structured developing structured graphical editors.graphical editors.

Smalltalk version Smalltalk version maintained by Ralf maintained by Ralf Johnson’s group at Johnson’s group at the University of the University of Illinois.Illinois.

Page 7: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide7

HotDraw FrameworkHotDraw Framework

ToolDrawing

Controller

Figure

CompositeFigure

Drawing View

HandleRectangleFigure

ArrowFigure

Drawing

Page 8: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide8

Hot Spots and HooksHot Spots and Hooks Frozen SpotsFrozen Spots: :

capture the capture the commonalties across commonalties across applications.applications.

Hot SpotsHot Spots: general : general areas of variability areas of variability within a framework.within a framework.

HooksHooks: specific ways : specific ways in which a framework in which a framework can be customized.can be customized.

Tool

DrawingController

Select Tool New ToolNew Tool

Type

Page 9: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide9

RCIM Graphical DisplayRCIM Graphical Display

Figure

CompositeFigure

HandleRectangleFigure

TextFigure

Drawing

RCIMDrawing

RCIMFigure

LayoutManager

Page 10: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide10

Framework UseFramework Use A framework is chosen to match the A framework is chosen to match the

application requirements.application requirements. Framework users must Framework users must learnlearn the framework the framework

before they can develop an application from before they can develop an application from it.it.

The application design has to The application design has to conformconform to the to the concepts provided by the framework. Users concepts provided by the framework. Users build extensions to the framework.build extensions to the framework.

Multiple frameworks can be used in a single Multiple frameworks can be used in a single application, but there may be application, but there may be gapsgaps or or overlapoverlap in the functionality they provide.in the functionality they provide.

Page 11: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide11

Learning to Use the Learning to Use the FrameworkFramework

Frameworks can be difficult to learn so a means Frameworks can be difficult to learn so a means of lowering the learning curve is needed.of lowering the learning curve is needed.– Tutorial sessionsTutorial sessions can be held to allow the framework can be held to allow the framework

builders to show users what can be done with the builders to show users what can be done with the framework.framework.

– ToolsTools can be used to investigate the operation of the can be used to investigate the operation of the framework and to allow the use of the hooks without framework and to allow the use of the hooks without learning the whole framework.learning the whole framework.

– DocumentationDocumentation can describe the design and can describe the design and intended use of the framework, and provide intended use of the framework, and provide examples of use.examples of use.

Page 12: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide12

Framework ExperienceFramework Experience

EAF (Engineering Application Framework)EAF (Engineering Application Framework)and Prothos (e-commerce framework)and Prothos (e-commerce framework)- see - see www.avrasoft.comwww.avrasoft.com

CSF - Client Server FrameworkCSF - Client Server Framework - - see see www.cs.ualberta.ca/~garry/framework/www.cs.ualberta.ca/~garry/framework/

Sandwich - Personal Proxy Assistant Framework Sandwich - Personal Proxy Assistant Framework

Framework developments we have been involved in:

Page 13: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide13

Framework EvolutionFramework Evolution

Framework evolution might be categorized Framework evolution might be categorized as anything beyond as anything beyond use as-isuse as-is and and completioncompletion..

Refactorings can be used to restructure the Refactorings can be used to restructure the framework while preserving its behavior.framework while preserving its behavior.

Design patterns can be applied to make the Design patterns can be applied to make the framework more flexible.framework more flexible.

What happens to applications when What happens to applications when frameworks evolve?frameworks evolve?

Page 14: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide14

Framework BenefitsFramework Benefits

Reusable implementation and design Reusable implementation and design that captures the expertise of that captures the expertise of developers within a domain.developers within a domain.

The framework should have a quality The framework should have a quality design which will be ‘inherited’ by design which will be ‘inherited’ by applications.applications.

Decreased development time.Decreased development time. Reduced maintenance costs from Reduced maintenance costs from

maintaining a common code base.maintaining a common code base.

Page 15: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide15

Framework ConcernsFramework Concerns Building a framework requires Building a framework requires more more

resourcesresources than building a single application. than building a single application. When a framework evolves, all applications When a framework evolves, all applications

built from the framework are built from the framework are affectedaffected.. A complex framework can take a significant A complex framework can take a significant

amount of amount of time to learntime to learn before it can be used before it can be used effectively.effectively.

It isn’t always easy to determine if the It isn’t always easy to determine if the framework is framework is compatiblecompatible with the desired with the desired application.application.

Page 16: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide16

Research IssuesResearch Issues What constitutes framework What constitutes framework breakagebreakage and what and what

are the issues related to are the issues related to evolvabilityevolvability? (Role of ? (Role of design patterns)design patterns)

How are frameworks most effectively learned?How are frameworks most effectively learned? Creating of tools in support of framework use - in Creating of tools in support of framework use - in

particular particular HookMasterHookMaster.. Exploring the use of Exploring the use of experience basesexperience bases in in

conjunction with framework development, use and conjunction with framework development, use and evolution. evolution. (FrameScan study)(FrameScan study)

Continuing to build new frameworks to understand Continuing to build new frameworks to understand the issues better.the issues better.

Page 17: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide17

ConclusionConclusion

An object-oriented framework is the An object-oriented framework is the reusable design and implementation of reusable design and implementation of a system or subsystem.a system or subsystem.

Frameworks are meant to help solve a Frameworks are meant to help solve a set of related problems through set of related problems through design design reusereuse..

Design patterns are proven solutions to Design patterns are proven solutions to common design problems and can be common design problems and can be used to build frameworks.used to build frameworks.

Page 18: SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)

SERL - Software Engineering Research Lab

slide18

Potential Collaborative Potential Collaborative WorkWork

““Integration” framework.Integration” framework. Identifying “hotspots” in current Identifying “hotspots” in current

customizations => use cases for customizations => use cases for framework development and evolutionframework development and evolution

Use of reengineering tools to assist in Use of reengineering tools to assist in better understanding of the existing better understanding of the existing code base.code base.

Process and quality issues??Process and quality issues??