Podcast
Questions and Answers
What are the two principal concerns of software quality management?
What are the two principal concerns of software quality management?
Quality management is a dependent check on the software development process.
Quality management is a dependent check on the software development process.
False
What is a quality plan?
What is a quality plan?
A quality plan defines a plan for a project by setting out the quality goals for the project and defining what processes and standards are to be used.
At what level does software quality management establish a quality plan for a project?
At what level does software quality management establish a quality plan for a project?
Signup and view all the answers
Quality plans should be long, detailed documents.
Quality plans should be long, detailed documents.
Signup and view all the answers
What three aspects of software standards are highlighted as important?
What three aspects of software standards are highlighted as important?
Signup and view all the answers
What are the two main types of software standards?
What are the two main types of software standards?
Signup and view all the answers
What is the definition of software quality, in the simplest sense?
What is the definition of software quality, in the simplest sense?
Signup and view all the answers
What aspect does the focus on software quality often shift to?
What aspect does the focus on software quality often shift to?
Signup and view all the answers
The subjective quality of a software system is largely based on its non-functional characteristics.
The subjective quality of a software system is largely based on its non-functional characteristics.
Signup and view all the answers
Which of these are examples of non-functional characteristics of a software system?
Which of these are examples of non-functional characteristics of a software system?
Signup and view all the answers
Which of these is NOT a software quality attribute?
Which of these is NOT a software quality attribute?
Signup and view all the answers
It is possible for any system to be optimized for all of its quality attributes.
It is possible for any system to be optimized for all of its quality attributes.
Signup and view all the answers
The quality of a developed product is influenced by the quality of the production process.
The quality of a developed product is influenced by the quality of the production process.
Signup and view all the answers
What are the four primary aspects of a process-based quality approach?
What are the four primary aspects of a process-based quality approach?
Signup and view all the answers
What is the goal of quality managers in terms of developing a 'quality culture'?
What is the goal of quality managers in terms of developing a 'quality culture'?
Signup and view all the answers
Agile development utilizes formal, document-based quality management.
Agile development utilizes formal, document-based quality management.
Signup and view all the answers
Why might agile quality management be less suitable for large systems?
Why might agile quality management be less suitable for large systems?
Signup and view all the answers
What is the focus of software measurement?
What is the focus of software measurement?
Signup and view all the answers
Most organizations systematically utilize software measurement.
Most organizations systematically utilize software measurement.
Signup and view all the answers
What are two main uses of software metrics?
What are two main uses of software metrics?
Signup and view all the answers
There are numerous established standards for software measurement.
There are numerous established standards for software measurement.
Signup and view all the answers
What is the primary reason to use inspection checklists in the code inspection process?
What is the primary reason to use inspection checklists in the code inspection process?
Signup and view all the answers
What is the relationship between type checking in programming languages and inspection checklist size?
What is the relationship between type checking in programming languages and inspection checklist size?
Signup and view all the answers
Which of the following is NOT a type of review with distinct objectives?
Which of the following is NOT a type of review with distinct objectives?
Signup and view all the answers
What is the significance of 'signing off' on a reviewed software or document?
What is the significance of 'signing off' on a reviewed software or document?
Signup and view all the answers
The review process traditionally assumes that the review team has a face-to-face meeting to discuss the software or documents.
The review process traditionally assumes that the review team has a face-to-face meeting to discuss the software or documents.
Signup and view all the answers
Program inspections involve reviewing the source code of a system to discover defects.
Program inspections involve reviewing the source code of a system to discover defects.
Signup and view all the answers
Program inspections require the execution of the system to be performed
Program inspections require the execution of the system to be performed
Signup and view all the answers
Program inspections have proven to be effective in discovering program errors.
Program inspections have proven to be effective in discovering program errors.
Signup and view all the answers
What practice is common for agile software development teams?
What practice is common for agile software development teams?
Signup and view all the answers
In Scrum, there is no review meeting after each iteration of the software has been completed.
In Scrum, there is no review meeting after each iteration of the software has been completed.
Signup and view all the answers
What is the primary benefit of pair programming?
What is the primary benefit of pair programming?
Signup and view all the answers
Which of the following weaknesses is NOT typically associated with pair programming?
Which of the following weaknesses is NOT typically associated with pair programming?
Signup and view all the answers
Why can using agile quality management be impractical for larger systems? (Choose all that apply)
Why can using agile quality management be impractical for larger systems? (Choose all that apply)
Signup and view all the answers
Software analytics relies heavily on data collected from small companies.
Software analytics relies heavily on data collected from small companies.
Signup and view all the answers
Software analytics is a mature and well-established field with proven effectiveness in improving software development processes.
Software analytics is a mature and well-established field with proven effectiveness in improving software development processes.
Signup and view all the answers
What is the primary goal of using software analytics?
What is the primary goal of using software analytics?
Signup and view all the answers
Which of the following is NOT an enabler of software analytics?
Which of the following is NOT an enabler of software analytics?
Signup and view all the answers
Software analytics tools should generate large volumes of information to ensure comprehensiveness.
Software analytics tools should generate large volumes of information to ensure comprehensiveness.
Signup and view all the answers
Software analytics tools should be non-interactive to prevent distractions and allow for focused analysis.
Software analytics tools should be non-interactive to prevent distractions and allow for focused analysis.
Signup and view all the answers
Software quality management ensures that software has a low number of defects and meets the required standards.
Software quality management ensures that software has a low number of defects and meets the required standards.
Signup and view all the answers
Reviews of the software process deliverables involve a team of people who assess the software against established quality standards.
Reviews of the software process deliverables involve a team of people who assess the software against established quality standards.
Signup and view all the answers
Agile quality management relies on teams working together to improve software quality.
Agile quality management relies on teams working together to improve software quality.
Signup and view all the answers
Software measurement can only be used to collect quantitative data about the software itself.
Software measurement can only be used to collect quantitative data about the software itself.
Signup and view all the answers
Software metrics can be used to make inferences about both product and process quality.
Software metrics can be used to make inferences about both product and process quality.
Signup and view all the answers
Product quality metrics are essential for identifying components that might have quality problems and require further analysis.
Product quality metrics are essential for identifying components that might have quality problems and require further analysis.
Signup and view all the answers
What is the significance of software analytics in software development?
What is the significance of software analytics in software development?
Signup and view all the answers
Signup and view all the answers
What is the role of a quality team in software development?
What is the role of a quality team in software development?
Signup and view all the answers
What are the three main purposes of the adaptive median filter?
What are the three main purposes of the adaptive median filter?
Signup and view all the answers
Software quality management is crucial for both large and small software systems.
Software quality management is crucial for both large and small software systems.
Signup and view all the answers
Explain the difference between customer quality requirements and developer quality requirements.
Explain the difference between customer quality requirements and developer quality requirements.
Signup and view all the answers
Describe the concept of 'fitness for purpose' in relation to software quality.
Describe the concept of 'fitness for purpose' in relation to software quality.
Signup and view all the answers
Why are non-functional characteristics often more crucial than functional characteristics in determining software quality?
Why are non-functional characteristics often more crucial than functional characteristics in determining software quality?
Signup and view all the answers
What are the various classifications of software standards?
What are the various classifications of software standards?
Signup and view all the answers
What are the three main benefits of adhering to software standards?
What are the three main benefits of adhering to software standards?
Signup and view all the answers
What is the purpose of ISO 9001 and how is it related to software development?
What is the purpose of ISO 9001 and how is it related to software development?
Signup and view all the answers
What is the difference between software reviews and inspections?
What is the difference between software reviews and inspections?
Signup and view all the answers
Name the three phases involved in the software review process.
Name the three phases involved in the software review process.
Signup and view all the answers
What are the key characteristics of agile quality management?
What are the key characteristics of agile quality management?
Signup and view all the answers
Explain the concept of 'check before check-in' in agile development.
Explain the concept of 'check before check-in' in agile development.
Signup and view all the answers
What is pair programming and what are its advantages and potential drawbacks?
What is pair programming and what are its advantages and potential drawbacks?
Signup and view all the answers
What are the major limitations of agile quality management in the context of large software systems?
What are the major limitations of agile quality management in the context of large software systems?
Signup and view all the answers
Software measurement is widely adopted by most organizations for systematic quality assessment and analysis.
Software measurement is widely adopted by most organizations for systematic quality assessment and analysis.
Signup and view all the answers
Define a software metric and explain its purpose in software development.
Define a software metric and explain its purpose in software development.
Signup and view all the answers
Explain the difference between dynamic metrics and static metrics in software measurement.
Explain the difference between dynamic metrics and static metrics in software measurement.
Signup and view all the answers
What are the common challenges associated with software measurement in industry?
What are the common challenges associated with software measurement in industry?
Signup and view all the answers
Explain the relationship between software measurement and empirical software engineering.
Explain the relationship between software measurement and empirical software engineering.
Signup and view all the answers
What are the key aspects of software analytics and how does it provide value to software development?
What are the key aspects of software analytics and how does it provide value to software development?
Signup and view all the answers
What are the key advantages of using software analytics in software development?
What are the key advantages of using software analytics in software development?
Signup and view all the answers
What are the three key characteristics of tools used for software analytics?
What are the three key characteristics of tools used for software analytics?
Signup and view all the answers
What are the major factors limiting the widespread adoption of software analytics?
What are the major factors limiting the widespread adoption of software analytics?
Signup and view all the answers
What are the main benefits of software quality management?
What are the main benefits of software quality management?
Signup and view all the answers
What is the role of software reviews in quality management?
What is the role of software reviews in quality management?
Signup and view all the answers
What is the purpose of program inspections within software development?
What is the purpose of program inspections within software development?
Signup and view all the answers
Explain the role of agile quality management in achieving software quality goals.
Explain the role of agile quality management in achieving software quality goals.
Signup and view all the answers
Why are product quality metrics particularly valuable in software development?
Why are product quality metrics particularly valuable in software development?
Signup and view all the answers
How does software analytics contribute to better decision-making within software development?
How does software analytics contribute to better decision-making within software development?
Signup and view all the answers
Study Notes
Chapter 24 - Quality Management
- Quality management is concerned with ensuring the required level of quality is achieved in a software product.
- Two principal concerns are at the organizational and project level.
- At the organizational level, quality management establishes a framework of organizational processes and standards leading to high-quality software.
- At the project level, quality management involves applying specific quality processes and checking that these planned processes are followed. It also establishes a quality plan for a project. This plan outlines quality goals and defines the processes and standards to be used.
- Quality management activities provide an independent check on the software development process.
- The quality management process checks project deliverables ensuring consistency with organizational standards and goals.
- The quality team should be independent from the development team to maintain an objective view of the software.
- Quality management is particularly important for large, complex systems, creating documentation of progress and continuity as the development team changes. For smaller systems, establishing a quality culture is a focus.
- Agile development practices require evolving quality management techniques.
Quality Planning
- A quality plan details desired product qualities, how they're assessed, and defines significant quality attributes.
- The plan defines the quality assessment process.
- The plan specifies organizational standards to be applied and defines new ones, when necessary.
- Quality plans should be concise documents.
Quality Plans Structure
- Quality plan structure includes:
- Product introduction
- Product plans
- Process descriptions
- Quality goals
- Risk and risk management
Scope of Quality Management
- Quality management is important for large complex systems because it provides a record of progress and helps with development continuity.
- For smaller systems, less documentation is needed, and a quality culture is important.
- Techniques need to evolve in the context of agile development, becoming more informal.
Software Quality
- Quality, in a simple sense, means the product meets its specifications.
- This is problematic for software systems. There's often a tension between customer (e.g., efficiency, reliability) and developer (e.g., maintainability, reusability) quality requirements.
- Some software quality requirements are difficult to specify unambiguously.
- Specifications may be incomplete or inconsistent.
- Focus may be on "fitness for purpose" rather than strict specification conformance.
Software Fitness for Purpose
- Questions to consider for fitness for purpose:
- Has the software been properly tested?
- Is the software dependable for use?
- Is performance acceptable for normal use?
- Is the software usable?
- Is the software well-structured and understandable?
- Have programming and documentation standards been followed?
Non-Functional Characteristics
- Subjective quality of a software system is based largely on non-functional characteristics.
- Functionality not meeting expectations can often be worked around. But unreliability or slowness make achieving user goals practically impossible.
Software Quality Attributes
- A table lists attributes (safety, security, reliability, robustness, understandability, testability, adaptability, modularity, complexity, portability, usability, reusability, efficiency, learnability).
Quality Conflicts
- Not all attributes can be optimized in a system. For example, improving robustness may reduce performance.
- The quality plan should define the most important quality attributes for the software being developed.
- The plan should define the quality assessment process.
Process and Product Quality
- Developed product quality depends on the quality of the production process.
- This is important in software development, as some product quality attributes are hard to assess.
- There's a complex relationship between software processes and product quality.
- Application of individual skills and experiences is important.
- Factors such as new application design, or accelerated schedules may impair product quality.
Process-Based Quality (Flowchart)
- The process involves defining, developing, assessing product quality and deciding to either improve the process or standardize the process.
Quality Culture
- Quality managers should develop a "quality culture."
- All software developers should be committed to high product quality.
- Teams should take responsibility for work quality and develop quality improvement approaches.
- Managers should support people interested in quality aspects and encourage professionalism among team members.
Software Standards
- Standards define required attributes of products or processes, playing an important role in quality management.
- Standards can be international, national, organizational, or project based.
Importance of Standards
- Encapsulating best practices helps avoid repeating past mistakes.
- Standards provide a framework to define quality views and support continuity, especially for new staff.
Product and Process Standards
- Product standards apply to the software being developed. They include document structures, such as requirements documents, documentation standards, and coding standards.
- Process standards dictate the procedures during software development, including specification, design, and validation processes.
Product and Process Standards (Tables)
- Tables present examples of standards for both product and processes such as:
- Design review form, Requirements document structure, Method header format, Java Programming Style, Project Plan Format and Change Request Form, Design review conduct, Submission of new code, Version release process, Project plan approval process, Change control process, and Test recording process.
Problems with Standards
- Engineers may not find standards relevant or up-to-date.
- Excessive bureaucratic form filling is often involved.
- Lack of supporting software tools can make standards implementation tedious.
Standards Development
- Involve software engineers in selecting product standards, as understanding why is important.
- Standards must be regularly reviewed and modified to reflect changing technologies.
- Ensure tool support is available to make standards-based development easier.
ISO 9001 Standards Framework
- ISO 9001 is an international standard for developing quality management systems, applicable to organizations that design, develop, and maintain products (including software).
- It gives general quality principles, documents processes, and defines organizational procedures. These procedures should be documented in an organizational quality manual, detailing core processes like business acquisition, design & development, supplier management, and supporting processes (configuration, inventory, service, & support).
ISO 9001 Core Processes (Diagram)
- A diagram shows core processes for ISO 9001, linked to support processes to demonstrate the process interactions involved.
ISO 9001 and Quality Management (Diagram)
- A diagram illustrates how ISO 9001 quality models, organization quality manuals, and project quality plans lead to an organization quality process and project quality management, showing the relationship between these elements.
ISO 9001 Certification
- Quality standards and procedures should be formally documented in an organizational quality manual.
- An external body may certify the quality manual's conformance to ISO 9000 standards.
- Some customers require suppliers to have ISO 9000 certification, but flexibility is increasingly recognized.
Software Quality and ISO9001
- Conformance to standards is the focus of ISO 9001, not user experience.
- Test coverage standards may overlook the user experience and allow for incomplete testing.
Reviews and Inspections
- Reviews/inspections are quality assurance activities checking project deliverables.
- They're used to find potential problems in processes/systems and associated documentation.
- Several types exist with different objectives, like inspections for defect removal (product), reviews for progress assessment (product and process), and quality reviews (product and standards).
Quality Reviews
- Groups examine parts/all of a software system and its documentation (code, designs, specifications, test plans, standards).
- Reviews 'sign off' documents or software, confirming progress approval by management.
Phases in the Review Process
- Pre-review activities concern planning and preparation.
- Review meetings involve the author walking the document through with the review team.
- Post-review activities address problems and issues raised.
The Software Review Process (Diagram)
- A diagram shows stages in a software review process (planning, individual preparation, review meeting, error correction, improvement, and follow-up checks).
Distributed Reviews
- Review processes usually assume face-to-face meetings, but distributed teams make this impractical; remote reviews and shared documents are solutions.
Program Inspections
- Inspections are peer reviews where engineers examine systems to find anomalies or defects.
- No execution is required, making them suitable before implementation.
- They can inspect any aspect of a system, like requirements, design, and test data.
Inspection Checklists
- Checklists of common errors (programming language–dependent) aid inspections, with more comprehensive checklists for less strongly typed languages.
Inspection Checklist (a) (Table)
- A table provides a checklist of specific errors/faults categorized by data faults, control faults, and input/output faults.
Inspection Checklist (b) (Table)
- A table provides a checklist of specific errors/faults categorized by Interface faults, Storage management faults, and Exception management faults.
Quality Management and Agile Development
- Agile quality management is informal and based on a quality culture where all developers are responsible for software quality.
- Agile development emphasizes avoiding bureaucratic overhead, as opposed to standards-based models like ISO9001. It relies on a quality culture and informal methods.
Shared Good Practice
- Developers are responsible for peer reviews of their own code before check-in to the build system..
- Developers should not check-in code that breaks the entire system.
- Developers should fix their own errors or problems, rather than needing to reassign tasks.
Reviews and Agile Methods
- Review processes in agile software development are generally informal.
- Scrum has review meetings after each iteration.
- Extreme Programming uses pair programming to continually examine and review code.
Pair Programming
- Two developers work together on code development.
- This continuous examination fosters deep program understanding.
- This deep knowledge is difficult with other inspection methods, potentially identifying bugs that would be missed otherwise.
Pair Programming Weaknesses
- Mutual misunderstandings among developers can result in repeated mistakes. Discussions might reinforce these mistakes.
- Pairs might avoid looking for problems, to speed development.
- Close relationships might foster reluctance to point out faults in each other's work.
Agile QM and Large Systems
- In large system development, minimum-documentation agile approaches can be difficult.
- Customers' existing measurement processes may affect the development team's project reporting.
- Distributed teams may struggle with informal communications.
- Changing teams make it harder to understand long-term system development without explicit documentation.
Software Measurement
- Software measurement derives a numerical value for aspects of a software product or process.
- This enables objective comparisons between techniques and processes.
Software Metric
- Various types of measurements exist for software systems, processes, or their related documentation, such as lines of code, the Fog Index, and numbers of person-days required to develop.
- Examples of software metrics are lines of code, the fog index, and number of person-days.
Types of Process Metrics
- Time to complete a process (total time, time spent by individual engineers).
- Resources for a particular process (effort in person-days, costs).
- Number of occurrences of events (defects discovered, changed requirements).
Predictor/Product and Control/Process measurements
- Predictor metrics (product metrics) are related to the software itself. Examples include cyclomatic complexity, identifier lengths, and the number of attributes linked to objects in designs.
- Control metrics measure processes, such as time and resource use in a process. Managers use process and predictor metrics to decide if process changes are necessary or if a software is ready for release.
Use of Software System Measurements
- Assigning values to system quality attributes (e.g., measuring and aggregating cyclomatic complexity to assess maintainability).
Identifying Sub-Standard Quality Components
- Measurements can reveal components that deviate from the norm (e.g., with high complexity) that likely contain more bugs.
Metrics Assumptions
- Software properties can be measured accurately.
- A direct relationship exists between what is measured, and what is desired to know. (often a difficult relationship to validate.)
Relationships between Internal and External Software (Diagram)
- A diagram shows relationships between external quality attributes (maintainability, reliability, reusability, usability) and internal attributes (size, depth of inheritance trees, errors, etc).
Problems With Measurement in Industry
- Quantifying return on investment is difficult.
- Lack of standardized software metrics or processes for analysis prevents generalization and comparison.
- Software processes are often non-standardized in companies.
- Much work focuses on code measurement, especially in plan-driven developments, and new complexities are created by using ERP systems or COTS systems.
- Measurement adds additional overhead.
Empirical Software Engineering
- Measurement/metrics form the basis for empirical software engineering that experiments on software systems, gathers project data, creates hypotheses, and validates methods with data about real projects.
Product Metrics (Classes)
- Dynamic metrics are gathered during program execution (e.g., response time).
- Static metrics derive from product representations and can help assess things like complexity, understandability, maintainability, and reliability. Some examples, such as the length of the code are important metrics that relate to product characteristics.
Dynamic and Static Metrics
- Dynamic metrics are directly related to software quality attributes (e.g., measuring the time to response).
- Static metrics have an indirect correlation with attributes; it requires deriving relationships.
Static Software Product Metrics
- Metrics (fan-in, fan-out) relate to code that calls other functions, measuring the tight coupling to the entire design.
- Some metrics like the length of code correlate with complexity.
Static Software Product Metrics (Tables)
- Tables present metrics like cyclomatic complexity, identifying length, conditional nesting, and the Fog index.
The CK Object-Oriented Metrics Suite
- Weighted Methods per Class (WMC): Counts methods in a class, weighted by their complexities.
- Depth of Inheritance Tree (DIT): Measures levels in an inheritance tree.
- Number of Children (NOC): Counts immediate subclasses of a class, a breadth measure.
The CK Object-Oriented Metrics Suite (Tables)
- Tables provide descriptions for Coupling between Classes (CBO), Response for a Class (RFC), and Lack of Cohesion in Methods (LCOM).
Software Component Analysis
- Individual components can be analyzed separately using different metrics that have similar interpretations across various components.
- The values of extracted measurements often are compared across components and compared with historical data.
- Anomalous measurements might highlight problems in components.
The Process of Product Measurement (Diagram)
- Process diagrams to detail the steps involved in measuring software quality and characteristics - selecting components to be assessed, choosing measurements to make, measuring characteristics of components, identifying anomalous measurements, and analyzing anomalous components, to show the process interactions involved.
Measurement Ambiguity
- Quantitative data from software or processes needs to be analyzed to understand its meaning.
- This is hard because assumptions made may not be valid, which also means that measured/observed data may not always represent reality in a useful way.
- Misinterpretations or incorrect inferences are possible.
- The context of data collection is crucial.
Measurement Surprises
- Reducing faults might lead to increased help desk calls as users encounter the software in different ways, leading to different types of help desk tickets.
Software Context
- The measured process or product is not isolated; business environments and practices constantly shift; these shifts will invalidate the meaning that can be made from measurements made at one time and compared to another.
Software Analytics
- Software analytics applies analytics to software data to empower managers and developers with shared insights and better decision-making.
Software Analytics Enablers
- Automated user data collection from software when in use is an enabler.
- Open-source software platforms and repositories are resources for analysis.
Analytics Tool Use
- Tools should be user-friendly and produce succinct output.
- They should run quickly and incorporate parameters for insight.
- Tools should be interactive, allowing managers to explore analyses.
Status of Software Analytics
- Software analytics is still maturing and it's too early to predict its full impact.
- Big data challenges persist—collecting, and analyzing software product data, rather than custom software for analysis, creates challenges for companies of different sizes, especially smaller ones.
Key Points
- Good quality management focuses on reaching the required standards of defects, maintainability, reliability, portability, etc.
- Standards help in quality assurance.
- Methodical evaluation of deliverables is critical.
- Agile quality management relies on a culture of developers working together, emphasizing less formality and more team collaboration.
- Software measurements can produce quantitative data about software and processes, offering insights into anomalies.
- Metrics offer insights into product and process quality - anomalies need to be examined.
- Analytics use large data volumes to understand software relationships and can aid in improving processes.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Explore the principles of quality management in software development as outlined in Chapter 24. This chapter focuses on both organizational and project-level concerns, emphasizing the importance of establishing quality processes and frameworks. Learn how quality management activities ensure adherence to standards and objectives.