Software Quality in Project Management
Software Quality in Project Management
SV
Module-05
Concept of Quality:
Objective Assessment:
•
IT
Judging if a system meets quality requirements needs measurement.
Critical for package selection, e.g., Brigette at Brightmouth College.
Development Perspective:
SV
• Waiting until the system is complete to measure quality is too late.
• During development, it's important to:
o Assess the likely quality of the final system.
o Ensure development methods will produce the desired quality.
Quality Concerns:
• Key points in the Step Wise framework where quality is particularly emphasized:
IT
Activity 2.2 involves identifying installation standards and procedures,
often related to quality.
o Review the overall quality aspects of the project plan at this stage.
IT
SV
Importance of software quality
General Expectation:
IT
Errors in earlier steps can propagate and accumulate in later steps.
Errors found later in the project are more expensive to fix.
The unknown number of errors makes the debugging phase difficult to
control.
System Requirements:
SV
• Functional Requirements: Define what the system is to do.
• Resource Requirements: Specify allowable costs.
• Quality Requirements: State how well the system is to operate.
Measuring Quality:
• Good Measure: Relates the number of units to the maximum possible (e.g., faults
per thousand lines of code).
• Clarification Through Measurement: Helps to define and communicate what
quality really means, effectively answering "how do we know when we have been
successful?"
• Direct Measurement: Measures the quality itself (e.g., faults per thousand lines
of code).
•
•
IT
Indirect Measurement: Measures an indicator of the quality (e.g., number of user
inquiries at a help desk as an indicator of usability).
Setting Targets:
Impact on Project Team: Quality measurements set targets for team members.
Meaningful Improvement: Ensure that improvements in measured quality are
meaningful.
SV
o Example: Counting errors found in program inspections may not be
meaningful if errors are allowed to pass to the inspection stage rather than
being eradicated earlier.
1. Definition/Description
o Definition: Clear definition of the quality characteristic.
o Description: Detailed description of what the quality characteristic entails.
2. Scale
o Unit of Measurement: The unit used to measure the quality characteristic
(e.g., faults per thousand lines of code).
3. Test
o Practical Test: The method or process used to test the extent to which the
quality attribute exists.
4. Minimally Acceptable
o Worst Acceptable Value: The lowest acceptable value, below which the
product would be rejected.
5. Target Range
o
o
IT
Planned Range: The range of values within which it is planned that the
quality measurement value should lie.
6. Current Value
Now: The value that applies currently to the quality characteristic.
1. Availability:
o Definition: Percentage of a particular time interval that a system is usable.
o Scale: Percentage (%).
o Test: Measure the system's uptime versus downtime over a specified
period.
o Minimally Acceptable: Typically high availability is desirable; specifics
depend on system requirements.
o Target Range: E.g., 99.9% uptime.
2. Mean Time Between Failures (MTBF):
o Definition: Total service time divided by the number of failures.
o
o
IT
Test: Evaluate the system's response to demand or transaction processing.
Minimally Acceptable: Lower probability of failure is desired; varies by
system criticality.
Target Range: E.g., Failure on demand probability of less than 0.01.
4. Support Activity:
Definition: Number of fault reports generated and processed.
Scale: Count (number of reports).
SV
o Test: Track and analyze the volume and resolution time of fault reports.
o Minimally Acceptable: Lower number of fault reports indicates better
reliability.
o Target Range: E.g., Less than 10 fault reports per month.
These measurements help quantify and assess the reliability and maintainability of
software systems, ensuring they meet desired quality standards.
ISO 9126 is a significant standard in defining software quality attributes and providing a
framework for assessing them. Here are the key aspects and characteristics defined by
ISO 9126:
1. Functionality:
o Definition: The functions that a software product provides to satisfy user
needs.
o Sub-characteristics: Suitability, accuracy, interoperability, security,
2. Reliability:
o
3. Usability:
o
IT
compliance.
• Definition: Focuses on how well the software supports specific user goals in a
specific context of use.
• Elements: Effectiveness, productivity, safety, satisfaction.
ISO 14598
IT
product conforms to the ISO 9126 quality characteristics.
Flexibility: Can be adapted to assess software against different quality
characteristics if needed.
SV
ISO 9126 Sub-characteristics: Compliance and Interoperability
Compliance
Interoperability
• Definition: Refers to the ability of the software to interact with other systems
effectively.
• Clarification: ISO 9126 uses "interoperability" instead of "compatibility" to avoid
confusion with another characteristic called "replaceability".
• Importance: Ensures seamless integration and communication between different
software systems or components.
• Sub-characteristics: Includes aspects like interface compatibility, data exchange
capabilities, and standards compliance to facilitate effective interaction.
IT
ISO 9126 Sub-characteristics: Maturity and Recoverability
SV
Maturity
Recoverability
• Definition: Refers to the capability of the software to restore the system to its
normal operation after a failure or disruption.
Importance of Distinction
Security: Focuses on access control and protecting the system from unauthorized
IT
access, ensuring confidentiality, integrity, and availability.
Recoverability: Focuses on system resilience and the ability to recover from
failures, ensuring continuity of operations.
SV
ISO 9126 Sub-characteristics: Learnability and Attractiveness
Learnability
Definition: Refers to the ease with which users can learn to operate the
software and accomplish basic tasks.
• Focus: Primarily on the initial phase of user interaction with the software.
• Measurement: Assessed by the time it takes for new users to become
proficient with the software, often measured in training hours or tasks
completed.
Operability
• Definition: Refers to the ease with which users can operate and navigate the
software efficiently.
• Focus: Covers the overall usability of the software during regular use and
over extended periods.
• Measurement: Assessed by the user's experience with everyday tasks and
efficiency in completing them.
Importance of Distinction
•
IT
Learnability vs. Operability: Learnability focuses on initial user
experience and how quickly users can grasp the basics of using the software.
Operability, on the other hand, emphasizes the efficiency and ease of use
over extended periods and during regular use.
Attractiveness: A recent addition under usability, attractiveness focuses on
SV
the aesthetic appeal and user interface design, particularly relevant in
software products where user engagement and satisfaction are crucial, such
as games and entertainment applications.
• Learnability: Critical for software that requires quick adoption and minimal
training, ensuring users can start using the software effectively from the
outset.
• Operability: Crucial for software used intensively or for extended periods,
focusing on efficiency, ease of navigation, and user comfort.
Analysability IT
ISO 9126 Sub-characteristics: Analysability, Changeability, and Stability
Definition: Refers to the ease with which the cause of a failure in the software can
SV
be determined.
Focus: Helps in diagnosing and understanding software failures or issues quickly
and accurately.
Importance: Facilitates efficient debugging and troubleshooting during software
maintenance and support phases.
Changeability
Definition: Also known as flexibility, changeability refers to the ease with which
software can be modified or adapted to changes in requirements or environment.
• Focus: Emphasizes the software's ability to accommodate changes without
introducing errors or unexpected behaviors.
Stability
Clarification of Terms
•
IT
integrity despite ongoing changes or updates.
Portability Compliance
•
IT
Definition: Refers to the adherence of the software to standards that facilitate its
transferability and usability across different platforms or environments.
Focus: Ensures that the software can run efficiently and effectively on various
hardware and software configurations without needing extensive modifications.
Importance: Facilitates broader deployment and reduces dependency on specific
SV
hardware or software configurations.
Replaceability
Coexistence
• Definition: Refers to the ability of the software to peacefully share resources and
operate alongside other software components within the same environment.
• Focus: Does not necessarily involve direct data exchange but ensures
compatibility and non-interference with other software components.
• Importance: Enables integration of the software into complex IT ecosystems
without conflicts or performance degradation.
Clarification of Terms
•
IT
Portability Compliance: Ensures software can run across different platforms by
adhering to common standards and programming languages.
Replaceability: Supports compatibility and seamless integration of new software
versions or components with existing systems.
Coexistence: Ensures harmonious operation of the software alongside other
components within the same environment.
SV
Guidelines for Use of Quality Characteristics
ISO 9126 provides structured guidelines for assessing and managing software quality
characteristics based on the specific needs and requirements of the software product. It
emphasizes the variation in importance of these characteristics depending on the type and
context of the software product being developed.
Once the software product requirements are established, ISO 9126 suggests the following
steps:
2. Define Metrics and Measurements: Establish measurable criteria and metrics for
evaluating each quality characteristic, ensuring they align with the defined
objectives and user expectations.
3. Plan Quality Assurance Activities: Develop a comprehensive plan for quality
assurance activities, including testing, verification, and validation processes to
ensure adherence to quality standards.
4. Monitor and Improve Quality: Continuously monitor software quality
throughout the development lifecycle, identifying areas for improvement and
taking corrective actions as necessary.
IT
5. Document and Report: Document all quality-related activities, findings, and
improvements, and provide clear and transparent reports to stakeholders on
software quality status and compliance.
• Reliability: Critical for safety-critical systems where failure can have severe
consequences. Measures like mean time between failures (MTBF) are essential.
SV
• Efficiency: Important for real-time systems where timely responses are crucial.
Measures such as response time are key indicators.
• Internal measurements like code execution times can help predict external
qualities like response time during software design and development.
• Predicting external qualities from internal measurements is challenging and often
requires validation in the specific environment where the software will operate.
IT
ISO 9126 acknowledges that correlating internal code metrics to external quality
characteristics like reliability can be difficult.
This challenge is addressed in a technical report rather than a full standard,
indicating ongoing research and development in this area.
SV
Based on the ISO 9126 framework and your points:
o
IT
may compromise another (e.g., portability).
Balancing these trade-offs can be complex and context-dependent.
3. Purpose of Quality Assessment:
Software Development: Assessment focuses on identifying weaknesses
early, guiding developers to meet quality requirements, and ensuring
continuous improvement throughout the development lifecycle.
Software Acquisition: Helps in evaluating software products from external
SV
suppliers based on predefined quality criteria.
o Independent Assessment: Aims to provide an unbiased evaluation of
software quality for stakeholders like regulators or consumers.
It seems like you're describing a method for evaluating and comparing software products
based on their quality characteristics. Here's a summary and interpretation of your
approach:
o IT
1. Rating for User Satisfaction:
Products are evaluated based on mandatory quality levels that must be met.
Beyond these mandatory levels, user satisfaction ratings in the range of 0 to
5 are assigned for other desirable characteristics.
Objective measurements of functions are used to determine different levels
of user satisfaction, which are then mapped to numerical ratings (see Table
13.2 for an example).
SV
2. Importance Weighting:
o Each quality characteristic (e.g., usability, efficiency, maintainability) is
assigned an importance rating on a scale of 1 to 5.
o These importance ratings reflect how critical each quality characteristic is
to the overall evaluation of the software product.
3. Calculation of Overall Score:
o Weighted scores are calculated for each quality characteristic by
multiplying the quality score by its importance weight.
o The weighted scores for all characteristics are summed to obtain an overall
score for each software product.
4. Comparison and Preference Order:
IT
SV
Certainly, when conducting a quality assessment on behalf of a user community or
professional body, several considerations come into play:
are still influenced by the criteria set and the relative importance assigned to each
quality characteristic.
4. Community Needs: Understanding the specific needs and expectations of the user
community is essential. The assessment should align closely with the community's
goals and the functionalities they require from the software tools being evaluated.
5. Transparency and Feedback: Providing transparency in the assessment process
and gathering feedback from community members can enhance the credibility and
relevance of the evaluation results. This helps ensure that the assessment
adequately reflects the needs and perspectives of the community.
software development:
1. Product Metrics:
o
IT
Product and process metrics
Understanding the differences between product metrics and process metrics is crucial in
Differences:
•
IT
development.
Focus: Product metrics focus on the characteristics of the software being built
(size, effort, time), while process metrics focus on how well the development
process is performing (effectiveness, efficiency, quality).
Use: Product metrics are used to gauge the attributes of the final software product,
SV
aiding in planning, estimation, and evaluation. Process metrics help in assessing
and improving the development process itself, aiming to enhance quality,
efficiency, and productivity.
• Application: Product metrics are typically applied during and after development
phases to assess the product's progress and quality. Process metrics are applied
throughout the development lifecycle to monitor and improve the development
process continuously.
By employing both types of metrics effectively, software development teams can better
manage projects, optimize processes, and deliver high-quality software products that
meet user expectations.
Product quality management focuses on evaluating and ensuring the quality of the
software product itself. This approach is typically more straightforward to implement and
measure after the software has been developed.
Aspects:
IT
1. Measurement Focus: Emphasizes metrics that assess the characteristics and
attributes of the final software product, such as size (LOC, function points),
reliability (defects found per LOC), performance (response time), and usability
(user satisfaction ratings).
SV
2. Evaluation Timing: Product quality metrics are often measured and evaluated
after the software product has been completed or at significant milestones during
development.
3. Benefits:
o Provides clear benchmarks for evaluating the success of the software
development project.
o Facilitates comparisons with user requirements and industry standards.
o Helps in identifying areas for improvement in subsequent software versions
or projects.
4. Challenges:
o Predicting final product quality based on intermediate stages (like early
code modules or prototypes) can be challenging.
o Metrics may not always capture the full complexity or performance of the
final integrated product.
Process quality management focuses on assessing and improving the quality of the
development processes used to create the software. This approach aims to reduce errors
and improve efficiency throughout the development lifecycle.
Aspects:
IT
1. Measurement Focus: Emphasizes metrics related to the development processes
themselves, such as defect detection rates during inspections, rework effort,
productivity (e.g., lines of code produced per hour), and adherence to defined
standards and procedures.
2. Evaluation Timing: Process quality metrics are monitored continuously
throughout the development lifecycle, from initial planning through to deployment
and maintenance.
SV
3. Benefits:
o Helps in identifying and correcting errors early in the development process,
reducing the cost and effort of rework.
o Facilitates continuous improvement of development practices, leading to
higher overall quality in software products.
o Provides insights into the effectiveness of development methodologies and
practices used by the team.
4. Challenges:
o Requires consistent monitoring and analysis of metrics throughout the
development lifecycle.
o Effectiveness of process improvements may not always translate directly
into improved product quality without careful management and integration.
• While product and process quality management approaches have distinct focuses,
they are complementary.
• Effective software development teams often integrate both approaches to achieve
optimal results.
• By improving process quality, teams can enhance product quality metrics, leading
to more reliable, efficient, and user-friendly software products.
IT
ISO 9001:2000, now superseded by newer versions but still relevant in principle, outlines
standards for Quality Management Systems (QMS). Here’s a detailed look at its key
aspects and how it applies to software development:
ISO 9001:2000 is part of the ISO 9000 series, which sets forth guidelines and
SV
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
IT
ISO 9001:2000 and has implemented an effective QMS.
4. Quality Management Principles:
o Customer focus: Meeting customer requirements and enhancing customer
satisfaction.
Leadership: Establishing unity of purpose and direction.
Involvement of people: Engaging the entire organization in achieving
quality objectives.
SV
o Process approach: Managing activities and resources as processes to
achieve desired outcomes.
o Continuous improvement: Continually improving QMS effectiveness.
• Ensure that subcontractors and external vendors also adhere to quality standards
through effective quality assurance practices.
• Perceived Value: Critics argue that ISO 9001 certification does not guarantee the
quality of the end product but rather focuses on the process.
• Cost and Complexity: Obtaining and maintaining certification can be costly and
time-consuming, which may pose challenges for smaller organizations.
• Focus on Compliance: Some organizations may become overly focused on
IT
meeting certification requirements rather than improving overall product quality.
Despite these criticisms, ISO 9001:2000 provides a structured framework that, when
implemented effectively, can help organizations improve their software development
processes and overall quality management practices.
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
IT
capabilities and performance.
Detailed Requirements
1. Documentation:
o
IT
Maintaining documented objectives, procedures (in a quality manual),
plans, and records that demonstrate adherence to the QMS.
Implementing a change control system to manage and update
documentation as necessary.
2. Management Responsibility:
o Top management must actively manage the QMS and ensure that processes
SV
conform to quality objectives.
3. Resource Management:
o Ensuring adequate resources, including trained personnel and infrastructure,
are allocated to support QMS processes.
4. Production and Service Delivery:
o Planning, reviewing, and controlling production and service delivery
processes to meet customer requirements.
o Communicating effectively with customers and suppliers to ensure clarity
and alignment on requirements.
5. Measurement, Analysis, and Improvement:
o Implementing measures to monitor product conformity, QMS effectiveness,
and process improvements.
Historical Perspective
o
IT
1. Before the 1950s:
Quality assurance primarily focused on extensive testing of finished
products to identify defects.
2. Shift to Process Assurance:
Later paradigms emphasize that ensuring a good quality process leads to
good quality products.
SV
o Modern quality assurance techniques prioritize recognizing, defining,
analyzing, and improving processes.
1. Definition:
o TQM focuses on continuous improvement of processes through
measurement and redesign.
o It advocates that organizations continuously enhance their processes to
achieve higher levels of quality.
1. Objective:
IT
optimized (continuous improvement).
CMMI (Capability Maturity Model Integration) integrates various
disciplines beyond software engineering.
2. ISO 15504 (SPICE):
o ISO/IEC 15504, also known as SPICE (Software Process Improvement and
Capability dEtermination), is an international standard for assessing and
improving process capability.
SV
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).
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
▪
IT
Characteristics:
Chaotic and ad hoc development processes.
Lack of defined processes or management practices.
SV
▪ 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.
o
▪
4. Level 4: Managed
o
Outcome:
IT
Better management of project risks and quality.
Characteristics:
▪ Processes are quantitatively managed using metrics.
Quality goals are set and measured against project outcomes.
Process metrics are used to improve project performance.
SV
▪ 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.
IT
process capabilities through assessment and recommendations for improvement.
SEI CMM has been instrumental not only in enhancing the software development
practices within organizations but also in establishing benchmarks for industry standards.
IT
integrating practices across different domains.
CMMI Solution: CMMI (Capability Maturity Model Integration) was
introduced to provide a unified framework that could be applied across
various disciplines beyond just software development, including systems
engineering, product development, and services.
IT
SV
Benefits of CMMI
ISO/IEC 15504, also known as SPICE (Software Process Improvement and Capability
dEtermination), is a standard for assessing and improving software development
processes. Here are the key aspects of ISO 15504 process assessment:
Process Attributes
IT
testing, and maintenance.
Nine Process Attributes: ISO 15504 assesses processes based on nine attributes,
which are:
1. Process Performance (PP): Measures the achievement of process-specific
objectives.
SV
2. Performance Management (PM): Evaluates how well the process is
managed and controlled.
3. Work Product Management (WM): Assesses the management of work
products like requirements specifications, design documents, etc.
4. Process Definition (PD): Focuses on how well the process is defined and
documented.
5. Process Deployment (PR): Examines how the process is deployed within
the organization.
6. Process Measurement (PME): Evaluates the use of measurements to
manage and control the process.
7. Process Control (PC): Assesses the monitoring and control mechanisms in
place for the process.
• Alignment with CMMI: ISO 15504 and CMMI share similar goals of assessing
and improving software development processes. While CMMI is more
comprehensive and applicable to a broader range of domains, ISO 15504 provides
development.
IT
a structured approach to process assessment specifically tailored to software
o
Evaluate their current processes against a recognized standard.
Identify strengths and weaknesses in their processes.
SV
o Implement improvements based on assessment findings.
• Application: The standard is used by organizations to conduct process
assessments either internally for improvement purposes or externally for
certification purposes.
IT
SV
When assessors are judging the degree to which a process attribute is being fulfilled they
allocate one of the following scores:
Here’s how evidence might be identified and evaluated for assessing the process
IT
attributes, taking the example of requirement analysis processes:
•
o
o
IT
Assessment: Assessors would review the control mechanisms to ensure
they effectively monitor the process and address deviations promptly.
Process Optimization (PO):
Evidence: Records of process improvement initiatives, feedback
mechanisms from stakeholders, and innovation in requirements analysis
techniques.
Assessment: Assessors would examine how the organization identifies
SV
opportunities for process improvement and implements changes to optimize
the requirements analysis process.
Importance of Evidence
Here’s a structured approach, drawing from CMMI principles, to address these issues and
improve process maturity:
o
o
IT
1. Resource Overcommitment:
Issue: Lack of proper liaison between the Head of Software Engineering
and Project Engineers leads to resource overcommitment across new
systems and maintenance tasks simultaneously.
Impact: Delays in software deliveries due to stretched resources.
2. Requirements Volatility:
o Issue: Initial testing of prototypes often reveals major new requirements.
SV
o Impact: Scope creep and changes lead to rework and delays.
3. Change Control Challenges:
o Issue: Lack of proper change control results in increased demands for
software development beyond original plans.
o Impact: Increased workload and project delays.
4. Delayed System Testing:
o Issue: Completion of system testing is delayed due to a high volume of bug
fixes.
o Impact: Delays in product release and customer shipment.
•
o
o
o
IT
Monitor project progress against plans to identify emerging issues early.
Expected Outcomes:
Improved visibility into project status and resource utilization.
Early identification of potential bottlenecks or deviations from planned
schedules.
Enable better resource allocation and management across different projects.
SV
2. Change Control Procedures
o
o
o
cycles.
IT
Implement automated testing frameworks where feasible to expedite testing
IT
SV
Six Sigma
Here’s how UVW can adopt and benefit from Six Sigma:
1. Define:
o
o
IT
The goal is to achieve a level of quality where the process produces no more than 3.4
defects per million opportunities.
Objective: Clearly define the problem areas and goals for improvement.
Action: Identify critical processes such as software development, testing,
SV
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:
Focus Areas:
o
o
IT
performance. Implement measures such as control charts, regular audits,
and performance reviews to sustain improvements.
• 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:
o Early practices like Gerald Weinberg's 'egoless programming' promoted
code review among programmers, enhancing visibility into each other's
work.
o
IT
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:
o Initially, software development lacked structured methodologies, but over
time, methodologies with defined processes for every stage (like Agile,
Waterfall, etc.) have become prevalent.
SV
o Structured programming techniques and 'clean-room' development further
enforce procedural rigor to enhance software quality.
3. Checking Intermediate Stages:
o Traditional approaches involved waiting until a complete, albeit imperfect,
version of software was ready for debugging.
o Contemporary methods emphasize checking and validating software
components early in development, reducing reliance on predicting external
quality from early design documents.
4. Inspections:
o Inspections are critical in ensuring quality at various development stages,
not just in coding but also in documentation and test case creation.
IT
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.
• Statistics are maintained so that the effectiveness of the inspection process can be
monitored.
The late 1960s marked a pivotal period in software engineering where the complexity of
software systems began to outstrip the capacity of human understanding and testing
capabilities. Here are the key developments and concepts that emerged during this time:
o
IT
impractical to test every possible input combination comprehensively.
Edsger Dijkstra and others argued that testing could only demonstrate the
presence of errors, not their absence, leading to uncertainty about software
correctness.
2. Structured Programming:
To manage complexity, structured programming advocated breaking down
software into manageable components.
SV
o Each component was designed to be self-contained with clear entry and exit
points, facilitating easier understanding and validation by human
programmers.
3. Clean-Room Software Development:
o Developed by Harlan Mills and others at IBM, clean-room software
development introduced a rigorous methodology to ensure software
reliability.
o It involved three separate teams:
▪ Specification Team: Gathers user requirements and usage profiles.
▪ Development Team: Implements the code without conducting
machine testing; focuses on formal verification using mathematical
techniques.
IT
development stage rather than relying on extensive testing to identify and
fix errors.
The certification team's testing was thorough and continued until statistical
models showed that the software failure rates were acceptably low.
Overall, these methodologies aimed to address the challenges posed by complex software
systems by promoting structured, systematic development processes that prioritize
correctness from the outset rather than relying on post hoc testing and debugging.
SV
Clean-room software development, in particular, contributed to the evolution of quality
assurance practices in software engineering, emphasizing formal methods and rigorous
validation techniques.
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:
•
conditions.
IT
allow for mathematical proof of algorithm correctness based on specified
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.
If you have any specific questions or if there's more you'd like to explore on these topics
or related areas, feel free to ask!
The process you're describing involves the compilation of most probable error lists,
which is a proactive approach to improving software development processes. Here’s a
breakdown of the steps involved:
o
IT
current issues to compile a list of these common errors. This list documents
specific types of mistakes that have been identified as recurring.
3. Proposing Solutions: For each type of error identified, the team proposes
measures to reduce or eliminate its occurrence in future projects. For example:
Example Measure: Producing test cases simultaneously with requirements
specification to ensure early validation.
Example Measure: Conducting dry runs of test cases during inspections to
SV
catch errors early in the process.
4. Development of Checklists: The proposed measures are formalized into
checklists that can be used during inspections or reviews of requirements
specifications. These checklists serve as guidelines to ensure that identified errors
are systematically checked for and addressed.
5. Implementation and Feedback: The checklists are implemented into the
software development process. Feedback mechanisms are established to evaluate
the effectiveness of these measures in reducing errors and improving overall
quality.
This approach aligns well with quality circles and other continuous improvement
IT
methodologies by fostering a culture of proactive problem-solving and learning from past
experiences.
If you have more questions or need further elaboration on any aspect, feel free to ask!
The concept of Lessons Learned reports and Post Implementation Reviews (PIRs) are
SV
crucial for organizational learning and continuous improvement in project management.
Here’s a breakdown of these two types of reports:
• Purpose: A PIR takes place after a significant period of operation of the new
• IT
system (typically after it has been in use for some time). Its focus is on evaluating
the effectiveness of the implemented system rather than the project process itself.
Timing: Conducted by someone who was not directly involved in the project to
ensure neutrality and objectivity.
Content: A PIR includes:
o System Performance: How well the system meets its intended objectives
and user needs.
SV
o User Feedback: Feedback from users on system usability and
functionality.
o Improvement Recommendations: Changes or enhancements suggested to
improve system effectiveness.
• Audience: The audience typically includes stakeholders who will benefit from
insights into the system’s operational performance and areas for improvement.
• Outcome: Recommendations from a PIR often lead to changes aimed at
enhancing the effectiveness and efficiency of the system.
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
1. Quality Judgement:
The final judgement of software quality is based on its correct execution.
2. Testing Challenges:
o Estimating the remaining testing work is difficult due to unknown bugs in
the code.
3. V-Process Model:
SV
o Introduced as an extension of the waterfall model.
o Diagrammatic representation provided in Figure 13.5.
o Stresses the necessity for validation activities matching the project creation
activities.
4. Validation Activities:
o Each development step has a matching validation process.
o Defects found can cause a loop back to the corresponding development
stage for rework.
5. Discrepancy Handling:
o Feedback should occur only when there is a discrepancy between specified
requirements and implementation.
IT
SV
Framework for Planning:
The V-process model provides a structure for making early planning decisions
about testing.
• Decisions can be made about the types and amounts of testing required from the
beginning of the project.
Off-the-Shelf Software:
• If software is acquired off-the-shelf, certain stages like program design and coding
are not relevant.
• Consequently, program testing would not be necessary in this scenario.
1. Objectives:
o
2. Definitions:
o
IT
Verification versus validation
IT
except for the system testing block, which is a validation activity.
Testing activities
The text provides an overview of test case design approaches, levels of testing, and main
testing activities in software development.
It emphasizes the differences between black-box and white-box testing, the stages of
SV
testing (unit, integration, system), and the activities involved in the testing process.
1. Black-Box Testing:
o Test cases are designed using only the functional specification.
o Based on input/output behavior without knowledge of internal structure.
o Also known as functional testing or requirements-driven testing.
2. White-Box Testing:
o Test cases are designed based on the analysis of the source code.
o Requires knowledge of the internal structure.
o Also known as structural testing or structure-driven testing.
Levels of Testing
1. Unit Testing:
o Tests individual components or units of a program.
o Conducted as soon as the coding for each module is complete.
o Allows for parallel activities since modules are tested separately.
o Referred to as testing in the small.
2. Integration Testing:
o Checks for errors in interfacing between modules.
o Units are integrated step by step and tested after each integration.
o
3. System Testing:
o
IT
Referred to as testing in the large.
Testing Activities
SV
1. Test Planning:
o Involves determining relevant test strategies and planning for any required
test bed.
o Test bed setup is crucial, especially for embedded applications.
2. Test Suite Design:
o Planned testing strategies are used to design the set of test cases (test suite).
3. Test Case Execution and Result Checking:
o Each test case is executed, and results are compared with expected
outcomes.
o Failures are noted for test reporting when there is a mismatch between
actual and expected results.
The text describes the detailed process and activities involved in software test reporting,
debugging, error correction, defect retesting, regression testing, and test closure.
It highlights the importance of formal issue recording, the adjudication of issues, and
various testing strategies to ensure software quality.
Test Reporting
1. Issue Raising:
o Report discrepancies between expected and actual results.
2. Issue Recording:
o
o
IT
Formal recording of issues and their history.
3. Review Body Decisions:
Dismissal: Misunderstanding of requirement by tester.
Fault Identification: Developers need to correct the issue.
Incorrect Requirement: Adding a new requirement and additional
work/payment.
SV
o Off-Specification Fault: The application can operate with the error.
4. Test Failure Notification:
o Informal intimation to the development team to optimize turnaround time.
1. Debugging:
o Identify error statements by analyzing failure symptoms.
o Various debugging strategies are employed.
2. Error Correction:
o Correct the code after locating the error through debugging.
3. Defect Retesting:
o Retesting corrected code to check if the defect has been successfully
addressed (resolution testing).
4. Regression Testing:
o Ensures unmodified functionalities still work correctly after bug fixes.
o Runs alongside resolution testing to check for new errors introduced by
changes.
Test Closure
Test Completion:
Archiving documents related to lessons learned, test results, and logs for
future reference.
IT
Time-Consuming Activity:
Debugging is noted as usually the most time-consuming activity in the
testing process.
SV
The text describes who performs testing in organizations, the importance and benefits of
test automation, and various types of automated testing tools.
It emphasizes that while test automation can significantly reduce human effort, improve
thoroughness, and lower costs, different tools have distinct advantages and challenges.
o
o
Test Automation
IT
Provide an independent assessment of software correctness before release.
Can offer a final quality check but may lead developers to take less care in
their work.
2. Integrated Testing Roles:
Testers work alongside developers rather than as a separate group.
SV
1. Importance of Test Automation:
o Testing is the most time-consuming and laborious software development
activity.
o Automation reduces human effort, time, and improves testing
thoroughness.
o Enables sophisticated test case design techniques.
2. Benefits of Test Automation:
o More testing with a large number of test cases in a short period without
significant cost overhead.
o Automated test results are more reliable and eliminate human errors.
o Simplifies regression testing by running old test cases repeatedly.
o Reduces monotony, boredom, and errors in running the same test cases
repeatedly.
o Substantial cost and time reduction in testing and maintenance phases.
o
IT
under test changes.
2. Automated Test Script Tools:
o Use scripts to drive automated test tools, providing inputs and recording
outputs.
Debugging and verifying test scripts require significant effort, and changes
to the unit under test necessitate updating scripts.
3. Random Input Test Tools:
SV
o Generate random test values to cover the input space, aiming to crash the
unit under test.
o Easy to implement but limited in scope as it only finds defects that crash
the system.
4. Model-Based Test Tools:
o Use simplified representations (models) of the program, like state or
activity models, to generate tests.
o Adequately cover the state space described by the model.
1. Historical Data:
o Use historical data to estimate errors per 1000 lines of code from past
projects.
o Apply this ratio to new system development to estimate potential errors
based on the code size.
Independent Reviews
IT
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:
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.
Software reliability
o
o
o
IT
1. Definition and Importance:
Software reliability denotes the trustworthiness or dependability of a
software product.
It is defined as the probability of the software working correctly over a
given period of time.
Reliability is a crucial quality attribute for software products.
SV
2. Defects and Reliability:
o A large number of defects typically indicate unreliability.
o Reducing defects generally improves reliability.
o It is challenging to create a mathematical formula to relate reliability
directly to the number of latent defects.
3. Execution Frequency and Defect Impact:
o Errors in infrequently executed parts of the software have less impact on
overall reliability.
o Studies show that 90% of a typical program's execution time is spent on
10% of its instructions.
o The specific location of a defect (core or non-core part) affects reliability.
4. Observer Dependency:
o Reliability is dependent on user behavior and usage patterns.
o A bug may affect different users differently based on how they use the
software.
5. Reliability Improvement Over Time:
o Reliability usually improves during testing and operational phases as
defects are identified and fixed.
o This improvement can be modeled mathematically using Reliability
Growth Models (RGM).
6. Reliability Growth Models (RGM):
o RGMs describe how reliability improves as failures are reported and bugs
Quality plans
IT
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.
SV
Purpose of Quality Plans:
• Quality plans detail how standard quality procedures and standards from an
organization's quality manual will be applied to a specific project.
• They ensure all quality-related activities and requirements are addressed.
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.
IT
Most of the content in a quality plan references other documents that detail
specific quality procedures and standards.
SV
Estimation is Not Always Accurate: Initial estimates often turn out to be inaccurate due to
unknown factors and project complexity. The inherent uncertainty of software development
makes precise estimation difficult.
Estimation Evolves Over Time: Early in the project, estimates are rough and become more
refined as more details are uncovered. A continuous re-estimation process can improve
IT
accuracy as the project progresses.
Risk and Uncertainty Management: The level of risk and uncertainty in a project
significantly affects estimation. Estimation techniques must consider potential risks, with
appropriate buffers to handle unexpected changes.
Dependency on Team and Technology: The skill level of the team, familiarity with the
technology stack, and the development process used (e.g., Agile or Waterfall) heavily
influence the estimate. An experienced team with a clear understanding of the project
typically provides better estimates.
Historical Data and Metrics: Utilizing historical project data (e.g., past performance, similar
projects) helps make better-informed estimates. Without such data, estimates tend to be less
reliable.
overruns.
IT
Underestimation Issues: There's a frequent tendency to underestimate time, cost, and effort
due to pressure to meet aggressive deadlines or budget constraints, leading to project
Functional Decomposition
o Overview: Splits the project into functional units or modules based on the system’s
requirements.
o Benefits: Helps estimate effort based on functionality rather than processes. It’s easier
to understand and manage the system’s individual parts.
o Use Case: Often used in requirement analysis and design phases.
o Overview: Breaks down the project by its deliverables or components, focusing on the
o
estimated.
IT
physical structure of the product.
Benefits: Useful for complex systems where deliverables can be independently
Use Case: Ideal for projects focused on product delivery and hardware/software
integration.
Task Decomposition
SV
o Overview: Breaks down the project into individual tasks or activities, specifying the
work to be done.
o Benefits: Allows for precise task-level estimation, including identifying dependencies
and prerequisites.
o Use Case: Used in Agile for sprint planning or traditional projects for detailed
scheduling.
Top-Down Estimation
o Overview: Starts with an overall estimate and breaks it down into smaller components.
o Benefits: Useful in early stages of the project where details are not fully known. Gives
a high-level estimate that can be refined later.
o Use Case: Often applied when historical data or expert judgment is available for
similar projects.
Bottom-Up Estimation
o Overview: Each task or component is estimated individually, and then these are rolled
up to create an overall project estimate.
o Benefits: Provides a more accurate estimate as it considers the smallest details of each
task.
o Use Case: Typically used after detailed requirements are available or in later project
o
phases.
IT
Object-Oriented Decomposition
Overview: Divides the system based on objects (i.e., entities with data and behavior),
and estimates the effort required for each object.
Benefits: Useful for object-oriented design and development, improving modularity
and reuse.
SV
o Use Case: Used in projects following an object-oriented design or for systems with
clear object-based architecture.
Module Decomposition
o Overview: The project is broken down into modules or subsystems, with each module
representing a set of closely related functionalities.
o Benefits: Helps estimate work for complex systems by focusing on individual modules,
which are easier to analyze and manage.
o Use Case: Often used in large-scale projects, especially in software that has a modular
architecture.
Process Decomposition
o Overview: Breaks down the project based on the processes or workflows involved in
the project.
o Benefits: Helps visualize and estimate effort for each process and identify
interdependencies between processes.
o Use Case: Useful in projects with clear, process-oriented workflows like business
process management or workflow systems.
Component-Based Decomposition
o IT
Overview: Focuses on identifying and estimating individual software components or
services that will be used in the system.
Benefits: Helps focus on reusable components, making estimation more accurate for
systems built on service-oriented or component-based architectures.
Use Case: Common in projects using microservices or component-based software
engineering.
SV
Benefits of Decomposition Techniques:
• Improved Accuracy: Breaking down complex projects into smaller parts allows for
more accurate estimations.
• Manageability: Decomposition helps make large projects manageable by dividing
them into smaller, understandable units.
• Transparency: Clearly defined tasks and deliverables improve visibility into the
project, helping track progress.
• Risk Identification: Easier identification of risks at a lower level, allowing for better
risk management.
Empirical estimation models are based on historical data and metrics from completed
projects. They use mathematical formulas or statistical techniques to predict the effort, time,
and cost required to complete a software project. These models are data-driven and rely on
past project experience to generate estimates.
Overview: Developed by Barry Boehm in the 1980s, COCOMO is one of the most widely
used estimation models. It uses historical project data to estimate effort (in person-months),
time, and cost.
Three Levels:
o
IT
Basic COCOMO: Provides a rough estimate based on project size (measured in KLOC
– thousands of lines of code).
Intermediate COCOMO: Adjusts the estimate based on a set of project
SV
characteristics, including complexity, reliability, and team experience.
o Detailed COCOMO: Further refines the estimate by considering specific project
phases and modules.
• Use Case: Best suited for projects where code size is predictable. Applicable to both
new development and maintenance projects.
• Formula:
COCOMO II
• Three Submodels:
o Application Composition Model: For projects using rapid application
development (RAD) tools.
o Early Design Model: Provides estimates early in the development lifecycle
when project details are still unclear.
o Post-Architecture Model: Offers detailed estimates once the software
architecture is defined.
• Use Case: Suitable for modern software development practices like Agile, object-
oriented programming, and component-based software engineering.
IT
Function Point Analysis (FPA)
Overview: Measures the size of a software project based on its functionality from the user’s
perspective. Instead of lines of code, FPA measures the number of “function points,” which
represent various inputs, outputs, inquiries, and internal and external files.
• Steps:
1. Identify and classify system components.
SV
2. Assign a weight to each component (e.g., simple, medium, complex).
3. Calculate the total number of function points using a formula that factors in
complexity and functionality.
• Use Case: Useful when estimating the size of business applications, especially when
project requirements are well-defined but the codebase is not yet determined.
• Advantages: Technology-agnostic; focuses on functionality, making it useful across
different programming languages and environments.
Overview: Developed by Lawrence Putnam, the Putnam Model (or SLIM – Software Life
Cycle Management) is based on the Rayleigh Curve, which describes the distribution of
manpower over the project lifecycle. It focuses on the relationship between effort, time, and
project size.
Dept Of ISE Bengaluru - Navya Mukund ( SVIT ) Page 76
BCS501 | SOFTWARE ENGINEERING & PROJECT MANAGEMENT | SEARCH CREATORS.
• Key Concept: Uses the idea that there is a trade-off between the time to complete a
project and the effort required. Shorter schedules require more effort, while longer
schedules require less.
• Use Case: Often used for large-scale projects where development efforts need to be
balanced with time constraints.
• Formula:
Delphi Method
• Steps: IT
Overview: The Delphi Method is a structured expert judgment technique. A group of experts
provides estimates anonymously, and then their responses are aggregated and discussed in
rounds until a consensus is reached.
Expert Judgment
Overview: This model relies on the knowledge and experience of experts to estimate project
effort, cost, and duration. It’s less formal than other models and is often used when there is
little historical data.
• Steps:
Heuristic Models
Examples:
o
o
IT
Overview: Heuristic models use simplified rules of thumb or algorithms to generate project
estimates. These rules are often derived from past experience but may not be as formal as
COCOMO or FPA.
• Overview: Used in the Personal Software Process (PSP), PROBE relies on the idea
that future tasks can be estimated based on historical data from similar past tasks. It
uses size-based proxies (e.g., lines of code) to estimate the effort required.
• Steps:
o Identify past tasks similar to the new task.
o Use the historical data to predict the size of the new task.
o Apply a linear regression formula to estimate effort.
• Use Case: Most effective for individual developers or small teams working on well-
defined, repetitive tasks.
Dept Of ISE Bengaluru - Navya Mukund ( SVIT ) Page 78
BCS501 | SOFTWARE ENGINEERING & PROJECT MANAGEMENT | SEARCH CREATORS.
• Overview: These models use statistical algorithms and formulas that consider various
parameters, such as team size, project complexity, and development environment, to
estimate effort and cost.
• Use Case: Suitable for projects where multiple factors affect the estimate and a more
granular approach is needed.
1. Data-Driven: Provide more reliable estimates based on historical data and proven
models.
projects.
IT
2. Repeatability: Offer consistent estimation practices that can be reused across multiple