Design Patterns Thinking and Architecture at Scale

Size: px
Start display at page:

Download "Design Patterns Thinking and Architecture at Scale"

Transcription

1 Design Patterns Thinking and Architecture at Scale This talk is based on Net Objectives design patterns training and Al Shalloway and Jim Trott s book Design Patterns Explained. Please contact Al at alshall@netobjectives.com if you are interested in onsite technical training. Al Shalloway CEO, Founder Co-founder of Lean-Systems Society Co-founder Lean-Kanban University (no longer affiliated) Contributor to SAFe Copyright Net Objectives, Inc. All Rights Reserved 2

2 Lean for Executives Product Portfolio Management Business Product Owner Product Owner Onsite SPC Leading SAFe Agile Architecture Product Manager/PO ASSESSMENTS CONSULTING TRAINING COACHING technical Leanban / Kanban / Scrum ATDD / TDD / Design Patterns Lean Management Project Management Copyright Net Objectives, Inc. All Rights Reserved 3 Conway s Law "organizations which design systems... are constrained to produce designs which are copies of the communication structures of these organizations." M. Conway Copyright Net Objectives, Inc. All Rights Reserved 4

3 Corollary to Conway s Law When you change organizational structure your current application architecture will work against your development teams. Legacy code was written around different organizational structure that is different from what we have now Teams work together well, but interfere with other teams This makes it difficult to work Requires multiple branching Get in each other s way during coding and testing We ve likely made the highlevel integration issue worse Copyright Net Objectives, Inc. All Rights Reserved 5 Patterns According to Christopher Alexander A pattern is a solution to a recurring problem in a context. At this final stage, the patterns are no longer important: the patterns have taught you to be receptive to what is real. (page 549 of 553) Patterns are a way of thinking about the relationship between these forces. Design Patterns Explained: A New Perspective on Object-Oriented Design Copyright Net Objectives, Inc. All Rights Reserved 6

4 Advice from the Gang of Four copyright 2010 Net Objectives Inc. Advice From the Gang of Four Design to behavior Design from the outside in Consistent with BDD s Given-When- Then topics Copyright Net Objectives, Inc. All Rights Reserved 8

5 Advice From the Gang of Four Design to behavior Use the equivalent of Object- Injection Equivalent means to have objects do not know the implementations they are referring to. Can use factories to get objects. topics Copyright Net Objectives, Inc. All Rights Reserved 9 Advice From the Gang of Four Design to behavior Use the equivalent of Object- Injection Encapsulate variation of behavior Use abstraction (strong contracts interface or an abstract class) Separation of concerns separate use from construction want abstractions to be independent We are encapsulating over time Having several algorithms at once, or one that changes over time is still a strategy. topics Copyright Net Objectives, Inc. All Rights Reserved 10

6 Abstraction 11 Consider These Who thinks they are the same? Who thinks they are different? No Abstaining! Mop Broom Sponge Copyright Net Objectives, Inc. All Rights Reserved 12

7 As Any Good Consultant Will Tell You: It Depends! As specific objects: they are different As a concept: they are all Cleaning Utensils Where/When would we find such a concept useful? Copyright Net Objectives, Inc. All Rights Reserved 13 Where does Cleaning Utensil exist? Not in the real world, but in our thoughts as an abstract classification Cleaning Utensil does not exist, but is useful nonetheless Sometimes, it is actually more useful Copyright Net Objectives, Inc. All Rights Reserved 14

8 Three Levels of Perspective* Conceptual Perspective Specification Perspective Implementation Perspective * From Martin Fowler s UML Distilled Copyright Net Objectives, Inc. All Rights Reserved 15 Object Defined Implementation: Data packaged with function Specification: Contract for behavior Conceptual: Entities with responsibilities Copyright Net Objectives, Inc. All Rights Reserved 16

9 Example of Fowler's Perspectives Client validate(data) Implementing Classes Specification Relationship ValidationRule +validate(string data):bool Conceptual Class USRule +validate(string data):bool -splittokens(string data):string[] -validatetokens(string[] tokens):bool CanadianRule +validate(string data):bool -parse(string data):string -transform(string data):string -applyrule(string data):bool public boolean validate(string data) { String tokens = splittokens(data); return validatetokens(tokens); Copyright Net Objectives, Inc. All Rights Reserved 17 These Can be Extended to Methods Client validate(data) ValidationRule +validate(string data):bool Specificationlevel Method USRule +validate(string data):bool -splittokens(string data):string[] -validatetokens(string[] tokens):bool CanadianRule +validate(string data):bool -parse(string data):string -transform(string data):string -applyrule(string data):bool Implementationlevel Methods public boolean validate(string data) { String tokens = splittokens(data); return validatetokens(tokens); Copyright Net Objectives, Inc. All Rights Reserved 18

10 Cohesion of Perspective When designing software, we d like to be able to consider things in manageable, cohesive, understandable chunks We can relate components to each other conceptually "Design to Interfaces" "Encapsulate Variation" We implement specific needs within the smaller concept of the component Copyright Net Objectives, Inc. All Rights Reserved 19 Commonality-Variability Analysis Copyright Net Objectives, Inc. All Rights Reserved 20

