Software Design. Levels in Design Process. Design Methodologies. Levels..

Similar documents
Unit-3 Software Design (Lecture Notes)

CS 292 Software Development

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

PC204. Lecture 5 Programming Methodologies. Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.

Chapter 9. Introduction to High-Level Language Programming. INVITATION TO Computer Science

Modularity!! Guidelines for design! in any programming language!

Abstraction in Business Architecture

Addressing Verification Bottlenecks of Fully Synthesized Processor Cores using Equivalence Checkers

Modularity Guidelines for design in any programming language

340 Review Fall Midterm 1 Review

Software Engineering Design Principles. Presented by Pratanu Mandal of CSE 3A Roll 54 JISCE

CSC 330 Object Oriented Software Design. Software Design Phase

CHAPTER 5 GENERAL OOP CONCEPTS

09. Component-Level Design

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

Software Engineering Principles

VETRI VINAYAHA COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Lecture Chapter 2 Software Development

Requirements and Design Overview

Coding and Unit Testing! The Coding Phase! Coding vs. Code! Coding! Overall Coding Language Trends!

CHAPTER 9 DESIGN ENGINEERING. Overview

(Traditional) Software Development Activities

Textbook. Topic 6: Functions. Motivation. What is a Function? What s a function? How can we use functions to write better software?

All the subjective part of 2011 papers solved complete reference numbers

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Introducing MESSIA: A Methodology of Developing Software Architectures Supporting Implementation Independence

Whole Platform Foundation. The Long Way Toward Language Oriented Programming

CSE Verification Plan

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS SOFTWARE ENGINEERING

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas

Setting the stage... Key Design Issues. Main purpose - Manage software system complexity by improving software quality factors

Principles of Object-Oriented Design

Numerical Methods in Scientific Computation

Ch 1: The Architecture Business Cycle

Introduction to Interactive Systems. Overview. What Is an Interactive System? SMD158 Interactive Systems Spring 2005

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009

Introduction to Architecture. Introduction to Architecture 1

System development, design & implementation

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages

Software Architecture

Sub- PPL Unit-I Class-SE Comp

Integration Testing. Conrad Hughes School of Informatics. Slides thanks to Stuart Anderson

SRM ARTS AND SCIENCE COLLEGE SRM NAGAR, KATTANKULATHUR

CSC Advanced Object Oriented Programming, Spring Overview

Tutorial: Functions and Functional Abstraction. Nathaniel Osgood CMPT

Presenter: Dong hyun Park

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

Big Ideas. Chapter Computational Recipes

Integration Testing. Unit Test vs Integration Testing 1. Unit Testing vs Integration Testing 2. Unit testing: isolation, stub/mock objects

Introduction to Data Structures & Algorithm

HIERARCHICAL DESIGN. RTL Hardware Design by P. Chu. Chapter 13 1

Outline HIERARCHICAL DESIGN. 1. Introduction. Benefits of hierarchical design

CS560: Formal Modelling and Implementation of Systems (Term II)

Definition of Information Systems

CSCI 253. Outline. Background. George Blankenship 1

Software Design. Software design is a blueprint or a plan for a computerbased solution for system

Minsoo Ryu. College of Information and Communications Hanyang University.

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9)

Ch 1: The Architecture Business Cycle

Software Architecture and Design I

Creating a Lattix Dependency Model The Process

1. Mesh Coloring a.) Assign unique color to each polygon based on the polygon id.

Transformation of analysis model to design model

Patterns and Testing

Software Design Heuristics

21) Functional and Modular Design

Chapter 1: Programming Principles

Chapter 2 Basic Principles of the Object-Oriented Paradigm 2.1 Abstraction

S/W Programming & Languages

Architectural Decomposition & Representations Reid Holmes

UNIT II Requirements Analysis and Specification & Software Design

10. Software Testing Fundamental Concepts

21) Functional and Modular Design

Surfing Ada for ESP Part 2

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming

