SE & PM - 21CS61 - Module - 5 Notes
SE & PM - 21CS61 - Module - 5 Notes
Chapter -13
13.1 Introduction
we need to define the qualities required for a system. We need to judge the objectively whether
system meets the quality requirements and this needs to be measured.
McCall Model
Defines the following eleven attributes of the software.
Boehm’s model
The quality of a software can be defined based on three high-level characteristics. These high-
level characteristics are:
• As-is utility – how well (easily, reliably and efficiently) can it be used?
• Maintainability – how easy it is to understand, modify and then retest the software?
• Portability – how difficult would it be to make the software in a changed environment?
Fig 13.3 shows the Boehm’s hierarchical quality model based on wider range of software
attributes with greater focus on maintainability.
13.6 ISO 9126
• ISO 9126 standard was introduced in 1991 to tackle the question of the definition of
software quality.
• The documents are very lengthy and has separate documents to cater for these three
sets of needs.
• Acquirers – who are obtaining software from external suppliers.
• Developers – who are building a software product.
• Independent evaluators – who are assessing the quality of software product, not for
themselves but for a community of users.
• ISO 9126 identifies six major external quality characteristics:
• Functionality – which covers the functions that a software product provides to satisfy
user needs.
• Reliability – which relates to the capability of the software to maintain its level of
performance.
• Usability - which relates to the effort needed to use the software.
• Efficiency – which relates to the physical resources used when software is executed.
• Maintainability – which relates to effort needed to make changes to the software.
• Portability – which relates to the ability of the software to be transferred to a different
environment.
ISO 9126 also suggests sub-characteristics for each of the above primary characteristics.
Functionality:
• Interoperability – refers to the ability of the software to interact with other systems.
Reliability:
• Analyzability – is the ease with which the cause of failure can be determined.
• Stability – refers to low risk of a modification to the software having unexpected effects.
Portability:
• Replaceability – refers to the factors that give upwards compatibility between old software
components and the new ones.
• Coexistence – refers to the ability of the software to share resources with other software
components.
• According to ISO9126, measurements that act as indicators of the final quality of the
software can be used at different stages of software development life cycle.
• User satisfaction can be allocated in the range, say 0-5.
• Table 13.2 shows objective measurement of some function and then relating different
measurement values to different levels of user satisfaction.
• The scores for each quality could be given due weight by multiplying it by its importance
weighting.
• These weighted scores can then be summed to obtain an overall score for the product.
• The scores of various products are then put in the order of preference.
• For example, as shown in table 13.3 two products may be compared to usability,
efficiency and maintainability.
13.7 Product and Process Metrics
• The developers can ensure the quality of a software product based on the measurement
of attributes called product and process metrics.
• Product metrics
measures the characteristics of a product being developed such as
✓ LOC (lines of code) and
✓ function point metrics used to measure the size.
✓ PM(person-month) metric used to measure effort required to develop a
product and time required to develop a product is measured in months.
• Process metrics
✓ Measures how a development process is performing. Examples of process
metrics are review effectiveness,
✓ average number of defects found per hour of inspection,
✓ average defect correction time,
✓ productivity,
✓ average number of failures during testing per LOC.
Exit requirements:
Which have to be fulfilled before an activity is deemed to have been completed. For example, for
testing phase to be completed, all tests will have to be run successfully with no outstanding
errors.
ISO 9001:2000 is part of the ISO 9000 series, which sets forth guidelines and requirements for
implementing a Quality Management System (QMS).
The focus of ISO 9001:2000 is on ensuring that organizations have effective processes in place to
consistently deliver products and services that meet customer and regulatory requirements.
Key Elements:
1. Fundamental Features:
o Describes the basic principles of a QMS, including customer focus, leadership, involvement of
people, process approach, and continuous improvement.
o Emphasizes the importance of a systematic approach to managing processes and resources.
o ISO 9001:2000 can be applied to software development by ensuring that the development
processes are well-defined, monitored, and improved.
o It focuses on the development process itself rather than the end product certification (unlike
product certifications such as CE marking).
3. Certification Process:
1. Customer Focus:
o Understanding and meeting customer requirements to enhance satisfaction.
2. Leadership:
o Providing unity of purpose and direction for achieving quality objectives.
3. Involvement of People:
o Engaging employees at all levels to contribute effectively to the QMS.
4. Process Approach:
o Focusing on individual processes that create products or deliver services.
o Gathering data and identifying discrepancies between actual performance and targets.
Detailed Requirements
1. Documentation:
o Maintaining documented objectives, procedures (in a quality manual), plans, and records that
demonstrate adherence to the QMS.
o Developed by the Software Engineering Institute (SEI), CMM and CMMI provide a
framework for assessing and improving the maturity of processes.
o They define five maturity levels, from initial (ad hoc processes) to optimized (continuous
improvement).
o CMMI (Capability Maturity Model Integration) integrates various disciplines beyond
software engineering.
o ISO/IEC 15504, also known as SPICE (Software Process Improvement and Capability
Determination), is an international standard for assessing and improving process
capability.
o It provides a framework for evaluating process maturity based on process attributes and
capabilities.
3. Six Sigma:
o Six Sigma focuses on reducing defects in processes to a level of 3.4 defects per million
opportunities (DPMO).
o It emphasizes data-driven decision-making and process improvement methodologies
like DMAIC (Define, Measure, Analyze, Improve, Control).
SEI capability maturity model (CMM)
The SEI Capability Maturity Model (CMM) is a framework developed by the Software Engineering
Institute (SEI) to assess and improve the maturity of software development processes within
organizations.
It categorizes organizations into five maturity levels based on their process capabilities and
practices:
1. Level 1: Initial
o Characteristics:
▪ Chaotic and ad hoc development processes.
▪ Lack of defined processes or management practices.
▪ Relies heavily on individual heroics to complete projects.
o Outcome:
▪ Project success depends largely on the capabilities of individual team
members.
▪ High risk of project failure or delays.
2. Level 2: Repeatable
o Characteristics:
▪ Basic project management practices like planning and tracking
costs/schedules are in place.
▪ Processes are somewhat documented and understood by the team.
o Outcome:
▪ Organizations can repeat successful practices on similar projects.
▪ Improved project consistency and some level of predictability.
3. Level 3: Defined
o Characteristics:
▪ Processes for both management and development activities are
defined and documented.
▪ Roles and responsibilities are clear across the organization.
▪ Training programs are implemented to build employee capabilities.
▪ Systematic reviews are conducted to identify and fix errors early.
o Outcome:
▪ Consistent and standardized processes across the organization.
▪ Better management of project risks and quality.
4. Level 4: Managed
o Characteristics:
▪ Processes are quantitatively managed using metrics.
▪ Quality goals are set and measured against project outcomes.
▪ Process metrics are used to improve project performance.
o Outcome:
▪ Focus on managing and optimizing processes to meet quality and
performance goals.
▪ Continuous monitoring and improvement of project execution.
5. Level 5: Optimizing
o Characteristics:
▪ Continuous process improvement is ingrained in the organization's culture.
▪ Process metrics are analyzed to identify areas for improvement.
▪ Lessons learned from projects are used to refine and enhance processes.
▪ Innovation and adoption of new technologies are actively pursued.
o Outcome:
▪ Continuous innovation and improvement in processes.
o Like CMM, CMMI defines five maturity levels, each representing a different stage of
process maturity and capability. These levels are:
Level 1: Initial (similar to CMM Level 1)
Level 2: Managed (similar to CMM Level 2)
Level 3: Defined (similar to CMM Level 3)
Level 4: Quantitatively Managed (an extension of CMM Level 4)
Level 5: Optimizing (an extension of CMM Level 5)
o Definition: Similar to CMM, each maturity level in CMMI is characterized by a set of Key
Process Areas (KPAs). These KPAs represent clusters of related activities that, when
performed collectively, achieve a set of goals considered important for enhancing
process capability.
o Gradual Improvement: KPAs provide a structured approach for organizations to
incrementally improve their processes as they move from one maturity level to the next.
▪ Integration across Domains: Unlike the specific CMMs for various disciplines, CMMI
uses a more abstract and generalized set of terminologies that can be applied uniformly
across different domains.
Benefits of CMMI
▪ Broad Applicability: CMMI's abstract nature allows it to be applied not only to software
development but also to various other disciplines and industries.
Nine Process Attributes: ISO 15504 assesses processes based on nine attributes, which are:
8. Process Innovation (PI): Measures the degree of innovation and improvement in the process.
9. Process Optimization (PO): Focuses on optimizing the process to improve efficiency and
effectiveness.
Benefits and Application
1. Define:
o Objective: Clearly define the problem areas and goals for improvement.
o Action: Identify critical processes such as software development, testing, and
deployment where defects and variability are impacting quality and delivery timelines.
2. Measure:
o Objective: Quantify current process performance and establish baseline metrics.
o Action: Use statistical methods to measure defects, cycle times, and other relevant
metrics in software development and testing phases.
3. Analyse:
o Objective: Identify root causes of defects and variability in processes.
o Action: Conduct thorough analysis using tools like root cause analysis, process mapping,
and statistical analysis to understand why defects occur and where process variations
occur.
4. Improve:
• Cost Savings: Reduced rework and operational costs associated with defects.
The discussion highlights several key themes in software quality improvement over time,
emphasizing shifts in practices and methodologies:
1. Increasing Visibility:
• Early practices like Gerald Weinberg's 'egoless programming' promoted code review
among programmers, enhancing visibility into each other's work.
• Modern practices extend this visibility to include walkthroughs, inspections, and formal
reviews at various stages of development, ensuring early detection and correction of
defects.
2. Procedural Structure:
• Techniques like Fagan inspections, pioneered by IBM, formalize the review process with
trained moderators leading discussions to identify defects and improve quality.
5. Benefits of Inspections:
• Inspections are noted for their effectiveness in eliminating superficial errors, motivating
developers to write better-structured code, and fostering team collaboration and spirit.
• They also facilitate the dissemination of good programming practices and improve overall
software quality by involving stakeholders from different stages of development.
Formal methods
It seems like you're discussing formal methods in software development and the concept of
software quality circles. Here's a summary of the points covered:
• Purpose: These methods ensure precise and unambiguous specifications and allow for
mathematical proof of algorithm correctness based on specified conditions.
• Adoption: Despite being taught widely in universities, formal methods are rarely used in
mainstream software development. Object Constraint Language (OCL) is a newer,
potentially more accessible development in this area.
Software Quality Circles (SWQC)
• Purpose: SWQCs are adapted from Japanese quality practices to improve software
development processes by reducing errors.
• Process: The group selects a problem, identifies its causes, and proposes solutions.
Management approval may be required for implementing improvements.
13.12 Testing
The text discusses the planning and management of testing in software development, highlighting
the challenges of estimating the amount of testing required due to unknowns, such as the number
of bugs left in the code.
It introduces the V-process model as an extension of the waterfall model, emphasizing the
importance of validation activities at each development stage.
1. Quality Judgement:
• The final judgement of software quality is based on its correct execution.
2. Testing Challenges:
• Estimating the remaining testing work is difficult due to unknown bugs in the code.
3. V-Process Model:
• Introduced as an extension of the waterfall model.
• Stresses the necessity for validation activities matching the project creation activities.
4. Validation Activities:
• Each development step has a matching validation process.
• Defects found can cause a loop back to the corresponding development stage for rework.
5. Discrepancy Handling:
• Feedback should occur only when there is a discrepancy between specified requirements
and implementation.
1. Objectives:
• Verification: Ensures outputs of one development phase conform to the previous phase's
outputs.
• Verification Objective: Check if artifacts produced after a phase conform to those from
the previous phase (e.g., design documents conform to requirements specifications).
• Validation Objective: Check if the fully developed and integrated software satisfies
customer requirements.
4. Techniques:
• All activities on the right side of the V-process model are verification activities except for
the system testing block, which is a validation activity.
1. Black-Box Testing:
2. White-Box Testing:
• Test cases are designed based on the analysis of the source code.
• Requires knowledge of the internal structure.
• Also known as structural testing or structure-driven testing.
Levels of Testing
1. Unit Testing:
• Tests individual components or units of a program.
2. Integration Testing:
• Units are integrated step by step and tested after each integration.
3. System Testing:
Test Automation
• More testing with a large number of test cases in a short period without significant cost
overhead.
• Automated test results are more reliable and eliminate human errors.
• Reduces monotony, boredom, and errors in running the same test cases repeatedly.
• Substantial cost and time reduction in testing and maintenance phases.
Estimating Errors Based on Code Size
1. Historical Data:
• Use historical data to estimate errors per 1000 lines of code from past projects.
• Apply this ratio to new system development to estimate potential errors based on the
code size.
• Known errors are deliberately left in the code during desk checks.
• Example: If 10 errors are seeded and after testing, 30 errors are found, including 6 seeded
errors, 60% of seeded errors are detected.
• This suggests that around 40% of errors are still to be detected.
• Formula to estimate total errors:
Independent Reviews
• Two independent reviewers or groups are asked to inspect or test the same code.
• They must work independently of each other.
• Three counts are collected for better error estimation.
Using these methods helps in obtaining a better estimation of latent errors, providing a clearer
understanding of the remaining testing effort needed to ensure software quality.
13.13 Software reliability
• It is defined as the probability of the software working correctly over a given period of time.
• Errors in infrequently executed parts of the software have less impact on overall
reliability.
• Studies show that 90% of a typical program's execution time is spent on 10% of its
instructions.
4. Observer Dependency:
• A bug may affect different users differently based on how they use the software.
• Reliability usually improves during testing and operational phases as defects are identified
and fixed.
• This improvement can be modeled mathematically using Reliability Growth Models
(RGM).
6. Reliability Growth Models (RGM):
• RGMs describe how reliability improves as failures are reported and bugs are corrected.
• Various RGMs exist, including the Jelinski–Moranda model, Littlewood–Verall’s model,
and Goel–Okutomo’s model.
• RGMs help predict when a certain reliability level will be achieved, guiding decisions on
when testing can be stopped.
• If a thorough project planning approach, like Step Wise, is used, quality-related activities
and requirements are often already integrated into the main planning process.
Client Requirements:
• For software developed for external clients, the client's quality assurance staff may
require a quality plan to ensure the quality of the delivered products.
• This requirement ensures that the client’s quality standards are met.
• A quality plan acts as a checklist to confirm that all quality issues have been addressed
during the planning process.
• Most of the content in a quality plan references other documents that detail specific
quality procedures and standards.