Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE PRODUCT QUALITY Today: - Software quality -

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Ch.21 Software Its Nature and Qualities. Ch.22 Outline Software engineering (SE) is an intellectual activity and thus human-intensive Software is built.
System Integration Verification and Validation
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Quality Management. What is a software product? Software product = computer programs (sources and executable) + associated documentation Software products.
Software Configuration Management
Soft. Eng. II, Spr. 02Dr Driss Kettani, from I. Sommerville1 CSC-3325: Chapter 6 Title : The Software Quality Reading: I. Sommerville, Chap: 24.
The Architecture Design Process
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Software Engineering II Presentation Software Maintenance.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
3. Software product quality metrics The quality of a product: -the “totality of characteristics that bear on its ability to satisfy stated or implied needs”.
Software Process and Product Metrics
SOFTWARE QUALITY ASSURANCE SOFTWARE QUALITY ASSURANCE  DEFINITIONS OF SQA  SOFTWARE STANDARDS  Process Quality Assurance  Product Quality Assurance.
Non-functional requirements
Software Reliability Categorising and specifying the reliability of software systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management 1.
System Testing There are several steps in testing the system: –Function testing –Performance testing –Acceptance testing –Installation testing.
Lecture 17 Software Metrics
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
TESTING.
Cmpe 589 Spring Software Quality Metrics Product  product attributes –Size, complexity, design features, performance, quality level Process  Used.
CSE 303 – Software Design and Architecture
1 Software Quality CIS 375 Bruce R. Maxim UM-Dearborn.
Software Reliability SEG3202 N. El Kadri.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
SWEN 5430 Software Metrics Slide 1 Quality Management u Managing the quality of the software process and products using Software Metrics.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa REQUIREMENT SPECIFICATION Today: Requirements Specification.
Software Measurement & Metrics
Software Engineering 2003 Jyrki Nummenmaa 1 SOFTWARE PRODUCT QUALITY Today: - Software quality - Quality Components - ”Good” software properties.
This chapter is extracted from Sommerville’s slides. Text book chapter
Software Engineering Quality What is Quality? Quality software is software that satisfies a user’s requirements, whether that is explicit or implicit.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Software Quality Metrics
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SOFTWARE MAINTENANCE 1. TOPICS TO BE DISCUSSED.. Definition of Maintenance Software Maintenance Types of Maintenance Maintenance Process Need of Maintenance.
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.
Software quality factors
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
The Software Development Process
Software Engineering 2004 Jyrki Nummenmaa 1 SOFTWARE PRODUCT QUALITY Today: - Software quality - Quality Components - ”Good” software properties.
Software Testing White Box Testing. Agenda What is White Box Testing Correctness Tests and Path Coverage Correctness Tests and Line Coverage McCabe Cyclomatic.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
1)History of water fall model. 2)Features of water fall model. 3)Phase of water fall model. 4)Brief description of phases. 5)Advantages. 6)Disadvantages.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS223: Software Engineering Lecture 21: Unit Testing Metric.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Software Test Metrics When you can measure what you are speaking about and express it in numbers, you know something about it; but when you cannot measure,
Rekayasa Perangkat Lunak Part-10
Rekayasa Perangkat Lunak
Software Metrics 1.
Software Testing.
Hardware & Software Reliability
Chapter 18 Maintaining Information Systems
Lecture 15: Technical Metrics
Software Reliability Definition: The probability of failure-free operation of the software for a specified period of time in a specified environment.
Software Engineering (CSI 321)
Rekayasa Perangkat Lunak
Software testing strategies 2
Chapter 13 Quality Management
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software metrics.
Software Metrics SAD ::: Fall 2015 Sabbir Muhammad Saleh.
Presentation transcript:

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE PRODUCT QUALITY Today: - Software quality - Quality Components - ”Good” software properties

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE ENGINEERING SOFTWARE QUALITY Today we talk about quality - but what is quality? ”Suitable” ”Fulfills requirements” ”Customer is satisfied” ”Other attributes than price” ”Superiority, excellence” ”Has required and expected features” It seems difficult to find a ”perfect” single definition.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE QUALITY - QUALITY COMPONENTS Objective quality component: properties that can be measured or approximated objectively Subjective quality component: customer satisfaction (”What does the product feel like?”) Other: features which can not be (even subjectively) evaluated at the time. This is related with future events which can not be predicted - unexpected circumstances, changes, etc.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE QUALITIES - PRODUCT AND PROCESS Product quality - the quality of the software product (including user and technical documentation). Process quality - the quality of the software engineering process used to produce the product. Users are (understandably) primarily interested in the product qualities. The process qualities are used to achieve the product ones.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE PROPERTIES - EXTERNAL AND INTERNAL External properties are the ones that are visible to the users. Internal properties are the ones the ones that are visible to the software developers. Users are (understandably) primarily interested in the external properties. The internal properties are used to achieve the external ones.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa Correctness A couple of years back in the Christmas issue of ITviikko- magazine professor Jukka Paakki from Helsinki University wished for at least one error-free program.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa A delayed Christmas gift program Hello; begin writeln(”1+1=2”); end. #include main() { printf ("1+1=2\n"); }

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa More error-free programs program Hello3; begin writeln(”1+2=3”); end.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa More error-free programs program Hello4; begin writeln(”1+3=4”); end.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa Correct or incorrect? program Hello; begin writeln(”1+1=3”); end. The problem of correctness is in that it does not depend on the program alone but also on the expectations on the program. So, how can we say if any of the previously seen programs was correct or incorrect?

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa How to identify correct programs? Sometimes this seems easy. But how to define correctness so that we could use the definition to identify correct programs? (and do it correctly:)

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa Mathematical proofs Using logic or mathematics, prove that the program has some properties. You can use a (hopefully correct) program to assist you in making the proofs. Problem: These mathematical properties may appear to be even more complex than the programs themselves.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Correctness A program is functionally correct if it behaves according to the functional specifications. The functional specifications may not always be available. The functional specification may be very informal. The functional specifications may contain ambiguities. Sometimes it is evident what is expected - is it fair to compare the software with general expectations or its own help? Do we assume that the specifications are correct?

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Reliability A program is reliable, if the user can rely on the software. For reliability, the statistical approach could be used: What is the probability that the software fails with a given task? The program may be reliable in a user’s point of view even if it is not correct.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Robustness A program is robust, if it behaves reasonably (?) well even in unexpected circumstances - i.e. it tolerates unexpected difficulties. Dealing with errors? E.g. program input is often different from what is expected. The program may be reliable in a user’s point of view even if it is not correct. A crucial property in some applications.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Performance Performance = efficiency. Efficiency: memory management, disk management, CPU usage,... Asymptotic behaviour: what happens when inputs grow larger? Transaction processing systems: - Throughput = how many transactions can be processed in a given time slice (average or min) - Response time = the time (max or average) needed to process a transaction.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - User friendliness A software system is user friendly if the users find it easy to use. A subjective quality. Incorrect, inefficient, and unreliable systems are not very user friendly. A non-robust system may be user friendly.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Verifiability A software system is verifiable, if its properties can be verified easily. The software properties can be verified using testing or formal analysis.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Maintainability A software system is maintainable, if it is easy to maintain. Corrective maintenance - removing errors (repairability) Adaptive maintenance - adapting the software to new or changing environments (evolvability). Perfective maintenance - improving other software qualities (evolvability).

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Evolvability A software system is evolvable, if it is easy to add new functions or change old ones. Adding new functions or changing the old ones usually ”eats up” some of the evolvability - after the change the software is usually less evolvable.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Reusability A software system is reusable, if it can be used to produce another software system. Reusability is rare in practice. In addition to the program code, also other parts of the software product, such as designs and documentation, can be reusable.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Portability A software system is portable, if it can be run (or it can be made to run) in different environments. Portability across different hardware architectures. Portability across different operating systems. Portability across different hardware configurations.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Understandability How easy is it to understand the system’s structure and how it works? Some tasks are more complex: it is easier to understand an ordinary text editor than an operating system. There is internal and external understandability.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Interoperability is the ability to co-operate with other systems. Exchange of data using data files. Exchange of data using some kind of a clipboard. Exchange of data using network. Standard interfaces Open system - open interfaces

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Productivity The efficiency of the software production process (internal). Huge differences between teams and individuals (starting from the fact that some teams or individuals may not be able to complete some tasks at all). In producing new software one individual can easily be 2-4 times more productive than another. In maintaining old software one individual can in extreme cases be (or even more) times more productive than another.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Timeliness The ability to deliver a product in time. Does not happen too often. Result: Alpha versions, Beta versions, ”Early pre-prototype test versions”,... Which is better: to deliver a defective product in time or to deliver a better product late? (Ok, this depends on the situation.)

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS - Visibility The software development process is visible, if it is easy to see what has been done and what has happened. If all know what the state of the process is, it is easier to know when to do what. When personnel changes (and in long projects it does), visibility is very valuable.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa QUALITY COMPONENTS Correctness Reliability Robustness Performance User Friendliness Verifiability Maintainability Reusability Portability Understandability Interoperability Productivity Timeliness Visibility

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SOFTWARE METRICS Measurements which relate to a software system, process, or related documentation Examples: - size of a product in lines of code - number of reported faults - time required to produce a system component Control metrics measure the process Predictor metrics are measurements of a product attribute which can be used to predict an associated product quality.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa ASSUMPTIONS FOR PREDICTOR METRICS We can accurately measure some property of the software. A relationship exists between what we can measure and what we would like to know about the product’s behavioural attributes. This relationship is understood, has been validated, and can be expressed in terms of a formula or a model. (This last assumption is often ignored.)

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa SIZE AND COUNT RELATED METRICS Number of Lines Of Code (LOC) Number of classes Number of comment lines Number of interfaces Number of modules Number of statements Number of variables There’s so many things you can count!

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa MORE SIMPLE METRICS Comment density: number of comment lines / number of all lines Fan-in: number of other classes(module,etc.) using this class (module,etc.) Fan-out: number of classes(module,etc.) such that this class (module,etc.) uses them.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa COHESION–RELATED METRICS Cohesion means how well parts of some unit – say class – belong together. For instance, it is possible to check if methods use the same variables. If they do, they seem to have something in common. A number of cohesion-related metrics exists.

Software Engineering – University of Tampere, CS DepartmentJyrki Nummenmaa COMPLEXITY METRICS McCabes cyclomatic complexity: If G is the control flowgraph of program P, and G has e edges (arcs) and n nodes, then Cyclomatic number V(G) = e - n + 2. Intuitively the metrics measures the different ways the program execution can flow. Halstead metrics – based on the number of operators and operands.