Architectural Decomposition Reid Holmes

CREATIVE ASSERTION AND CONSTRAINT METHODS FOR FORMAL DESIGN VERIFICATION

Introduction. Chapter 1. What Is Visual Modeling? The Triangle for Success. The Role of Notation. History of the UML. The Role of Process

Update on AADL Requirements Annex

Object-Oriented and Classical Software Engineering DESIGN 11/12/2017. CET/CSC490 Software Engineering Design CHAPTER 14. Stephen R. Schach.

Programming II (CS300)

Verification and Validation

Introduction to Software Testing

Software Development Chapter 1

Gradational conception in Cleanroom Software Development

Object Oriented Software Design

Chapter 1: Principles of Programming and Software Engineering

Compilers. Prerequisites

Object-Oriented Design

Design Concepts and Principles

Design and Implementation of an Efficient Algorithm Using Data Structures: A Recipe for the Structured Process Called Top Down Programming

Review of Basic Software Design Concepts. Fethi Rabhi SENG 2021

Objectives. Explain the purpose and objectives of objectoriented. Develop design class diagrams

The RASTA Framework. Joel Becker October 3, 2001

Contemporary Design. Traditional Hardware Design. Traditional Hardware Design. HDL Based Hardware Design User Inputs. Requirements.

MODEL-BASED SYSTEMS ENGINEERING DESIGN AND TRADE-OFF ANALYSIS WITH RDF GRAPHS

Topic : Object Oriented Design Principles

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

Transcription:

Design Software Design Design activity begins with a set of requirements Design done before the system is implemented Design is the intermediate language between requirements and code Moving from problem domain to solution domain Proceeding from abstract to more concrete representations Result is the design to be used for implementing the system CSIS0521 Software Design 1 CSIS0521 Software Design 2 Design Design is a creative activity Goal: to create a plan to satisfy requirements Perhaps the most critical activity during system development Design determines the major characteristics of a system Has great impact on testing and maintenance Design document forms reference for later phases Levels in Design Process Architectural design Identifies the components needed for the system, their behavior, and relationships We have already discussed it High Level Design Really is the module view of the system I.e. what modules are in the system and how they are organized CSIS0521 Software Design 3 CSIS0521 Software Design 4 Levels.. Logic design Components and modules are designed to satisfy their specs How to implement components Algorithms for implementing component are designed Complete design: the architectural design, the high level design, and Logic design of each component Design Methodologies Many possibilities for design, methodologies aim to reduce search space Provide some discipline for handling complexity Most methodologies deal with high level design Provide a set of rules for guiding the designer Rules do not reduce design to a sequence of mechanical steps Many methodologies exist Different methodologies may be useful for different applications CSIS0521 Software Design 5 CSIS0521 Software Design 6 1

Design Objectives Goal is to find the best possible design Have to explore different designs Evaluation criteria are often subjective and non quantifiable Major criteria to evaluate a design Correctness Efficiency Maintainability Cost Correctness is the most fundamental Does design implement requirements? Is design feasible, given the constraints? Efficiency Concerned with the proper use of scarce resources - processor & memory Other factors same, efficiency should be maximized CSIS0521 Software Design 7 CSIS0521 Software Design 8 Design Principles Maintainability Most important quality criteria Most affected by architectural design Should facilitate testing Should facilitate discovery and correction of bugs Make modifying the system easier Cost For same quality, minimize cost Design costs are quite small Should try to minimize cost in later phases Design is a creative process How to create a design from abstract requirements There are principles for guiding during design Two fundamental principles in the design process Problem partition Abstraction CSIS0521 Software Design 9 CSIS0521 Software Design 10 Problem Partitioning Basic principle "divide and conquer" Divide the problem into manageably small pieces Each piece can be solved separately Each piece can be modified separately Pieces can be related to the application Pieces cannot be independent; they must communicate Communication adds complexity As number of components increases, this cost increases Stop partitioning when cost is more than benefit Abstraction Necessary for partitioning Used in all engineering disciplines Abstraction of existing components Represents components as black boxes Hides the details, provide external behavior Useful for understanding existing systems Necessary for using systems Useful for determining design of existing systems CSIS0521 Software Design 11 CSIS0521 Software Design 12 2

