SOFTWARE DESIGN TECHNIQUES. Nagalaxmi Telkar CSCI 5828 Presentation Slides



Similar documents
2. Analysis, Design and Implementation

2. Analysis, Design and Implementation

Application Architectures

CS4507 Advanced Software Engineering

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

How To Develop Software

Chapter 1 System Development Environment

An Introduction to Software Engineering

An Introduction to Software Engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

Software Design. Software Design. Software design is the process that adds implementation details to the requirements.

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Introduction. Getting started with software engineering. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1

Introduction to Systems Analysis and Design

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

(Refer Slide Time 00:56)

Requirements engineering

IT3205: Fundamentals of Software Engineering (Compulsory)

Project management. Organizing, planning and scheduling software projects

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

Software Design. Design (I) Software Design Data Design. Relationships between the Analysis Model and the Design Model

Introduction. Getting started with software engineering. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1

CSC 342 Semester I: H ( G)

Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm

Organizing, planning and scheduling software projects

Software Quality Factors OOA, OOD, and OOP Object-oriented techniques enhance key external and internal software quality factors, e.g., 1. External (v

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

CHAPTER 1: OPERATING SYSTEM FUNDAMENTALS

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

To introduce software process models To describe three generic process models and when they may be used

Motivation and Contents Overview

Algorithms, Flowcharts & Program Design. ComPro

Foundations for Systems Development

Topics covered. An Introduction to Software Engineering. FAQs about software engineering Professional and ethical responsibility

Chapter 8 Approaches to System Development

An Object Model for Business Applications

Software Engineering. What is SE, Anyway? Based on Software Engineering, 7 th Edition by Ian Sommerville

Computer Science 217

Software Engineering Question Bank

Java: Learning to Program with Robots. Chapter 11: Building Quality Software

Java Programming (10155)

Software Engineering. Objectives. Designing, building and maintaining large software systems

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

Chapter 4 Software Lifecycle and Performance Analysis

Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. CIV 112 Computer Programming Lecture Notes (1)

An Introduction to Software Engineering

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

Engineering Process Software Qualities Software Architectural Design

Understanding Data Flow Diagrams Donald S. Le Vie, Jr.

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur. School of Computing, Department of IT

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Chapter 13: Program Development and Programming Languages

Object-Oriented Modeling and Design

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Software Development. Topic 1 The Software Development Process

OKLAHOMA SUBJECT AREA TESTS (OSAT )

International Journal of Advance Research in Computer Science and Management Studies

Software Design Document (SDD) Template

Components Based Design and Development. Unit 2: Software Engineering Quick Overview

Object Oriented Programming. Risk Management

Unit I Page No. 1 System Development Object Basics Development Life Cycle Methodologies Patterns Frameworks Unified Approach UML

Software Engineering. What is a system?

ATSBA: Advanced Technologies Supporting Business Areas. Programming with Java. 1 Overview and Introduction

Establishing Great Software Development Process(es) for Your Organization. By Dale Mayes

SICAM Software. (Structural Information for Controlled Automation Machinery)

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Project management. Organizing, planning and scheduling software projects. Objectives. Chapter 3. Chapter 3 Project Management. Learning Objective

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Design Principles and Guidelines

Architecture. Reda Bendraou

Process Improvement. Objectives

New Generation of Software Development

VIDYAVAHINI FIRST GRADE COLLEGE

E-Commerce Supply Chain Management Domain Research and Standard Architectures Kunal Chopra, Jeff Elrod, Bill Glenn, Barry Jones.

Introduction to Software Paradigms & Procedural Programming Paradigm

(Refer Slide Time: 01:52)

Designing Real-Time and Embedded Systems with the COMET/UML method

Flowcharting, pseudocoding, and process design

Chapter 7: Software Engineering

Software Engineering. Software Engineering. Software Costs

Introduction to Embedded Systems. Software Update Problem

Appendix M INFORMATION TECHNOLOGY (IT) YOUTH APPRENTICESHIP

Chapter 4: Tools of Modern Systems Analysis

Application of UML in Real-Time Embedded Systems

應 用 測 試 於 軟 體 發 展 生 命 週 期. Testing In The Software Development Life Cycle

risks in the software projects [10,52], discussion platform, and COCOMO

æ A collection of interrelated and persistent data èusually referred to as the database èdbèè.

Software, Process, Business Process and Software Process

Automated Virtual Cloud Management: The need of future

Software Engineering

From Business Process Modeling to the Specification of Distributed Business Application Systems - An Object-Oriented Approach -

Instructional Design Framework CSE: Unit 1 Lesson 1

Software Process Models. Xin Feng

How To Model Software Development Life Cycle Models

Masters in Information Technology

Candle Plant process automation based on ABB 800xA Distributed Control Systems

Section C. Requirements Elicitation

Requirements engineering and quality attributes

Transcription:

SOFTWARE DESIGN TECHNIQUES Nagalaxmi Telkar CSCI 5828 Presentation Slides

CONTENTS Introduction Software Design Life Cycle Software Design Process Tackling Design Problems Architectural Design Abstract Specification Interface Design Component Design Data structure Design Algorithm Design Software Design Methodologies data flow model Entity Relationship Model structural model Software Design Strategies Science of Design Design Quality Software Tools Software Design Failure. Conclusion References

INTRODUCTION Computers do not make mistakes, but computer software is written by human beings, who certainly do make mistakes. As complex computer systems influence every facet of our lives - the cars we drive, the airplane and trains we rely on others to drive for us, and even everyday machinery such as domestic washing machines, the need for reliable and dependable software systems has become apparent. Developing a complex computer system follows a development process, or a life cycle similar to building a house.

SOFTWARE DESIGN LIFE CYCLE

SDLC - WATERFALL MODEL

SDLC - WATERFALL MODEL Requirement Elicitation and Analysis involves the determination of the exact requirements of the system. System Specification is used in deriving what the system should do, without saying how this is to be achieved. Design phase is intended towards addressing how the system is to be implemented. Implementation phase is traditionally described as programming. Unit and System testing aims to trap bugs. Maintenance keeps the system updated for new changes that need to be implemented.

SOFTWARE DESIGN PROCESS

WHY SHOULD THE SOFTWARE BE DESIGNED AT ALL? We can t just throw few dozens of programmers to start programming without any detailed plans. Design is highly creative stage in software development where the designer plans how the system or program should meet the customer s needs how to make system effective and efficient.

TACKLING DESIGN PROBLEMS Any design problems must be tackled in three stages; Study and understand the problem Identify gross features of at least one possible solution Describe each abstraction used in the solution

DESIGN PROCESS Software designers do not arrive at a finished design immediately. They develop design iteratively through number of different versions. The starting point is informal design which is refined by adding information to make it consistent and complete as shown in the figure below:

DESIGN PROCESS A general model of design process

ARCHITECTURAL DESIGN-1 Identifying the sub-systems and establishing framework for sub-system control and communication. Explained using the following architecture

ARCHITECTURE DESIGN 2 Activities necessary for architectural designing; System Structuring Control modeling Modular decomposition The output of the architectural design process is an architectural design document.

ARCHITECTURE DESIGN 3 NULL SPACE GAME SHOOTER Client and Server are the subsystems that are controlling the other modules. Other modules are the rectangles in white. Ex, Network Prediction, Play, Chat Room, Game Room etc.

ABSTRACT SPECIFICATION - 1 For each sub-system, an abstract specification of the services it provides and the constraints under which it must operate is produced.

ABSTRACT SPECIFICATION 2 CLIENT SIDE OF NULL GAME SHOOTER Orange Boxes are the subsystems. White Boxes are the services provided by the subsystems. Services include Visual Representation Communication Layer User I/O Client Side Copy

INTERFACE DESIGN - 1 For each sub-system, its interface is designed and documented. The text box below shows a few functions in the interface for the client. These are used by the player object. There will be separate interfaces for each module. 1) Move ( ) 2) GetPosition( ) 3) GetShip( ) 4) CalculateDamageCollision( ) 5) RotateShip( ) 6) GetVelocity( )

