A Brief Introduction to Software Design and Design Quality By Laura Leventhal.

Slides:



Advertisements
Similar presentations
Lilian Blot Announcements Teaching Evaluation Form week 9 practical session Formative Assessment week 10 during usual practical sessions group 1 Friday.
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,
Structured Design. 2 Design Quality – Simplicity “There are two ways of constructing a software design: One is to make it so simple that there are obviously.
Design Concepts and Principles
Systems Analysis and Design in a Changing World, Fourth Edition
Software Engineering and Design Principles Chapter 1.
UHD::CS3320::CHAP61 INTRODUCTION TO OBJECTS Chapter 6.
SOFTWARE ENGINEERING for REAL-TIME SYSTEMS (© J.E.Cooling 2003) Software design - core concepts - slide 1 Software engineering for real-time systems Section.
7M701 1 Class Diagram advanced concepts. 7M701 2 Characteristics of Object Oriented Design (OOD) objectData and operations (functions) are combined 
© Copyright Eliyahu Brutman Programming Techniques Course.
Chapter 10 Class and Method Design
Slide 1 Chapter 10 Class and Method Design. Slide 2 REVISITING THE BASIC CHARACTERISTICS OF OBJECT-ORIENTATION.
Lilian Blot Announcements The TPOP problem class this afternoon:  group 1 should come at 3.30pm and group 2 at 4pm. Teaching Evaluation Form  week 9.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
What is Software Architecture?
OO Analysis and Design CMPS OOA/OOD Cursory explanation of OOP emphasizes ▫ Syntax  classes, inheritance, message passing, virtual, static Most.
Chapter 7 Designing Classes. Class Design When we are developing a piece of software, we want to design the software We don’t want to just sit down and.
UFCEUS-20-2 : Web Programming Lecture 5 : Object Oriented PHP (1)
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Engineering Design Resolution & Design Principles.
Systems Analysis and Design in a Changing World, Fifth Edition
Chapter 9 Moving to Design. The Structured Approach To Designing The Application Architecture Module-an identifiable component of a computer program that.
Introduction to Object-oriented programming and software development Lecture 1.
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
SOFTWARE DESIGN.
Chapter 9 Moving to 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.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
SE: CHAPTER 7 Writing The Program
Systems Analysis and Design in a Changing World, 3rd Edition
Chapter 13 Logical Architecture and UML Package Diagrams 1CS6359 Fall 2012 John Cole.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Programming Logic and Design Using Methods. 2 Objectives Review how to use a simple method with local variables and constants Create a method that requires.
GRASP: Designing Objects with Responsibilities
1 CMPT 275 High Level Design Phase Modularization.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
Object-Oriented Programming Chapter Chapter
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
CSE 303 – Software Design and Architecture
CHAPTER 14 Classes, Objects, and Games XNA Game Studio 4.0.
Refactoring Agile Development Project. Lecture roadmap Refactoring Some issues to address when coding.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (II) adapted from Dave Penny’s.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Programming Logic and Design Fifth Edition, Comprehensive Chapter 7 Using Methods.
11. Chapter 11: The Object-Oriented Approach to Design: Use Case Realization Systems Analysis and Design in a Changing World, Fourth Edition.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
11 Systems Analysis and Design in a Changing World, Fifth Edition.
Copyright © Jim Fawcett Spring 2017
GRASP – Designing Objects with Responsibilities
Software Design.
CHAPTER 5 GENERAL OOP CONCEPTS.
Coupling and Cohesion 1.
Lecture 9- Design Concepts and Principles
Object Oriented Concepts -I
Designing Software for Ease of Extension and Contraction
The Object Oriented Approach to Design
CIS 375 Bruce R. Maxim UM-Dearborn
CS223: Software Engineering
Lecture 9- Design Concepts and Principles
What Is Good Software(Program)?
Object-Oriented PHP (1)
Presentation transcript:

A Brief Introduction to Software Design and Design Quality By Laura Leventhal

Reference Chapter 11Chapter 11

Design of Interface We have already seen that design of user interfaces involves –Design of Interaction –Design of the software to run the Interaction (Design of Interface)

Design of Interface – A Software Design Problem Design of Interface is a software design problem. We assess software quality in the same way that we assess the quality of any other software. Because the design of the interface is intended to support user interactions, we can observe that the design of the software is similar to the design of real-time software. –Concerned with building software that has functional independence, encapsulation and data hiding, reuse PLUS –Concern for the states that the software must be able to support

Goals of Software Design To produce a model which will later be built To propose a solution to the problem to minimize cost of development and maintenance To keep parts small and separately solvable To keep parts small and separately correctable

What is to be designed during Software Design? High level design –System architecture - the product architecture –Class relationships - data architecture –Messaging architecture Low level design –Classes –Operations (member functions, class services) –Attributes (data members) –State behaviors

Software Design Quality A software design is of high quality if… –It is a solution to the problem that was defined in the requirements specification. –It promotes functional independence Low intermodular dependency High intramodule cohesion –Promotes encapsulation and data hiding –Promotes software reuse

Measuring Functional Independence Qualitative measures of functional independence –Coupling (measure of intermodular dependency) –Cohesion (measure of internal strength of module)

Coupling Low coupling between modules is desirable. High coupling is not as good. Example of low coupling –Two modules that communicate by passed parameters Example of high coupling –Module A changes the code within Module B

Cohesion High cohesion is good. Low cohesion is bad. Module A is highly cohesive if all of the elements are focused on a single task. Module B has low cohesion if several functions are within the same module. So for example a module that groups several input functions, just because they involve inputs would have relatively low cohesion.

OO Coupling and Cohesion? Page-Jones has noted that coupling and cohesion are defined at the code and subroutine level. He suggests that it also makes sense to consider class cohesion and class coupling –Class cohesion level is an indication of how well the operations of the class are focused on one job. –Class coupling is an indication of how tightly bound two classes are.

Encapsulation Encapsulation is the grouping of related ideas into one unit which can thereafter be referred to by a single name The idea is that the interface is a protective boundary between that which is encapsulated and that which is outside. –Subroutine is an example of encapsulation –Classes are a more extreme example of encapsulation. Encapsulation promotes functional independence

Information (Data) Hiding Data Hiding is a by-product of encapsulation. –You may view an encapsulated unit from the inside or the outside. –Only data needed to perform a function is made available to the function. –Data hiding is the use of encapsulation to restrict the external visibility of implementation decisions that are internal to the encapsulation structure. In some regard, encapsulation and data hiding is a way to promote low coupling.

Software Reuse Viewed as essential to improving productivity Implication for design is that functionality should be as broad as possible Classes may even need extra methods Note that this goal may be in conflict with other software design goals such as loose coupling.

OO Philosophy and Design Quality OO should promote –Functional independence, at least between classes. The designer is challenged to insure high cohesion and low coupling within the member functions of classes. –Encapsulation and data hiding –Software reuse.