Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.

Slides:



Advertisements
Similar presentations
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 12, Software Life Cycle.
Advertisements

Computer Science Department
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering September 12, 2001 Capturing.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Example of a Problem Statement: Introduction into.
Announcements Quiz #1 grades are entered to STARS
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1 Utdrag ur Bruegges OH-bilder för första.
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
Chapter 6, System Design Lecture 1
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 5: Analysis, Object Modeling.
Introduction To System Analysis and Design
Conquering Complex and Changing Systems Object-Oriented Software Engineering TJSS System Design Lecture 12 Päivi Ovaska.
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Design “There are 2 ways of constructing a.
Chapter 1: Introduction
System Design: Decomposing the System
System Design.
Chapter 8, Object Design Introduction to Design Patterns
TJSS luennot System Design Lecture 1
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
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.
Ch 6: Sys. Architecture Design: System Decomposition
Object-Orientated Design Unit 3: Objects and Classes Jin Sa.
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering October 10, 2001 System.
Chapter 8 Object Design Reuse and Patterns. Finding Objects The hardest problems in object-oriented system development are: –Identifying objects –Decomposing.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 6 System Design: Decomposing the System.
System Design Decomposing the System. Sequence diagram changes UML 2.x specifications tells that Sequence diagrams now support if-conditions, loops and.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Chapter 6 System Design: Decomposing the System
Using UML, Patterns, and Java Object-Oriented Software Engineering Example of a Problem Statement: Introduction into ARENA.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Requirements Analysis Document Template 1.Introduction.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
CEN 4010 Sixth Lecture February 21, 2005 Introduction to Software Engineering (CEN-4010) System Design: Decomposing the System Spring 2005 Instructor:
System Design: Decomposing the System
Introduction To System Analysis and Design
Chapter Five–Part III Object Oriented Design More Design issues.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 6 System Design: Decomposing the System.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 6 System Design: Decomposing the System.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java. Also material obtained from past ECE 355 notes by.
CSE 303 – Software Design and Architecture LECTURE 4.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
COP 3331 Object-Oriented Analysis and Design 1 Design “There are two ways of constructing a software design: One way is to make it so simple that there.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system architecture 1 after designing to meet functional requirements, design the system.
Lecture 18: Object-Oriented Design
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
CSE 303 – Software Design and Architecture
Using UML, Patterns, and Java Object-Oriented Software Engineering 15. Software Life Cycle (Waterfall)
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1.
1 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 A Typical Example of Software Lifecycle Activities.
Two New UML Diagram Types Component Diagram Deployment Diagram.
Chapter 6 System Design: Decomposing the System
Chapter 6 System Design: Decomposing the System
Object-Oriented Software Engineering Using UML, Patterns, and Java,
OO Methodology OO Architecture.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Advance Software Engineering (CEN-5011)
An Introduction to Software Architecture
Decomposing the System
Presentation transcript:

Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly Halftime knowledge in software engineering: About 3-5 years Cost of hardware rapidly sinking  Design knowledge is a moving target Design window: Time in which design decisions have to be made.

Analysis Output: Requirements and System Model Object Model Functional Model Dynamic Model Nonfunctional Requirements

Software Lifecycle Activities Application Domain Objects Subsystems class... Solution Domain Objects Source Code Test Cases ? Expressed in Terms Of Structured By Implemented By Realized By Verified By System Design Detailed Design Implemen- tation Testing class.... ? Requirements Elicitation Use Case Model Analysis

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 The Scope of System Design Bridge the gap between a problem and an existing system in a manageable way Problem Existing System System Design How? Use Divide & Conquer: 1) Identify design goals 2) Model the new system design as a set of subsystems 3-8) Address the major design goals.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 System Design (Architectural Design) System design is concerned about the overall structure of the system How is it broken into pieces? How do these pieces fit together? Must they know about each other? Trade-off priorities What are the goals it tries to achieve? (Often listed under non functional requirements). Trade-off priorities Hardware/software allocation: Estimate hardware requirements, Hardware/software trade-offs, Describe processor allocation Data management: Data structures implemented in memory or secondary storage Identification of concurrency: Threads of control Feasibility: Discuss design alternatives, Technological constraints that drive the design, What if the constraints change?

Example of Design Goals Reliability Modifiability Maintainability Understandability Adaptability Reusability Efficiency Portability Traceability of requirements Fault tolerance Backward-compatibility Cost-effectiveness Robustness High-performance  Good documentation  Well-defined interfaces  User-friendliness  Reuse of components  Rapid development  Minimum number of errors  Readability  Ease of learning  Ease of remembering  Ease of use  Increased productivity  Low-cost  Flexibility

Developer/ Maintainer Minimum # of errors Modifiability, Readability Reusability, Adaptability Well-defined interfaces Stakeholders have different Design Goals Reliability Low cost Increased productivity Backward compatibility Traceability of requirements Rapid development Flexibility Client (Customer) Portability Good documentation Runtime Efficiency End User Functionality User-friendliness Usability Ease of learning Fault tolerant Robustness

Typical Design Trade-offs Functionality v. Usability Cost v. Robustness Efficiency v. Portability Rapid development v. Functionality Cost v. Reusability Backward Compatibility v. Readability

Subsystem Decomposition Subsystem –Collection of classes, associations, operations, events and constraints that are closely interrelated with each other –The objects and classes from the object model are the “seeds” for the subsystems –In UML subsystems are modeled as packages Service –A set of named operations that share a common purpose –The origin (“seed”) for services are the use cases from the functional model Services are defined during system design.

Subsystem Interfaces vs API Subsystem interface: Set of fully typed UML operations –Specifies the interaction and information flow from and to subsystem boundaries, but not inside the subsystem –Refinement of service, should be well-defined and small –Subsystem interfaces are defined during object design Application programmer’s interface (API) –The API is the specification of the subsystem interface in a specific programming language –APIs are defined during implementation The terms subsystem interface and API are often confused with each other –The term API should not be used during system design and object design, but only during implementation.

Subsystem Interface Object Good design: The subsystem interface object describes all the services of the subsystem interface Subsystem Interface Object –The set of public operations provided by a subsystem

Coupling and Coherence of Subsystems Goal: Reduce system complexity while allowing change Coherence measures dependency among classes –High coherence: The classes in the subsystem perform similar tasks and are related to each other via associations –Low coherence: Lots of miscellaneous and auxiliary classes, no associations Coupling measures dependency among subsystems –High coupling: Changes to one subsystem will have high impact on the other subsystem –Low coupling: A change in one subsystem does not affect any other subsystem Good Design

Example of a Bad Subsystem Decomposition AdvertisementUser Interface Session Management User Management Tournament Statistics Component Management Tournament

How to achieve high Coherence High coherence can be achieved if most of the interaction is within subsystems, rather than across subsystem boundaries Questions to ask: –Does one subsystem always call another one for a specific service? Yes: Consider moving them together into the same subystem. –Which of the subsystems call each other for services? Can this be avoided by restructuring the subsystems or changing the subsystem interface? –Can the subsystems even be hierarchically ordered (in layers)?