Introduction to Design. What is Design? 2 minutes Pairs.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Lecture 6: Software Design (Part I)
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Object-Oriented Software Development CS 3331 Fall 2009.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
May 2, May 2, 2015May 2, 2015May 2, 2015 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific University, Azusa, CA.
Design Concepts and Principles
Chapter 13 Design Concepts and Principles
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Software Engineering and Design Principles Chapter 1.
© 2009 University of California, Irvine – André van der Hoek1June 10, 2015 – 18:31:15 Informatics 122 Software Design II Lecture 2 André van der Hoek &
Week 2 Design Examples and Designing for Change Alex Baker.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
© 2009 University of California, Irvine – André van der Hoek1June 15, 2015 – 20:01:34 Informatics 122 Software Design II Lecture 1 André van der Hoek &
© 2009 University of California, Irvine – André van der Hoek1June 17, 2015 – 09:17:24 Informatics 122 Software Design II Lecture 6 André van der Hoek &
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
© 2010 University of California, Irvine – André van der Hoek1June 26, 2015 – 00:06:40 Informatics 122 Software Design II Lecture 6 André van der Hoek &
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
CS-499G 8/17/ Design Concepts and Principles.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Week 2 Design Examples and Designing for Change Alex Baker.
Chapter 2 The process Process, Methods, and Tools
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSE 303 – Software Design and Architecture
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
+ Informatics 122 Software Design II Lecture 6 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
SE: CHAPTER 7 Writing The Program
© 2010 University of California, Irvine – André van der Hoek1October 23, 2015 – 10:21:58 Informatics 122 Software Design II Lecture 1 André van der Hoek.
Cohesion and Coupling CS 4311
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.
GRASP: Designing Objects with Responsibilities
Design Concepts By Deepika Chaudhary.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 303 – Software Design and Architecture
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
 System Requirement Specification and System Planning.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Software Design.
7. Modular and structured design
CompSci 280 S Introduction to Software Development
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
Informatics 122 Software Design II
Informatics 122 Software Design II
Lecture 9- Design Concepts and Principles
Algorithms and Problem Solving
Informatics 122 Software Design II
Informatics 122 Software Design II
Presentation transcript:

Introduction to Design

What is Design? 2 minutes Pairs

Definition of Design May refer to an activity: “When I design, I always use a whiteboard first”

Definition of Design May refer to an activity: “When I design, I always use a whiteboard first” May refer to a product: “My design is super cool, I know it will work”

Definition of Design May refer to an activity: “When I design, I always use a whiteboard first” May refer to a product: “My design is super cool, I know it will work” May refer to a field: “Software design is complex”

Definition of Design Webster’s 3 rd : –Sketch a pattern or outline for a problem –To plan and carry out in a skillful way

Definition of Design Webster’s 3 rd : –Sketch a pattern or outline for a problem –To plan and carry out in a skillful way SE: –the process of identifying a set of components and interfaces from a set of requirements relying on SE techniques, imagination, experience and art!

Design is not unique to SE There are countless design fields –Architecture design –Graphic design –Fashion design –Game design –Chip design –Car design –Instrument design –Product design –… But also –Law –Chemical synthesis –Process design –Study design –… And also –Writing –Painting –Sculpturing –Music composition –…

What is the Purpose of Design in SE? 1 minute Pairs

What is the Purpose of Design in SE? To determine a set of components and interfaces that satisfy a set of requirements To manage complexity To solve in the abstract before we invest in solving in the concrete

Need a shared language Design quality is in part subjective However, we need a language that we can use to –understand the underlying implications of certain designs –understand the intentions of designers –effectively frame our communication about designs

Purpose of Design Is a road map Describes a path from requirements to the outcome Describes what the implementers should do Is a guide towards future change

Purpose of Design: More Shared understanding Is a road map –understandable, unambiguous, consistent, helpful, … Describes a path from requirements to the outcome –correct, complete, concise, verifiable, effective, … Describes what the implementers should do –elegant, partitionable, recomposable, resilient, … Is a guide towards future change –evolvable, …

Objectives for Overall Process Apply rigor Separate concerns Anticipate change Generalize Work incrementally

Design Concerns Different concerns must be addressed by a design solution Relative importance of concerns depends on problem being solved –“I want my e-commerce site to have a recognizable logo” –“My e-commerce site must scale to 1 million hits per minute”