11 Commonality-Variability Analysis James Coplien s Multi-paradigm Design for C++ Abstraction, in the common English language sense, means to focus on the general and put aside the specific. We abstract by emphasizing what is common and deemphasizing details. Abstraction is a fundamental analysis tool. His thesis is on line at: (link is case-sensitive) Copyright Net Objectives, Inc. All Rights Reserved 21 Commonalities Commonality analysis is the search for common elements that helps us understand how family members are the same * Commonalities are Recognized from experience Learned through analysis (abstracted) Commonalities can define basic concepts in a domain * Multi-Paradigm Design in C++, Jim Coplien Copyright Net Objectives, Inc. All Rights Reserved 22

12 Variability Analysis Variability makes sense only in a given commonality frame of reference. It is a variation of some commonality From an architectural perspective, commonality analysis gives the architecture its longevity; variability analysis drives its fitness for use * * Multi-Paradigm Design in C++, Jim Coplien Copyright Net Objectives, Inc. All Rights Reserved 23 Motivations and Concepts: Managing Objects Separately from their Use Copyright Net Objectives, Inc. All Rights Reserved 24

13 Question to Ask When working on a mature system consider when adding a new function, which takes longer writing the new function or integrating it into the system? Copyright Net Objectives, Inc. All Rights Reserved 25 Another Similar Distinction Orthogonal to Fowler's perspectives, we can also make this distinction: The perspective of Use vs. The perspective of Creation Limiting the perspective of any entity to one of these has advantages as well Copyright Net Objectives, Inc. All Rights Reserved 26

14 Example Code: Java/C# public class SignalProcessor { private ByteFilter myfilter; public SignalProcessor() { myfilter = new HiPassFilter(); public byte[] process(byte[] signal) { // Do preparatory steps myfilter.filter(signal); // Do other steps return signal; Copyright Net Objectives, Inc. All Rights Reserved 27 Mixed Perspectives: Java/C# public class SignalProcessor { private ByteFilter myfilter; public SignalProcessor() { myfilter = new HiPassFilter(); Creation public byte[] process(byte[] signal) { // Do preparatory steps myfilter.filter(signal); Use // Do other steps return signal; Copyright Net Objectives, Inc. All Rights Reserved 28

15 What You Hide You Can Change We'd like to limit coupling as much as possible One way to do this is to: Hide the way something is made from The entities that use it -and- Hide the way something is used from The entity that makes it Copyright Net Objectives, Inc. All Rights Reserved 29 A New Principle Emerges The relationship between any entity A and any other entity B in a system should be limited such that A makes B or A uses B, and never both. Separate Use From Creation Copyright Net Objectives, Inc. All Rights Reserved 30

16 This is a "Principle" - There are Many Ways To Accomplish it Using an actual factory pattern Object Serialization in one place, de-serialization in another Object-Relational Data-Binding Dependency Injection Frameworks Etc... Copyright Net Objectives, Inc. All Rights Reserved 31 One Ideal Separation (Using a Factory) use perspective SignalProcessor uses The ByteFilter Polymorphic Service ByteFilter filter(byte[]):byte[] uses HiPassFilter filter(byte[]):byte[] LoPassFilter filter(byte[]):byte[] ByteFilterFactory makebytefilter():bytefilter creates creation perspective This would seem to imply the use of factories to build all objects. Here, it would be overdesign. So what else could we do? Copyright Net Objectives, Inc. All Rights Reserved 32

17 All the Benefit Without Excessive Cost We cannot know when something is going to vary in the future This fear can lead to overdesign if we re not careful We need a practice, a fallback to avoid this One example: we can encapsulate the constructor* of our classes *The original idea for this came from Effective Java by Joshua Bloch Copyright Net Objectives, Inc. All Rights Reserved 33 Encapsulating the Constructor: Instead of This Java/C# public class ByteFilter { public ByteFilter() { // do any constructor behavior here // the rest of the class follows public class SignalProcessor { private ByteFilter mybytefilter; public SignalProcessor() { mybytefilter = new ByteFilter(); Copyright Net Objectives, Inc. All Rights Reserved 34

18 Encapsulating the Constructor: Do This Java/C# public class ByteFilter { private ByteFilter() { // do any constructor behavior here public static ByteFilter getinstance() {return new ByteFilter(); // the rest of the class follows public class SignalProcessor { private ByteFilter mybytefilter; public SignalProcessor() { mybytefilter = ByteFilter.getInstance(); Note that we ve made a concrete class an abstraction. This is an easy way to introduce abstractions when needed. Copyright Net Objectives, Inc. All Rights Reserved 35 Accommodating Change: Complexity C# public abstract class ByteFilter { public static ByteFilter getinstance(){ switch(config.filtertype()) { case: Config.HIPASS return new HiPassFilter(); case: Config.LOPASS return new LoPassFilter(); public class HiPassFilter : ByteFilter { // Implementation here public class LoPassFilter : ByteFilter { // Implementation here public class SignalProcessor { private ByteFilter mybytefilter; public SignalProcessor() { mybytefilter = ByteFilter.getInstance(); No Change! Copyright Net Objectives, Inc. All Rights Reserved 36

