Software Design Principles

Slides:



Advertisements
Similar presentations
Lecture 6: Software Design (Part I)
Advertisements

Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Design Concepts and Principles
Chapter 13 Design Concepts and Principles
Design Phase What’s design?
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
TCS2411 Software Engineering1 Software Design Principles “Producing the software blueprint”
1 SYSTEM and MODULE DESIGN Elements and Definitions.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
COMP6015 An Introduction to Computer Programming
CS-499G 8/17/ Design Concepts and Principles.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
CSE 303 – Software Design and Architecture
Chapter 9 Design Engineering
 2004 by SEC Chapter 4 Software Design. 2  2004 by SEC Chapter 4 Software Design 4.1 Design Fundamentals 4.2 Design Method 4.3 Architecture Design
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.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
CSEB233: Fundamentals of Software Engineering Software Design.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Chapter : Design Engineering. Design Engineering It covers the set of principles, concepts, and practices that lead to the development of a high quality.
1 Introduction to Software Engineering Lecture 1.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e.
SIM3302 SOFTWARE DESIGN & TESTING
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Design Concepts By Deepika Chaudhary.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
ARCHITECTURAL DESIGN. Why is Architecture Important? Representations of software architecture are an enabler for communication between all parties (stakeholders)
Developed by Reneta Barneva, SUNY Fredonia Software Design and Software Engineering.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 9: Design Engineering Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Software Engineering B.Tech IT/II Sem-II Term: Unit-4 PPT SLIDES Text Books:1.Software Engineering, A practitioner’s approach Roger s. Pressman.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
Software Design. Introduction Designing engineering encompasses the set of principles concepts and practices that lead to the development of a high quality.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Design Concepts ch-8
Design (Concepts and Principles)
7. Modular and structured design
Chapter ? Quality Assessment
System Design and Modeling
Design engineering Prepared By:Jay A.Dave..
which satisfies software requirements
Software Engineering: A Practitioner’s Approach, 6/e Chapter 9 Design Engineering copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For.
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
For University Use Only
Software Quality Engineering
CIS 375 Bruce R. Maxim UM-Dearborn
Improving the Design “Can the design be better?”
CS223: Software Engineering
Chapter 9 Architectural Design
Software Design CMSC 345, Version 1/11.
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Lecture 9- Design Concepts and Principles
Chapter 9 Design Engineering
Design Engineering.
Chapter 9 Architectural Design.
Software Modelling and Design
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

Software Design Principles “Producing the software blueprint”

Objectives To understand the importance of design in developing quality software To describe the translation from the requirements analysis model to the design model To understand the principles that guide proper design of software

Designing A House If you are asked to design a house… D W W Kitchen Room 2 D WC D Living Room Room 1 D W W

What Is Design? Explaining the idea/concept of something Usually with graphical diagrams With the intention to build from the explanation The design is a representation of a product or a system with sufficient detail for implementation

The Second Task Problem Analysis Design Models Development Solution Testing

Designing Software From our understanding of the problem, we start building the software Translate the analysis model into the design model Map the information from the analysis model to the design representations - data design, architectural design, interface design, procedural design

Translation Model Data Object Description Entity- Relationship Diagram Data Object Description Process Specification (PSPEC) Procedural design Data Dictionary Data Flow Diagram Interface design State-Transition Diagram Architectural design Control Specification (CSPEC) Data design

Design Principles Design process should not suffer from “tunnel vision” The design should be traceable to the analysis model The design should not reinvent the wheel; Time is short The design should “minimize intellectual distance” between the software and the problem in the real world

Design Principles (Continued) The design should exhibit uniformity and integration The design should be structured to accommodate change The design should be structured to degrade gently.

Design Principles (Continued) Design is not coding, coding is not design The design should be assessed for quality as it is being created, not after the fact The design should be reviewed to minimize conceptual errors

Design Concepts Fundamental concepts which provide foundation to design correctly: Abstraction Refinement Modularity Software Architecture Control Hierarchy Structural Partitioning Data Structure Software Procedure Information Hiding

Abstraction Identifying important features for representation There are many levels of abstraction depending on how detailed the representation is required Data abstraction - representation of data objects Procedural abstraction - representation of instructions

Refinement Stepwise refinement - top-down design strategy by Niklaus Wirth Starting at the highest level of abstraction, every step of refinement ‘decompose’ instructions into more detailed instructions Complementary to abstraction

Modularity Software is divided into separately named and addressable modules “Divide and conquer” approach - problem is broken into manageable pieces Solutions for the separate pieces then integrated into the whole system

Divide And Conquer S1 S2 P1 P2 S5 P5 P4 P3 S3 S4

Software Architecture Modules can be integrated in many ways to produce the system Software architecture is the overall structure of the software The hierarchy of components and how they interact, and the structure of data used by the components Use of framework models, and possible reuse of architectural patterns

Software Architecture Patterns Recurring pattern help designers reuse successful designs by basing new designs on prior experience. A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them.

Why use Design Patterns? Reuse successful practices. Not new – recognised that this is something that engineers have done for years. Improve communication Step towards a software engineer’s handbook

Examples of Software Architecture Program structure Batch sequential pattern S3 S2 S4 S5 S1

Control Hierarchy Hierarchy of modules representing the control relationships A super-ordinate module controls another module A subordinate module is controlled by another module Measures relevant to control hierarchy: depth, width, fan-in, fan-out

Structure Terminology Fan-out a b c Depth d e f g h Fan-in i Width

Structural Partitioning Program structure partitioned horizontally and vertically Horizontal partitioning defines separate branches for each major program function - input, process, output Vertical partitioning (aka factoring) defines control (decision-making) at the top and work at the bottom

Software Procedure Processing details of individual modules Precise specification of processing, including sequence of events, exact decision points, repetitive operations, and data organization/structure Procedure is layered - subordinate modules must be referenced in processing details

Information Hiding Information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information Effective modularity is achieved by independent modules, that communicate only necessary information Ease of maintenance - testing, modification localized and less likely to propagate

References “Software Engineering: A Practitioner’s Approach” 5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001 “Software Engineering” by Ian Sommerville, Addison-Wesley, 2001

Thanks…