Design Concerns Different concerns must be addressed by a design solution Relative importance of concerns depends on problem being solved –“I want my e-commerce site to have a recognizable logo” –“My e-commerce site must scale to 1 million hits per minute” Importance of a given concern might not be obvious –“I want my payroll software to properly handle the exchange rate”

Design Concerns Different concerns must be addressed by a design solution Relative importance of concerns depends on problem being solved –“I want my e-commerce site to have a recognizable logo” –“My e-commerce site must scale to 1 million hits per minute” Importance of a given concern might not be obvious –“I want my payroll software to properly handle the exchange rate” As a designer, you need to find the concerns that are most important and have most impact

Some designs are better than others What makes a given software design “good”? What makes a given software design “beautiful”? What should we strive for in creating a software design? (4 minutes, pairs)

Design Principles Structure to accommodate change

Design Principles Structure to accommodate change We don’t know what the future needs are Implementers need to be able to change code quickly How do we achieve this?

Abstraction What is it? Why is it useful? How can you tell abstract from concrete?

Levels of Abstraction Abstract and concrete are relative –More than two levels (such as “hot” and “cold”) –“A” is more abstract (concrete) than “B” Top-down or bottom-up design An approach to dealing with complexity

Objectives for Class Design High Cohesion Low Coupling Completeness Convenience Clarity Consistency Fault Prevention and Tolerance

Cohesion What is it?

Cohesion Definition: The degree to which all elements of a component are directed towards a single task and all elements directed towards that task are contained in a single component. Refers to the contents of a single component.

Coupling What is it?

Coupling Definition: the amount of interaction among components in a system. High coupling makes modifying parts of the system difficult, e.g., modifying a component affects all the components to which the component is connected.

Emphasis on Changability Change abounds… –During design –During coding –Upon delivery –After use Reuse for later projects

Changability: Basic Principles Low Coupling: Reducing interdependency –Changes don’t propagate –Reuse is facilitated High Cohesion: Grouping functionality –Easier to find things –Metaphor guides decisions Encapsulation

Keep It Simple Nothing should be more complicated than absolutely essential The inherent complexity of everything should be questioned: can it be done more simply?

Encapsulation Hide design decisions that are most likely to change, thereby protecting other parts of the program from change if the design decision is changed

Modularity Modular software is divided into separately named and addressable components that are integrated to satisfy requirements Why do this?

Modularity Modular software is divided into separately named and addressable components that are integrated to satisfy requirements. Reduces complexity (compared to monolithic programs). –Fewer control paths –Smaller span of reference –Fewer variables Tradeoff: need to integrate modules

Criteria for Defining Modular System Composability: components can be used in system Understandability: Module can be understood as stand-alone unit Coupling: Small changes to the system requirements result in changes to individual modules Isolation: Effects of aberrant condition is constrained within a module

Maintainability What reasons are there for having to maintain a system?

Maintainability Most maintenance tasks are designed to enhance the software. 60% of total costs! 1. corrective maintenance: removal of residual errors, present in the product when delivered or during maintenance (+20%) 2. adaptive maintenance: adjusting application to changes in environment (+20%) 3. perfective maintenance: improving some of the software features or qualities (+50%)

Design Levels Architecture Interface Code design (Detailed design) Executable design

Design Levels Architecture Interface Code design (Detailed design) Executable design These are not necessarily disjoint

Design Levels Architecture –Associate capabilities in requirements with components that implement them. –Components are modules. –Architecture abstractly describes interconnection of components Interface Code design (Detailed design) Executable design

Design Levels Architecture Interface –Describes in detail how components communicate Code design (Detailed design) Executable design

Design Levels Architecture Interface Code design (Detailed design) –Algorithms and data structures. –Data representations. –Primitive implementation-level constructs. Executable design

Design Levels Architecture Interface Code design (Detailed design) Executable design –Memory allocation –Data formats

Conceptual Design Documents the concept of the system (such as done for the SRS) Describes form of system Used to communicate with client Provides sources of data, report and screen layout, user interface Independent of implementation

Technical Design Provides low-level details of system Used to communicate with developers Describes components, hierarchies of functions, data structures and data flows

Design Patterns A design pattern names, abstracts, and identifies the key aspects of a common design structure that can make it useful for creating a reusable design. The design pattern identifies the participating classes and instances, their roles and collaborations, and the distribution of responsibilities.

Redesign (refactoring) When a design does not allow easy modification, change the design Refactoring: modifying the code to improve the design without changing the functionality If maintaining the software is difficult, refactor first

Advice Every design approach separates system into components Component should have well-defined inputs and outputs Each system activity should be accomplished by one (and only one) component