Unit – 6
Software Quality & Project Monitoring and Control
Software quality product is defined in term of its fitness of purpose. That is, a quality product does precisely what the users want it to do. Example: assume a good working software product which performs all tasks specified in the SRS document. But, has a typically hard user interface. Even after being functionally right, it cannot be considered as quality product.
Several methods to assess quality are:
Portability: A software device is said to be portable, if it can be freely made to work in various operating system environments, in multiple machines, with other software products, etc.
Usability: A software product has better usability if various categories of users can easily invoke the functions of the product.
Reusability: A software product has excellent reusability if different modules of the product can quickly be reused to develop new products.
Correctness: A software product is correct if various requirements as specified in the SRS document have been correctly implemented.
Maintainability: A software product is maintainable if bugs can be easily corrected as and when they show up, new tasks can be easily added to the product, and the functionalities of the product can be easily modified, etc.
ISO (International Standards Organization) is a group or consortium of 63 countries established to plan and fosters standardization. ISO declared its 9000 series of standards in 1987. It serves as a reference for the contract between independent parties. The ISO 9000 standard determines the guidelines for maintaining a quality system.
Types of industries to which the various ISO standards apply are as follows.
ISO 9001: This standard applies to most software development organizations working in design, development, production, and servicing of goods.
ISO 9002: This standard applies to Non software development organizations.
Which do not design products but are only involved in the production. Examples steel and car manufacturing industries
ISO 9003: This standard applies to organizations involved only in the installation and testing of the products. For example, Gas companies.
Software Quality Management System
A quality management system is the principal methods used by organizations to provide that the products they develop have the desired quality.
A quality system subsists of the following:
Managerial Structure and Individual Responsibilities: A quality system is the responsibility of the organization as a whole. However, every organization has a sever quality department to perform various quality system activities. The quality system of an arrangement should have the support of the top management. Without help for the quality system at a high level in a company, some members of staff will take the quality system seriously.
Quality System Activities: The quality system activities encompass the following:
Production of documents for the top management summarizing the effectiveness of the quality system in the organization.
Quality Assurance v/s Quality control
Quality Assurance | Quality Control |
Quality Assurance (QA) is the set of actions including facilitation, training, measurement, and analysis needed to provide adequate confidence that processes are established and continuously improved to produce products or services that conform to specifications and are fit for use. | Quality Control (QC) is described as the processes and methods used to compare product quality to requirements and applicable standards, and the actions are taken when a nonconformance is detected. |
QA is an activity that establishes and calculates the processes that produce the product. If there is no process, there is no role for QA. | QC is an activity that demonstrates whether or not the product produced met standards. |
QA helps establish process | QC relates to a particular product or service |
QA sets up a measurement program to evaluate processes | QC verified whether particular attributes exist, or do not exist, in a explicit product or service. |
QA identifies weakness in processes and improves them | QC identifies defects for the primary goals of correcting errors. |
Quality Assurance is a managerial tool. | Quality Control is a corrective tool. |
Verification is an example of QA. | Validation is an example of QC. |
Quality software refers to a software which is reasonably bug or defect free, is delivered in time and within the specified budget, meets the requirements and/or expectations, and is maintainable. In the software engineering context, software quality reflects both functional quality as well as structural quality.
Any successful business requires:
That is why quality plays an important role in improvement. we can determine and measure a Software quality in following terms.
Software Functional Quality − It reflects how well it satisfies a given design, based on the functional requirements or specifications.
Software Structural Quality − It deals with the handling of non-functional requirements that support the delivery of the functional requirements, such as robustness or maintainability, and the degree to which the software was produced correctly.
Software Quality Assurance − Software Quality Assurance (SQA) is a set of activities to ensure the quality in software engineering processes that ultimately result in quality software products. The activities establish and evaluate the processes that produce products. It involves process-focused action.
Software Quality Control − Software Quality Control (SQC) is a set of activities to ensure the quality in software products. These activities focus on determining the defects in the actual products produced. It involves product-focused action.
Cost of quality (COQ) is a measure that quantifies the cost of control/conformance and the cost of failure of control/non-conformance. In other words, it sums up the costs related to prevention and detection of defects and the costs due to occurrences of defects.
Definition: cost of quality: The total costs incurred on quality activities and issues and often split into prevention costs, appraisal costs, internal failure costs and external failure costs.
Or
Money spent beyond expected production costs (labor, materials, and equipment) to ensure that the product the customer receives is a quality (defect free) product. The Cost of Quality includes prevention, appraisal, and correction or repair costs.
Types of costs
Cost of Control (Also known as Cost of Conformance)
Prevention Cost: The cost arises from efforts to prevent defects. Example: Quality Assurance costs
Appraisal Cost: The cost arises from efforts to detect defects. Example: Quality Control costs
Cost of Failure of Control (Also known as Cost of Non-Conformance)
Internal Failure Cost: The cost arises from defects identified internally and efforts to correct them. Example: Cost of Rework (Fixing of internal defects and re-testing)
External Failure Cost: The cost arises from defects identified by the client or end-users and efforts to correct them.
Example: Cost of Rework (Fixing of external defects and re-testing) and any other costs due to external defects (Product service/liability/recall, etc)
Formula / Calculation
Cost of Quality (COQ) = Cost of Control + Cost of Failure of Control
Where Cost of Control = Prevention Cost + Appraisal Cost and
Cost of Failure of Control = Internal Failure Cost + External Failure Cost.
Some of the software quality Factors are listed here the major ones out of hundreds.
Dimensions / Attributes/Factors
TQM is a management approach which paves the path of a long term success by ensuring customer’s satisfaction. In TQM, members of the organization involves to improvise the processes, products & services and the culture they developed to work. It is also known as total productive management. TQM applies an organizational effort to install a well-organized approach to manage quality products.
It collaborates and integrates some important organizational functions such as marketing, finance, design, production, engineering, customer service, etc. to meet organizational objectives.
TQM Activities
Advantages of adopting TQM
It makes an organization more competitive for different circumstances.
The establishment of newly oriented culture enables growth and development.
It provides an appropriate working environment that leads to success.
It reduces stress and workload.
It builds effective team, partnerships and collaboration with sense of co-operation.
Total Quality Management Principles
Customer-focused: The customer basically focuses on the level of quality. It doesn’t matter how an employee is trained for integration and design process. The customer only focus on the outcome attributes such as reliability, functionality, security and cost related factors.
Total employee involvement: Employees must participate in working in direction of accomplishing common goals. It is obvious that the commitment is achieved by togetherness of employees. This ensures higher productivity and generate great profits.
Process-centred : The major aim is to focus on the process of thinking. The way team thinks will determines the relevant approach. A process is defined as a series of steps that takes some inputs and transforms it into deliverable products.
Integrated System: The collection of small processes are summed up into larger ones and all these processes must integrate into businesses that defines and implements number of strategies. The team should understand the vision, mission, principles, quality policies, objectives and critical processes of the organization.
Strategic and Systematic approach: TQM must be completely strategized by the collaboration of experienced team managers, so that it can produce valuable results. The coherent focus on quality goals and vision defines good strategic and semantic approach.
Continual Improvement: For productive and efficient TQM, all different teams should urge and thrive to bring continuous improvements in the product and services. The organization needs to apply creative and analytical approach in order to meet the desired expectations.
Fact-based decision making: To functionally analyse the performance related measures, it is important to know that how organization is performing and what are its critical points. One should collect all essential data and facts about the organization to improvise decision making process with proper predictions.
Communications: At the time of organizational changes, the effective communication is the most crucial part in any process, either in development of products or in maintenance. Proper communication creates a strong bridge between customer and technicians, which are collectively responsible for proper total quality management.
The Capability Maturity Model (CMM) is a Method used to develop and improve an organization's software development process. CMM was developed and is promoted by the Software Engineering Institute (SEI), a research and development centre promote by the U.S. Department of Defence (DOD).
The model defines a five- evolutionary Maturity levels of consistently organized processes.
Maturity Levels Characterization
Initial (Maturity Level 1) Ad-hoc Process
Repeatable (Maturity Level 2) Basic Project Management
Defined (Maturity Level 3) Process Definition
Managed (Maturity Level 4) Process Measurement
Optimizing (Maturity Level 5) Process Control
There are two methods of SEICMM:
Capability Evaluation: Capability evaluation provides a means to assess the software process capability of an organization.
Software Process Assessment: it is used inside an organisation to improve process capability.
Six Sigma is the process of improving the quality of the output by identifying and eliminating the cause of defects and reduce variability in manufacturing and business processes. The maturity of a manufacturing process can be defined by a sigma rating indicating its percentage of defect-free products it creates. A six sigma method is one in which 99.99966% of all the opportunities to produce some features of a component are statistically expected to be free of defects (3.4 defective features per million opportunities).
Difference between CMM and CMMI:
CMM is a reference model of matured practices in a specified discipline like Systems Engineering CMM, Software CMM, People CMM, Software Acquisition CMM etc. But they were difficult to integrate as and when needed.
CMMI is the successor of the CMM and evolved as a more matured set of guidelines and was built combining the best components of individual disciplines of CMM (Software CMM, People CMM etc). It can be applied to product manufacturing, People management, Software development etc.
CMM describes about the software engineering alone whereas CMM Integrated describes both software and system engineering. CMMI also incorporates the Integrated Process and Product Development and the supplier sourcing.
Team management includes the processes required to make the most effective use of the people involved with the project. The project team includes the project manager and the project staff who have been assigned with the responsibility to work on the project.
Managing a project team is quite different than managing other types of staff, the project team has a start and an end, in terms of duties assigned to the project. As the project starts, the team is unclear about their roles and the strategic direction of the projects, some new hires need to adapt to a new organization and its ways of doing things, in addition to understanding its mission, vision, and values.
Team management is not only limited to hiring and reassigning staff after the end of the project, it involves careful planning to ensure that the project has the right people at the right time doing the right things.
The major processes involved in team management are:
Plan: Team identification, the process of identifying the skills and competencies required for carrying out the project activities and assign roles and responsibilities.
Do: Team building, organizing the team and building their capacity to perform on the project, provide coaching and mentoring.
Check: Evaluate team and individual performance, monitor skills, and motivation.
Adapt: Improve team performance, build skills and set new targets
Inputs: Inputs for the project team management include the following documents or sources of information:
Outputs: The project team will use the above information to develop four important documents for the project:
A milestone is a significant event in the course of a project that is used to give visibility of progress in terms of achievement of predefined milestone goals. Failure to meet a milestone indicates that a project is not proceeding to plan and usually triggers corrective action by management
Setting Milestones
Milestones have no duration, they represent instantaneous events that occur throughout the project. Typical project events that are marked with milestones are:
No Milestones = No visibility
Milestones = Visibility
Describing a Milestone
In defining of Software Development Methodology (SDM) one should describe milestones in terms of the following attributes:
On applying SDM to a specific project all your milestones should also be defined in terms of an absolute date or an elapsed time period from a previous milestone such as project commencement.
6.10 Project Monitoring and Control
Monitoring and Controlling are processes needed to track, review, and regulate the progress and performance of the project. It also identifies any areas where changes to the project management method are required and initiates the required changes.
The Monitoring & Controlling process group includes eleven processes, which are:
Software Project Management consists of many activities that includes planning of the project deciding the scope of product, estimation of cost in different terms, scheduling of tasks, etc.
The list of activities are as follows:
Now we will discuss all these activities –
For cost, it includes all the elements such as:
d. Scheduling Management: Scheduling Management in software refers to all the activities to complete in the specified order and within time slotted to each activity. Project managers define multiple tasks and arrange them keeping various factors in mind. For scheduling, it is compulsory -
e. Project Resource Management: In software Development, all the elements are referred to as resources for the project. It can be a human resource, productive tools, and libraries. Resource management includes:
f. Project Risk Management: Risk management consists of all the activities like identification, analyzing and preparing the plan for predictable and unpredictable risk in the project.
g. Project Communication Management: Communication is an essential factor in the success of the project. It is a bridge between client, organization, team members and as well as other stakeholders of the project such as hardware suppliers.
h. From the planning to closure, communication plays a vital role. In all the phases, communication must be clear and understood. Miscommunication can create a big blunder in the project.
i. Project Configuration Management: Configuration management is about to control the changes in software like requirements, design, and development of the product.
As the software development progresses, the structure becomes more complex. It is quite obvious that any fault is hard to discover, when the system grows bigger. Hence, defect analysis and prevention becomes very important. The role of testers with the right level of experience is very crucial at this point, they need to be involved in defect prevention activities to ensure smooth functioning of other tasks. Defect analysis and prevention is an activity that impacts the entire development life cycle. Occurrence of defects also affects the budget of a project. A considerable amount of time and workforce is required to deal with the defects.
Defect Analysis :
There are various metrics for analysis of defects. Let us understand each method in detail.
Defect Pareto Chart :
This chart reflects the frequency of occurrence of various categories of problems. The defects that has a higher frequency of occurrence is observed and priority is assigned. The below bar chart shows the various problems/defects encountered in the system. Like the 'vital few' shows that downloading problem is high among the rest. File not found and open as read-only file has subsequently higher defect occurrence. Accordingly, priority is assigned to address those defects.
Root Cause Analysis:
This is the method of finding the reason that contributes to the defect. It is an essential part in the elimination of causes that leads to the defects. The key points that underlies the root cause analysis of a defect are-
A fish-bone diagram is used as an effective tool to carry out the process of root cause analysis. This is termed as the cause and effect diagram. The various arrows are the fish bones that represent the causes that lead to a defect and the resultant effect forms the face of the fish, which is to be dealt with.
Defect Prevention:
It can be defined as a measure to ascertain that defects detected so far, must not reappear.
Often there is someone appointed as the lead to carry out the defect prevention activity. The coordinator is responsible for facilitating communication among the team members, planning and devising defect prevention guidelines etc.Defect prevention can be understood in the light of the following activities:
Defect analysis
Software Requirement Analysis:
Requirement specifications form the integral part of a software development life cycle. If the requirements aren't well understood then it may cause an issue in proceeding further. If any flaw remains hidden at this phase, then it becomes really difficult to address the issue. Hence proper assessment and analysis of the requirements is very important.
Reviews -whether it's the testing team that conducts the review process or the end-user, it is an effective way to scan a defect. Often it helps to seek assistance from the end-user because they have a fresh look at the system under review. It is a known fact that sometimes defects remain unnoticed when handled by the same team members, because of the monotony of work. So the review process can be self review or peer review.
Defect Logging and Documentation -Now when the defects have been detected and analysed, it's time for recording those defects to enable - complete description of the defect to develop a better understanding of it, taking preventive measures so that the defect isn't carried forward to the next phases.
Root Cause Analysis and Determining Preventive measures -Identifying the root cause of the problem involves enhanced quality of the software application being developed, applying expertise of people to know what could be the best possible way to avoid such defects and finally targeting systematic errors.
Embedding Procedures in the root cause analysis -The defects analysed so far and the reasons that lead to such defects, must be tracked and used as a reference for further projects.
Faults, Defects, Errors, Failure all these terms are interlinked. The presence of one, causes the occurrence of the other. If the requirements are not carefully analysed, then it becomes a fault which may result in a defect or a failure. The failure is simply the incapability of the system to generate the expected results. Errors are the result of human mistakes, at the developer's end. In such scenarios it becomes very important to conduct a defect analysis and defect prevention process, from the perspective of Total Quality Management. After all a quality product is what we aim at, and thus Quality Assurance forms such an important aspect of the whole Software Development Life Cycle.
Audit − It is a systematic process to determine how the actual testing process is conducted within an organization or a team. Generally, it is an independent examination of processes involved during the testing of a software. As per IEEE, it is a review of documented processes that organizations implement and follow. Types of audit include Legal Compliance Audit, Internal Audit, and System Audit.
Inspection − It is a formal technique that involves formal or informal technical reviews of any artifact by identifying any error or gap. As per IEEE94, inspection is a formal evaluation technique in which software requirements, designs, or codes are examined in detail by a person or a group other than the author to detect faults, violations of development standards, and other problems.
Formal inspection meetings may include the following processes: Planning, Overview Preparation, Inspection Meeting, Rework, and Follow-up.