CSE 303 – Software Design and Architecture LECTURE 4.

Slides:



Advertisements
Similar presentations
Understand and appreciate Object Oriented Programming (OOP) Objects are self-contained modules or subroutines that contain data as well as the functions.
Advertisements

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.
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Software Requirements Engineering
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1 Utdrag ur Bruegges OH-bilder för första.
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.
Chapter 1 Principles of Programming and Software Engineering.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
OBJECT ORIENTED PROGRAMMING IN C++ LECTURE
T. E. Potok - University of Tennessee Software Engineering Dr. Thomas E. Potok Adjunct Professor UT Research Staff Member ORNL.
Introduction To System Analysis and design
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
1 Software Design (Lecture 4) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.
Introduction to Object-oriented programming and software development Lecture 1.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
Chapter Five–Part III Object Oriented Design More Design issues.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
Software Design Deriving a solution which satisfies software requirements.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
GRASP: Designing Objects with Responsibilities
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Software Design Process
Learners Support Publications Object Oriented Programming.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
PRINCIPLES OF GOOD DESIGN 12/7/ Assignment 4 – Deadline 28 Nov.  Read an article placed in generalshare course folder  Point: Design Patterns.
Data Structures Using C++ 2E
© 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 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1.
1 Foundations of Software Design Fall 2002 Marti Hearst Lecture 7: Object-Oriented Design.
Chapter 2 Principles of Programming and Software Engineering.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 6, System Design Lecture 1.
OBJECT-ORIENTED TESTING. TESTING OOA AND OOD MODELS Analysis and design models cannot be tested in the conventional sense. However, formal technical reviews.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
CSE 2341 Object Oriented Programming with C++ Note Set #4
Basic Characteristics of Object-Oriented Systems
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Design Concepts ch-8
Principles of Programming & Software Engineering
Object Oriented Programming
Software Design TAKEN FROM (use for class purpose only)
CHAPTER 5 GENERAL OOP CONCEPTS.
Introduction to Design Patterns
Software Design Dr. R. Mall.
Need for the subject.
Software Design Lecture : 14.
An Introduction to Software Architecture
What Is Good Software(Program)?
Presentation transcript:

CSE 303 – Software Design and Architecture LECTURE 4

Previous Lecture Good design Quality attributes of software design Software design principles Concepts in design

Outline Software design methods Design Paradigms Typical Design Trade-offs

SOFTWARE DESIGN METHODS 4

Software Design Methods In a Software development process, the Software Design Methodology (SDM) refers to specific set of procedures used to manage and control the SDLC (Software Development Life Cycle).

Software Design Methods The choice of the SDM primarily depends upon several factors, namely, – the type of the software (such as standalone or distributed and networked; Strategic or operational etc.) – the scope of the development project (such as revamp of the existing system or new system, the number of modules involved, underlying complexity of the coding, system testing and implementation etc), – the resources constraints (such as time, money, expertise)

Software Design Methods Systematic approaches to developing a software design. – Structured (Function-Oriented) – Object-Oriented – Data-Oriented (Data-structure-centered) – Component-based – Formal Methods

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.

Software Design Methods 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 C. OO methods are useful for any system that will be programmed using an object oriented language such as C++.

11 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.

DESIGN PARADIGMS

Software Design Paradigms Structured Design/Function Oriented Design Object-Oriented Design

Structured/Procedural Paradigm Focus on procedures and functions. Design the system by decomposing it based on the processes and functions. Top-down algorithmic decomposition. This approach separates data from procedures.

Example:

Drawbacks Interdependencies between various functions and processes. Cannot be reused easily. Data related to each function is not attached.

Object-Oriented Paradigm Describing the software solution in terms of collaborating objects, with responsibilities. – Objects, – classes, – encapsulation, – States, – inheritance, – composition, – polymorphism

Object-Oriented Design Bottom-up – Encapsulate data and procedures in objects and classes. – Refinement in classes lead to a composed larger system.

Benefits Enjoys all the benefits of Modular approach Dependencies can be handled by finding the commonalities through inheritance and polymorphism. Naturalness – OO paradigm models the real world better because everything in real world is an object. Reusability – Using the existing classes or components in future design, without much effort.

If OO design is incorrect, the implementation derived from the design in an OOP language would be very complex.

Case Study : Fire Alarm The owner of a large multi-stored building wants to have a computerized fire alarm system for his building. Smoke detectors and fire alarms would be placed in each room of the building. The fire alarm system would monitor the status of these smoke detectors.

Whenever a fire condition is reported by any of the smoke detectors, the fire alarm system should determine the location at which the fire condition is reported by any of the smoke detectors, the fire alarm system should determine the location at which the fire condition has occurred and then sound the alarms only in the neighbouring locations.

The fire alarm system should also flash an alarm message on the computer console. Fire fighting personnel man the console round the clock. After a fire condition has been successfully handled, the fire alarm system should support resetting the alarms by the fire fighting personnel.

Function-Oriented Approach /* Global data (system state) accessible by various functions */ BOOL detector_status[MAX_ROOMS]; int detector_locs[MAX_ROOMS]; BOOL alarm_status[MAX_ROOMS]; – /* alarm activated when status is set */ int alarm_locs[MAX_ROOMS]; – /* room number where alarm is located */ int neighbor-alarm[MAX_ROOMS][10]; – /* each detector has atmost 10 neighboring locations */

Function-Oriented Approach The functions which operate on the system state are: – interrogate_detectors(); – get_detector_location(); – report_fire_location(); – determine_neighbor(); – ring_alarm(); – reset_alarm();

Object-Oriented Approach class detector – attributes status, location, neighbors – operations create, sense-status, get-location, find-neighbors class alarm – attributes location, status – operations create, ring-alarm, get_location, reset-alarm

Structured vs. OO Paradigm In structured design, data and functions are kept separately. Usually all of the data are placed before any of the functions are written. Sometimes, it is not intuitively known which data works with which function.

Structured vs. OO Paradigm In OO design, the related data and functions of an object are placed together within one unit. In Structured approach abstraction exists in functions unlike OO approach where abstraction is in terms of objects

DESIGN GOALS AND TRADE-OFFS

List of Design Goals Reliability Modifiability Maintainability Understandability Adaptability Reusability Efficiency Portability Traceability of requirements Fault tolerance Backward-compatibility Cost-effectiveness Robustness High-performance Good documentation Well-defined interfaces User-friendliness Reuse of components Rapid development Minimum # of errors Readability Ease of learning Ease of remembering Ease of use Increased productivity Low-cost Flexibility

Relationship Between Design Goals

Typical Design Trade-offs Functionality vs. Usability Cost vs. Robustness Efficiency vs. Portability Rapid development vs. Functionality Cost vs. Reusability Backward Compatibility vs. Readability

Summary Software design methods Design Paradigms Typical Design Trade-offs