Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.

Slides:



Advertisements
Similar presentations
Ch.21 Software Its Nature and Qualities. Ch.22 Outline Software engineering (SE) is an intellectual activity and thus human-intensive Software is built.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Chapter 2 – Software Processes
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Software Requirements Engineering
Introduction to Software Engineering Lecture 4 André van der Hoek.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
1 Objectives To introduces the concept of software Design. To introduce the concept of Object- Oriented Design (OOD). To Define various aspects about object.
1 SOFTWARE QUALITY ASSURANCE Basic Principles. 2 Requirements System Design Detailed Design Implementation Installation & Testing Maintenance SW Quality:
Chapter 1 Principles of Programming and Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Software maintenance Managing the processes of system change.
PROGRAMMING LANGUAGES The Study of Programming Languages.
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.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
1 Shawlands Academy Higher Computing Software Development Unit.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
An Introduction to Programming and Object-Oriented Design Using Java By Jaime Niño and Fred Hosch Slides by Darwin Baines and Robert Burton.
CSE 303 – Software Design and Architecture
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
 Explain the role of a system analyst.  Identify the important parts of SRS document.  Identify the important problems that an organization would face.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Software Design Deriving a solution which satisfies software requirements.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
SE: CHAPTER 7 Writing The Program
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Computing and SE II Chapter 6: Software Design
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Introduction to Design. What is Design? 2 minutes Pairs.
LESSON 3. Properties of Well-Engineered Software The attributes or properties of a software product are characteristics displayed by the product once.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
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.
© 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
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Software Development Life Cycle (SDLC)
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
 System Requirement Specification and System Planning.
Design Concepts ch-8
Principles of Programming & Software Engineering
TOTAL QUALITY MANAGEMENT
Software Design.
7. Modular and structured design
CompSci 280 S Introduction to Software Development
Rekayasa Perangkat Lunak
The Development Process of Web Applications
Chapter 17 - Component-based software engineering
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Quality Engineering
Rekayasa Perangkat Lunak
Software Design Lecture : 8
What Is Good Software(Program)?
Chapter 17 - Component-based software engineering
Chapter 2. Problem Solving and Software Engineering
Presented by KARRI GOVINDA RAO ,
Presentation transcript:

Chapter 10 Software quality

This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability. n General design characteristic for achieving standards of quality.

External Qualities n External qualities are those with which the user is concerned. n Internal qualities are those that help achieve the external qualities. n One of the most obvious external qualities is correctness. n A system is correct if it conforms to its specifications. n Some attributes are quantitative, others are qualitative.

External Qualities (cont.) n Another important quality is efficiency. u memory requirements u system speed n For real-time systems, speed is a matter of correctness. If it doesn’t act in time, the system doesn’t act as expected. n User friendliness-- difficult to measure. n Robustness--no one wants a system to crash.

External Qualities (cont.) n Maintainability. How easily can the system be modified? n Maintenance activities: u Corrective: taken to correct errors in the system. u Adaptive: taken to adapt the system to changes in the environment or in the user’s requirements. Software that is adapted easily sometimes is called extendible. u Perfective: taken to improve the quality of the system. n Portability. Can the system run on different “platforms”?

External Qualities (cont.) n Compatibility. Can the system work with other software systems.

Complexity n Complexity is the principal obstacle to the creation of correct, reliable, maintainable software. n Software systems are inherently complex. n A good design can reduce complexity considerably. n Key: control the interactions between components. n Components should be self contained; interaction should be minimal and carefully defined.

Modularity n The logical components of the design should correspond to physically separate syntactic software components. n Modules should be self-contained and coherent. n Cohesion is a measure of the degree to which a module completely encapsulates a single notion (a facet of the system’s functionality or data). n Coupling is a measure of the degree to which a module interacts with and depends on other modules. n We want to design modules with high cohesion and weak coupling.

Reusable software modules n A library of standard pieces that can be used in commonly occurring situations. n Tailorable software components.

Principles n Information hiding principle: A module should be able to obtain information from another module only through a well-defined interface between them. n Continuity principle: A small change in the specifications should effect only a few modules in the system, and not the entire structure of the system. u Structuring a system around data rather than around functionality measurably enhances continuity. n Open-closed principle: The ability to modify or extend a module without affecting other modules. u A module that still can be modified is said to be open. u A module that is available for use by other modules is said to be closed.

Software = a temporary solution to an evolving problem n We must design a system that adequately models the problem as currently perceived, yet implement the system in such a way as to minimize dependency on the particularities of the problem at hand.

A temporary solution to an evolving problem n Object design produces the collection of objects that not only model the problem at hand, but also provide a set of fixed conceptual constituents in terms of which system evolution can be expressed. n Algorithm design involves providing the detailed functionality of the objects.

A temporary solution to an evolving problem (cont.) n As the system changes, we expect u the way the objects interact to change. u the set of objects defining the system to remain stable. n The quality of a model depends on how successfully the stable components are identified and isolated from the aspects of the problem likely to change.

Software = data + algorithms n Since every program handles data, attention must be paid to how the representation of the data can affect the algorithm. n Data is the fundamental and most stable aspect of a software system. n The design of an abstract view of the data, followed by the implementation of this abstract view by means of algorithms, is the essence of programming.

Software = English and mathematics n Software is executed by machines, but written and maintained by people. n A software solution must be read and understood by anyone intending to maintain it -- it should be clear and comprehensible to a human reader. n The correctness should be verifiable in a formal, mathematical sense.

Why is this important? n When testing a program to detect a possible bug, quality is directly related to our ability to: u read the code. u localize the affected code. u tractably modify the code.

We’ve covered n Correctness --Conforming to specifications n Maintainability--Modification with minimal difficulty. n Composing module that are: u highly cohesive. u weakly coupled. n Three design principles: u information hiding u continuity u open/closed n software as a temporary solution. n Software as data design followed by algorithm design. n Software as both an English document and mathematical document.

Glossary

Glossary (cont.)