Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp.

Slides:



Advertisements
Similar presentations
REST Introduction 吴海生 博克软件(杭州)有限公司.
Advertisements

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
Page 1 Building Reliable Component-based Systems Chapter 7 - Role-Based Component Engineering Chapter 7 Role-Based Component Engineering.
NJIT More GRASP Patterns Chapter 22 Applying UML and Patterns Craig Larman Prepared By: Krishnendu Banerjee.
1 Copyright © 1998 JVOPS & Conduits+ Framework. 2 Copyright © 1998 Conduits+ The implementation of a software protocol is not a trivial task. One design.
Chapter 22 Object-Oriented Design
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
CCSDS Message Bus Comparison Shames, Barkley, Burleigh, Cooper, Haddow 28 Oct 2010.
SOA, BPM, BPEL, jBPM.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
MVC pattern and implementation in java
Design Patterns.
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Review: – computer networks – topology: pair-wise connection, point-to-point networks and broadcast networks – switching techniques packet switching and.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
CSE 303 – Software Design and Architecture
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Supporting Heterogeneous Users in Collaborative Virtual Environments using AOP CoopIS 2001 September 5-7, Trento, Italy M. Pinto, M. Amor, L. Fuentes,
What is Service Oriented Architecture ? CS409 Application Services Even Semester 2007.
International Telecommunication Union Geneva, 9(pm)-10 February 2009 ITU-T Security Standardization on Mobile Web Services Lee, Jae Seung Special Fellow,
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Requirements To Design--Iteratively Chapter 12 Applying UML and Patterns Craig Larman.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Service Oriented Architecture (SOA) at NIH Bill Jones
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Patterns and Reuse. Patterns Reuse of Analysis and Design.
TCOM 509 – Internet Protocols (TCP/IP) Lecture 03_b Protocol Layering Instructor: Dr. Li-Chuan Chen Date: 09/15/2003 Based in part upon slides of Prof.
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Object Oriented.
1-1 C Sc 335 Course Overview Object-Oriented Programming and Design Rick Mercer.
Chris Kuruppu NWS Office of Science and Technology Systems Engineering Center (Skjei Telecom) 10/6/09.
GRASP: Designing Objects with Responsibilities
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Refactoring for Testability (or how I learned to stop worrying and love failing tests) Presented by Aaron Evans.
Service Oriented Architecture CCT355H5 Professor Michael Jones Suezan Makkar.
Object-Oriented Analysis and Design. Lesson 1: Introduction to Software Engineering.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Part VII: Design Continuous
CORBA1 Distributed Software Systems Any software system can be physically distributed By distributed coupling we get the following:  Improved performance.
Copyright SOLINET GmbH SDL & Requirements of Signalling Systems William H. Skelton SOLINET, Stuttgart.
Introducing Allors Applications, Tools & Platform.
Future Work  Formal specification of modeling language semantic is key issue  Reliance on well-established formal models of computation (i.e. finite.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
Design Patterns Software Engineering CS 561. Last Time Introduced design patterns Abstraction-Occurrence General Hierarchy Player-Role.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Developing Product Line Components Jan Bosch Professor of Software Engineering University of Groningen, Netherlands
Finite State Machines (FSM) OR Finite State Automation (FSA) - are models of the behaviors of a system or a complex object, with a limited number of defined.
Advanced Object-oriented Design Patterns Creational Design Patterns.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 15. Review Interaction-Oriented Software Architectures – MVC.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Copyright © 2004, Keith D Swenson, All Rights Reserved. OASIS Asynchronous Service Access Protocol (ASAP) Tutorial Overview, OASIS ASAP TC May 4, 2004.
Object- oriented Design Principles
CSE331: Introduction to Networks and Security Lecture 2 Fall 2002.
Computer Networking A Top-Down Approach Featuring the Internet Introduction Jaypee Institute of Information Technology.
Design Patterns: MORE Examples
Introduction to Design Patterns
SOA (Service Oriented Architecture)
Complexity Time: 2 Hours.
Object Oriented Design Patterns - Structural Patterns
Design Patterns Imran Rashid CTO at ManiWeber Technologies.
Computer Networking A Top-Down Approach Featuring the Internet
Chapter 8, Design Patterns Introduction
Dependency Inversion principle
ONAP Architecture Principle Review
Presentation transcript:

Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp

Thanks Axis Communications: Torbjörn Söderberg, Per Flock Ericsson Mobile Applications Lab: Magnus Oestvall Jan Bosch (supervisor), Jelte Jansons (Opponent) Jan Mark de Haan, Matthew Kenrick, Jeroen Kolner for proofreading

Contents Introduction Composition & Evolution Communication Protocols Enhanced State Pattern Evaluation & Results

Introduction Framework: a partial design and implementation for an application in a given domain. Framework Composition: Multiple frameworks are used in an application Framework Evolution: Changes that are made to a framework during its ‘Life’

Framework

Problems Applications depend on a framework  changing the framework affects applications Frameworks make assumptions about the applications they’re used in  these assumptions clash if more than one FW is used.

Research question How can Frameworks be designed in such a way that composition and evolution problems are prevented. How can frameworks in the domain of communication protocols be designed in such a way that evolution and composition problems are prevented

Methodology Analysis: how should frameworks in general be developed  a set of guidelines Analysis of communication protocols  problems A solution for problems in communication protocol frameworks Evaluation

Frameworks Whitebox Frameworks –interfaces –abstract classes Blackbox Frameworks –components

Composition Problems Two frameworks assume to be in control of the application Overlap in functionality Gap in functionality Framework has to work with legacy component

Evolution Problems The framework will change over time –Applications have to change too –Framework design is endangered Frameworks are often complex –Hard to change –Hard to use

Evolution problems (2) Frameworks often have poor documentation Frameworks have implicit usage rules

Consequences Change is avoided (to protect existing applications) Framework is used in the wrong way (resulting in errors, more maintenance work) Internal framework structure erodes over time

Guidelines 18 guidelines Four categories –Process –Design –Component –Implementation

Important guidelines Don’t put too much functionality in a FW, specialise the framework. Try too achieve loose coupling between components Make blackbox configuration easy

Communication Protocols Examples: IP, TCP, FTP, HTTP Work together in Protocol Stack

ISO OSI

Protocol Frameworks x-kernel Conduits/Conduits +/Java Conduits Axis’ Network Protocol Framework

x-kernel Object based, implemented in C High modularity High performance

Axis Network Protocol Framework Based on conduits and own frameworks Trades flexibility for performance

Conduits Object Oriented Very flexible (partly because of the extensive use of design patterns) Conduit: a natural or artificial channel through which something (as a fluid) is conveyed (Webster)

Plumbing 4 types of Conduits –Adaptor –Protocol/Session –Mux –Conduit Factory

A Conduit graph

Benefits of Conduits Blackbox protocol stack configuration Highly object oriented Automated data transport through stack Session management Scalable through the use of threads

Disadvantages Does not support building protocols very much Object orientation has a performance price

Conduits & guidelines Conduits addresses two domains –protocol stack configuration –protocol implementation Loose coupling Blackbox configuration

Implementing a Protocol Protocols can be represented as Finite State Machines Conduits provides the State Pattern to implement protocols

State Pattern a state machine

An example

Problems with the state pattern Complex implementation Hard to maintain implementations

Possible causes State pattern does not support all FSM concepts (states, input/output events, transitions, behavior) –states, transitions, events and behavior are put in a single State class No blackbox way of building a FSM –you have to inherit from base classes

Finite State Machine Instantiation Necessary when the same FW is needed more than once in a system Example: –TCP can have thousands of connections at the same time. –Each connection has it’s own FSM Not all objects have to be replicated

An alternative solution

An example T SS A Context E

Advantages Blackbox configuration More support for FSM concepts Easier to maintain More reuse possibilities

Implementation Blackbox framework for FSMs –object representation of FSM concepts Configuration tool –uses xml specification –separates behavior from control flow.

Results Guidelines Analysis of existing frameworks Enhanced State Pattern Implementation Small Evaluation of guideline usage and effectiveness in implementation