19 Accommodating Change: Complexity Java public abstract class ByteFilter { public static ByteFilter getinstance(){ switch(config.filtertype()) { case: Config.HIPASS return new HiPassFilter(); case: Config.LOPASS return new LoPassFilter(); public class HiPassFilter extends ByteFilter { // Implementation here public class LoPassFilter extends ByteFilter { // Implementation here public class SignalProcessor { private ByteFilter mybytefilter; public SignalProcessor() { mybytefilter = ByteFilter.getInstance(); No Change! Copyright Net Objectives, Inc. All Rights Reserved 37 Once a Factory Becomes Warranted If the rules for instantiating your objects becomes complex you can move this logic to a factory The GetInstance() method can simply delegate to the factory Copyright Net Objectives, Inc. All Rights Reserved 38

20 Encapsulating Construction Allows For 1. Easily converting concrete class to abstract class 2. Insertion of a factory when warranted 3. Enables change in one place 1. Only where object is created 2. Doesn t need to affect multiple clients Copyright Net Objectives, Inc. All Rights Reserved 39 Architecture Copyright Net Objectives, Inc. All Rights Reserved 40

21 Software Development Is Not the Physical World 1. You can t see the software being developed You also can t see how much is in play or delays in its being built Difficult to tell how close it is to completion If work on big batches can t tell if you re doing the wrong thing or not topics Copyright Net Objectives, Inc. All Rights Reserved 41 Software Development Is not the Physical World 1. You can t see the software being developed 2. Software can be built in increments that can be used Can t use an upstairs bedroom before the downstairs is built Can build a piece of software and use it Can realize value in increments Can even change foundations Can use this ability to pivot topics Copyright Net Objectives, Inc. All Rights Reserved 42

22 Software Development Is not the Physical World 1. You can t see the software being developed 2. Software can be built in increments that can be used 3. In software can take advantage of variation Don Reinertsen on twitter - IMO at its most profound level AGILE recognizes that it may be smarter to exploit variability than eliminate it - Methodology independent. Do something, learn something, pivot topics Copyright Net Objectives, Inc. All Rights Reserved 43 Software Development Is not the Physical World 1. You can t see the software being developed 2. Software can be built in increments that can be used 3. You can define the behavior of the software and test it 4. You can encapsulate implementations and later change them The cost of encapsulation is low Often has the side effect of better thinking (can deal with abstractions, not zillions of special cases). topics Copyright Net Objectives, Inc. All Rights Reserved 44

23 Purpose of architecture Offerings Vs Capabilities When get new offering affects existing capabilities Architecture needs to make this easier Add into existing structure Extend structure (something that had been abstracted now becomes abstracted) (separation of concerns) Show practice of separating use from construction Copyright Net Objectives, Inc. All Rights Reserved 45 QUESTION What Are The Forces of Change? Number of items to change How you find the items to change Difficulty of making the change The safety of making the change What happens to these forces as scale increases? Copyright Net Objectives, Inc. All Rights Reserved 46

24 Chris Alexander Design Via Complexification Design from big picture. Add distinctions as you go. Abstraction allows us defer decisions on details. Separating use from construction allows us to add the abstractions we discover in looking at the bigger picture Focus on big picture Can add abstractions if you missed them Add details after general layout is done Copyright Net Objectives, Inc. All Rights Reserved 47 How was this designed? Copyright Net Objectives, Inc. All Rights Reserved 48

25 First you have the space Main Copyright Net Objectives, Inc. All Rights Reserved 49 Looked at roads Roads Main Copyright Net Objectives, Inc. All Rights Reserved 50

26 Where do houses go? Roads Houses Main Copyright Net Objectives, Inc. All Rights Reserved 51 What about ponds? Roads Houses Main Ponds Copyright Net Objectives, Inc. All Rights Reserved 52

27 Have a park Roads Houses Main Ponds Park Copyright Net Objectives, Inc. All Rights Reserved 53 Add the trails Roads Note at this point we are still dealing with concepts. Architecture specifies how the different concepts relate to each other. Trails Main Park Houses Ponds Copyright Net Objectives, Inc. All Rights Reserved 54

28 Now fill in the details Roads Houses Ponds Park Trails What would you do if you had multiple complexes to build? Copyright Net Objectives, Inc. All Rights Reserved 55 Dealing With Change Once and only once conflates two issues: Where concepts are defined Where they are used Another way to think about it: Shalloway s Law: When N things need to change and N>1, Shalloway will find at most N-1 of the things. Shalloway s Principle: Avoid situations where Shalloway s Law applies Copyright Net Objectives, Inc. All Rights Reserved 56

29 Getting from Here to There Test Drive Development is the in vogue way to start. TDD is awesome. But in some (especially this) situation, it is RISKY! Copyright Net Objectives, Inc. All Rights Reserved 57 A Better Approach Wrap with acceptance tests Provides safety Those at a higher level become the general architecture When have to change existing code Refactor code the minimum amount to put in new case properly This may require adding an abstraction and putting new case under it May require refactoring to the open closed Put totally new things in properly Copyright Net Objectives, Inc. All Rights Reserved 58

30 Summary Attend to Conway s Law Understand design patterns are about encapsulating change Understand Architecture is about managing change Patterns are really about how to design and handle forces Design from context patterns illustrate intent Take advantage of software being different from the physical world Copyright Net Objectives, Inc. All Rights Reserved 59 Lean for Executives Product Portfolio Management Business Product Owner Product Owner Onsite SPC Leading SAFe Agile Architecture Product Manager/PO ASSESSMENTS CONSULTING TRAINING COACHING technical Leanban / Kanban / Scrum ATDD / TDD / Design Patterns Lean Management Project Management This talk is based on Net Objectives design patterns training and Al Shalloway and Jim Trott s book Design Patterns Explained. Please contact Al at alshall@netobjectives.com if you are interested in onsite technical training. Copyright Net Objectives, Inc. All Rights Reserved 60

Essential Skills for the Agile Developer. Agile. copyright Net Objectives, Inc.

Essential Skills for the Agile Developer. Agile. copyright Net Objectives, Inc. Essential Skills for the Agile Developer Agile copyright 2010. Net Objectives, Inc. Lean for Executives Product Portfolio Management Business Lean Enterprise ASSESSMENTS CONSULTING TRAINING COACHING Team

More information

Agile Architecture. The Why, the What and the How

Agile Architecture. The Why, the What and the How Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile

More information

The Design Patterns Matrix From Analysis to Implementation

The Design Patterns Matrix From Analysis to Implementation The Design Patterns Matrix From Analysis to Implementation This is an excerpt from Shalloway, Alan and James R. Trott. Design Patterns Explained: A New Perspective for Object-Oriented Design. Addison-Wesley

More information

Background. Fowler's Perspectives. bjectives. Scott L. Bain, Senior Consultant, Net Objectives,

Background. Fowler's Perspectives. bjectives. Scott L. Bain, Senior Consultant, Net Objectives, Net O Articles and events of interest to the software development oommunity In This Issue: The Perspectives of Use vs. Creation in Object-Oriented Design - p.1 Seminars We Can Give - p.5 What We Do - Net

More information

Refactoring, Design Patterns and Extreme Programming %-(&7,9(

Refactoring, Design Patterns and Extreme Programming %-(&7,9( Refactoring, Design Patterns and Extreme Programming 1HW %-(&7,9(6 www.netobjectives.com info@netobjectives.com 425-313-3065 5/1/02 Copyright 2002 Net Objectives 1 Why We Do This Adds value to the community

More information

Chapter 8 Paying Attention to Principles and Wisdom

Chapter 8 Paying Attention to Principles and Wisdom Chapter 8 Paying Attention to Principles and Wisdom Another value that a profession provides to its members is to define the overall principles that can guide them, with a relatively high degree of reliability,

More information

Index Shalloway rev.qrk 9/21/04 5:54 PM Page 419. Index

Index Shalloway rev.qrk 9/21/04 5:54 PM Page 419. Index Index Shalloway rev.qrk 9/21/04 5:54 PM Page 419 Index A Abandon (by) ship (date)!, 140 Abstract class type, 21 Abstract classes, 19, 22, 29 and common and variability analysis, 127 130 interfaces vs.,

More information

CPSC 310 Software Engineering. Lecture 11. Design Patterns

CPSC 310 Software Engineering. Lecture 11. Design Patterns CPSC 310 Software Engineering Lecture 11 Design Patterns Learning Goals Understand what are design patterns, their benefits and their drawbacks For at least the following design patterns: Singleton, Observer,

More information

e t O b O j b e j c e t c i t v i e v s e Volume 1, Issue 4 April 2004 The Principles and Strategies of Design Patterns In This Issue: Overview

e t O b O j b e j c e t c i t v i e v s e Volume 1, Issue 4 April 2004 The Principles and Strategies of Design Patterns In This Issue: Overview Net O Articles and events of interest to the software development oommunity In This Issue: The Principles and Strategies of Design Patterns - p.1 Seminars We Can Give - p.2 What We Do - Net O Courses -

More information

Responsibilities. Using several specific design principles to guide OO design decisions.

Responsibilities. Using several specific design principles to guide OO design decisions. Designing Objects with Responsibilities Using several specific design principles to guide OO design decisions. Challenge Old-school advice on OOD After identifying i your requirements and creating a domain

More information

Kerievsky_book.fm Page 355 Thursday, July 8, :12 PM. Index

Kerievsky_book.fm Page 355 Thursday, July 8, :12 PM. Index Kerievsky_book.fm Page 355 Thursday, July 8, 2004 12:12 PM Index A Absorbing class, 117 Abstract Factory, 70 71 Accept methods, 327 Accumulation methods, 315, 325 330 Accumulation refactorings Collecting

More information

Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer

Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer http://ewolff.com Why Microservices? Why Microservices? Strong modularization Replaceability Small units Sustainable Development

More information

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004 Facade and Adapter Comp-303 : Programming Techniques Lecture 19 Alexandre Denault Computer Science McGill University Winter 2004 March 23, 2004 Lecture 19 Comp 303 : Facade and Adapter Page 1 Last lecture...

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

An Introduction to Patterns

An Introduction to Patterns An Introduction to Patterns Robert B. France Colorado State University Robert B. France 1 What is a Pattern? - 1 Work on software development patterns stemmed from work on patterns from building architecture

More information

BCS Higher Education Qualifications. Diploma in IT. Object Oriented Programming Syllabus

BCS Higher Education Qualifications. Diploma in IT. Object Oriented Programming Syllabus BCS Higher Education Qualifications Diploma in IT Object Oriented Programming Syllabus Version 3.0 December 2016 This is a United Kingdom government regulated qualification which is administered and approved

More information

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9)

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9) THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9) By: Mr.Prachet Bhuyan Assistant Professor, School of Computer Engineering, KIIT Topics to be Discussed 9.1 INTRODUCTION 9.2 THE O-O DESIGN PROCESS

More information

Design Patterns Explained A New Perspective On Object Oriented Alan Shalloway

Design Patterns Explained A New Perspective On Object Oriented Alan Shalloway Design Patterns Explained A New Perspective On Object Oriented Alan Shalloway DESIGN PATTERNS EXPLAINED A NEW PERSPECTIVE ON OBJECT ORIENTED ALAN SHALLOWAY PDF - Are you looking for design patterns explained

More information

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only Chapter 16 Pattern-Based Design Slide Set to accompany Software Engineering: A Practitioner s Approach, 8/e by Roger S. Pressman and Bruce R. Maxim Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger

More information

MSO Lecture 12. Wouter Swierstra (adapted by HP) October 26, 2017

MSO Lecture 12. Wouter Swierstra (adapted by HP) October 26, 2017 1 MSO Lecture 12 Wouter Swierstra (adapted by HP) October 26, 2017 2 LAST LECTURE Analysis matrix; Decorator pattern; Model-View-Controller; Observer pattern. 3 THIS LECTURE How to create objects 4 CATEGORIES

More information

Business Driven Software Development

Business Driven Software Development Business Driven Software Development A Lean-Agile Approach to Software Development copyright 2010. Net Objectives, Inc. Times Have Changed Big companies used to be king Now it s the smaller guys How can

More information

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson More on Design CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson Outline Additional Design-Related Topics Design Patterns Singleton Strategy Model View Controller Design by

More information

Expanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011

Expanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 Expanding Our Horizons CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 1 Goals of the Lecture Cover the material in Chapter 8 of our textbook New perspective on objects and encapsulation

More information

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Web Application Design. Husni Husni.trunojoyo.ac.id

Web Application Design. Husni Husni.trunojoyo.ac.id Web Application Design Husni Husni.trunojoyo.ac.id Based on Randy Connolly and Ricardo Hoar Fundamentals of Web Development, Pearson Education, 2015 Objectives 1 Real World Web 2 Software Design Principle

More information

Lean-Thinking. Re-Defined. Going Beyond Toyota. Alan Shalloway.

Lean-Thinking. Re-Defined. Going Beyond Toyota. Alan Shalloway. 1 Copyright 2007 Net Objectives. All Rights Reserved. 20 May 2009 Lean-Thinking info@netobjectives.com www.netobjectives.com Re-Defined Going Beyond Toyota Alan Shalloway 2 Copyright 2008 Net Objectives.

More information

VOL. 4, NO. 12, December 2014 ISSN ARPN Journal of Science and Technology All rights reserved.

VOL. 4, NO. 12, December 2014 ISSN ARPN Journal of Science and Technology All rights reserved. Simplifying the Abstract Factory and Factory Design Patterns 1 Egbenimi Beredugo Eskca, 2 Sandeep Bondugula, 3 El Taeib Tarik 1, 2, 3 Department of Computer Science, University of Bridgeport, Bridgeport

More information

Patterns Of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) PDF

Patterns Of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) PDF Patterns Of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) PDF The practice of enterprise application development has benefited from the emergence of many new enabling technologies.

More information

The Object-Oriented Paradigm

The Object-Oriented Paradigm ch01.fm Page 3 Friday, June 8, 2001 11:58 AM CHAPTER 1 The Object-Oriented Paradigm Overview This chapter introduces you to the object-oriented paradigm by comparing and contrasting it with something familiar:

More information

MSO Object Creation Singleton & Object Pool

MSO Object Creation Singleton & Object Pool MSO Object Creation Singleton & Object Pool Wouter Swierstra & Hans Philippi October 25, 2018 Object Creation: Singleton & Object Pool 1 / 37 This lecture How to create objects The Singleton Pattern The

More information

Introduction to Design Patterns

Introduction to Design Patterns Introduction to Design Patterns First, what s a design pattern? a general reusable solution to a commonly occurring problem within a given context in software design It s not a finished design that can

More information

Understading Refactorings

Understading Refactorings Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations

More information

David Bernstein Five Development Practices Essential for Scrum Teams

David Bernstein Five Development Practices Essential for Scrum Teams David Bernstein Five Development Practices Essential for Scrum Teams 1 Welcome! I m David Scott Bernstein Software developer since 1980 Trained 8,000 developers since 1990 Published author since 2015 Website:

More information

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1 Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1 About the presenter Paul Kaunds Paul Kaunds is a Verification Consultant at

More information

Chapter 1 Programming by Intention

Chapter 1 Programming by Intention Chapter 1 Programming by Intention Everything old is new again. The folks who brought us the extreme Programming books 1 were, among other things, promoting a set of best practices in software development.

More information

Kanban One-Day Workshop

Kanban One-Day Workshop Kanban One-Day Workshop Copyright Net Objectives, Inc. All Rights Reserved 2 Copyright Net Objectives, Inc. All Rights Reserved 3 Lean for Executives Product Portfolio Management Business Product Owner

More information

Chapter 12 (revised by JAS)

Chapter 12 (revised by JAS) Chapter 12 (revised by JAS) Pattern-Based Design Slide Set to accompany Software Engineering: A Practitionerʼs Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman

More information

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,

More information

Presenter: Dong hyun Park

Presenter: Dong hyun Park Presenter: 200412325 Dong hyun Park Design as a life cycle activity bonds the requirements to construction Process of breaking down the system into components, defining interfaces and defining components

More information

Design Patterns. Hausi A. Müller University of Victoria. Software Architecture Course Spring 2000

Design Patterns. Hausi A. Müller University of Victoria. Software Architecture Course Spring 2000 Design Patterns Hausi A. Müller University of Victoria Software Architecture Course Spring 2000 1 Motivation Vehicle for reasoning about design or architecture at a higher level of abstraction (design

More information

Kanban Kickstart Geeknight. Jesper Boeg, Agile/Lean Coach, VP Trifork Agile Excellence Twitter: J_Boeg

Kanban Kickstart Geeknight. Jesper Boeg, Agile/Lean Coach, VP Trifork Agile Excellence Twitter: J_Boeg Kanban Kickstart Geeknight Jesper Boeg, Agile/Lean Coach, VP Trifork Agile Excellence jbo@trifork.com Twitter: J_Boeg Agenda Introduction + Advertisement (15 min.) A Couple of War Stories The 5 Principles

More information

02291: System Integration

02291: System Integration 02291: System Integration Hubert Baumeister hub@imm.dtu.dk Spring 2011 Contents 1 Recap 1 2 More UML Diagrams 2 2.1 Object Diagrams........................................... 2 2.2 Communication Diagrams......................................

More information

Software Architecture

Software Architecture Software Architecture Architectural Design and Patterns. Standard Architectures. Dr. Philipp Leitner @xleitix University of Zurich, Switzerland software evolution & architecture lab Architecting, the planning

More information

The Bridge Pattern. I derive the Bridge pattern by working through an example. I will go into great detail to help you learn this pattern.

The Bridge Pattern. I derive the Bridge pattern by working through an example. I will go into great detail to help you learn this pattern. ch09.fm Page 123 Friday, June 8, 2001 12:01 PM CHAPTER 9 The Bridge Pattern Overview I will continue our study of design patterns with the Bridge pattern. The Bridge pattern is quite a bit more complex

More information

Test Driven Development TDD

Test Driven Development TDD Test Driven Development TDD Testing Testing can never demonstrate the absence of errors in software, only their presence Edsger W. Dijkstra (but it is very good at the latter). Testing If it's worth building,

More information

Design Patterns. An introduction

Design Patterns. An introduction Design Patterns An introduction Introduction Designing object-oriented software is hard, and designing reusable object-oriented software is even harder. Your design should be specific to the problem at

More information

A4 Explain how the Visitor design pattern works (4 marks)

A4 Explain how the Visitor design pattern works (4 marks) COMP61532 exam Performance feedback Original marking scheme in bold, additional comments in bold italic. Section A In general the level of English was poor, spelling and grammar was a problem in most cases.

More information

SAFe AGILE TRAINING COURSES

SAFe AGILE TRAINING COURSES SAFe AGILE TRAINING COURSES INDEX INTRODUCTION COURSE Implementing SAfe Leading SAFe SAFe for Teams SAFe Scrum Master CERTIFICATION SAFe Program Consultant SAFe Agilist SAFe Practitioner SAFe Scrum Master

More information

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University Idioms and Design Patterns Martin Skogevall IDE, Mälardalen University 2005-04-07 Acronyms Object Oriented Analysis and Design (OOAD) Object Oriented Programming (OOD Software Design Patterns (SDP) Gang

More information

Object- Oriented Design with UML and Java Part I: Fundamentals

Object- Oriented Design with UML and Java Part I: Fundamentals Object- Oriented Design with UML and Java Part I: Fundamentals University of Colorado 1999-2002 CSCI-4448 - Object-Oriented Programming and Design These notes as free PDF files: http://www.softwarefederation.com/cs4448.html

More information

Refactoring Practice: How it is and How it Should be Supported

Refactoring Practice: How it is and How it Should be Supported Refactoring Practice: How it is and How it Should be Supported Zhenchang Xing and EleniStroulia Presented by: Sultan Almaghthawi 1 Outline Main Idea Related Works/Literature Alignment Overview of the Case

More information

Principles of Software Construction: Objects, Design and Concurrency. Introduction to Design. toad

Principles of Software Construction: Objects, Design and Concurrency. Introduction to Design. toad Principles of Software Construction: Objects, Design and Concurrency Introduction to Design 15-214 toad Christian Kästner Charlie Garrod School of Computer Science 2012-14 C Kästner, C Garrod, J Aldrich,

More information

GETTING STARTED. User Story Mapping

GETTING STARTED. User Story Mapping GETTING STARTED User Story Mapping contents SECTION 1 user story maps what is a user story map? 3 examples of user story maps 4 breakdown of a user story map 5 why create user story maps? 6 benefits of

More information

From Feature to Code. SCRUM + NetBeans RCP + Featureous. John Kostaras JCrete August 2014

From Feature to Code. SCRUM + NetBeans RCP + Featureous. John Kostaras JCrete August 2014 From Feature to Code John Kostaras JCrete 25-29 August 2014 Agenda SCRUM NetBeans RCP Featureous 7/9/2014 1 SCRUM 7/9/2014 2 What is SCRUM a methodology an agile framework for software development relies

More information

Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman

Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Chapter 8 Design Concepts Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit educational

More information

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach Deming on Quality Quality comes not from inspection, but from improvement of the production process. We cannot

More information

CS Introduction to Data Structures How to Parse Arithmetic Expressions

CS Introduction to Data Structures How to Parse Arithmetic Expressions CS3901 - Introduction to Data Structures How to Parse Arithmetic Expressions Lt Col Joel Young One of the common task required in implementing programming languages, calculators, simulation systems, and

More information

Design to interfaces. Favor composition over inheritance Find what varies and encapsulate it

Design to interfaces. Favor composition over inheritance Find what varies and encapsulate it Design Patterns The Gang of Four suggests a few strategies for creating good o-o designs, including Façade Design to interfaces. Favor composition over inheritance Find what varies and encapsulate it One

More information

If Statements, For Loops, Functions

If Statements, For Loops, Functions Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

More information

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently. Gang of Four Software Design Patterns with examples STRUCTURAL 1) Adapter Convert the interface of a class into another interface clients expect. It lets the classes work together that couldn't otherwise

More information

Application Architectures, Design Patterns

Application Architectures, Design Patterns Application Architectures, Design Patterns Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2017 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) Application Architectures, Design Patterns Winter Term

More information

Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming 1/9 Introduction to Object-Oriented Programming Conception et programmation orientées object, B. Meyer, Eyrolles Object-Oriented Software Engineering, T. C. Lethbridge, R. Laganière, McGraw Hill Design

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

LESSONS LEARNED: BEING AGILE IN THE WATERFALL SANDBOX

LESSONS LEARNED: BEING AGILE IN THE WATERFALL SANDBOX www.twitter.com/telerik www.facebook.com/telerik LESSONS LEARNED: BEING AGILE IN THE WATERFALL SANDBOX Philip Japikse (@skimedic) phil.japikse@telerik.com www.skimedic.com/blog MVP, MCSD.Net, MCDBA, CSM,

More information

MSO Lecture 6. Wouter Swierstra (adapted by HP) September 28, 2017

MSO Lecture 6. Wouter Swierstra (adapted by HP) September 28, 2017 1 MSO Lecture 6 Wouter Swierstra (adapted by HP) September 28, 2017 2 LAST LECTURE Case study: CAD/CAM system What are design patterns? Why are they important? What are the Facade and Adapter patterns?

More information

Topic : Object Oriented Design Principles

Topic : Object Oriented Design Principles Topic : Object Oriented Design Principles Software Engineering Faculty of Computing Universiti Teknologi Malaysia Objectives Describe the differences between requirements activities and design activities

More information

Learning OOABL - The Human Factor

Learning OOABL - The Human Factor Learning OOABL - The Human Factor Timothy D. Kuehn Senior OpenEdge Consultant Email: timk@tdkcs.ca or tim.kuehn@gmail.com Ph: 519-576-8100 Skype: timothy.kuehn About Tim and Services Joined the Progress

More information

CS 370 Design Heuristics D R. M I C H A E L J. R E A L E F A L L

CS 370 Design Heuristics D R. M I C H A E L J. R E A L E F A L L CS 370 Design Heuristics D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction Now we ll talk about ways of thinking about design Guidelines for trials in trial and errors Major Design Heuristics

More information

1 Software Architecture

1 Software Architecture Some buzzwords and acronyms for today Software architecture Design pattern Separation of concerns Single responsibility principle Keep it simple, stupid (KISS) Don t repeat yourself (DRY) Don t talk to

More information

Review Software Engineering October, 7, Adrian Iftene

Review Software Engineering October, 7, Adrian Iftene Review Software Engineering October, 7, 2013 Adrian Iftene adiftene@info.uaic.ro Software engineering Basics Definition Development models Development activities Requirement analysis Modeling (UML Diagrams)

More information

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as

More information

Object-Oriented Design I

Object-Oriented Design I Object-Oriented Design I SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Single responsibility High cohesion Information expert Low coupling

More information

l e a n Lean Software Development software development Faster Better Cheaper

l e a n Lean Software Development software development Faster Better Cheaper software development Lean Software Development Faster Better Cheaper mary@poppendieck.com Mary Poppendieck www.poppendieck.com Characteristics of Lean Companies: 1. They don t call themselves Lean The

More information

Microservice Splitting the Monolith. Software Engineering II Sharif University of Technology MohammadAmin Fazli

Microservice Splitting the Monolith. Software Engineering II Sharif University of Technology MohammadAmin Fazli Microservice Software Engineering II Sharif University of Technology MohammadAmin Fazli Topics Seams Why to split the monolith Tangled Dependencies Splitting and Refactoring Databases Transactional Boundaries

More information

Chapter 1: Programming Principles

Chapter 1: Programming Principles Chapter 1: Programming Principles Object Oriented Analysis and Design Abstraction and information hiding Object oriented programming principles Unified Modeling Language Software life-cycle models Key

More information

Lecture 13: Design Patterns

Lecture 13: Design Patterns 1 Lecture 13: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2005 2 Pattern Resources Pattern Languages of Programming Technical conference on Patterns

More information

Introduction to Design Patterns

Introduction to Design Patterns Dr. Michael Eichberg Software Technology Group Department of Computer Science Technische Universität Darmstadt Introduction to Software Engineering Introduction to Design Patterns Patterns 2 PATTERNS A

More information

google define: design Vad är design? google define: design the act of working out the form of something Den Röda Tråden

google define: design Vad är design? google define: design the act of working out the form of something Den Röda Tråden Den Röda Tråden KRAV Vi kan välja utvecklingsmodell Vi kan hantera risk och vet varför Vi kan skriva och estimera krav User stories, -ilities, regler Vi kan ta fram arkitekturkrav DESIGN VISION behövs

More information

Achieving Right Automation Balance in Agile Projects

Achieving Right Automation Balance in Agile Projects Achieving Right Automation Balance in Agile Projects Vijayagopal Narayanan Vijayagopal.n@cognizant.com Abstract When is testing complete and How much testing is sufficient is a fundamental questions that

More information

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Lecture 06 Object-Oriented Analysis and Design Welcome

More information

Using Design Patterns in Java Application Development

Using Design Patterns in Java Application Development Using Design Patterns in Java Application Development ExxonMobil Research & Engineering Co. Clinton, New Jersey Michael P. Redlich (908) 730-3416 michael.p.redlich@exxonmobil.com About Myself Degree B.S.

More information

Pattern Resources. Lecture 25: Design Patterns. What are Patterns? Design Patterns. Pattern Languages of Programming. The Portland Pattern Repository

Pattern Resources. Lecture 25: Design Patterns. What are Patterns? Design Patterns. Pattern Languages of Programming. The Portland Pattern Repository Pattern Resources Lecture 25: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Pattern Languages of Programming Technical conference on Patterns

More information

Overview In this chapter

Overview In this chapter Net O Articles and events of interest to the software development oommunity In This Issue: The Object-Oriented Paradigm - p.1 Seminars We Can Give - p.5 More Seminars - p.8 Personal Book Recommendation

More information

Object-Oriented Analysis and Design

Object-Oriented Analysis and Design 0. Object Orientation: An Subject/Topic/Focus: over this lecture Summary: Lecturer, lecture, rooms, assistants, lab classes, credit points... Need for systems analysis and software engineers Literature

More information

Design Patterns. Introduction. Oliver Haase

Design Patterns. Introduction. Oliver Haase Design Patterns Introduction Oliver Haase An instrument, a tool, an utensil, whatsoever it be, if it be fit for the purpose it was made for, it is as it should be though he perchance that made and fitted

More information

1. A Remote Proxy helps to hide all the low-level details of exception handling from the proxy Client.

1. A Remote Proxy helps to hide all the low-level details of exception handling from the proxy Client. UML diagrams for the design patterns mentioned in the exam are provided at the end of the exam. For some questions the details of the diagram structure will be useful. For other questions, the details

More information

Program to an Interface, Not an Implementation

Program to an Interface, Not an Implementation Program to an Interface, Not an Implementation Early in the WeatherStation constructor: Barometer bar = new Barometer() ; Why is this problematic: WeatherStation depends on a specific implementation of

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming Polymorphism 1 / 19 Introduction to Object-Oriented Programming Today we ll learn how to combine all the elements of object-oriented programming in the design of a program that handles a company payroll.

More information

CS 485 Advanced Object Oriented Design. Spring 2017

CS 485 Advanced Object Oriented Design. Spring 2017 CS 485 Advanced Object Oriented Design Spring 2017 Version Control Assignment 1 will be distributed Friday You MUST use version control Subversion via Zeus (as in CS 300) https://ankhsvn.open.collab.net/

More information

Software Design COSC 4353/6353 D R. R A J S I N G H

Software Design COSC 4353/6353 D R. R A J S I N G H Software Design COSC 4353/6353 D R. R A J S I N G H Creational Design Patterns What are creational design patterns? Types Examples Structure Effects Creational Patterns Design patterns that deal with object

More information

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering The Power of Unit Testing and it s impact on your business Ashish Kumar Vice President, Engineering Agitar Software, 2006 1 The Power of Unit Testing Why Unit Test? The Practical Reality Where do we go

More information

Elementary Concepts of Object Class

Elementary Concepts of Object Class Elementary Concepts of Object Class Modeling entities and their behaviour by objects. A class as a specification of objects and as an object factory, computation as message passing/function call between

More information

Adapt your tes-ng approach for Agile

Adapt your tes-ng approach for Agile Adapt your tes-ng approach for Agile Emma Armstrong @EmmaATester www.taoo;es-ng.,co,uk Emma.armstrong@towerswatson.com Today s Session So;ware development methodologies Tes-ng in those methodologies Agile

More information

CSC207H: Software Design SOLID. CSC207 Winter 2018

CSC207H: Software Design SOLID. CSC207 Winter 2018 SOLID CSC207 Winter 2018 1 SOLID Principles of Object-Oriented Design How do we make decisions about what is better and what is worse design? Principles to aim for instead of rules. e.g. there is no maximum

More information

The Project Management Professional Certifications Becoming ACP Certified

The Project Management Professional Certifications Becoming ACP Certified The Project Management Professional Certifications Becoming ACP Certified Introductions John Riopel PMP, MCP, MCTS Founder and CEO of PM Providers -Project Management Consulting and Training, and EPM Specialists

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information

Object Relationships

Object Relationships Object Relationships Objects can work together in three different types of relationships: Uses: An object can use another to do some work (association). Composition: A complex object may be composed of

More information

Magnetize Your. Website. A step-by-step action guide to attracting your perfect clients. Crystal Pina. StreamlineYourMarketing.com

Magnetize Your. Website. A step-by-step action guide to attracting your perfect clients. Crystal Pina. StreamlineYourMarketing.com Magnetize Your Website A step-by-step action guide to attracting your perfect clients Crystal Pina StreamlineYourMarketing.com 2016 StreamlineYourMarketing.com All Rights Reserved. Published by Streamline

More information