Software Engineering Lecture #8.

Slides:



Advertisements
Similar presentations
Software Engineering Key design concepts Design heuristics Design practices.
Advertisements

Lecture 6: Software Design (Part I)
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.
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
What is Software Design?  Introduction  Software design consists of two components, modular design and packaging.  Modular design is the decomposition.
Copyright Irwin/McGraw-Hill Software Design Prepared by Kevin C. Dittman for Systems Analysis & Design Methods 4ed by J. L. Whitten & L. D. Bentley.
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
Basic Concepts in Component-Based Software Engineering
© Copyright 2011 John Wiley & Sons, Inc.
© Prentice Hall CHAPTER 9 Application Development by Information Systems Professionals.
CS 501: Software Engineering
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 303 – Software Design and Architecture
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Software Engineering Management Lecture 1 The Software Process.
Software Design Deriving a solution which satisfies software requirements.
SE: CHAPTER 7 Writing The Program
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
CCSB223/SAD/CHAPTER131 Chapter 13 Designing the System Internals.
CSE 303 – Software Design and Architecture
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Basic Characteristics of Object-Oriented Systems
Class Design. Class Design The analysis phase determines what the implementation must do, and the system design.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Further Modularization, Cohesion, and Coupling. Simple Program Design, Fourth Edition Chapter 9 2 Objectives In this chapter you will be able to: Further.
Design Concepts ch-8
Object Oriented Systems Design
Process 4 Hours.
Chapter 2 Object-Oriented Paradigm Overview
CSC 480 Software Engineering
Unit - 3 OBJECT ORIENTED DESIGN PROCESS AND AXIOMS
Software Design.
7. Modular and structured design
Design Patterns: MORE Examples
Algorithms and Problem Solving
Software Engineering Management
Metrics of Software Quality
Basic Concepts in Software Design
Software Process Activities.
Chapter ? Quality Assessment
Coupling and Cohesion 1.
which satisfies software requirements
Basic Concepts in Software Design
Software Design Mr. Manoj Kumar Kar.
V-Shaped SDLC Model Lecture-6.
Software Quality Engineering
Classical Waterfall Model
Life Cycle Models PPT By :Dr. R. Mall.
Software Design AITI GP John Paul Vergara.
The Object Oriented Approach to Design
Improving the Design “Can the design be better?”
CS223: Software Engineering
Software life cycle models
Software Engineering Lecture #45
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Software Engineering Lecture #7
Software Design Lecture : 8
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
INFORMATION SYSTEMS PLAN
Algorithms and Problem Solving
Software Development Life Cycle Models
Requirements Engineering
Presentation transcript:

Software Engineering Lecture #8

Attributes of a Complex System Recalling our discussion of software construction process, once the requirements of a software system have been established, we proceed to design that system. During the design phase, the focus shifts from what to how. That is, at this stage we try to answer the question of how to build the system. The objective of the design process is to analyze and understand the system in detail so that features and constituent components of at least one feasible solution are identified and documented. The design activity provides a roadmap to progressively transform the requirements through a number on stages into the final product by describing the structure of the system to be implemented. A complex system that works is invariably found to have evolved from a simple system that worked.

Software Design Process Design of a software system evolves through a number of iterations. The design process usually involves developing a number of different models, looking at the system from different angles and describing the system at various levels of abstraction. Software design provides a road map for implementation by clearly describing how the software system is to be realized.

Software Design strategies FUNCTIONAL DESIGN: the structure of the system revolves around functions. The entire system is abstracted as a function that provides the desired functionality (for example, the main function of a C program). This main function is decomposed into smaller functions and it delegates its responsibilities to these smaller functions and makes calls to these functions to attain the desired goal. OBJECT-ORIENTED DESIGN: The system is decomposed into a set of objects that cooperate and coordinate with each other to implement the desired functionality. The communication and coordination among objects is achieved through message passing where one object requests the other object if it needs any services from that object.

Software Design Qualities A software design can be looked at from different angles and different parameters can be used to measure and analyze its quality. These parameters include efficiency, compactness, reusability, and maintainability. A good design from one angle may not seem to be suitable when looked from a different perspective. For example, a design that yields efficient and compact code may not be very easy to maintain.

Maintainable Design Maintenance contributes towards a major share of the overall software cost, the objective of the design activity, in most cases, is to produce a system that is easy to maintain. A maintainable design is the one in which cost of system change is minimal and is flexible enough so that it can be easily adapted to modify exiting functionality and add new functionality. In order to make a design that is maintainable, it should be understandable and the changes should be local in effect. That is, it should be such that a change in some part of the system should not affect other parts of the system.

Coupling and Cohesion Coupling is a measure of independence of a module or component. Loose coupling means that different system components have loose or less reliance upon each other. Changes in one component would have a limited affect on other components. Strong cohesion implies that all parts of a component should have a close logical relationship with each other. In the case some kind of change is required in the software, all the related pieces are found at one place.

Coupling Example Float dotProdcut(vector a, vector b) { float temp1 = a.getX() * b.getX(); float temp2 = a.getY() * b.getY(); return temp1 + temp2; }

Coupling Example Float dotProduct(vector a, vector b)] { float temp1 = a.x * b.x; float temp2 = a.y * b.y; return temp1 + temp2; }

Cohesion