Software Design Process

Slides:



Advertisements
Similar presentations
Software Design Fundamentals
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Systems Analysis and Design in a Changing World, 6th Edition
Design Concepts and Principles
Design Phase What’s design?
Software Requirements Engineering
Introduction To System Analysis and Design
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Process Activities. Process activities Real software processes are inter-leaved sequences of technical, collaborative and managerial activities.
System Analysis & Design
Chapter 2 The process Process, Methods, and Tools
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
CSE 303 – Software Design and Architecture
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
Introduction To System Analysis and Design
SOFTWARE DESIGN.
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
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.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software 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.
Software Design Deriving a solution which satisfies software requirements.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 6 System Engineering Overview of System Engineering.
1 Introduction to Software Engineering Lecture 1.
The Systems Development Life Cycle
CSE 303 – Software Design and Architecture LECTURE 4.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Information Systems Engineering. Lecture Outline Information Systems Architecture Information System Architecture components Information Engineering Phases.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
 What is Modeling What is Modeling  Why do we Model Why do we Model  Models in OMT Models in OMT  Principles of Modeling Principles of Modeling 
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
CSE 303 – Software Design and Architecture
OBJECT-ORIENTED SOFTWARE DEVELOPMENT PROCESS BTS430 Systems Analysis and Design using UML.
1 Supplementary Slides for Software Engineering: A Practitioner's Approach, 5/e Supplementary Slides for Software Engineering: A Practitioner's Approach,
© 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
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Architectural Design Introduction Design has been described as a multistep process in which representations of data and program structure,
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Chapter 2 Principles of Programming and Software Engineering.
Basic Characteristics of Object-Oriented Systems
Design Concepts ch-8
The Systems Engineering Context
Lecture 9- Design Concepts and Principles
Classical Waterfall Model
Object oriented system development life cycle
CSE 303 – Software Design and Architecture
Lecture 9- Design Concepts and Principles
Chapter 6: Architectural Design
Presentation transcript:

Software Design Process CSE-874 Software System Design & Architecture

Viewpoints/Representations Design process Levels of design Outline Software Design Viewpoints/Representations Design process Levels of design Software design principles Software design methods

Software Design A software design is a meaningful engineering representation of some software product that is to be built. The process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization” [TAY59] A design can be traced to the customer's requirements and can be assessed for quality against predefined criteria. It lays down the groundwork for achieving non-functional requirements (performance, maintainability, reusability, etc.) It takes target technology into account (e.g., kind of middleware, database design, etc.)

Software Design … From abstractions to systems abstractions allow us to ignore implementation details of procedures and data structures for large systems, we need to abstract away even more detail we need to represent higher level abstractions

Viewpoints/Representations Viewpoints help in creating abstractions A viewpoint tells you which details you can ignore when forming an abstraction It defines which details are relevant and which are not Viewpoints can overlap Some aspects of a design are common to several viewpoints

Design Representations Help us to see the big picture allow us to communicate our designs with others customers, managers, other developers, people with varying technical expertise These representations may not be correct/complete allow us to measure various quality attributes completeness, consistency, complexity Help in documenting the design for future reference Must be complete and correct

Software Design Representations Structural Static properties Functional Tasks performed by system Behavioural Cause and effect, system behaviour Data Modeling Data objects and their relationships

Software Design in SDLC In SDLC (Software Development Life Cycle), Design phase is one of the most important phases. In the software engineering context, design focuses on four major areas of concern: data, architecture, interfaces and procedures/components.

Design Process During the design process, the software specifications are transformed into design models that describe the details of the data structures, system architecture, interface, and components. The emphasis in design phase/process is on quality. This phase provides us with representation of software that can be assessed for quality.

Analysis to Software design

Design Process Activities Architectural design Interface design Component design Data structure design Algorithm design

Levels of Software Design Architectural design (high-level design) architecture - the overall structure, main modules and their connections addresses the main non-functional requirements (e.g., reliability, performance) hard to change Detailed design (low-level design) the inner structure of the main modules detailed enough to be implemented in the programming language

Software Design should be: Simple Correct & Complete Loosely coupled Understandable Adaptable Maintainable

Software Design Methods Structured Methods Process functions are identified Object-Oriented develop an object model of a system Data-Oriented Entities are determined for each sub-system, then entity inter-relationships are examined to develop the additional entities needed to support the relationships. Component-based Divide the system into components Formal Methods Requirements and programs are translated into mathematical notation

Which method to choose? Data oriented design is useful for systems that process lots of data, e.g. database and banking applications Structured design is useful for process intensive systems that will be programmed using a procedural language such as FORTRAN. OO methods are useful for any system that will be programmed using an object oriented language such as C++. Component-based Methods are used for the large systems that can be modularized. Formal methods are considered to be an alternative to OO and classical design methods, but their use is expensive and claims of reduced errors remain unproven. However, the ability to formally validate the correctness of a software artifact is appealing and research on formal methods is ongoing.

Software Design Strategies Divide-and-conquer/stepwise refinement Top-down vs. bottom-up Data abstraction and information hiding Use of heuristics Use of patterns and pattern languages Iterative and incremental approach

Reading for Next Week Chapter 5 of “Software Engineering” 9th Ed, by Sommerville Rest of the reading material for Week 2 will be available from http://learn.mcs.edu.pk Look for Software Design & Architecture course in Fall 2012 category of MS Software Engineering category. Login as guest.