Home > Dreamtech Books, Dreamtech Engineering Textbooks > Software Quality Assurance

Software Quality Assurance

Free Excerpt from Chapter 7 of the book Software Engineering by Kogent Learning Solutions Inc.

SQA can be defined as a conformance to software requirement specification. SQA convinces that quality standards will be followed throughout the software development process and all the implicit as well as explicit requirements will be met. The idea of quality assurance came into being at Bell Labs in 1916, which is followed by quality control approaches in 1940. Nowadays, every software company focuses on software quality and invests a lot of money and resources in managing the quality of the software product. All the persons in an organization somehow contribute for SQA. Thus, a group of persons contributing toward the quality of the software product is known as SQA group. The group handles some of the following SQA activities:

  • Planning
  • Record keeping
  • Analysis
  • Reporting

SQA group also takes the responsibility to prepare an SQA plan, which is the basis for all SQA activities. The plan describes the following tasks:

  • Product evaluation activities
  • Audit and review of the product
  • Quality standards for the product
  • Error tracking and handling mechanism
  • Document preparation
  • Feedback to the software team

SQA or standards are the basis of effective quality management. The standards can be international, national, or organizational. Standards can be considered at the following two levels:

  • Product standards: Define the characteristics that all components of the product should produce
  • Process standards: Define the mechanism in which the software process should be constituted

However, product and process standards are not seen as relevant and up-to-date by software engineers. The relation between the software processes and product quality is complex and   poorly understood. Software process is very much responsible for the software product quality. A predefined process is repeatedly followed for the hardware development. Contrary to hardware development process, it is more complex to manage the software development process because the application of individual skills and experience is particularly important in software development. The important software quality assurance measures are constructive, analytical, and organizational measures.

The constructive measures ensure the following concerns:

  • There is consistent application of methods in all the phases of development process
  • The development tools are used suitably
  • The development of software is based on high-quality and semi-finished products
  • The development documentation is maintained

The analytical measures ensure the following concerns:

  • There is static as well as dynamic program analyses
  • Adequate test cases are systematically chosen
  • The analysis results are maintained consistently

The organizational measures ensure the following concerns:

  • The software developers should be informed and educated about the new technologies
  • The quality assurance should be maintained

The quality assurance parameters are as follows:

  • Quality of external documentation
  • Programming language
  • Availability of tools
  • Programmer experience in data processing
  • Programmer experience in the functional area
  • Effect of project communication
  • Independent modules for individual assignment
  • Realize the requirements of the user

Therefore, to determine the appropriate level of Quality Assurance/Quality Control (QA/QC) resources and effort to be allocated, one needs to determine the acceptable level of risk.

The origin of defect in software development process lies in different stages of software development. The statistics of distribution of defects over phases are as follows:

  • Requirement phase: 7%
  • Design phase: 14%
  • Code phase: 49%
  • Others: 30%

Most organizations admit that their testing has the following drawbacks:

  • Frequently ad hoc
  • Poorly documented
  • Inconsistently executed
  • Primarily manual
  • Limited in scope

Approaches to Software Quality Assurance

SQA is a consequence of a problem that came into existence due to poor quality of the software.  For the past three decades, software industry is going through software crisis and poor quality software. SQA is an activity that is followed throughout the software development cycle, that is, analysis, design, coding, and testing. It ensures software quality as per the software engineering standards through the application of an FTR mechanism, a thorough testing strategy, and better control over software products. SQA suggests quality in terms of measurable factors, indices, and metrics.

A number of software engineering institutes are looking forward to a more structured and formal approach to SQA. It is suggested that there must be mechanism that should rely on requirement model, programming languages, and mathematical methods to make sure that the software is fulfilling all its specifications and is up to the quality standards.

Reliability

Software reliability is another aspect to ensure software quality. Reliability refers to the ability of the software system to perform its intended functions satisfactorily and correctly as expected by the user. It gives a measure of correctness and robustness of the system. Robustness measures the degree of the software system to perform correctly on occurrence of some unexpected or unrealized situation. Software reliability cannot be measured directly. It is measured on the basis of related factors, such as faults, defects, and failures identified, that affect the reliability of a software system.

Software reliability can be measured using the following three measurement matrices:

  • Product metrics: Apply to reliability of the software product. Size of the software reflects the degree of complexity, development effort involved, and reliability of the software. Lines of Code (LOC), or KLOC, are used as metrics to measure the software size. Typically, source code is measured in Source Lines of Code (SLOC) or Thousand Source Lines of Code (KSLOC) and instructions are counted, but the comments and other non-executable statements are not counted. Function point metric is another method used for measuring the functionality of a specified software system. It is based on the number of inputs to the system, outputs from the system, master files used with the system, and interfaces to the system. The method can also be applied to measure the size of a software system. It gives an indication about the functional complexity of the software system. There is a method called complexity-oriented metrics that is used to measure the complexity of a software system in terms of its control structure. This method is applied by representing the program code in a graphical manner. Another metrics applied for estimating the faults and reliability of a system is the test coverage metrics in which different tests are performed on the software product.
  • Project metrics: Apply to the reliability of the processes applied for the management of project and development of the software. Higher reliability can be achieved by applying more effective methods for software development and project management.
  • Process metrics: Apply to the reliability of software processes applied for development. Process metrics can also be applied to ensure quality.

There are different techniques that can be applied to improve the reliability of the software. The software needs to be verified, validated, and thoroughly tested before being deployed to ensure reliability. Testing helps in identifying any defects that may exist in the system. The defects identified can then be removed from the software by making proper modifications to ensure failure-free execution and user-desired reliability.

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.