Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall A.1.
Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
Unified Modeling Language
1 CIS601: Object-Oriented Programming in C++ Note: CIS 601 notes were originally developed by H. Zhu for NJIT DL Program. The notes were subsequently revised.
Design. Overview Design and abstraction Action-oriented design Data flow analysis Transaction analysis Data-oriented design Object-oriented design Challenges.
Introduction To System Analysis and Design
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
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.
Software Engineering Principles and C++ Classes
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Course Instructor: Aisha Azeem
UML and Object Oriented Concepts
Introduction To System Analysis and design
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
Chapter 5CSA 217 Design in Construction Chapter 5 1.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
An Introduction to Software Architecture
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Unified Modeling Language, Version 2.0
3rd Country Training, K.Subieta: System Engineering and Databases. Lecture 3, Slide 1 February 20, 2004 Lecture 3: Introduction to Software Analysis and.
Introduction To System Analysis and Design
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
CSE 219 Computer Science III Program Design Principles.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Methodologies of the SDLC Traditional Approach to SDLC Object-Oriented Approach to SDLC CASE Tools.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
Design Concepts By Deepika Chaudhary.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
1/26 On-demand Learning Series Software Engineering of Web Application - Object-Oriented Development & UML Hunan University, Software School.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Abstraction ADTs, Information Hiding and Encapsulation.
Slide 13.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
PRINCIPLES OF GOOD DESIGN 12/7/ Assignment 4 – Deadline 28 Nov.  Read an article placed in generalshare course folder  Point: Design Patterns.
Thanks for Coming l WEB. Principles of Good Design SEI, SJTU WEB APPS and SERVICES.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Lecture 14 22/10/15. The Object-Oriented Analysis and Design  Process of progressively developing representation of a system component (or object) through.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
04 - OOD Intro.CSC4071 Software Design ‘Requirements’ defines –The goals the system needs to satisfy. ‘Specification’ defines –The externally-observable.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
Chapter 2 Principles of Programming and Software Engineering.
Basic Characteristics of Object-Oriented Systems
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Design Concepts ch-8
CompSci 280 S Introduction to Software Development
About the Presentations
Software Design AITI GP John Paul Vergara.
Object-Oriented Design
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Software Design Lecture : 14.
An Introduction to Software Architecture
CIS601: Object-Oriented Programming in C++
CSE 503 – Software Engineering
Principles of Good Design
Principles of Good Design
Presentation transcript:

Design Patterns OOD

Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples)

Stages of Learning Learn the Rules! –algorithms, data structures and languages of software –write programs, although not good ones Learn the Principles! –software design –programming paradigms with pros and cons Learn the Patterns! –study the "design of masters" –Understand! Memorize! Apply! Learn the Rules! –algorithms, data structures and languages of software –write programs, although not good ones Learn the Principles! –software design –programming paradigms with pros and cons Learn the Patterns! –study the "design of masters" –Understand! Memorize! Apply!

Goals of Design Decompose system into components Determine relationships between components –identify component dependencies –determine inter-component communication mechanisms Specify component interfaces –Interfaces should be well defined Describe component functionality – informally or formally Decompose system into components Determine relationships between components –identify component dependencies –determine inter-component communication mechanisms Specify component interfaces –Interfaces should be well defined Describe component functionality – informally or formally

Decomposition Motivation: handle complexity by splitting large problems into smaller problems, i.e. "divide and conquer" methodology 1.Select a piece of the problem (initially, the whole problem) 2. Determine the components in this piece using a design paradigm –e.g. functional, structured, object-oriented, generic, etc. 3. Describe the components interactions Repeat steps 1 through 3 until some termination criteria is met –e.g., customer is satisfied, run out of money, etc. Motivation: handle complexity by splitting large problems into smaller problems, i.e. "divide and conquer" methodology 1.Select a piece of the problem (initially, the whole problem) 2. Determine the components in this piece using a design paradigm –e.g. functional, structured, object-oriented, generic, etc. 3. Describe the components interactions Repeat steps 1 through 3 until some termination criteria is met –e.g., customer is satisfied, run out of money, etc.

Component a software entity encapsulating the representation of an abstraction a vehicle for hiding at least one design decision a "work" assignment for a programmer or group of programmers a unit of code that has one or more names has identifiable boundaries can be (re-)used by other components encapsulates data hides unnecessary details can be separately compiled (if supported) a software entity encapsulating the representation of an abstraction a vehicle for hiding at least one design decision a "work" assignment for a programmer or group of programmers a unit of code that has one or more names has identifiable boundaries can be (re-)used by other components encapsulates data hides unnecessary details can be separately compiled (if supported)

Component Interface A component interface consists of several sections: Imports –services required from other components Exports –services provided to other components Access Control –e.g. protected/private/public A component interface consists of several sections: Imports –services required from other components Exports –services provided to other components Access Control –e.g. protected/private/public

Modularity A modular system is one that's structured into identifiable components Modularity is important for both design and implementation phases Modularity facilitates software quality factors, e.g.: –Extensibility –Reusability –Portability A modular system is one that's structured into identifiable components Modularity is important for both design and implementation phases Modularity facilitates software quality factors, e.g.: –Extensibility –Reusability –Portability

Information Hiding Motivation: design decisions that are subject to change should be hidden behind abstract interfaces, i.e. components Components should communicate only through well- defined interfaces Each component is specified by as little information as possible If internal details change, client components should be minimally affected –not even recompiling or linking Information hiding is one means to enhance abstraction! Motivation: design decisions that are subject to change should be hidden behind abstract interfaces, i.e. components Components should communicate only through well- defined interfaces Each component is specified by as little information as possible If internal details change, client components should be minimally affected –not even recompiling or linking Information hiding is one means to enhance abstraction!

OO Design vs. OO Programming Object-Oriented Design –a method for decomposing software architectures –based on the objects every system or subsystem manipulates –relatively independent of the programming language used Object-Oriented Programming –construction of software systems as Structured collection of Abstract Data Types (ADT) Inheritance Polymorphism –concerned with programming languages and implementation issues Object-Oriented Design –a method for decomposing software architectures –based on the objects every system or subsystem manipulates –relatively independent of the programming language used Object-Oriented Programming –construction of software systems as Structured collection of Abstract Data Types (ADT) Inheritance Polymorphism –concerned with programming languages and implementation issues