ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (III) adapted from Dave Penny’s.

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.
1 OBJECT-ORIENTED CONCEPTS. 2 What is an object?  An object is a software entity that mirrors the real world in some way.  A software object in OOP.
Ch 3 System Development Environment
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 5 Architecture-Driven Component Development.
Introduction To System Analysis and Design
Objects First With Java A Practical Introduction Using BlueJ Designing object-oriented programs How to write code in a way that is easily understandable,
Object-Oriented PHP (1)
Chapter 25 GRASP: More Objects with Responsibilities 1CS6359 Fall 2011 John Cole.
THE OBJECT-ORIENTED DESIGN WORKFLOW Interfaces & Subsystems.
1 Objectives To introduces the concept of software Design. To introduce the concept of Object- Oriented Design (OOD). To Define various aspects about object.
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.
© M.E. Fayad SJSU -- CmpE Analysis Heuristics Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
CSCI-383 Object-Oriented Programming & Design Lecture 15.
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
Introduction To System Analysis and design
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
UFCEUS-20-2 : Web Programming Lecture 5 : Object Oriented PHP (1)
CS2110: SW Development Methods Design of methods (functions) Class design – CRC cards – UML class and sequence diagrams Software Design.
Introduction to Object-oriented programming and software development Lecture 1.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Sadegh Aliakbary Sharif University of Technology Fall 2011.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
CSCA48 Course Summary.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
CS 350 – Software Design The Object Paradigm – Chapter 1 If you were tasked to write code to access a description of shapes that were stored in a database.
Springl 2008 MIS380: Object-Oriented Programming using Java 1 Spring 2008.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
Introduction To System Analysis and Design
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Object-Oriented Programming (OOP) CSC-2071 (3+1=4 Credits) Lecture No. 1 MBY.
CSSE 374: More GRASP’ing for Object Responsibilities
Object-Oriented Design Principles and Patterns. © 2005, James R. Vallino2 How Do You Design? What principles guide you when you create a design? What.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns IX Interpreter, Mediator, Template Method recap.
GRASP: Designing Objects with Responsibilities
INFO1408 Database Design Concepts Week 15: Introduction to Database Management Systems.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Basic Concepts of Object Orientation Object-Oriented Analysis CIM2566 Bavy LI.
Salman Marvasti Sharif University of Technology Winter 2015.
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
Identifying Objects CSE301 University of Sunderland Harry R. Erwin, PhD.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Lecture Videos will no longer be posted. Assignment 3 is due Sunday, the 8 th, 7pm. Today: –System Design,
MVC WITH CODEIGNITER Presented By Bhanu Priya.
Evaluating an Object-Oriented Design ©SoftMoore ConsultingSlide 1.
Advanced Object-oriented Design Patterns Creational Design Patterns.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (II) adapted from Dave Penny’s.
04 - OOD Intro.CSC4071 Software Design ‘Requirements’ defines –The goals the system needs to satisfy. ‘Specification’ defines –The externally-observable.
Object-Oriented Software Engineering Practical Software Development using UML and Java Modelling with Classes.
OOPS CONCEPT.  OOPS  Benefits of OOPs  OOPs Principles  Class  Object Objectives.
Object- oriented Design Principles
COP 4331 – OOD&P Lecture 7 Object Concepts. What is an Object Programming language definition: An instance of a class Design perspective is different.
CSE 2341 Object Oriented Programming with C++ Note Set #4
Structure A Data structure is a collection of variable which can be same or different types. You can refer to a structure as a single variable, and to.
L3-S1Analysis Heuristics 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
CompSci 280 S Introduction to Software Development
CHAPTER 5 GENERAL OOP CONCEPTS.
Software Architecture & Difference from Design
Workshop for Programming And Systems Management Teachers
Applying Use Cases (Chapters 25,26)
Applying Use Cases (Chapters 25,26)
Object-Oriented PHP (1)
Presentation transcript:

ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (III) adapted from Dave Penny’s CSC407 material

