Designing for Volatility

Slides:



Advertisements
Similar presentations
Harithan R velagala CSE 532 TERM PAPER. First what is a service? A service is a reusable component which transforms business data. It is self contained.
Advertisements

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
1 / 24 CS 425/625 Software Engineering Software Evolution Based on Chapter 21 of the textbook [SE-8] Ian Sommerville, Software Engineering, 8 th Ed., Addison-Wesley,
NJIT More GRASP Patterns Chapter 22 Applying UML and Patterns Craig Larman Prepared By: Krishnendu Banerjee.
Oct. 9, 2003CS WPI1 CS 509 Design of Software Systems Lecture #6 Thursday, Oct. 9, 2003.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Computer Science 240 Principles of Software Design.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Object Oriented Analysis and Design Introduction.
CSE 303 – Software Design and Architecture
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
Company Confidential – Do Not Duplicate 2 Copyright 2008 McLane Advanced Technologies, LLC S.O.L.I.D. Software Development Achieving Object Oriented Principles,
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
Stephenson College DP 96 1 Object-Orientation by Derek Peacock.
CPSC 871 John D. McGregor Module 6 Session 3 System of Systems.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Introduction to SOLID Principles. Background Dependency Inversion Principle Single Responsibility Principle Open/Closed Principle Liskov Substitution.
S.O.L.I.D. Software Development 12 January 2010 (Martin Verboon, Patrick Kalkman, Stan Verdiesen)
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
Using Mock Objects with Test Driven Development Justin Kohlhepp
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Five design principles
Design Patterns in Context ©SoftMoore ConsultingSlide 1.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
SOLID Design Principles
Modern Systems Analysis and Design Third Edition Chapter 2 Succeeding as a Systems Analyst 2.1.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Microsoft Advertising 16:9 Template Light Use the slides below to start the design of your presentation. Additional slides layouts (title slides, tile.
CSCE 240 – Intro to Software Engineering Lecture 3.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
Design I. Properties of good design Minimize complexity Maintainable Loose coupling Extensibility Reusability High fan in Low to medium fan out Portability.
Mantas Radzevičius ifm-2/2
2.1 - Classification of skills
Object-Orientated Analysis, Design and Programming
Design Patterns Source: “Design Patterns”, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides And Created.
WARNING These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010.
CompSci 280 S Introduction to Software Development
CS240: Advanced Programming Concepts
WARNING These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010.
Software Architecture & Difference from Design
Copyright © by Curt Hill
object oriented Principles of software design
Object Oriented Practices
CS 425/625 Software Engineering Software Evolution
IST 402: Emerging Technologies
11/29/2018 © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks.
Object Oriented Design Patterns - Structural Patterns
Software Engineering Lecture #9.
Need for the subject.
Design Tips.
Unit 6 Assignment 2 Chris Boardley.
Software Design Lecture : 8
Object Oriented Practices
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Software Design Principles
A (partial) blueprint for dealing with change
CS 2704 Object Oriented Software Design and Construction
Object Oriented Design & Analysis
Dependency Inversion principle
Some principles for object oriented design
Chapter 8 - Design Strategies
Helping Teachers Change to More Appropriate Practice
Jim Fawcett CSE687 – Object Oriented Design Spring 2015
Building a “Decision Matrix”
Presentation transcript:

Designing for Volatility A look at volatility based decomposition and design

The One True Slide What? Why? When? How?

What…is volatility According to Vocabulary.com: Volatility is the trait of being excitable and unpredictable. Your volatility might ultimately be the thing that makes you unsuitable as [an anger management counselor]. The noun volatility is the characteristic of changing often and unpredictably. TL;DR – Volatility means things change

What… is volatility based decomposition Two Primary Types Functional Decomposition …is the process of taking a complex process and breaking it down into its smaller, simpler parts…based on the varying functions the process or system performs. Volatility based decomposition …is the process of decomposing a process based not on what the system does, but rather on the volatility inherent in the process.

It’s not this serious… In truth, projects should almost always use BOTH – just not for the same purpose

Why… Characteristics of Good Software Design Maintainability Legibility Extensibility Reusability

Why… Characteristics of Good Software Design In Short: Adaptability Maintainability Legibility Extensibility Reusability In Short: Adaptability “Intelligence is the ability to adapt to change” – Stephen Hawking

Why… Focus on what hurts most… True business logic / functional concerns tend to be surprisingly self-constraining Volatile interactions hurt more than volatile business rules Functional decomposition ignores interaction… Change tends to be a much more difficult beast to manage… (Lando didn’t account for volatility)

When Initial focus is in the architecture/design phase This is the easiest time to identify and organize volatile components Continued attention throughout the development lifecycle Sometimes as an individual component becomes more complex, additional volatility can surface

How… Patterns already exist to help!

SOLID Principles Single Responsibility – Responsibility = Reason to Change Open/Closed – Deals with how to support change within a concept Extension versus modification Liskov Substitution – Makes it possible for external contract implementations to change Interface-segregation – Provides for minimal change impact Dependency Inversion – Allows all levels of the application to be insulated from change

Take Away If nothing else, remember the “One True Slide” What…is likely to change Why…is it likely to change When…is it likely to change How…is it likely to change