SOFTWARE PRODUCT SOFTWARE ENGINEERING QUALITY SOFTWARE QUALITY • Today: • Today we talk about quality Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department - Software quality - but what is quality? - Quality Components - ”Good” software properties • ”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 – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se SOFTWARE QUALITY - SOFTWARE QUALITIES - QUALITY COMPONENTS PRODUCT AND PROCESS • Objective quality component: properties that can be • Product quality - the quality of the software product (including Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department measured or approximated objectively user and technical documentation). • Process quality - the quality of the software engineering process used to produce the product. • Subjective quality component: customer satisfaction (”What does the product feel like?”) • Users are (understandably) primarily interested in the product qualities. • The process qualities are used to achieve the product ones. • 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 – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se SOFTWARE PROPERTIES - Correctness EXTERNAL AND INTERNAL • External properties are the ones that are visible to the users. • A couple of years back in the Christmas issue of ITviikko- Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department magazine professor Jukka Paakki from Helsinki University • Internal properties are the ones the ones that are visible to wished for at least one error-free program. the software developers. • Users are (understandably) primarily interested in the external properties. • The internal properties are used to achieve the external ones. Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se 1
A delayed Christmas gift More error-free programs Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department program Hello; begin program Hello3; writeln(”1+1=2”); begin end. writeln(”1+2=3”); end. #include <stdio.h> main() { printf ("1+1=2\n"); } Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se More error-free programs Correct or incorrect? Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department program Hello4; program Hello; begin begin writeln(”1+3=4”); writeln(”1+1=3”); end. 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 – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se How to identify correct Mathematical proofs programs? • Sometimes this seems easy. • Using logic or mathematics, prove that the program has some Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department properties. • But how to define correctness so that we could use the definition to identify correct programs? • You can use a (hopefully correct) program to assist you in (and do it correctly:) making the proofs. • Problem: These mathematical properties may appear to be even more complex than the programs themselves. Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se 2
QUALITY COMPONENTS - QUALITY COMPONENTS - Correctness Reliability Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department • A program is functionally correct if it behaves according to the • A program is reliable, if the user can rely on the software. functional specifications. • For reliability, the statistical approach could be used: What is • The functional specifications may not always be available. the probability that the software fails with a given task? • The functional specification may be very informal. • The program may be reliable in a user’s point of view even if it is not correct. • 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 – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se QUALITY COMPONENTS - QUALITY COMPONENTS - Robustness Performance Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department • A program is robust, if it behaves reasonably (?) well even in • Performance = efficiency. unexpected circumstances - i.e. it tolerates unexpected • Efficiency: memory management, disk management, CPU difficulties. usage, ... • Dealing with errors? E.g. program input is often different from • Asymptotic behaviour: what happens when inputs grow what is expected. larger? • The program may be reliable in a user’s point of view even if it • Transaction processing systems: is not correct. - Throughput = how many transactions can be • A crucial property in some applications. processed in a given time slice (average or min) - Response time = the time (max or average) needed to process a transaction. Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se QUALITY COMPONENTS - QUALITY COMPONENTS - User friendliness Verifiability Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department • A software system is user friendly if the users find it easy to • A software system is verifiable, if its properties can be verified use. easily. • A subjective quality. • The software properties can be verified using testing or formal analysis. • Incorrect, inefficient, and unreliable systems are not very user friendly. • A non-robust system may be user friendly. Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se 3
QUALITY COMPONENTS - QUALITY COMPONENTS - Maintainability Evolvability Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department • A software system is maintainable, if it is easy to maintain. • A software system is evolvable, if it is easy to add new functions or change old ones. • Corrective maintenance - removing errors (repairability) • Adding new functions or changing the old ones usually ”eats • Adaptive maintenance - adapting the software to new or up” some of the evolvability - after the change the software is changing environments (evolvability). usually less evolvable. • Perfective maintenance - improving other software qualities (evolvability). Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se QUALITY COMPONENTS - QUALITY COMPONENTS - Reusability Portability Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department • A software system is reusable, if it can be used to produce • A software system is portable, if it can be run (or it can be another software system. made to run) in different environments. • Reusability is rare in practice. • Portability across different hardware architectures. • In addition to the program code, also other parts of the • Portability across different operating systems. software product, such as designs and documentation, can be • Portability across different hardware configurations. reusable. Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se QUALITY COMPONENTS - QUALITY COMPONENTS - Understandability Interoperability Jyrki Nummenmaa University of Tampere, CS Department Jyrki Nummenmaa University of Tampere, CS Department • How easy is it to understand the system’s structure and how it • is the ability to co-operate with other systems. works? • Exchange of data using data files. • Some tasks are more complex: it is easier to understand an • Exchange of data using some kind of a clipboard. ordinary text editor than an operating system. • Exchange of data using network. • There is internal and external understandability. • Standard interfaces • Open system - open interfaces Software Engineering – http://www.cs.uta.fi/se Software Engineering – http://www.cs.uta.fi/se 4
Recommend
More recommend