DEPARTMENT OF COMPUTER SCIENCE & TECHNOLOGY
CENTRAL UNIVERSITY OF PUNJAB, BATHINDA 151001
Whenever software is delivered it is required to produce high-quality software. According to software developer after the code is generated it is required to worry about software quality. So, it is required to manage quality with quality management. If we manage quality in the product, we can reduce the amount of rework. That will also reduce the costs and most importantly time-to-market. For managing quality, we have set of activities that ensure we get at the end the high quality product. After that we have quality control and quality assurance activities that we performed. Here we use some metrics that develop strategies for improving software process and the quality of the end product. In short we can say that the Quality is as follows:
Meeting the customer's requirements,
At the agreed cost,
Within the agreed timescales.
Quality = “Fitness for purpose”
Quality = Customer satisfaction!
The software team firstly identifies the set of quality assurance activities that will filter errors out of work products before they passed on. Before applying the software quality assurance activities we must know the software quality.
Quality can be defined as the characteristics or the attribute of something. For the attribute of an item quality refers to measurable characteristics such as length, color, and malleability etc.In case of software the quality of design refers to the requirements, specifications and the design of the system.
The software quality attributes are: Functionality, Reliability, usability, efficiency, maintainability and portability. Under the functionality attribute of software the approaches are: suitability, accurateness, Interoperability, compliance and security. For the Reliability the approaches are: Maturity and recoverability. For the usability the approaches are: Understandability and learn ability. For the efficiency the approaches are: time taken, behavior, resource and utilization. For the maintainability the approaches are: Analyzability, changeability, stability and testability. For the portability the approaches are: adaptability, install ability, conformance, and replaceability.
Quality of conformance is an issue focused primarily on implementation. If the implementation follows the design and the resulting system meets its requirements and performance goals, conformance quality is high. If the product is delivered into the market and that product satisfies the customer requirements within the budget and time we can say the quality is achieved.
User Satisfaction=compliant product good quality delivery within budget and schedule
So it is clear that when we talk about quality, user or customer plays an important role. If the user isn't satisfied, nothing else really matters.
Software Quality Requirements:
There are some factors that influence planning, management and selection of software quality management activities and techniques, including:
1. Domain of the system in which the software reside (safety-critical, mission-critical, business-critical).
2. System and software requirements.
3. The commercial (external) and standard (internal) components to be used in the system.
4. The specific software engineering standards applicable.
Quality Control: Quality control can be defined as series of inspections, reviews, and tests used throughout the software process to ensure each work product meets the requirements placed upon it. In the quality control we include the feedback loop. This feedback loop is attached to the process that created the work product. When the product is created and that product not according to the customer needs that means it fails to meet their specifications then the feedback helps us alot.The combination of measurement and feedback allows us to continue the process of working of product that is not according to the specifications. The key concept of quality control is that we firstly defined all work defined, measurer able specifications through which we compare the output of each process. Here feedback loop plays an important role i.e. it will minimize the defects produced.
The quality control includes four factors. These four factors are:
Traceability: - essential when you have large amounts of requirements being raised by different people.
Reviews & Inspections: - these are held on the main deliverables, such as design specs, test specs, or code.
Approval Process- to ensure that somebody somewhere takes responsibility for what you've delivered, and is happy that it meets its intended objectives.
Validation, Verification and Testing - obviously great stress is placed on testing. Validation and Verification are also essential aspects of the software development process in terms of quality assurance.
The 5-point quality control Inspection can be defined in the five steps. These five steps are as follows:
Step1: Inspect product prior to starting and advice supervisor of deficiencies.
Step2: Here then material is examined and the batches that is not meeting the quality standards is rejected.
Step3: After that safety procedure are confirmed and followed them.
Step4: Now the work is assessed.
Step5: When our product meets the quality standards we issue it for completion.
So we can say that software quality control involves checking the software development process to ensure that procedures and standards are being followed.
There are two approaches in the software quality control:
1. Quality Reviews
2. Software measurement and software assessment.
Quality reviews can be defined as the process in which the software product is examined for approval. Quality reviews is the method of validating the quality of the product or we can say that is the principal method of validating the quality of the process. There is a group available for examine the quality reviews. That group examines the part of a system, process and documentation .The documentation is examined to find the problems available in the software.
The group members for examination are managers, users, project personnel, customers and user representatives.
Product quality review is an effective quality improvement tool. This tool is used to enhance the consistency of the processes and also improves the overall quality of the product. It will starts from working as capturing the major view of the product data, capturing trends. It also helps us to determine the need for changes and revalidation.
We have different types of reviews available. This review has different objectives. So different reviews with different objectives are as follows:
1. Inspection is available for product or software defect removal.
2. Different reviews are available for the product and process progress assessment.
3. Quality reviews for the product and standards.
Objective of Quality Review:
Verify the obedience of the marketing authorizations.
Verify the compactness of the manufacturing processes.
Identify the process and product improvements.
Determine the need for re-validation of existing processes.
Determine the starting material and product specifications.
Today's world the quality reviews are:
1. Repeat the good work.
2. Everyone's goal is fitness for use.
3. Achieving self control
4. Do system thinking
5. Offer solidarity, not critic
6. Support Kaisen improvements.
Formal Technical Reviews
A formal technical review is a software quality control activity performed by software engineers. The objectives of the formal technical reviews are:
1. To uncover errors in function, logic or implementation for any representation of the software.
2. To verify that the software under review meets its requirements.
3. To ensure that the software has been represented according to predefined standards.
4. To achieve software that is developed in a uniform manner.
5. To make projects more manageable.
In addition the FTR serves as training ground, enabling junior engineers to observe different approaches to software analysis, design and construction. The formal technical Review also serves to promote backup and continuity because a number of people become familiar with parts of the software that they may not have otherwise seen.
The formal technical review is actually a class of review that includes walkthroughs, inspections, round-robin reviews and other small group technical assessments of software. Each formal technical review is conducted as a meeting and will be successful only if it is properly planned, controlled, and attended.
The Review Meeting
Regardless of the Formal technical review that is chosen, every review meeting should abide by the following constraints:
Between three and five people should be involved in the review.
Advance preparation should occur but should require no more than two hours of work for each person.
The duration of the review meeting should be less than two hours.
So it is obvious that an formal technical review focuses on a specific part of the overall software. For example, rather than attempting to review an entire design, walkthroughs are conducted for each component or small group of components.
The focus of formal technical review is on a work product. The work product includes the portion of a requirements specification, a detailed component design, a source code listing for a component. The individual who has developed the work product. The producer informs the project leader that the work product is complete and that a review is required.
Software measurement and Software assessment
Foe measuring the quality of software we have two facts:
Reliability can be defined as How many times the results should be repeatable. We can also say that many random errors can be occurred if the reliability of the software is low. So the reliability of the software should be high. That the quality measurable fact of the software.
Validity can be defined as the metric that is used to measures the fact that what it wants to be measure. The errors that are occurred in the validity are called as systematic errors. These systematic errors are most experienced one because not all the factors that we have taken are to be considered when the measurement was designed.
Software quality metrics:
We have three types of software quality metrics:
1. Product metrics
2. Process Metrics
3. Project Metrics
The product metrics can be defined as the metrics defined for the product. That will describe the characteristic of the product. The characteristics of the product are: size, quality level, complexity, design features and performance.
The process metrics can be defined as for the process and the system. It is used for improving the software development process and the maintenance process. Process metrics includes effectiveness of defect removal, response time of fixes and the pattern of testing defect arrival.
The project metrics can be defined as for the project characteristics and the project execution. The project metrics includes the cost, schedule, number of developers; productivity etc. Project metrics are fairly straight forward.
There is necessary that the software product should meet the entire quality requirement. The quality requirement is that the product should be easy to use. If the product not to be easy to use then it is so hard for people to use. If product is hard to use then the people not to buy that product and the production should be low. In that case we can say that the product quality is not good. So, it is so important to care about the software quality requirement.
The software quality metrics framework includes:
1. Quality factors
2. Quality subfactors
The quality factors can be defined as an attribute that bears the efforts that is needed for use and on the assessment of such use by customers.
Correctness includes the accuracy, completeness of required output – Up to datedness, availability of the information.
Reliability – It includes maximum failure rate
Efficiency – It includes resources needed to perform a software function
Integrity – It includes software system security, access rights
Usability – It includes the ability to learn, perform required task
Maintainability – It includes the effort to identify and fix software failures
Flexibility – It includes the degree of adaptability (to new customers, tasks, etc)
Testability – It includes the support for testing (e.g. Log files, automatic diagnostics, etc)
The quality subfactors includes the factors as:Understandability, operability ,ease of learning and communicativeness.
1. Understandibility:It can be defined as the amount of efforts that is required for the software to understand.
2. Operability: Operability can be defined as the degree to which user efforts are required for the minimization of the operation to be performed. Here it includes the
3. Ease of learning: It can be defined as the degree to which the user efforts are required to learn how the software is working and that efforts should be minimum.
4. Communicativeness: It can be defined as the degree to which the software is designed in accordance of psychological characteristics of the users.
Metric can be defined as the quantitative measure of the degree to which a system, component or process possesses a given attribute. The example of metrics is: number of errors found per person hours expended. The software quality metrics are:
1. Simple and computable
2. Consistent and objective
3. Consistent in the use of units and dimensions
4. Empirical and intuitively persuasive
5. Effective mechanism for quality feedback
6. Independent of programming languages directed at models (analysis,design,test) or structure of program.
For understandability the metric used is learning time. Learning time includes the time that is used the new user to gain the basic understanding or features of the software.
For Operability the metric used is the operation time. Operation time is the time that is required for the user to perform operation of the software.
For Ease of learning the metric used is the learning time: Here learning time is the time where user learns about how to perform basic functions of the software.
For communicativeness the metric used is human factors. The human factors include the number of the negative comments from the new users regarding human factors, ergonomics etc.
The software quality metrics includes the two main metrics. These metrics are:
End-product quality metrics
In-process quality metrics
The essence of the software quality engineering is to investigate the relationships among in-process metric, project characteristics, end-product quality and based on the findings, engineer improvements in quality to both the process and product.
Software Quality Assurance
quality assurance, becomes the way we ensure that our product, or service, conforms to that definition. customer requirements can include some expectations of usability, reliability, maintainability, portability, extendibility, security, etc. These are what we call Non-Functional Requirements. A key part of the QA challenge is to actually identify these requirements, and try to incorporate them in our products.
Quality Assurance is what we do to achieve. Quality Assurance helps us avoid failure!
Failure can mean
1. Failing to deliver what we said we would deliver. That is, we've de-scoped the requirements for some reason...
2. Failing to deliver on time. This can be absolutely crucial in a commercial setting. Having the best product is no compensation if your competitors have reached the marketplace before you.
3. Cost overruns. Obviously, when you agree a price with the customer, you accept responsibility for delivering to that price.
It can help to think in terms of a triangle, where each side represents one of these three criteria of success. Slipping outside of this triangle, in any direction, amounts to failure.
The quality assurance can be achieved as by using disciplined, professional approach - engineering is predictable and repeatable. The basis of our QA approach is to be professional and disciplined in everything we do. In short, we "engineer" software, and engineering is meant to be "predictable" and "repeatable”. The cornerstone of Quality Assurance is, in fact, what we call the 'Quality Management System'. This is where we define what we do, and provide guidance on "how". Like most IT companies, our QMS conforms to ISO9000, and is certificated under the TicKIT scheme. I'm sure you've come across ISO9000 in your studies. Let me stress that ISO9000 is as much about achieving control as it is about quality. And by control, I mean repeatability and predictability. It is only when you have this control that you can start improving on what you do.
So, probably the most important aspect of quality assurance is driving through improvements in the way we work. Sometimes this can involve adopting new methods (such as DSDM /UML) or tools, or may include the provision of better training for our software engineers.
For the evaluation of the quality of the software and to keep its level high is much more difficult task compared to other industrial products. For the maintenance of the quality of product, its performance, efficiency, speed and the cost of the software the quality assurance helps alot. The quality assurance activities, principles and methods are implemented in the early phases of the software engineering development so that the quality is maintained at the end of the software.
Quality assurance helps in producing the software is quality enabled as well as error free. Software quality assurance is defined as a systematic approach for product standards, processes, procedures as well as evaluation of the quality. For producing the high quality product we have to follow the number of quality factors. The quality factors are as follows:
Quality System of Software Quality Assurance
The heart of the quality assurance system is the quality system or we can say that it is known as quality management system. This includes the responsibilities, capabilities, activities and the management structure. According to the customer need the developer decide the desired quality factors of the product and built accordingly. The quality system includes the activities is as follows:
1. The review of the quality system in order to improve it.
2. The quality controls are to be fulfilled by the auditing of the projects.
3. In the quality assurance area the staff development of personnel is employed
4. The negotiation of the resources which enables staff that carries our quality assurance activities to function properly.
Life-Cycle phases of software Quality Assurance System Development
The SQA system development lifecycle subset is the software development lifecycle. Here we select the waterfall model for the software development lifecycle model.
1. Requirement Analysis/Definition
In this phase the engineers gathers the customer requirements with the help of customer and domain experts. The developing software have the interfaces with the previous present hardware and software. So we can say that the information available define the interface requirements. The software engineers understand the nature of the program to be built.
Here we identify the system outputs, system inputs and processes. Here we also include the databases, software structures, data structure and processing algorithms.
3. Code Generation
Here we transform the design of the product into the code with the help of the programming languages. The transformation is done by the engineers and the programmers. The unit integration, code review, units tests are the part of this phase.
4. System Testing
Here testing is applied to the whole system and the system integration is realized. These all are done by the testing team.
Waterfall process in the quality assurance Activities
5. Installation and Conversion
After the testing the installation and the conversion is performed. Here the customer approval is done. After that the software is installed into the system to serve the customer. If there was a problem in the previous installed software then new software is installed after replacing the existing software. For replacement the suitable conversion process is performed so that the interruption not to be available in the organization services.
6. Operation and Maintenance
Operation phase and maintenance phase are the last phase. Operation phase begins after the installation is completed and also the conversion is completed. The maintenance phase is performed in the normal ways so it generally continues in a few years.
Standards of Software Quality Assurance
Standards can be defined as the established criteria to which the software products are compared. It includes the various methods for developing software. The software quality assurance role here is to ensure the existence and the adequacy.
Types of Standards:
This standard includes the form and content for the planning, product documentation and control documentation. It then provides the consistency throughout the project.
This standard specifies the form and content of the design product. For translating the software requirements into the software design this standards provides us the some rules and methods. After that it is then represented into the design documentation.
This standard includes the language restrictions. So by specify languages the code here is written .The language features here also indentifies. So by selecting the best language we written the code about the software. It defines the language legal structure, style conversion, internal code documentation and rules for the data structure.
Principles of Quality Development Process
We have seven principles of quality development process. These principles are as follows:
The reason it all exists
Keep it simple
Maintain the vision
What you produce others will consume
Be open to the future
Plan ahead for reuse
Software Quality Assurance Methodology
It is very important to have the method or process for checking or processing the product.i.e software testing is as much art as a science. In the complex application such as we take operating System we have a problem to check for every single bug available there. So it requires different approaches when it comes to the testing. Some of the quality assurance tasks as follows:
1. PPQA audits
2. Peer Reviews
3. Validation testing
4. Data comparison
5. Stress testing
6. Conformance testing:
7. Load testing
8. Usability testing
9. Robustness testing
Software Quality Assurance Activities:
Software quality assurance is composed of a variety of tasks associated with two different constituencies-the software engineers who do technical work and a software quality assurance group that has responsibility for quality assurance planning, oversight, record keeping, analysis and reporting.
Software engineers address quality by applying solid technical methods and measures, conducting formal technical reviews and performing well-planned software testing. The main aim of the software quality assurance group is to assist the software team in achieving a high quality end product.
Software quality assurance has the activities is as follows:
Prepare an SQA plan for a project
This plan is developed during project planning and is reviewed by all stakeholders. Quality assurance activities performed by the software engineering team and the SQA group are governed by the plan. The plan identifies evaluations to be performed, audits and reviews to be performed, standards that are applicable to the project, procedures for error reporting and tracking, documents to be produced by the SQA group, and amount of feedback provided to the software project team.
Participates in the Development of the project's software process description
The software team selects a process for the work to be performed. The SQA group reviews the process description for compliance with organizational policy, internal software standards, externally imposed standards and other parts of the software project plan.
Reviews software engineering activities to verify compliance with the defined software process
The SQA group identifies documents and tracks deviations from the process and verifies that corrections have been made into it.
Audits designated software work products to verify compliance with those defined part of the software process
The software quality assurance group reviews selected work products, identifies, documents and tracks deviations, verifies that corrections have been made and periodically reports the results of its work to the project manager.
Ensures that deviations in software work and work products are documented and handled according to a documented procedure
Deviations may be encounter in the project plan, process description, applicable standards or technical work products.
Records any noncompliance and reports to senior management
Noncompliance items are tracked until they are resolved.
...(download the rest of the essay above)