S.O.L.I.D. Software Development 12 January 2010 (Martin Verboon, Patrick Kalkman, Stan Verdiesen)

Slides:



Advertisements
Similar presentations
Object Oriented Design Principles Arnon Rotem-Gal-Oz Product Line Architect.
Advertisements

Design Principles & Patterns
Since 1995, we’ve been building innovative custom solutions specifically designed to meet the unique needs of America’s most recognized companies. If you.
St Louis Day of.NET 2011 Refactoring to a SOLID Foundation Steve Bohlen Senior Software Engineer SpringSource/VMware Blog:
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
SOLID Object Oriented Design Craig Berntson
1 Software Maintenance and Evolution CSSE 575: Session 6, Part 1 The “SEAM” Model Steve Chenoweth Office Phone: (812) Cell: (937)
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
1 OO Design Principles Project Group eXtreme Programming Md. Abul Bashar 07/09/2004.
CLASS DESIGN PRINCIPLES Lecture 2. The quality of the architecture What is a good design? It is the design that at least does not have signs of “bad”.
1 OO Design Novosoft, 2001 by V. Mukhortov. 2 OO Design Goals  Flexibility Changes must be localized  Maintainability Modules requiring changes can.
Case Studies on Design Patterns Design Refinements Examples.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
Company Confidential – Do Not Duplicate 2 Copyright 2008 McLane Advanced Technologies, LLC S.O.L.I.D. Software Development Achieving Object Oriented Principles,
Software Engineering. Administrivia This is me: Cyndi Rader You can reach me: Or find me here: BB 280D Class notes here:
OODP Prudent OO Design. OODP-2 The Pillars of the Paradigm Abstraction Encapsulation Hierarchy –Association, Aggregation –Inheritance Polymorphism.
Tech Talk Go4 Factory Patterns Presented By: Matt Wilson.
© 2004 Capgemini - All rights reserved SOLID - OO DESIGN PRINCIPLES Andreas Enbohm, Capgemini.
CSE 301 Exam Revision Lecture
Introduction to SOLID Principles. Background Dependency Inversion Principle Single Responsibility Principle Open/Closed Principle Liskov Substitution.
Башкирцев (Старовер) Станислав JavaTalks OOD Principles.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
Design Principles iwongu at gmail dot com.
The benefits of SOLID in software development Ruben Agudo Santos (GS-AIS-HR)
 What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions.
Software Design Principles
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
OO Design Principles Copyright © Vyacheslav Mukhortov, Nikita Nyanchuk-Tatarskiy, Copyright © INTEKS LLC,
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Design for testability as a way to good coding Simone Chiaretta Architect, Council of the EU December 9 th,
High Cohesion Low Coupling Old Standards for Object Oriented Programming.
Five design principles
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Principles of Object Oriented Design
PRINCIPLES OF OBJECT ORIENTED DESIGN S.O.L.I.D. S.O.L.I.D Principles What is SOLID?  Acrostic of 5 Principles:  The Single Responsibility Principle.
SOLID Design Principles
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Dependency Inversion Principle Jon McBee Principal Software Engineer Ultratech CNT.
Session 33 More on SOLID Steve Chenoweth Office: Moench Room F220 Phone: (812) Chandan Rupakheti Office: Moench.
SOLID PHP & Code Smell Wrap-Up
Liskov Substitution Principle Jon McBee CLA, CLED, CTD, CPI, LabVIEW Champion.
Microsoft Advertising 16:9 Template Light Use the slides below to start the design of your presentation. Additional slides layouts (title slides, tile.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
1 Advanced Object- oriented Design – Principles CS320 Fall 2005.
1 Advanced Object-oriented Design – Principles and Patterns OO Design Principles.
Mantas Radzevičius ifm-2/2
Course information Old exam Resit Report Result and walkthrough
Dependency Inversion Principle
Software Design Principles
Software Architecture & Difference from Design
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Copyright © by Curt Hill
Software Design Principles
lecture 08, OO Design Principle
11/29/2018 © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks.
Design Tips.
15 letters that will change your code
Why OO Paradigm is better?
The SOLID Principles.
A (partial) blueprint for dealing with change
Principles of Object-Oriented Design
European conference.
Software Development An overview of careers in Business Application Development Sources: Dice.com, money.CNN.com, InfoWorld.com, money.USNews.com,
Object Oriented Design & Analysis
Dependency Inversion principle
Some principles for object oriented design
Chapter 10 – Component-Level Design
Presentation transcript:

S.O.L.I.D. Software Development 12 January 2010 (Martin Verboon, Patrick Kalkman, Stan Verdiesen)

12 january S.O.L.I.D. software development Software development is not a Jenga game!

3 Intention of this meeting Hand out concrete tips that can help during (software) design and development by introducing S.O.L.I.D. design principles S.O.L.I.D. software development 12 january 2010

Agenda 4 Introduction Theory – Single Responsibility Principle (SRP) – Open-Closed Principle (OCP) – Dependency Inversion Principle (DIP) Interactive workshop Presenting workshop results Conclusion 15 min. 20 min. 15 min. 10 min. S.O.L.I.D. software development 12 january 2010

Introduction – why necessary? 5 S.O.L.I.D. software development S.O.L.I.D. is useful as reference while designing applications Managing dependencies makes maintainability easier – Consists of creating dependency ‘firewalls’ Various principles and techniques available for building dependency firewalls 12 january 2010

Introduction – helpful principles 6 S.O.L.I.D. software development Principles of object oriented (class) design: – Single Responsibility Principle (SRP) – Open-Closed Principle (OCP) – Liskov Substitution Principe (LSP) – Interface Segregation Principle (ISP) – Dependency Inversion Principle (DIP) 12 january 2010

Single Responsibility Principle (SRP) 7 S.O.L.I.D. software development Just because you can, doesn’t mean you should 12 january 2010

Single Responsibility Principle (SRP) S.O.L.I.D. software development8 “There should never be more than one reason for a class to change” Simplest principle, hardest to get right Finding and separating responsibilities may be hard to do When violated: fragile design that breaks in unexpected ways when changed 12 january 2010

Single Responsibility Principle (SRP) 12 january 2010 S.O.L.I.D. software development9

Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development10 Open chest surgery is not needed when putting on a coat

Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development11 “Software entities should be open for extension, but closed for modification” Abstraction is the key Extend behavior instead of changing old code that already works  reusability and maintainability When violated: cascading changes to dependent modules during changes

Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development12 Adding new interval requires switch to change = changing working code Adding new types requires switch to change = changing working code

Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development13 Step 1

Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development14 Would you solder a lamp directly to the electrical wiring in a wall?

Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development15 “Depend upon abstractions; Do not depend upon concretions” High level modules should: – depend upon abstraction of low level modules – force low level modules to change When violated: lower level module changes can force high level modules to change

12 january 2010 S.O.L.I.D. software development16 Dependency Inversion Principle (DIP) BITS = Background Intelligent Transfer System; for downloading updates

12 january 2010 S.O.L.I.D. software development17 Workshop introduction Examples are handed out to every group Write down found principles on given paper; including possible solution Hang up paper when finished Maximum of 20 minutes Presentation of results

Interactive workshop 12 january 2010 S.O.L.I.D. software development18 2 examples + 1 optional example Write results on paper Hang up paper when finished Time limit: 20 minutes

Workshop results 12 january 2010 S.O.L.I.D. software development19

Conclusion 12 january 2010 S.O.L.I.D. software development20 SOLID design principles not new but provide concrete checklist Start by recognizing SOLID principles Also read the (L)SP and the (I)SP principles Can be used when creating new designs Can be used to improve existing designs