ECE450 - Software Engineering II2 Object-Oriented Design The object-oriented transformation of the 1980’s and 1990’s was particularly profound, but it wasn’t easy –Object-oriented development salesmen took advantage of the wave of enthusiasm Objects were supposed to improve your performance tenfold Promise of reuse: Plug in your classes anywhere you need them –Many people struggled to “get it”...and wrote object-oriented programs just like they used to write structure-oriented programs I.e., programs -> classes; functions -> methods; or... I.e., copy all of your program and put it in the main() method of your class. Object modeling in the 1990’s –The best organization for a software system is one that is cohesive in the problem domain, not in the solution space Tends to isolate changes Tends to make the program easier to understand

ECE450 - Software Engineering II3 Object-Oriented Principles Encapsulation –Which embodies one of our now-familiar principles (information hiding) –Modern languages allow us to enforce encapsulation through access declaration (example: public vs. protected attributes) Inheritance –Declare new classes by extending old ones –We inherit all of the old attributes and methods, but are free to modify/override any of them, and to add new ones Polymorphism –Substitute one type for another without the caller needing to know We can make a Student.getGrade() call without worrying if we’re dealing with an UndergraduateStudent, a GraduateStudent, or a generic Student.

ECE450 - Software Engineering II4 Object Modeling Method How do we even come up with the classes we will use in our system? Step 1: Object-Oriented Analysis –Analyze the problem domain Identify problem domain classes and relationships between classes Identify attributes and methods Identify states and transitions Sample object structures and interactions –At this level we are not programming! We are abstracting the real world Step 2: Object-Oriented Design –Use the analysis as the core of a solution to: User interface design Database design Program design

ECE450 - Software Engineering II5 Can we model everything? I’d like to see you try... –But the world is too complex for us to model it completely A full model of you should include: –Your basic information (name, gender, etc.) –Your background –Your family background and a trace to your ancestors –Your medical history –Your record of marks –Your fingerprints and other bio-prints –Your financial information –A list of your friends, crushes, enemies, and acquaintances –Your DNA –... We only model that which is relevant to the problem domain that we face –Though there is such a thing as the CYC project...

ECE450 - Software Engineering II6 Limitations of the Object-Oriented Paradigm Fluids –Need to be handled with amounts, but amounts vary with temperature/pressure Temporal concepts –If we represent them with objects, we end up with awkward processes to handle them Is a year the accumulation of 365 day objects? –If we don’t, we may lose other advantages of object-orientation (such as encapsulation) Abstract concepts –Can we reduce “preference” to an object or attribute? And sometimes objects just get in the way –You need a quick script and Java insists on a full object structure –Hence the rise of non-dogmatic object oriented languages (e.g. Python)

ECE450 - Software Engineering II7 Trying it out: A meeting scheduler Here’s a relatively concrete problem. We have the task of developing a meeting scheduler. –Meetings have an organizer that may or may not attend the meeting, and a number of attendees –Some of the attendees are essential to the meeting, others are optional –Everyone has some preferences about when to meet, and some constraints –Some of the attendees are Big Cheeses and we want the scheduler to satisfy their preferences over those of others –Meetings usually have an agenda. Often, somebody takes the role of secretary, and produces the meeting’s minutes –Arrangements for the meetings should usually happen electronically. Some people are annoyed by this and take a long time to respond to invitations –Meetings require a space, a duration, and in some occasions equipment (such as a projector or a company-owned laptop) What are the classes in this problem domain? –What are their attributes and methods?

ECE450 - Software Engineering II8 Some observations... There was some unnecessary information that should not be modeled Not all of our classes will become classes in the system –But many of them will So far we’re dealing with the business logic –Later on we should also consider how the system is going to support the methods of these classes User interface objects Databases... Most likely we got some classes wrong and we didn’t plan for change –E.g. the meeting is a videoconference and we need to book rooms both in Toronto and in Vancouver And we’re on different timezones –This is where patterns will come in handy PRACTICE THAT EXERCISE IN OTHER DOMAINS –I guarantee you it’s going to come up in your exam

ECE450 - Software Engineering II9 Summary of design principles Decomposition –Avoid workflow-based decomposition Information hiding –Each module/class hides its own secrets (data representations, algorithms, formats, lower-level interfaces) Minimize coupling –If we talk/share information, it’s because the problem demands it Maximize cohesion –Each module/class does (close to) one thing only Extensibility –Open for extension, closed for modification –No, we haven’t talked about this one We will get back to it