The document discusses software quality and reliability. It defines software quality as conformance to functional and performance requirements, development standards, and implicit user expectations. Software quality has both functional and structural aspects. It is influenced by factors like correctness, reliability, robustness, performance, verifiability, maintainability, testability, flexibility, portability, reusability and interoperability. Quality is important for both software products and processes. McCall identified three categories of quality factors - product operation qualities, product revision qualities, and product transition qualities. The document emphasizes that quality is essential and must be a goal of software engineering.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
49 views
Reliability and Quality Issues Overview
The document discusses software quality and reliability. It defines software quality as conformance to functional and performance requirements, development standards, and implicit user expectations. Software quality has both functional and structural aspects. It is influenced by factors like correctness, reliability, robustness, performance, verifiability, maintainability, testability, flexibility, portability, reusability and interoperability. Quality is important for both software products and processes. McCall identified three categories of quality factors - product operation qualities, product revision qualities, and product transition qualities. The document emphasizes that quality is essential and must be a goal of software engineering.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41
SOFTWARE RELIABILITY AND
QUALITY ASSURANCE
Reliability and Quality Issues: Overview
Software Quality
1. What is quality 2. Software quality factors 3. Quality control 4. Cost of quality 5. Quality assurance SOFTWARE QUALITY
QUALITY IS NEVER AN ACCIDENT; IT IS ALWAYS THE
RESULT OF INTELLIGENT EFFORT. — JOHN RUSKIN Introduction Quality software refers to a software which is: ▪ reasonably bug or defect free ▪ delivered in time and within the specified budget ▪meets the requirements and/or expectations ▪maintainable Introduction In the software engineering context, software quality reflects both: ▪functional quality ▪structural quality Software Functional Quality It reflects how well it satisfies a given design ➢based on the functional requirements or specifications Software Structural Quality It deals with: ➢ the handling of non-functional requirements that support the delivery of the functional requirements such as: ➢robustness or maintainability ➢the degree to which the software was produced correctly The Software Quality Challenge In the software industry: the developers will never declare that the software is free of defects, unlike other industrial product manufacturers usually do This difference is due to the following reasons: ▪product complexity ▪product visibility ▪product development and production process Software Quality ▪The basic goal of software engineering is to produce quality software ▪We examine the qualities that are pertinent to: ➢software products and software production processes ▪These qualities will become our goals in the practice of software engineering ▪Software quality is a broad and important field of software engineering addressed by several standardization bodies, such as ISO, IEEE, ANSI, etc. Definition of Software Quality ▪Software quality: ▪Conformance to: ➢ explicitly stated functional and performance requirements, ➢explicitly documented development standards, ➢ and implicit characteristics that are expected of all professionally developed software Definition of Software Quality The definition emphasizes three important points: 1. Software requirements are the foundation from which quality is measured. Lack of conformance to requirements is lack of quality 2. Specified standards define a set of development criteria that guide the manner in which software is engineered. If the criteria are not followed, lack of quality will almost surely result 3. There is a set of implicit requirements that often goes unmentioned. If software conforms to its explicit requirements but fails to meet implicit requirements, software quality is a suspect Classification of Software Qualities There are many desirable software qualities. Some of these apply both to the product and to the process used to produce the product ▪ The user wants the software products to be reliable, efficient, and easy to use ▪The producer of the software wants it to be verifiable, maintainable, portable, and extensible ▪The manager of the software project wants the process of software development to be productive and easy to control Classification of Software Qualities We consider two different classifications of software-related qualities: ▪ internal versus external ▪ product versus process External versus Internal Qualities ▪We can divide software qualities into external and internal qualities: ➢The external qualities are visible to the users of the system ➢ The internal qualities are those that concern the developers of the system ▪In general, users of the software only care about the external qualities, but it is the internal qualities, which deal largely with the structure of the software, that help developers achieve the external qualities ▪For example, the internal quality of verifiability is necessary for achieving the external quality of reliability ▪In many cases, however, the qualities are related closely and the distinction between internal and external is not sharp Product and Process Qualities ▪We use a process to produce the software product ▪We can also attribute some qualities to the process, although process qualities often are closely related to product qualities ➢ For example, if the process requires careful planning of system test data before any design and development of the system starts, products reliability will increase ▪ Some qualities, such as efficiency, apply both to the product and to the process Product and Process Qualities cont.
▪It is interesting to examine the word product here
➢It usually refers to what is delivered to the customer ▪ Even though this is an acceptable definition from the customer’s perspective, it is not adequate for the developer who requires a general definition of a software product that encompasses not only the object code and the user manual that are delivered to the customer but also the requirements, design, source code, test data, etc. ▪ In fact, it is possible to deliver different subsets of the same product to different customers Software Quality Attributes Software quality is comprised of six main attributes (characteristics). At the top level, for software products, these attributes can be defined as follows: 1. Functionality: The capability to provide functions which meet stated and implied needs when the software is used. 2. Reliability: The capability to maintain a specified level of performance. 3. Usability: The capability to be understood, learned, and used. Software Quality Attributes 4.Efficiency: The capability to provide appropriate performance relative to the amount of resources used. 5. Maintainability: The capability to be modified for purposes of making corrections, improvements, or adaptation. 6. Portability: The capability to be adapted for different specified environments without applying actions or means other than those provided for this purpose in the product. McCall’s Quality Factors McCall, Richards, and Walters [MCC77] propose a useful categorization of factors that affect software quality. These software quality factors focus on three important aspects of a software product: ▪its operational characteristics ▪its ability to undergo change and ▪ its adaptability to new environments. McCall’s Quality Factors James A. McCall identified specific product qualities that are appropriate to software. He grouped software qualities into three sets of quality factors: ▪product operation qualities ▪product revision qualities and ▪product transition qualities. Product Operation Quality Factors Correctness: The extent to which a program satisfies its specifications and fulfills the user’s objectives. Reliability: The extent to which a program can be expected to perform its intended function with required precision. Efficiency: The amount of computer resources required by the software. Integrity: The extent to which access to software or data by unauthorized persons can be controlled. Usability: The effort required for learning, operating, preparing input, and interpreting output. Product Revision Quality Factors Maintainability: The effort required to locate and fix an error in an operational program. Testability: The effort required to test a program to ensure it performs its intended function. Flexibility: The efforts required to modify an operational program. Product Transition Quality Factors Portability: The effort required for transferring a program from one hardware configuration and software system environment to another. Reusability: The extent to which a program can be used in other applications. Interoperability: The efforts required to couple one system to another. Software Quality Criteria Representative Qualities The most important qualities of software products and processes: Correctness: A program is functionally correct if it behaves according to the specification of the functions it should provide (called functional requirements specifications). Reliability: Informally, software is reliable if the user can depend on it. The specialized literature on software reliability defines reliability in terms of statistical behavior— the probability that the software will operate as expected over a specified time interval. Important qualities of software products Robustness: A program is robust if it behaves “reasonably,” even in circumstances that were not anticipated in the requirements specification Performance: Performance is important because it affects the usability of the system. • If a software system is too slow, it reduces the productivity of the users, possibly to the point of not meeting their needs. • If a software system uses too much disk space, it may be too expensive to run. Important qualities of software products Performance: ▪If a software system uses too much memory ➢it may affect the other applications that run on the same system ➢it may run slowly while the operating system tries to balance the memory usage of the different applications ▪Performance is also important because it affects the scalability of a software system Important qualities of software products Verifiability: ▪A software system is verifiable if its properties can be verified easily ➢ For instance, it is important to be able to verify the correctness or the performance of a software system ▪ Verifiability is usually an internal quality, although it sometimes becomes an external quality also ➢For example, in many security-critical applications, the customer requires the verifiability of certain properties - A trusted computer system requires the verifiability of the operating system kernel. Important qualities of software products Repairable: ▪A software system is repairable if it allows the correction of its defects with a limited amount of work ▪In many engineering products, it is a major design goal ➢ For example, automobile engines are built with the parts that are most likely to fail as the most accessible Evolvability: ▪Software products are modified over time to provide new functions or to change existing functions. Indeed, the fact that software is so malleable makes modifications extremely easy to apply to an implementation Important qualities of software products Understandability: ▪Some software systems are easier to understand than others ➢Of course, some tasks are inherently more complex than others ▪Given tasks of inherently similar difficulty, ➢we can follow certain guidelines to produce more understandable designs and to write more understandable programs ➢For example, abstraction and modularity enhance a system’s understandability Important qualities of software products Interoperability: ▪Refers to the ability of a system to coexist and cooperate with other systems ➢ With interoperability, a vendor can produce different products and allow the user to combine them if necessary ➢ This makes it easier for the vendor to produce the products, and it gives the user more freedom in exactly what functions to pay for and to combine ➢Interoperability can be achieved through standardization of interfaces Important qualities of software products Productivity: ▪Productivity is a quality of the software-production process; it measures the efficiency of the process ▪It is the performance quality applied to the process ▪An efficient process results in faster delivery of the product ▪Productivity offers many trade-offs in the choice of a process ➢ For example, a process that requires specialization of individual team members may lead to productivity in producing a certain product, but not in producing a variety of products Important qualities of software products Reusability: ▪Software reuse is a technique ➢that leads to the overall productivity of an organization that is involved in developing many products ▪But developing reusable modules is harder than developing modules for one’s own use ➢thus reducing the productivity of the group that is developing reusable modules as part of their product development Important qualities of software products Timeliness: ▪Timeliness is a process-related quality ➢that refers to the ability to deliver a product on time ▪Timeliness requires careful scheduling, accurate estimation of work, and clearly specified and verifiable milestones Visibility: ▪A software-development process is visible if all of its steps and its current status are documented clearly ➢Another term used to characterize this property is transparency. The idea is that the steps and the status of the project are available and easily accessible for external examination. Importance of Software Quality ▪We would expect quality to be a concern of all producers of goods and services ▪However, the special characteristics of software, and in particular, its intangibility and complexity, make special demands Increasing Criticality of Software: ▪The final customer or user is naturally anxious about the general quality of software, especially its reliability. This is increasingly the case as organizations become more dependent on their computer systems and software is used more and more in areas which are safety critical; for example, to control aircraft. Importance of Software Quality The Intangibility of Software: ▪This makes it difficult to know whether a particular task in a project has been completed satisfactorily ▪The results of these tasks can be made tangible by demanding that the developers produce ‘deliverables’ that can be examined for quality Importance of Software Quality Accumulating Errors During Software Development: ▪ As computer system development is made up of a number of steps where the output from one step is the input to the next, the errors in the earlier deliverables will be added to those in the later steps leading to an accumulating detrimental effect ▪Generally, the later in a project that an error is found the more expensive it will be to fix ▪In addition, because the number of errors in the system is unknown, the debugging phases of a project are particularly difficult to control Importance of Software Quality In conclusion: Quality management is an essential part of effective overall project management Questions