Design Design and Software Architecture. The design phase The analysis phase describes what the system should be doing The design phase describes how.

Slides:



Advertisements
Similar presentations
Chapter 11 Component-Level Design
Advertisements

Feb R. McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m Function:
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Copyright W. Howden1 Lecture 6: Design Evaluation and Intro to OO Design Patterns.
Object-Oriented Metrics
Design Patterns. What are design patterns? A general reusable solution to a commonly occurring problem. A description or template for how to solve a problem.
February Ron McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m.
PVK-Ht061 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Low Coupling High Cohesion
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
PVK-Ht051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Feb 4, Ron McFadyen1 founded on principles of good OO design idea was first put forth by Christopher Alexander (1977) in their work concerning.
Software Waterfall Life Cycle Requirements Construction Design Testing Delivery and Installation Operations and Maintenance Concept Exploration Prototype.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Sadegh Aliakbary Sharif University of Technology Fall 2011.
Object Oriented Programming Key Features of OO Approach Data encapsulation –data and methods are contained in a single unit, object –promotes internal.
GRASP Patterns Presented By Dr. Shazzad Hosain. Patterns A pattern describes a problem and solution, and given a name. Examples are Singleton, Adapter,
Design Dan Fleck CS 421 George Mason University. What is the design phase? Analysis phase describes what the system should do Analysis has provided a.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
BTS430 Systems Analysis and Design using UML Domain Model Part 1—Finding Conceptual Classes.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
Design Patterns: Structural Design Patterns
OODP Prudent OO Design. OODP-2 The Pillars of the Paradigm Abstraction Encapsulation Hierarchy –Association, Aggregation –Inheritance Polymorphism.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
Go4 Visitor Pattern Presented By: Matt Wilson. Introduction 2  This presentation originated out of casual talk between former WMS “C++ Book Club” (defunct.
Coming up: What is the design phase? Design (Ch 8 and Ch 12) Dan Fleck CS 421 George Mason University.
Chapter 17 GRASP: Designing Objects with Responsibilities. 1CS6359 Fall 2011 John Cole.
COMP 6471 Software Design Methodologies Winter 2006 Dr Greg Butler
Patterns and Reuse. Patterns Reuse of Analysis and Design.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
Swing MVC Application Layering A Layer is a collection of components that Perform similar tasks. Perform similar tasks. Isolate implementation details.
Refactoring for Testability (or how I learned to stop worrying and love failing tests) Presented by Aaron Evans.
ECE450S – Software Engineering II
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Design Patterns -- Omkar. Introduction  When do we use design patterns  Uses of design patterns  Classification of design patterns  Creational design.
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
Salman Marvasti Sharif University of Technology Winter 2015.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Coming up: What is the design phase? Design Dan Fleck CS 421 George Mason University.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
BTS430 Systems Analysis and Design using UML
L’origine dei mali: le dipendenze tra componenti Stefano Leli 14° Workshop DotNetMarche Venerdì 16 aprile
Sadegh Aliakbary Sharif University of Technology Fall 2010.
1 Week 7 Software Engineering Spring Term 2016 Marymount University School of Business Administration Professor Suydam.
Design Patterns Source: “Design Patterns”, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides And Created.
Copyright © Jim Fawcett Spring 2017
CompSci 280 S Introduction to Software Development
Dan Fleck CS 421 George Mason University
Software Architecture & Difference from Design
MPCS – Advanced java Programming
Design Patterns Lecture part 2.
Week 2, Day 1: The Factory Method Pattern
Conception OBJET GRASP Patterns
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Copyright © by Curt Hill
Presentation on GRASP Patterns Submitted by
Software Quality Engineering
The Object Oriented Approach to Design
Adaptive Code Umamaheswaran Senior Software Engineer
Chapter 13 Logical Architecture.
CIS 375 Bruce R. Maxim UM-Dearborn
Component-Level Design
Chapter 13 Logical Architecture.
Design Tips.
Software Design Lecture : 8
Presentation transcript:

Design Design and Software Architecture

The design phase The analysis phase describes what the system should be doing The design phase describes how the system will do it – We’re working at the level of designing the code itself (in part)

Different types of design Architecture design (SWE 443) – Layers of the software (e.g. model, view, controller (MVC)) – Categories of classes (e.g. UI, Business logic, interfaces) Component design (SWE 332) – Individual classes UI design (SWE 205) – Sample screens – UI guidelines Data design – Database design – Data structure design

Good design Design principles – What you should try to do Design patters – What other people have done and found successful Design metrics – How do you measure what you have done, to decide if it is good?

Bad design Software that is rigid – Hard to change because every change affects a large part of the system. Example? Fragility – When you make a change, unexpected bad things happen. Example? Immobility – Can’t reuse components successfully. Example?

Design principle examples Single responsibility principle (see video) Interface segregation principle (see video) Many more that we have talked about other classes related to OO concepts of abstraction and information hiding

Design pattern examples Singleton (see video) Factory (see video) Visitor (see video) Many many more

Design metrics Class size Methods per class Lack of cohesion (too many methods with dissimilar purpose) Coupling between classes (we want to keep this low) Depth of inheritance tree Method complexity

Quiz review What is a design principle? – Single Responsibility Principle – Interface Segregation Principle What is a design pattern? – What is the point of the singleton pattern? – What is the point of the factory pattern? – What is the point of the visitor pattern? What is rigid software? Fragile software? Immobile software? What is class cohesion? What is class coupling?

In-class exercises Imagine I am writing code for Amazon. What is wrong with the following interface, if I will have movies, t-shirts, and books all implement it? (it’s pseudocode btw) interface Item{ – double getPrice() – int getWeight() – int getLength() – String getItemName() }