This article was automatically translated from the original Turkish version.
Software quality is fundamentally related to the extent to which a software product meets specified requirements. While ISO defines quality as the ability of a product or service to meet explicit or implicit needs, IEEE describes it as the degree to which a system, component, or process satisfies specified requirements and user expectations. Both definitions are user-centered and emphasize that software must satisfy not only technical specifications but also user expectations.
The software development process inherently involves complexity, which creates conditions for errors and deficiencies to emerge. Research indicates that programmers produce an average of six errors per 1000 lines of code. This rate implies that a commercial software system of 350,000 lines may contain approximately 2000 defects. As software grows in size, the probability of errors increases geometrically.
Therefore, the concept of software quality must be considered alongside fundamental concepts such as error, fault, failure, and defect. An error typically originates from programmer mistakes, while a fault manifests as an incorrect step or data within the code. A failure occurs when the software fails to perform its intended function and is usually caused by a fault. A defect is an overarching term that encompasses both errors and faults.
Measuring software quality is recognized as one of the most fundamental components of software engineering. The expected level of quality becomes traceable, evaluable, and improvable when expressed through objective criteria. In this context, software quality measurement is conducted through metrics that reflect both the technical characteristics of the software product and the efficiency of the development process.
Software quality metrics can generally be categorized into two main groups: product-based and process-based. Product-based metrics assess attributes of the software itself, such as complexity, defect-freeness, performance, and portability, while process-based metrics monitor development activities in terms of time, cost, resource utilization, and efficiency.
One widely used metric is cyclomatic complexity. Proposed by McCabe, this measure analyzes code readability and testability based on the number of decision points in a software component. High complexity complicates maintenance and increases the likelihood of errors. Consequently, cyclomatic complexity metrics are regarded as important indicators for enhancing software modularity and sustainability.
Test coverage is another critical metric. It quantitatively expresses the proportion of the developed software that has been examined by test scenarios. High test coverage contributes to the detection of potential errors before software deployment. In particular, for high-risk or security-critical software, this metric is an indispensable part of quality assurance activities.
Software reliability represents the probability that the software will operate without failure over a specified time period. Reliability functions are typically expressed using statistical models such as the exponential distribution. Such statistical modeling is used to forecast error rates and optimize software maintenance plans.
In addition, metrics such as maintainability, portability, reusability, performance, and security vulnerabilities are also essential for a holistic evaluation of software quality. Regular monitoring of these metrics ensures quality is sustained not only during development but throughout the entire software lifecycle.
Software quality assurance comprises a set of planned and systematic activities designed to ensure that both the product and the process conform to defined requirements. These activities aim to guarantee quality not only at the final output but at every stage of the production process. In practice, software quality assurance is generally shaped around two fundamental approaches: corrective quality assurance and preventive quality assurance.
Corrective quality assurance relies on identifying errors and nonconformities after the software development process has been completed. In this approach, independent audits, reviews, and testing activities serve as primary tools. The process operates by comparing actual outputs with defined requirements, identifying deviations, and correcting them through remedial actions. In this sense, corrective quality assurance is regarded as the classical form of quality assurance. However, the cost of corrections to meet requirements increases depending on the project phase at which errors are detected. In later stages, where retroactive changes become more difficult, the cost and time pressure of corrective actions can threaten quality.
For these reasons, preventive quality assurance is gaining increasing importance in modern software engineering. Preventive quality assurance aims to prevent errors before they occur. In this approach, the focus of quality assurance lies in analyzing nonconformity data from past projects, risk-based planning, and proactive monitoring mechanisms informed by measurement and observation data. Preventive controls enable the anticipation of potential deviations and minimize the need for corrective actions.
In this context, the competence of quality assurance personnel, the effective interpretation of measurement results, the proactive execution of risk analyses, and a collaborative work culture with development teams emerge as decisive factors for the success of the preventive approach. Thus, quality assurance becomes not merely a control tool but a strategic function that supports optimization throughout the software lifecycle.
Sustainable software quality can only be achieved through internationally accepted standards and models. Standards systematize best practices and experiences in software development processes while enhancing the global competitiveness of software products.
One widely adopted standard worldwide is ISO 9001, which provides a general framework for quality management systems and incorporates fundamental principles such as customer focus and continuous improvement. In the software sector, more specialized standards are applied. The ISO/IEC 9126 standard defines software product quality in terms of functionality, reliability, usability, efficiency, maintainability, and portability. These dimensions aim to ensure not only technical success but also user satisfaction.
Another important standard family, ISO/IEC 12207, defines the software lifecycle and regulates how planning, development, delivery, and maintenance processes should be conducted. Similarly, ISO/IEC 15504 (SPICE) serves as a model for evaluating the maturity of software processes and provides guidance for software process improvement. These process-oriented standards ensure that software development activities are defined and measurable, thereby structurally assuring quality.
Besides these, standards developed by IEEE also play a significant role in software engineering practices. IEEE 1061 focuses on software quality metrics, while other IEEE standards provide guidance across a broad spectrum, from testing processes to documentation standards.
International standardization not only ensures technical compliance but also facilitates the acceptance of software products in different countries, thereby supporting trade. In today’s highly competitive global software market, certification such as CE or ISO enhances customer confidence and expands market share.
The software sector in Türkiye is growing, but its quality has not yet reached the desired level. Local software companies are generally small and medium-sized. The fact that hardware expenditures account for 81% of information technology spending highlights the need to increase the emphasis on software.
The Turkish Standards Institution (TSE) is conducting efforts to promote standardization in the sector. However, it is recommended that universities establish specialized programs in software quality, professional associations operate more effectively, and industry-specific strategies be developed to raise awareness of quality and standardization in software.
Software policies in countries such as Ireland, India, and Israel serve as models for Türkiye. In these countries, software standards have become national policies, and the sector has been strengthened through supportive funding, R&D investments, and export incentives.
No Discussion Added Yet
Start discussion for "Software Quality Elements" article
Measuring Software Quality and Metrics
Software Quality Assurance Approaches
International Standards and Models
Software Quality and Standardization in Türkiye