Week 6: Software Design HNDIT23082. Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.

Slides:



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

When is Orientated Programming NOT? Mike Fitzpatrick.
Lecture 6: Software Design (Part I)
Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Chapter 11 Component-Level Design
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University 1 5 – Abstract Data Types.
Module: Definition ● A logical collection of related program entities ● Not necessarily a physical concept, e.g., file, function, class, package ● Often.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
PVK-Ht061 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Object-oriented Programming Concepts
PVK-Ht051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
CSE 303 – Software Design and Architecture
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
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.
Software Design Deriving a solution which satisfies software requirements.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Concepts of Software Quality Yonglei Tao 1. Software Quality Attributes  Reliability  correctness, completeness, consistency, robustness  Testability.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Design Concepts By Deepika Chaudhary.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
Software Design: Principles, Process, and Concepts Getting Started with Design.
Software Design Process
CSC 131 Fall 2006 Lecture # 6 Object-Oriented Concepts.
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
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
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
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.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
Design Concepts ch-8
7. Modular and structured design
CompSci 280 S Introduction to Software Development
Coupling and Cohesion Rajni Bhalla.
CS 325: Software Engineering
CHAPTER 5 GENERAL OOP CONCEPTS.
Coupling and Cohesion 1.
which satisfies software requirements
Software Design Mr. Manoj Kumar Kar.
Coupling and Cohesion By Bonnie Ngu.
CIS 375 Bruce R. Maxim UM-Dearborn
Component-Level Design
OOP vs Structured Programming
CS223: Software Engineering
Software Design Lecture : 9.
Software Design Lecture : 8
Object-Oriented PHP (1)
Cohesion and Coupling.
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

Week 6: Software Design HNDIT23082

Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process  Understand the principles of good design  Identify Software design techniques  Identify possible software architecture

Software Design - Objectives Design is a meaningful engineering representation of something that is to be built. In software Engineering context, design focuses on transforming requirements into implementable version of the software system.

Design activities  Identification of the sub-systems  Identification of the software components  Identification of the software architecture  Data design  Interface design  Algorithm design  Data structure design  Design specification

Software Design – Why it is important?  A good design is the key for a successful software system  A good design allows easy maintenance of a system  A good design allows to achieve non-functional requirements such as reliability, performance, reusability, portability.  A good design facilitates the development and management processes of a software project.

Some important software design principles  Abstraction  Modularity  Information Hiding (Encapsulation)  Polymorphism

Abstraction  This is an intellectual tool (a psychological notion) which permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details  Abstraction allows us to proceed with the development work without been held up in low-level implementation details (yet to be discovered)

Modularity Software is divided into separately named, addressable components called modules. Complexity of a program depends on modularity

Modularity Ctd.. Modularity facilitates the development process the maintenance process the project management process reusability

How many modules? Cost of effort No. of modules Cost per module Interface cost

Module Coupling A measure of the strength of the interconnections between system components. Loose(Low) coupling means component changes are likely to affect other components. Shared variables or control information exchange lead to tight(High) coupling. Loose coupling can be achieved by component communication via parameters or message passing.

Levels of Coupling Data Coupling Data is passed from one module to another using arguments Stamp Coupling More data than necessary is passed via arguments. Eg. Pass the whole record instead of just the field being changed. Control Coupling A flag is passed from one module to another affecting the functionality of the second module External Coupling Coupling with the environment (eg. Data files, other programs etc.).

Levels of Coupling (Cont..) Common Coupling Occurs when modules access the same global data. MODULE- A MODULE- B MODULE- C MODULE -D

Levels of Coupling (Cont..) Content Coupling One module directly affects the working of another. Calling module can modify the called module or refer to an internally defined data element. A B C D E Global Data area Common Coupling Content Coupling

Levels of Coupling (Contd..) Object Coupling Occurs when an object class inherits attributes and methods of another class. Changes to super-class propagate to all sub-classes. Student UG Student PG Student Object oriented systems are loosely coupled. No shared state and objects communicate using message passing, but

Coupling should be minimised. Loosely coupled modules facilitate: Maintenance Development Reusability