COMPONENT DESIGN - 1 Services are allocated to different components and the interfaces of the components are designed. This phase entails detailed implementation design of the interfaces that are identified in the interface design. Services that are allocated to each subsystem are designed as to be implemented.

DATA STRUCTURE DESIGN - 1 The data structures used in the system implementation are designed in detail and specified. Example Client information is stored in the buckets by mapping them to the buckets via a hash function

ALGORITHM DESIGN - 1 The algorithms used to provide services are designed in detail and specified.

SOFTWARE DESIGN METHODOLOGIES

DESIGN METHODOLOGIES - 1 J. Christopher Jones, taken from classis work, Design Methods: Seeds of Human Futures(Jones 1970.) The fundamental problem is that designers are obliged to use current information to predict a future state that will not come about unless their predictions are correct. The final outcome of designing has to be assumed before the means of achieving it can be explored: the designers have to work backwards in time from an assumed effect upon the world to the beginning of a chain of events that will bring the effect about.

DESIGN METHODOLOGIES - 2 A more methodical approach to software design is proposed by structured methods which are sets of notations and guidelines for software design. Two major rules of this method Programs were to be broken into functions and subroutines There was only a single entry point and a single exit point for any function or routine. Structured methods often support some or all of the following models of a system: A data-flow model An Entity-relationship model A structural model An object-oriented model

