OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” • Today: - Software quality - Quality Components - ”Good” software properties
OHTO -99
SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY”
• Today:- Software quality - Quality Components - ”Good” software properties
OHTO -99
SOFTWARE ENGINEERINGSOFTWARE 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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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?
OHTO -99
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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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).
OHTO -99
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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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.
OHTO -99
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
OHTO -99
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 20-40 (or even more) times more productive than another.
OHTO -99
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 orto deliver a better product late?(Ok, this depends on the situation.)
OHTO -99
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.
OHTO -99
QUALITY COMPONENTS
• Correctness• Reliability• Robustness• Performance• User Friendliness• Verifiability• Maintainability
• Reusability• Portability• Understandability• Interoperability• Productivity• Timeliness• Visibility