One of the current challenges of computer science is the software quality. Nowadays, software is rather omnipresent and is used everywhere in everyday life: in communications, consumer electronics, in the home, in medical technology and in safety-critical areas. No wonder that the quality of the software is a critical showing that should always be maintained at the proper level. All in all, there are two most important features which are sustainability and security of software. 

There are several reasons why well-structured and readable software mean a lot. First and foremost, software systems are becoming increasingly complex and need to be maintained. The IT world moves towards the progress with an impressive speed. As the pace of the software evolution is constantly increasing, the specialists create the corresponding programs that would meet all these needs of the users. Secondly, the software developers in the project change over time and new developers have to familiarize themselves with existing software. The quality product requires the quality specialists to test it.

So, what actually contributes to the quality of a product? There are some common and most critical things a good developer should know to create a high-quality product. Must have quality features for any software are as follows:

  • Functionality: Are all functions required in the functional specification available and executable?
  • Reliability: To what degree (eg percent of working time) does the software permanently fulfill the required functions? Are all functions executed correctly (correctness)?
  • Usability: How quickly can the user learn how to use the software (learnability)? How easy is the software to be handled by the user (usability)?
  • Efficiency: Which temporal behavior (response time in interactive mode, runtime in batch mode) and which resource consumption does the software show under the given system requirements (hardware, operating system, communication devices)?
  • Maintainability: With what effort or in what time can changes be made! How can the effort for error detection and remediation be minimized?
  • Portability: At what cost can the software (especially, standard software) be customized, adapt functional operational conditions (adaptability)? Can the software be used in other system transformations without much effort (portability)? Can the software be used unchanged when replacing the computer (e.g. powerful processor)?

Quality Management

■ Product-oriented: Software products and intermediate results are checked for predetermined quality characteristics.

■ Process-oriented: Methods, tools, guidelines and standards for the process of creating the software

Principles of software quality assurance

■ Product and process-dependent quality target determination

■ Early detection and elimination of errors

■ Maximum constructive quality assurance

■ Quantitative quality assurance

■ Development-accompanying, integrated quality assurance

■ Independent quality assurance

Quality Assurance Measures

■ Constructive measures: Methods, languages, tools, guidelines, standards and checklists that guarantee a specific product or process quality;

■ Analytical measures.

The existing quality level is measured. The extent and location of the defect can be identified.

Methods:

■ Analyzing: collecting information without execution of the software with concrete inputs.

■ Testing: Run the software with concrete inputs.

■ A forward-looking, constructive quality control saves many analytical measures.

Method for quality measurement

■ Quantitative measurements: Software metrics, profiling

■ Verification of syntactic patterns: Development Policies, Bad Code Smells, Design patterns, and software architectures

■ Review of semantic properties: Test method, Design-By-Contract, verification.