Benefits & Limitations of Patterns & Frameworks: Part 1 Douglas C. Schmidt Professor of Computer.

Slides:



Advertisements
Similar presentations
Object-Oriented Application Frameworks Much of the cost and effort stems from the continuous re- discovery and re-invention of core concepts and components.
Advertisements

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering September 12, 2001 Capturing.
Mapping Studies – Why and How Andy Burn. Resources The idea of employing evidence-based practices in software engineering was proposed in (Kitchenham.
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
CS590L - Lecture 6 1 CS590L Distributed Component Architecture References: - E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of.
Presented by: Thabet Kacem Spring Outline Contributions Introduction Proposed Approach Related Work Reconception of ADLs XTEAM Tool Chain Discussion.
Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
Requirements Analysis 5. 1 CASE b505.ppt © Copyright De Montfort University 2000 All Rights Reserved INFO2005 Requirements Analysis CASE Computer.
SE 555 Software Requirements & Specification Requirements Management.
Copyright © Active Frameworks, Inc.. - All Rights Reserved - V2.0 Introduction - Page L1-1 PS95&96-MEF-L1-1 Dr. M.E. Fayad Creationa l Paradigm.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
Mastering OOA/OOD with UML. Contents Introduction Requirements Overview OOAOOD.
Course Instructor: Aisha Azeem
Understanding of Automation Framework A Storehouse of Vast Knowledge on Software Testing and Quality Assurance.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Information Technology Audit
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Appendix 2 Automated Tools for Systems Development © 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 2 Slide 1.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
An Introduction to Software Architecture
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
Design Patterns: Introduction. Creational Design Patterns General and reusable solutions to common problems in software design Software University
RUP Design RUP Artifacts and Deliverables
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Implementing Architectures Software Architecture.
CS291 Software Design Studio Dr. Douglas C. Schmidt Professor of EECS Vanderbilt University.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
Design Patterns. Patterns “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
R R R 1 Frameworks III Practical Issues. R R R 2 How to use Application Frameworks Application developed with Framework has 3 parts: –framework –concrete.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Track 1: Summary Slides for POSA2 Patterns and Frameworks Distributed Real-Time Systems (TI-DRTS) Version:
Patterns and Reuse. Patterns Reuse of Analysis and Design.
E81 CSE 532S: Advanced Multi-Paradigm Software Development Venkita Subramonian, Christopher Gill, Guandong Wang, Zhenning Hu, Zhenghui Xie Department of.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
1 Introduction to Software Engineering Lecture 1.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
DESIGN PATTERNS CSC532 Adv. Topics in Software Engineering Shirin A. Lakhani.
Explore Patterns in Context-Aware Applications --Using Reactor Pattern to Develop In/Out Board Fall 2002 Yu Du.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Design Patterns Introduction General and reusable solutions to common problems in software design SoftUni Team Software University
1 A Brief Introduction to Design Patterns Based on materials from Doug Schmidt 1.
Frameworks CompSci 230 S Software Construction.
ANKITHA CHOWDARY GARAPATI
Capturing and Reusing Functional and Non-functional Requirements Knowledge: A Goal-Object Pattern Approach Lawrence Chung and Sam Supakkul The University.
Repurpose, Compose, Profit— Next Generation SOA Infrastructure William Cox Cox Software Architects LLC Copyright 2008.
Architectural pattern: Reactor Source: POSA II pp 179 – 214POSA II Environment: an application that receives multiple requests simultaneously but may process.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software.
Quality Assurance in the Presence of Variability Kim Lauenroth, Andreas Metzger, Klaus Pohl Institute for Computer Science and Business Information Systems.
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.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
L’origine dei mali: le dipendenze tra componenti Stefano Leli 14° Workshop DotNetMarche Venerdì 16 aprile
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Design Patterns: Brief Examples
A Brief Introduction to Design Patterns
Introduction to Design Patterns
Lecture 17 ATAM Team Expertise
Model-Driven Analysis Frameworks for Embedded Systems
Implementing Architectures
From Use Cases to Implementation
Presentation transcript:

Benefits & Limitations of Patterns & Frameworks: Part 1 Douglas C. Schmidt Professor of Computer Science Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 2 Topics Covered in this Part of the Module Summarize the benefits & limitations of patterns

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 3 Benefits of Patterns (1) SELECT-BASED REACTOR (2) POLL-BASED REACTOR See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/Reactor2-93.pdf Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 4 Benefits of Patterns (1) SELECT-BASED REACTOR Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Handle owns dispatches * notifies * * handle set Event Handler handle_event() get_handle () Concrete Event Handler A handle_event() get_handle() Concrete Event Handler B handle_event() get_handle() > select() Synchronous Event Demuxer Reactor handle_events() register_handler() remove_handler() See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/Reactor.pdf

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 5 Benefits of Patterns Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Record engineering tradeoffs & design alternatives to enhance development & sustainment

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 6 Benefits of Patterns Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Record engineering tradeoffs & design alternatives to enhance development & sustainment Half-Sync/ Half-Async model Leader/ Followers model See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/OM-01.pdf See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/OM-01.pdf

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 7 Benefits of Patterns Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Record engineering tradeoffs & design alternatives to enhance development & sustainment Enable a shared design vocabulary that enhances understanding, (re)engineering effort, & team communication See for morewww.dre.vanderbilt.edu/~schmidt/corba-research-design.html See for morewww.dre.vanderbilt.edu/~schmidt/corba-research-design.html

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 8 Benefits of Patterns Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Record engineering tradeoffs & design alternatives to enhance development & sustainment Enable a shared design vocabulary that enhances understanding, (re)engineering effort, & team communication Provide a basis for automation See for more infowww.dre.vanderbilt.edu/~schmidt/GEI.pdf

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 9 Benefits of Patterns Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Record engineering tradeoffs & design alternatives to enhance development & sustainment Enable a shared design vocabulary that enhances understanding, (re)engineering effort, & team communication Provide a basis for automation Transcend language-centric biases

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 10 Benefits of Patterns Capture & abstract recurring software roles & relationships to facilitate systematic reuse of successful designs Record engineering tradeoffs & design alternatives to enhance development & sustainment Enable a shared design vocabulary that enhances understanding, (re)engineering effort, & team communication Provide a basis for automation Transcend language-centric biases Abstract away from non-essential implementation details e.g., during the design phase Handle owns dispatches * notifies * * handle set Event Handler handle_event () get_handle() Concrete Event Handler A handle_event () get_handle() Concrete Event Handler B handle_event () get_handle() > select () Synchronous Event Demuxer Reactor handle_events() register_handler() remove_handler()

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 11 Limitations of Patterns Significant tedious & error-prone human effort may be needed to implement patterns manually Handle uses demultiplexes * * Handle Set handle_events() deactivate_handle() reactivate_handle() select() Event Handler handle_event () get_handle() Concrete Event Handler B handle_event () get_handle() Concrete Event Handler A handle_event () get_handle() Thread Pool join() promote_new_leader() synchronizer See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/LF.pdf Leader/ Followers pattern

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 12 Limitations of Patterns Significant tedious & error-prone human effort may be needed to implement patterns manually Shared design vocabulary can be deceptively simple

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 13 Limitations of Patterns Significant tedious & error-prone human effort may be needed to implement patterns manually Shared design vocabulary can be deceptively simple Limited knowledge of patterns can constrain design options

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 14 Limitations of Patterns Significant tedious & error-prone human effort may be needed to implement patterns manually Shared design vocabulary can be deceptively simple Limited knowledge of patterns can constrain design options Essential implementation & optimization details may be neglected e.g., edge-triggered vs. level- triggered event demuxers Handle owns dispatches * notifies * * handle set Event Handler handle_event () get_handle() Concrete Event Handler A handle_event () get_handle() Concrete Event Handler B handle_event () get_handle() > select () Synchronous Event Demuxer Reactor handle_events() register_handler() remove_handler() See en.wikipedia.org/wiki/Epoll for more info on epoll()en.wikipedia.org/wiki/Epoll

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 15 Limitations of Patterns Significant tedious & error-prone human effort may be needed to implement patterns manually Shared design vocabulary can be deceptively simple Limited knowledge of patterns can constrain design options Essential implementation & optimization details may be neglected Not all patterns are applicable to non-object-oriented languages Nor are they always applicable in the same way

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 16 Summary The goal of patterns is not to replace developer creativity with rote application of rigid design rules & coding laws

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 17 Summary The goal of patterns is not to replace developer creativity with rote application of rigid design rules & coding laws Nor is the goal to replace humans with automated tools

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 18 Summary The goal of patterns is not to replace developer creativity with rote application of rigid design rules & coding laws Nor is the goal to replace humans with automated tools Instead, the goal is to codify important human insights & experience associated with developing software

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 19 Summary The goal of patterns is not to replace developer creativity with rote application of rigid design rules & coding laws Nor is the goal to replace humans with automated tools Instead, the goal is to codify important human insights & experience associated with developing software Good patterns arise by generalizing from practical experience See for more infowww.dre.vanderbilt.edu/~schmidt/patterns-experience.html

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 20 Summary The goal of patterns is not to replace developer creativity with rote application of rigid design rules & coding laws Nor is the goal to replace humans with automated tools Instead, the goal is to codify important human insights & experience associated with developing software Good patterns arise by generalizing from practical experience Addressing key limitations of patterns requires more than just design reuse

Benefits & Limitations of Patterns & Frameworks: Part 2 Douglas C. Schmidt Professor of Computer Science Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 22 Topics Covered in this Part of the Module Summarize the benefits & limitations of patterns Summarize the benefits & limitations of frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 23 Benefits of Frameworks Design reuse e.g., by guiding app developers thru steps needed to ensure successful creation & deployment of software See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/ORB-patterns.pdf See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/ORB-patterns.pdf

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 24 Benefits of Frameworks Design reuse e.g., by guiding app developers thru steps needed to ensure successful creation & deployment of software Implementation reuse e.g., by leveraging previous development & optimization efforts & amortizing software lifecycle costs See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/ORB-patterns.pdf See for more infowww.dre.vanderbilt.edu/~schmidt/PDF/ORB-patterns.pdf

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 25 Design reuse e.g., by guiding app developers thru steps needed to ensure successful creation & deployment of software Implementation reuse e.g., by leveraging previous development & optimization efforts & amortizing software lifecycle costs Validation reuse e.g., by amortizing the efforts of validating application- & platform-independent portions of software, thereby enhancing dependability & performance Benefits of Frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 26 Frameworks are powerful, but many app developers find them hard to create/use effectively Limitations of Frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 27 Frameworks are powerful, but many app developers find them hard to create/use effectively Scope/Commonality/Variability analysis requires significant domain knowledge & reusable software development expertise Limitations of Frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 28 Frameworks are powerful, but many app developers find them hard to create/use effectively Scope/Commonality/Variability analysis requires significant domain knowledge & reusable software development expertise Developing frameworks in non-OO languages is even harder Limitations of Frameworks static int cmpstrs (const void *p1, const void *p2) { return strcmp (*(char* const*) p1, * (char* const*) p2); } static int casecmpstrs (const void *p1, const void *p2) { return strcasecmp (*(char* const*) p1, * (char* const*) p2); } int main(int argc, char *argv[]) { int j, icase = *argv[1] == ’i’; qsort (&argv[2], argc - 1, sizeof(char *), icase ? casecmpstrs : cmpstrs); for (j = 2; j < argc; ++j) puts(argv[j]); } Strategy pattern

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 29 Frameworks are powerful, but many app developers find them hard to create/use effectively Scope/Commonality/Variability analysis requires significant domain knowledge & reusable software development expertise Developing frameworks in non-OO languages is even harder Significant time required to evaluate applicability & quality of a framework for a particular domain Limitations of Frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 30 Frameworks are powerful, but many app developers find them hard to create/use effectively Scope/Commonality/Variability analysis requires significant domain knowledge & reusable software development expertise Developing frameworks in non-OO languages is even harder Significant time required to evaluate applicability & quality of a framework for a particular domain Inversion of control makes debugging tricky Limitations of Frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 31 Frameworks are powerful, but many app developers fine them hard to create/use effectively Scope/Commonality/Variability analysis requires significant domain knowledge & reusable software development expertise Developing frameworks in non-OO languages is even harder Significant time required to evaluate applicability & quality of a framework for a particular domain Inversion of control makes debugging tricky Testing can be tricky due to “late binding” Limitations of Frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 32 Frameworks are powerful, but many app developers fine them hard to create/use effectively Scope/Commonality/Variability analysis requires significant domain knowledge & reusable software development expertise Developing frameworks in non-OO languages is even harder Significant time required to evaluate applicability & quality of a framework for a particular domain Inversion of control makes debugging tricky Testing can be tricky due to “late binding” Performance may degrade due to complex structures & extra levels of indirection Limitations of Frameworks has more on frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 33 Summary Don’t apply patterns & frameworks blindly Abstraction/indirection can increase complexity, cost, & confusion

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 34 Summary Don’t apply patterns & frameworks blindly Abstraction/indirection can increase complexity, cost, & confusion Understand patterns to learn how to better develop & apply frameworks

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 35 Summary Don’t apply patterns & frameworks blindly Abstraction/indirection can increase complexity, cost, & confusion Understand patterns to learn how to better develop & apply frameworks Some of the most useful patterns are used to describe frameworks See for more infowww.dre.vanderbilt.edu/~schmidt/patterns-ace.html

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 36 Summary Don’t apply patterns & frameworks blindly Abstraction/indirection can increase complexity, cost, & confusion Understand patterns to learn how to better develop & apply frameworks Some of the most useful patterns are used to describe frameworks Patterns can be viewed as abstract descriptions of frameworks that enable broad reuse of software architecture

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 37 Summary Don’t apply patterns & frameworks blindly Abstraction/indirection can increase complexity, cost, & confusion Understand patterns to learn how to better develop & apply frameworks Some of the most useful patterns are used to describe frameworks Patterns can be viewed as abstract descriptions of frameworks that enable broad reuse of software architecture Frameworks can be seen as concrete realizations of patterns that facilitate direct reuse of design & code

Benefits & Limitations of Patterns & FrameworksDouglas C. Schmidt 38 Summary Don’t apply patterns & frameworks blindly Abstraction/indirection can increase complexity, cost, & confusion Understand patterns to learn how to better develop & apply frameworks Some of the most useful patterns are used to describe frameworks Patterns can be viewed as abstract descriptions of frameworks that enable broad reuse of software architecture Frameworks can be seen as concrete realizations of patterns that facilitate direct reuse of design & code Pattern & framework design is even harder than OO design! Many frameworks limitations can be addressed with knowledge of patterns