Functional Abstraction Abstraction during design process To decide how components interact, the designer specifies the external behavior of components Allows concentrating on one component at a time Permits a component to be considered without worrying about others Allows designer to control the complexity Permits gradual transition from abstract to concrete Employs parameterized subprograms Specifies the functional behavior of a module Module is treated as a input/output function Most languages provide features to support this eg functions, procedures A functional module can be specified using pre and post conditions CSIS0521 Software Design 13 CSIS0521 Software Design 14 Data Abstraction An entity in the real world provides some services to the environment it belongs Similar is the case of data entities Certain operations are required from a data object The internals are not of consequence Data abstraction supports this view Data is treated as a set of pre-defined operations Only operations can be performed on the objects Internals are hidden and protected Modern languages support data abstraction eg. Ada, C++, Java CSIS0521 Software Design 15 Top-Down vs Bottom-up Design Top down design starts with the system specifications Defines a module to implement the specs Specifies subordinate modules Then treats each specified module as the problem Refinement proceeds till bottom level modules reached At each stage a clear picture of design exists Most natural for handling complex problems Have been propagated by many Many design methodologies based on this Feasibility is not know till the end CSIS0521 Software Design 16 Modularity In bottom up we start by designing bottom modules Building blocks Layers or abstraction or virtual machines Necessary if existing modules have to be reused Pure top-down or bottom-up is not possible In bottom-up must have some idea of the top Often a combination is used CSIS0521 Software Design 17 A concept closely tied to abstraction Modularity supports independence of models Modules support abstraction in software Supports hierarchical structuring of programs Modularity enhances design clarity, eases implementation Reduces cost of testing, debugging and maintenance Cannot simply chop a program into modules to get modularly Need some criteria for decomposition: coupling and cohesion. CSIS0521 Software Design 18 3

Detailed Design HLD does not specify module logic This is done during detailed design Process Design Logic (PDL) can also be used for detailed design of modules PDL can be used to specify the complete design - architectural as well as logic design The degree of detail desired is decided by the designer One way to communicate a design: use natural language Is imprecise and can lead to misunderstanding Other extreme is to use a formal language Such representations often have a lot of detail, necessary for implementation, but not important for communicating the design These details are often a hindrance to understanding CSIS0521 Software Design 19 CSIS0521 Software Design 20 Ideally would like a language that is as precise as possible Does not need too much detail, target language independent can be easily converted in to an implementation This is what PDL attempts to do. PDL has outer syntax of a structure programming language, but vocabulary of a natural language It can be thought as "structured english" Some automated processing can be done on PDL E.g.. determine the min and max of a set of numbers A design in PDL is: minmax (in file) ARRAY a DO UNTIL end of input READ an item into a ENDDO max, min: = first item of a DO FOR each item in a IF max < item THEN set max to item IF min > item THEN set min to item ENDDO END CSIS0521 Software Design 21 CSIS0521 Software Design 22 Design Verification The entire logic is described Few implementation details For implementation, the pseudo statements will have to be converted into programming language statements PDL allows a successive refinement approach Encourages use of structured language constructs Main objective: does the design implement the requirements Analysis for performance, efficiency, etc may also be done If formal languages used for design representation, tools can help Design reviews remain the most common approach for verification CSIS0521 Software Design 23 CSIS0521 Software Design 24 4

Summary Design is a creative activity Goal is to find the best possible design Two levels in the design process Architectural design and logic design Correctness of design is most fundamental property Design principles Problem partitioning Abstraction When using functional abstraction aim for Low coupling High cohesion Design Methodologies - a set of rules/steps to guide the designer CSIS0521 Software Design 25 5