Module 7
Module 7
organizations towards performance better software products. Concerned with ensuring that the required level of quality is achieved in a software product. aim to develop a quality culture where quality is seen as everyones responsibility Software quality assurance (SQA) is often called quality management! continuous quality improvement, customer focus, process approach, leadership etc
y y
Standards, regulations, and procedures to produce, verify, evaluate and confirm work products during the software development lifecycle Incorporated knowledge base of best practices Off-the-shelf software tools selected to apply the above
1. Quality management is particularly important for large, complex systems. The quality documentation is a record of progress and supports continuity of development as the development team changes. 2. For smaller systems, quality management needs less documentation and should focus on establishing a quality culture.
Software Quality
1. In 2005, ComputerWorld [Hil05] lamented that -bad software plagues nearly every organization that uses computers, causing lost work hours during computer downtime, lost or corrupted data, missed sales opportunities, high IT support and maintenance costs, and low customer satisfaction. 2. A year later, InfoWorld [Fos06] wrote about the -the sorry state of software quality reporting that the quality problem had not gotten any better. 3. Today, software quality remains an issue, but who is to blame? -Customers blame developers, arguing that sloppy practices lead to low-quality software. -Developers blame customers (and other stakeholders), arguing that irrational delivery dates and a continuing stream of changes force them to deliver software before it has been fully validated. What is Quality? Quality means that a product should meet its specification. What is software quality? Software quality can be defined as: An effective software process applied in a manner that creates a useful product that provides measurable value for those who produce it and those who use it. Effective process: establishes the infrastructure that supports any effort at building a high quality software product The management aspects of process create the checks and balances that help avoid project chaosa key contributor to poor quality. Useful product: delivers the content, functions, and features that the end-user desires in a reliable, error free way. Satisfies requirements of stakeholders and that are expected of all high quality software. Adding value: high quality software provides benefits to producer and user To producer: less maintenance effort, fewer bug fixes, and reduced customer support To user: expedites some business process. End results: Increased revenue, better profitability when an application supports a business process, and/or improved availability of information that is crucial for the business. Quality Dimensions and Factors Can be used as generic quality indicators of a software product. Garvin Quality Dimensions McCalls Quality Factors ISO 9126 Quality Factors Targeted Factors Garvin McCall ISO 9126
Maintainability Portability
Ri
1. Efficiency -The degree t1.o which the software makes optimal use of software resources. 2. Usability -The degree to which the software is easy to learn, use, operate, prepare input for and interpret output from. 3. Maintainability -The ease with which repair maybe made to the software 4. Reliability -The amount of time that the software is available for use
Achieveing Software Quality Broad activities that help a software team achieve high quality software: 1. Quality assurance (QA) establishes the infrastructure that supports solid software engineering methods, rational project management, and quality control actions. 2. Quality control (QC) action that helps ensure each work products meets its quality goals (e.g., Review design models to ensure that they are complete and consistent). 3. Software engineering method understand the problem to be solved, create a design that conforms to the problems and exhibit characteristics that lead to software that are reliable, efficient, usable, etc. 4. Project management technique use estimation to verify that delivery dates are achievable, schedule dependencies are understood and conduct risk planning so that problem do not breed chaos.
Software Quality Assurance (SQA) Encompasses: 1. An SQA process 2. Specific QA and QC tasks technical review, audits, multitier testing strategy etc. 3. Effective SE practice (methods and tools) risk management 4. Control of all software work products and changes made to them change management, security management 5. A procedure to ensure compliance with standards IEEE, ISO, CMMI, Six Sigma etc 6. Measurement and reporting mechanisms SQA group Role of the SQA Group 1. Prepares an SQA plan for a project. -The plan identifies: -evaluations to be performed -audits and reviews to be performed
-standards that are applicable to the project -procedures for error reporting and tracking -documents to be produced by the SQA group -amount of feedback provided to the software project team 2. Participates in the development of the projects software process description. -The SQA group reviews the process description for compliance with organizational policy, internal software standards, externally imposed standards (e.g., ISO-9001), and other parts of the software project plan. 3. Reviews software engineering activities to verify compliance with the defined software process. -identifies, documents, and tracks deviations from the process and verifies that corrections have been made. 4. Audits designated software work products to verify compliance with those defined as part of the software process. -reviews selected work products; identifies, documents, and tracks deviations; verifies that corrections have been made -periodically reports the results of its work to the project manager. 5. Ensures that deviations in software work and work products are documented and handled according to a documented procedure. 6. Records any noncompliance and reports to senior management. -Noncompliance items are tracked until they are resolved. Goals 1. Requirements quality. The correctness, completeness, and consistency of the requirements model will have a strong influence on the quality of all work products that follow. 2. Design quality. Every element of the design model should be assessed by the software team to ensure that it exhibits high quality and that the design itself conforms to requirements. 3. Code quality. Source code and related work products (e.g., other descriptive information) must conform to local coding standards and exhibit characteristics that will facilitate maintainability. 4. Quality control effectiveness. A software team should apply limited resources in a way that has the highest likelihood of achieving a high quality result. Statistical SQA 1. Steps to perform statistical SQA: -Collect and categorize information about software errors and defects. -Trace each error and defect to its underlying cause (e.g., non-conformance to specifications, design error, violation of standards, poor communication with the customer). -Identify vital few causes of defects (20%) by using the Pareto principle (80% of the defects can be traced to 20 percent of all possible causes) -Move to correct the problems that have caused the errors and defects. 2. Widely used strategy for statistical SQA in the industry is Six Sigma. Six-Sigma for Software Engineering 1. Originally popularized by Motorola in the 1980's 2. A rigorous and disciplined methodology that uses data and statistical analysis to measure and improve a companys operational performance 3. The Six Sigma methodology defines three core steps: -Define customer requirements and deliverables and project goals via well-defined methods of customer communication -Measure the existing process and its output to determine current quality performance (collect defect metrics)
-Analyze defect metrics and determine the vital few causes. 4. If improvement is required when software process exist, Six Sigma suggest two extra steps: -Improve the process by eliminating the root causes of defects. -Control the process to ensure that future work does not reintroduce the causes of defects.
ISO 9001:2000 Standard 1. ISO 9001:2000 is the quality assurance standard that applies to software engineering. 2. The standard contains 20 requirements that must be present for an effective quality assurance system. 3. The requirements set down by ISO 9001:2000 address topics such as -management responsibility, quality system, contract review, design control, document and data control, product identification and traceability, process control, inspection and testing, corrective and preventive action, control of quality records, internal quality audits, training, servicing, and statistical techniques.