DESIGN METHODOLOGIES - 3 Rounded rectangles represents functions which transform inputs to outputs. The transformation name indicates its functions. Rectangles represents data stores. Circles represents user interactions with the system which provide input and receive output. Arrows show the direction of the data flow.

DATA FLOW MODEL Example for data flow model. Object gets the keystroke and moves the ship in the game accordingly. Based on the positions of other ships, collision will be decided.

ENTITY RELATIONSHIP NOTATIONS- 1

ENTITY RELATIONSHIP MODEL - 1 Example for Entity Relationship Model

STRUCTURAL MODEL - 1 Example for structural model

SOFTWARE DESIGN STRATEGIES

DESIGN STRATEGIES-1 Function Oriented Design is decomposed into set of interacting units where each unit has clearly defined function Conceals the details of an algorithm in a function but system state information is not hidden. The activities of this strategy; Data-flow design Structural decomposition Detailed design description

DESIGN STRATEGIES-2 Object-oriented design Is based on the idea of information hiding. System is viewed as a set of interacting objects, with their own private state. Dominant design strategy for new software systems. Objects communicate by calling on services offered by other objects rather than sharing variables. This reduces the overall system coupling. Message passing model allows objects to be implemented as concurrent processes. Kinds of concurrent object implementation Passive objects Active objects

SCIENCE OF DESIGN

Don Batory argues that a fundamental problem in software engineering is the abject lack of a science for software design. In October 2003, he attended a National Science Foundation (NSF) workshop in Virginia on the Science of design. Fred Brookes, We don t know what we re doing, and we don t know what we ve done Software design process is an art or an inexact science. If it is purely a mechanical process by which a specification is translated into a design of an efficient program, then this process follows an exact or deterministic science.

DESIGN QUALITY-1 Budgen(1993) describes some of the ilities that form a group of quality factors that need to be considered when making any attempt to assess design quality. Reliability Efficiency Maintainability Usability.

DESIGN QUALITY-2 For the systems to be reliable, the designers should count on completeness, consistency and robustness. Efficiency of a system can be measured through its use of resources such as processor time, memory, network access and so on. By separating the concerns, designers can help the future maintainers to gain clear understanding of their original mental models. Design of user interface forms an important component and will influence other design decisions.

DESIGN QUALITY-3 10 heuristics of user interface design; Visibility of system status Match between system and the real world User control and freedom Consistency and standards Error prevention Recognition rather than recall Flexibility and efficiency of use Aesthetic and minimalist design Help users recognize, diagnose, and recover from errors Help and documentation

SOFTWARE TOOLS The productivity of engineering designers is improved when they are supported by CAD systems which take over tedious drawing chores and which check for errors and omissions. The term CASE (Computer Aided Software Engineering) is generally accepted as the name for this automated support for engineering process.

SOFTWARE DESIGN FAILURE. Software design flaws leading to mishap. The Ariane 5 was not flight tested because there was so much confidence on part of the management team. The error which ultimately led to the destruction of the Ariane 5 launcher was clearly identified in the report of the investigating committee: a program segment for converting a floating point number, representing a measurement, to a signed 16 bit integer was executed with an input data value outside the range representable by a signed 16 bit integer. This is not a software issue, but a design flaw at a much deeper level.

REFERENCES Software engineering techniques: design for quality By Krzysztof M. Sacha Software Design (2nd Edition) by D. Budgen High-Integrity System Specification and Design (Formal Approaches to Computing and Information Technology (FACIT)) by Jonathan P. Bowen and Michael G. Hinchey Software Engineering (7th Edition) (Hardcover) Ian Sommerville A Science of Software Design. 3-18 Don Batory J. Christopher Jones, Design Methods: Seeds of Human Futures(Jones 1970.)