HOME

TheInfoList



OR:

In the context of
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
, software quality refers to two related but distinct notions: * Software functional quality reflects how well it complies with or conforms to a given design, based on
functional requirements In software engineering and systems engineering, a functional requirement defines a function of a system or its component, where a function is described as a specification of behavior between inputs and outputs. Functional requirements may invol ...
or specifications. That attribute can also be described as the fitness for purpose of a piece of software or how it compares to competitors in the marketplace as a worthwhile
product Product may refer to: Business * Product (business), an item that serves as a solution to a specific consumer problem. * Product (project management), a deliverable or set of deliverables that contribute to a business solution Mathematics * Produ ...
. It is the degree to which the correct software was produced. * Software structural quality refers to how it meets
non-functional requirements In systems engineering and requirements engineering, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted with func ...
that support the delivery of the functional requirements, such as robustness or maintainability. It has a lot more to do with the degree to which the software works as needed. Many aspects of structural quality can be evaluated only statically through the analysis of the software inner structure, its source code (see
Software metric In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are t ...
s), at the unit level, system level (sometimes referred to as end-to-end testing), which is in effect how its architecture adheres to sound principles of
software architecture Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. ...
outlined in a paper on the topic by
Object Management Group The Object Management Group (OMG) is a computer industry standardization, standards consortium. OMG Task Forces develop enterprise integration standards for a range of technologies. Business activities The goal of the OMG was a common portabl ...
(OMG). However some structural qualities, such as
usability Usability can be described as the capacity of a system to provide a condition for its users to perform the tasks safely, effectively, and efficiently while enjoying the experience. In software engineering, usability is the degree to which a soft ...
, can be assessed only dynamically (users or others acting in their behalf interact with the software or, at least, some prototype or partial implementation; even the interaction with a mock version made in cardboard represents a dynamic test because such version can be considered a prototype). Other aspects, such as reliability, might involve not only the software but also the underlying hardware, therefore, it can be assessed both statically and dynamically ( stress test). Functional quality is typically assessed dynamically but it is also possible to use static tests (such as
software review A software review is "a process or meeting during which a software product is examined by a project personnel, managers, users, customers, user representatives, or other interested parties for comment or approval".IEEE Std . 1028-1997, "IEEE Standa ...
s). Historically, the structure, classification and terminology of attributes and metrics applicable to
software quality management Software quality management (SQM) is a management process that aims to develop and manage the Software quality, quality of software in such a way so as to best ensure that the product meets the quality standards expected by the customer while also ...
have been derived or extracted from the ISO 9126 and the subsequent ISO/IEC 25000 standard. Based on these models (see Models), the Consortium for IT Software Quality (CISQ) has defined five major desirable structural characteristics needed for a piece of software to provide
business value In management, business value is an informal term that includes all forms of value that determine the health and well-being of the firm in the long run. Business value expands concept of value of the firm beyond economic value (also known as econom ...
: Reliability, Efficiency, Security, Maintainability and (adequate) Size. Software quality measurement quantifies to what extent a software program or system rates along each of these five dimensions. An aggregated measure of software quality can be computed through a qualitative or a quantitative scoring scheme or a mix of both and then a weighting system reflecting the priorities. This view of software quality being positioned on a linear continuum is supplemented by the analysis of "critical programming errors" that under specific circumstances can lead to catastrophic outages or performance degradations that make a given system unsuitable for use regardless of rating based on aggregated measurements. Such programming errors found at the system level represent up to 90 percent of production issues, whilst at the unit-level, even if far more numerous, programming errors account for less than 10 percent of production issues (see also Ninety–ninety rule). As a consequence, code quality without the context of the whole system, as
W. Edwards Deming William Edwards Deming (October 14, 1900 – December 20, 1993) was an American engineer, statistician, professor, author, lecturer, and management consultant. Educated initially as an electrical engineer and later specializing in mathematical ...
described it, has limited value. To view, explore, analyze, and communicate software quality measurements, concepts and techniques of
information visualization Information is an abstract concept that refers to that which has the power to inform. At the most fundamental level information pertains to the interpretation of that which may be sensed. Any natural process that is not completely random, a ...
provide visual, interactive means useful, in particular, if several software quality measures have to be related to each other or to components of a software or system. For example,
software map A software map represents static, dynamic, and evolutionary information of software systems and their software development processes by means of 2D or 3D map-oriented information visualization. It constitutes a fundamental concept and tool in soft ...
s represent a specialized approach that "can express and combine information about software development, software quality, and system dynamics". Software quality also plays a role in the release phase of a software project. Specifically, the quality and establishment of the release processes (also patch processes),
configuration management Configuration management (CM) is a process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. The CM proc ...
are important parts of an overall software engineering process.


Motivation

Software quality is motivated by at least two main perspectives: * Risk management: Software failure has caused more than inconvenience. Software errors can cause human fatalities (see for example:
List of software bugs Many software bugs are merely annoying or inconvenient but some can have extremely serious consequences – either financially or as a threat to human well-being. The following is a list of software bugs with significant consequences. Space * ...
). The causes have ranged from poorly designed user interfaces to direct
programming error A software bug is an error, flaw or fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding and correcting bugs i ...
s, see for example Boeing 737 case or
Unintended acceleration Sudden unintended acceleration (SUA) is the unintended, unexpected, uncontrolled acceleration of a vehicle, often accompanied by an apparent loss of braking effectiveness. Such problems may be caused by driver error (e.g., pedal misapplication), ...
cases or
Therac-25 The Therac-25 was a computer-controlled radiation therapy machine produced by Atomic Energy of Canada Limited (AECL) in 1982 after the Therac-6 and Therac-20 units (the earlier units had been produced in partnership with of France). It was invol ...
cases. This resulted in requirements for the development of some types of software, particularly and historically for software embedded in medical and other devices that regulate critical infrastructures: " ngineers who write embedded softwaresee Java programs stalling for one third of a second to perform garbage collection and update the user interface, and they envision airplanes falling out of the sky.". In the United States, within the
Federal Aviation Administration The Federal Aviation Administration (FAA) is the largest transportation agency of the U.S. government and regulates all aspects of civil aviation in the country as well as over surrounding international waters. Its powers include air traffic m ...
(FAA), the FAA Aircraft Certification Service provides software programs, policy, guidance and training, focus on software and Complex Electronic Hardware that has an effect on the airborne product (a "product" is an aircraft, an engine, or a propeller). Certification standards such as
DO-178C DO-178C, Software Considerations in Airborne Systems and Equipment Certification is the primary document by which the certification authorities such as FAA, EASA and Transport Canada approve all commercial software-based aerospace systems. The do ...
,
ISO 26262 ISO 26262, titled "Road vehicles – Functional safety", is an international standard for functional safety of electrical and/or electronic systems that are installed in serial production road vehicles (excluding mopeds), defined by the Interna ...
, IEC 62304, etc. provide guidance. *
Cost management Cost accounting is defined as "a systematic set of procedures for recording and reporting measurements of the cost of manufacturing goods and performing services in the aggregate and in detail. It includes methods for recognizing, classifying, al ...
: As in any other fields of engineering, a software product or service governed by good software quality costs less to maintain, is easier to understand and can change more cost-effective in response to pressing business needs. Industry data demonstrate that poor application structural quality in core business applications (such as
enterprise resource planning Enterprise resource planning (ERP) is the integrated management of main business processes, often in real time and mediated by software and technology. ERP is usually referred to as a category of Business management tools, business management ...
(ERP),
customer relationship management Customer relationship management (CRM) is a process in which a business or other organization administers its interactions with customers, typically using data analysis to study large amounts of information. CRM systems compile data from a ra ...
(CRM) or large
transaction processing Transaction processing is information processing in computer science that is divided into individual, indivisible operations called ''transactions''. Each transaction must succeed or fail as a complete unit; it can never be only partially comple ...
systems in financial services) results in cost, schedule overruns and creates waste in the form of rework (see
Muda (Japanese term) is a Japanese word meaning "futility; uselessness; wastefulness", and is a key concept in lean process thinking, like the Toyota Production System (TPS) as one of the three types of deviation from optimal allocation of resources (the others b ...
). Moreover, poor structural quality is strongly correlated with high-impact business disruptions due to corrupted data, application outages, security breaches, and performance problems. **CISQ reports on the cost of poor quality estimates an impact of: ***$2.08 trillion in 2020 *
$2.84 trillion in 2018
**IBM's Cost of a Data Breach Report 2020 estimates that the average global costs of a data breach: ***$3.86 million


Definitions


ISO

Software quality is "capability of a software product to conform to requirements." while for others it can be synonymous with customer- or value-creation or even defect level.


ASQ

ASQ uses the following definition: ''Software quality'' describes the desirable attributes of software products. There are two main approaches exist: defect management and quality attributes.


NIST

Software Assurance (SA) covers both the property and the process to achieve it: * ustifiableconfidence that software is free from vulnerabilities, either intentionally designed into the software or accidentally inserted at any time during its life cycle and that the software functions in the intended manner * The planned and systematic set of activities that ensure that software life cycle processes and products conform to requirements, standards, and procedures


PMI

The
Project Management Institute The Project Management Institute (PMI, legally Project Management Institute, Inc.) is a U.S.-based not-for-profit professional organization for project management. Overview PMI serves more than five million professionals including over 680,00 ...
's
PMBOK The Project Management Body of Knowledge (PMBOK) is a set of standard terminology and guidelines (a body of knowledge) for project management. The body of knowledge evolves over time and is presented in ''A Guide to the Project Management Body o ...
Guide "Software Extension" defines not ''"Software quality"'' itself, but Software Quality Assurance (SQA) as ''"a continuous process that audits other software processes to ensure that those processes are being followed (includes for example a software quality management plan)."'' whereas Software Quality Control (SCQ) means ''"taking care of applying methods, tools, techniques to ensure satisfaction of the work products towards quality requirements for a software under development or modification."''


Other general and historic

The first definition of quality history remembers is from Shewhart in the beginning of 20th century: ''"There are two common aspects of quality: one of them has to do with the consideration of the quality of a thing as an objective reality independent of the existence of man. The other has to do with what we think, feel or sense as a result of the objective reality. In other words, there is a subjective side of quality."'' Kitchenham and Pfleeger, further reporting the teachings of David Garvin, identify five different perspectives on quality: * The transcendental perspective deals with the metaphysical aspect of quality. In this view of quality, it is "something toward which we strive as an ideal, but may never implement completely".B. Kitchenham and S. Pfleeger, "Software quality: the elusive target", IEEE Software, vol. 13, no. 1, pp. 12–21, 1996. It can hardly be defined, but is similar to what a federal judge once commented about obscenity: "I know it when I see it". * The user perspective is concerned with the appropriateness of the product for a given context of use. Whereas the transcendental view is ethereal, the user view is more concrete, grounded in the product characteristics that meet user's needs. * The manufacturing perspective represents quality as conformance to requirements. This aspect of quality is stressed by standards such as ISO 9001, which defines quality as "the degree to which a set of inherent characteristics fulfills requirements" (ISO/IEC 9001International Organization for Standardization, "ISO/IEC 9001: Quality management systems -- Requirements," 1999.). * The product perspective implies that quality can be appreciated by measuring the inherent characteristics of the product. * The final perspective of quality is value-based. This perspective recognizes that the different perspectives of quality may have different importance, or value, to various stakeholders.
Tom DeMarco Tom DeMarco (born August 20, 1940) is an American software engineer, author, and consultant on software engineering topics. He was an early developer of structured analysis in the 1970s. Early life and education Tom DeMarco was born in Hazl ...
has proposed that "a product's quality is a function of how much it changes the world for the better." This can be interpreted as meaning that functional quality and user satisfaction are more important than structural quality in determining software quality. Another definition, coined by
Gerald Weinberg Gerald Marvin Weinberg (October 27, 1933 – August 7, 2018) was an American computer scientist, author and teacher of the psychology and anthropology of computer software development. His most well-known books are ''The Psychology of Computer ...
in Quality Software Management: Systems Thinking, is "Quality is value to some person." This definition stresses that quality is inherently subjective—different people will experience the quality of the same software differently. One strength of this definition is the questions it invites software teams to consider, such as "Who are the people we want to value our software?" and "What will be valuable to them?".


Other meanings and controversies

One of the challenges in defining quality is that "everyone feels they understand it" and other definitions of software quality could be based on extending the various descriptions of the concept of quality used in business. Software quality also often gets mixed-up with
Quality Assurance Quality assurance (QA) is the term used in both manufacturing and service industries to describe the systematic efforts taken to ensure that the product(s) delivered to customer(s) meet with the contractual and other agreed upon performance, design ...
or Problem Resolution Management or
Quality Control Quality control (QC) is a process by which entities review the quality of all factors involved in production. ISO 9000 defines quality control as "a part of quality management focused on fulfilling quality requirements". This approach places ...
or
DevOps DevOps is a set of practices that combines software development (''Dev'') and IT operations (''Ops''). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary to ...
. It does over-lap with before mentioned areas (see also PMI definitions), but is distinctive as it does not solely focus on testing but also on processes, management, improvements, assessments, etc.


Measurement

Although the concepts presented in this section are applicable to both structural and functional software quality, measurement of the latter is essentially performed through testing ee_main_article:_Software_testing.html" ;"title="Software_testing.html" ;"title="ee main article: Software testing">ee main article: Software testing">Software_testing.html" ;"title="ee main article: Software testing">ee main article: Software testing However, testing isn't enough: According to a study, individual programmers are less than 50% efficient at finding bugs in their own software. And most forms of testing are only 35% efficient. This makes it difficult to determine [software] quality.


Introduction

Software quality measurement is about quantifying to what extent a system or software possesses desirable characteristics. This can be performed through qualitative or quantitative means or a mix of both. In both cases, for each desirable characteristic, there are a set of measurable attributes the existence of which in a piece of software or system tend to be correlated and associated with this characteristic. For example, an attribute associated with portability is the number of target-dependent statements in a program. More precisely, using the
Quality Function Deployment Quality function deployment (QFD) a method developed in Japan beginning in 1966 to help transform the voice of the customer into engineering characteristics for a product.Larson et al. (2009). p. 117. Yoji Akao, the original developer, described QF ...
approach, these measurable attributes are the "hows" that need to be enforced to enable the "whats" in the Software Quality definition above. The structure, classification and terminology of attributes and metrics applicable to software quality management have been derived or extracted from the ISO 9126-3 and the subsequent ISO/IEC 25000:2005 quality model. The main focus is on internal structural quality. Subcategories have been created to handle specific areas like business application architecture and technical characteristics such as data access and manipulation or the notion of transactions. The dependence tree between software quality characteristics and their measurable attributes is represented in the diagram on the right, where each of the 5 characteristics that matter for the user (right) or owner of the business system depends on measurable attributes (left): * Application Architecture Practices * Coding Practices * Application Complexity * Documentation * Portability * Technical and Functional Volume Correlations between programming errors and production defects unveil that basic code errors account for 92 percent of the total errors in the source code. These numerous code-level issues eventually count for only 10 percent of the defects in production. Bad software engineering practices at the architecture levels account for only 8 percent of total defects, but consume over half the effort spent on fixing problems, and lead to 90 percent of the serious reliability, security, and efficiency issues in production.


Code-based analysis

Many of the existing software measures count structural elements of the application that result from parsing the source code for such individual instructions tokens control structures (
Complexity Complexity characterises the behaviour of a system or model whose components interaction, interact in multiple ways and follow local rules, leading to nonlinearity, randomness, collective dynamics, hierarchy, and emergence. The term is generall ...
), and objects. Software quality measurement is about quantifying to what extent a system or software rates along these dimensions. The analysis can be performed using a qualitative or quantitative approach or a mix of both to provide an aggregate view sing for example weighted average(s) that reflect relative importance between the factors being measured This view of software quality on a linear continuum has to be supplemented by the identification of discrete Critical Programming Errors. These vulnerabilities may not fail a test case, but they are the result of bad practices that under specific circumstances can lead to catastrophic outages, performance degradations, security breaches, corrupted data, and myriad other problems that make a given system de facto unsuitable for use regardless of its rating based on aggregated measurements. A well-known example of vulnerability is the
Common Weakness Enumeration The Common Weakness Enumeration (CWE) is a category system for hardware and software weaknesses and vulnerabilities. It is sustained by a community project with the goals of understanding flaws in software and hardware and creating automated tools t ...
, a repository of vulnerabilities in the source code that make applications exposed to security breaches. The measurement of critical application characteristics involves measuring structural attributes of the application's architecture, coding, and in-line documentation, as displayed in the picture above. Thus, each characteristic is affected by attributes at numerous levels of abstraction in the application and all of which must be included calculating the characteristic's measure if it is to be a valuable predictor of quality outcomes that affect the business. The layered approach to calculating characteristic measures displayed in the figure above was first proposed by Boehm and his colleagues at TRW (Boehm, 1978) and is the approach taken in the ISO 9126 and 25000 series standards. These attributes can be measured from the parsed results of a static analysis of the application source code. Even dynamic characteristics of applications such as reliability and performance efficiency have their causal roots in the static structure of the application. Structural quality analysis and measurement is performed through the analysis of the
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
, the
architecture Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing building ...
,
software framework In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
,
database schema The database schema is the structure of a database described in a formal language supported by the database management system (DBMS). The term "schema" refers to the organization of data as a blueprint of how the database is constructed (divide ...
in relationship to principles and standards that together define the conceptual and logical architecture of a system. This is distinct from the basic, local, component-level code analysis typically performed by
development tool A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can b ...
s which are mostly concerned with implementation considerations and are crucial during
debugging In computer programming and software development, debugging is the process of finding and resolving '' bugs'' (defects or problems that prevent correct operation) within computer programs, software, or systems. Debugging tactics can involve in ...
and
testing An examination (exam or evaluation) or test is an educational assessment intended to measure a test-taker's knowledge, skill, aptitude, physical fitness, or classification in many other topics (e.g., beliefs). A test may be administered verba ...
activities.


Reliability

The root causes of poor reliability are found in a combination of non-compliance with good architectural and coding practices. This non-compliance can be detected by measuring the static quality attributes of an application. Assessing the static attributes underlying an application's reliability provides an estimate of the level of business risk and the likelihood of potential application failures and defects the application will experience when placed in operation. Assessing reliability requires checks of at least the following software engineering best practices and technical attributes: * Application Architecture Practices * Coding Practices * Complexity of algorithms * Complexity of programming practices * Compliance with Object-Oriented and Structured Programming best practices (when applicable) * Component or pattern re-use ratio * Dirty programming * Error & Exception handling (for all layers - GUI, Logic & Data) * Multi-layer design compliance * Resource bounds management * Software avoids patterns that will lead to unexpected behaviors * Software manages data integrity and consistency * Transaction complexity level Depending on the application architecture and the third-party components used (such as external libraries or frameworks), custom checks should be defined along the lines drawn by the above list of best practices to ensure a better assessment of the reliability of the delivered software.


Efficiency

As with Reliability, the causes of performance inefficiency are often found in violations of good architectural and coding practice which can be detected by measuring the static quality attributes of an application. These static attributes predict potential operational performance bottlenecks and future scalability problems, especially for applications requiring high execution speed for handling complex algorithms or huge volumes of data. Assessing performance efficiency requires checking at least the following software engineering best practices and technical attributes: * Application Architecture Practices * Appropriate interactions with expensive and/or remote resources * Data access performance and data management * Memory, network and disk space management * Compliance with Coding Practices (
Best coding practices Coding best practices or programming best practices are a set of informal rules (''best practices'') that many software developers in computer programming follow to improve software quality. Many computer programs remain in use for long periods ...
)


Security

Software quality includes
software security Application security (short AppSec) includes all tasks that introduce a secure software development life cycle to development teams. Its final goal is to improve security practices and, through that, to find, fix and preferably prevent security i ...
. Many security vulnerabilities result from poor coding and architectural practices such as SQL injection or cross-site scripting. These are well documented in lists maintained by CWE, and the SEI/Computer Emergency Center (CERT) at Carnegie Mellon University. Assessing security requires at least checking the following software engineering best practices and technical attributes: * Implementation, Management of a security-aware and hardening development process, e.g.
Security Development Lifecycle The Microsoft Security Development Lifecycle is a software development process used and proposed by Microsoft to reduce software maintenance costs and increase reliability of software concerning software security related bugs. It is based on the ...
(Microsoft) or IBM's Secure Engineering Framework. *Secure Application Architecture Practices * Multi-layer design compliance * Security best practices (Input Validation, SQL Injection, Cross-Site Scripting, Access control etc.) * Secure and good Programming Practices * Error & Exception handling


Maintainability

Maintainability includes concepts of modularity, understandability, changeability, testability, reusability, and transferability from one development team to another. These do not take the form of critical issues at the code level. Rather, poor maintainability is typically the result of thousands of minor violations with best practices in documentation, complexity avoidance strategy, and basic programming practices that make the difference between clean and easy-to-read code vs. unorganized and difficult-to-read code. Assessing maintainability requires checking the following software engineering best practices and technical attributes: * Application Architecture Practices * Architecture, Programs and Code documentation embedded in source code * Code readability * Code smells * Complexity level of transactions * Complexity of algorithms * Complexity of programming practices * Compliance with Object-Oriented and Structured Programming best practices (when applicable) * Component or pattern re-use ratio * Controlled level of dynamic coding * Coupling ratio * Dirty programming * Documentation * Hardware, OS, middleware, software components and database independence * Multi-layer design compliance * Portability * Programming Practices (code level) * Reduced
duplicate code In computer programming, duplicate code is a sequence of source code that occurs more than once, either within a program or across different programs owned or maintained by the same entity. Duplicate code is generally considered undesirable for a n ...
and functions * Source code file organization cleanliness Maintainability is closely related to Ward Cunningham's concept of
technical debt In software development, technical debt (also known as design debt or code debt) is the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. Analogous with ...
, which is an expression of the costs resulting of a lack of maintainability. Reasons for why maintainability is low can be classified as reckless vs. prudent and deliberate vs. inadvertent, and often have their origin in developers' inability, lack of time and goals, their carelessness and discrepancies in the creation cost of and benefits from documentation and, in particular, maintainable
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
.


Size

Measuring software size requires that the whole source code be correctly gathered, including database structure scripts, data manipulation source code, component headers, configuration files etc. There are essentially two types of software sizes to be measured, the technical size (footprint) and the functional size: * There are several software technical sizing methods that have been widely described. The most common technical sizing method is number of
Lines of Code Source lines of code (SLOC), also known as lines of code (LOC), is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program's source code. SLOC is typically used to predict the am ...
(#LOC) per technology, number of files, functions, classes, tables, etc., from which backfiring Function Points can be computed; * The most common for measuring functional size is function point analysis. Function point analysis measures the size of the software deliverable from a user's perspective. Function point sizing is done based on user requirements and provides an accurate representation of both size for the developer/estimator and value (functionality to be delivered) and reflects the business functionality being delivered to the customer. The method includes the identification and weighting of user recognizable inputs, outputs and data stores. The size value is then available for use in conjunction with numerous measures to quantify and to evaluate software delivery and performance (development cost per function point; delivered defects per function point; function points per staff month.). The function point analysis sizing standard is supported by the International Function Point Users Group (
IFPUG The International Function Point Users Group (IFPUG) is a US-based organization with worldwide chapters of Function point analysis metric software users. It is a non-profit, member-governed organization founded in 1986. IFPUG owns Function Po ...
). It can be applied early in the software development life-cycle and it is not dependent on lines of code like the somewhat inaccurate Backfiring method. The method is technology agnostic and can be used for comparative analysis across organizations and across industries. Since the inception of Function Point Analysis, several variations have evolved and the family of functional sizing techniques has broadened to include such sizing measures as COSMIC, NESMA, Use Case Points, FP Lite, Early and Quick FPs, and most recently Story Points. However, Function Points has a history of statistical accuracy, and has been used as a common unit of work measurement in numerous application development management (ADM) or outsourcing engagements, serving as the "currency" by which services are delivered and performance is measured. One common limitation to the Function Point methodology is that it is a manual process and therefore it can be labor-intensive and costly in large scale initiatives such as application development or outsourcing engagements. This negative aspect of applying the methodology may be what motivated industry IT leaders to form the Consortium for IT Software Quality focused on introducing a computable metrics standard for automating the measuring of software size while the IFPUG keep promoting a manual approach as most of its activity rely on FP counters certifications.
CISQ The Consortium for IT Software Quality (CISQ) is an IT industry group comprising IT executives from the Global 2000, systems integrators, outsourced service providers, and software technology vendors committed to making improvements in the quali ...
defines Sizing as to estimate the size of software to support cost estimating, progress tracking or other related software project management activities. Two standards are used: ''Automated Function Points'' to measure the functional size of software and ''Automated Enhancement Points'' to measure the size of both functional and non-functional code in one measure.


Identifying critical programming errors

Critical Programming Errors are specific architectural and/or coding bad practices that result in the highest, immediate or long term, business disruption risk. These are quite often technology-related and depend heavily on the context, business objectives and risks. Some may consider respect for naming conventions while others – those preparing the ground for a knowledge transfer for example – will consider it as absolutely critical. Critical Programming Errors can also be classified per CISQ Characteristics. Basic example below: * Reliability ** Avoid software patterns that will lead to unexpected behavior (
Uninitialized variable In computing, an uninitialized variable is a variable that is declared but is not set to a definite known value before it is used. It will have ''some'' value, but not a predictable one. As such, it is a programming error and a common source of b ...
, null pointers, etc.) ** Methods, procedures and functions doing Insert, Update, Delete, Create Table or Select must include error management ** Multi-thread functions should be made thread safe, for instance servlets or struts action classes must not have instance/non-final static fields * Efficiency ** Ensure centralization of client requests (incoming and data) to reduce network traffic ** Avoid SQL queries that don't use an index against large tables in a loop * Security ** Avoid fields in servlet classes that are not final static ** Avoid data access without including error management ** Check control return codes and implement error handling mechanisms ** Ensure input validation to avoid cross-site scripting flaws or SQL injections flaws * Maintainability ** Deep inheritance trees and nesting should be avoided to improve comprehensibility ** Modules should be loosely coupled (fanout, intermediaries) to avoid propagation of modifications ** Enforce homogeneous naming conventions


Operationalized quality models

Newer proposals for quality models such as Squale and Quamoco propagate a direct integration of the definition of quality attributes and measurement. By breaking down quality attributes or even defining additional layers, the complex, abstract quality attributes (such as reliability or maintainability) become more manageable and measurable. Those quality models have been applied in industrial contexts but have not received widespread adoption.


Trivia

* "A science is as mature as its measurement tools." * "
I know it when I see it The phrase "I know it when I see it" is a colloquial expression by which a speaker attempts to categorize an observable fact or event, although the category is subjective or lacks clearly defined parameters. The phrase was used in 1964 by United St ...
." * "You cannot control what you cannot measure." (
Tom DeMarco Tom DeMarco (born August 20, 1940) is an American software engineer, author, and consultant on software engineering topics. He was an early developer of structured analysis in the 1970s. Early life and education Tom DeMarco was born in Hazl ...
) * "You cannot inspect quality into a product." (
W. Edwards Deming William Edwards Deming (October 14, 1900 – December 20, 1993) was an American engineer, statistician, professor, author, lecturer, and management consultant. Educated initially as an electrical engineer and later specializing in mathematical ...
) * "The bitterness of poor quality remains long after the sweetness of meeting the schedule has been forgotten." (Anonymous) *"If you don't start with a spec, every piece of code you write is a patch." (
Leslie Lamport Leslie B. Lamport (born February 7, 1941 in Brooklyn) is an American computer scientist and mathematician. Lamport is best known for his seminal work in distributed systems, and as the initial developer of the document preparation system LaTeX and ...
)


See also

* Anomaly in software *
Accessibility Accessibility is the design of products, devices, services, vehicles, or environments so as to be usable by people with disabilities. The concept of accessible design and practice of accessible development ensures both "direct access" (i. ...
*
Availability In reliability engineering, the term availability has the following meanings: * The degree to which a system, subsystem or equipment is in a specified operable and committable state at the start of a mission, when the mission is called for at a ...
*
Best coding practices Coding best practices or programming best practices are a set of informal rules (''best practices'') that many software developers in computer programming follow to improve software quality. Many computer programs remain in use for long periods ...
* Cohesion and
Coupling A coupling is a device used to connect two shafts together at their ends for the purpose of transmitting power. The primary purpose of couplings is to join two pieces of rotating equipment while permitting some degree of misalignment or end mov ...
*
Cyclomatic complexity Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. It was developed by Thomas J. McCabe, Sr. in 1976. ...
*
Coding conventions Coding conventions are a set of guidelines for a specific programming language that recommend programming style, practices, and methods for each aspect of a program written in that language. These conventions usually cover file organization, inde ...
*
Computer bug A software bug is an error, flaw or fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding and correcting bugs i ...
*
Dependability In systems engineering, dependability is a measure of a system's availability, reliability, maintainability, and in some cases, other characteristics such as durability, safety and security. In real-time computing, dependability is the ability to ...
* GQM *
ISO/IEC 9126 ISO/IEC 9126 ''Software engineering — Product quality'' was an international standard for the evaluation of software quality. It has been replaced by ISO/IEC 25010:2011. The fundamental objective of the ISO/IEC 9126 standard is to address s ...
* Software Process Improvement and Capability Determination - ISO/IEC 15504 *
Programming style Programming style, also known as code style, is a set of rules or guidelines used when writing the source code for a computer program. It is often claimed that following a particular programming style will help programmers read and understand sour ...
*
Quality Quality may refer to: Concepts *Quality (business), the ''non-inferiority'' or ''superiority'' of something *Quality (philosophy), an attribute or a property *Quality (physics), in response theory *Energy quality, used in various science discipli ...
:
quality control Quality control (QC) is a process by which entities review the quality of all factors involved in production. ISO 9000 defines quality control as "a part of quality management focused on fulfilling quality requirements". This approach places ...
, total quality management. *
Requirements management Requirements management is the process of documenting, analyzing, tracing, prioritizing and agreeing on requirements and then controlling change and communicating to relevant stakeholders. It is a continuous process throughout a project. A require ...
*
Scope (project management) In project management, scope is the defined features and functions of a product, or the scope of work needed to finish a project. Scope involves getting information required to start a project, including the features the product needs to meet its s ...
*
Security Security is protection from, or resilience against, potential harm (or other unwanted coercive change) caused by others, by restraining the freedom of others to act. Beneficiaries (technically referents) of security may be of persons and social ...
* Security engineering *
Software quality assurance Software quality assurance (SQA) is a means and practice of monitoring all software engineering processes, methods, and work products to ensure compliance against defined standards. It may include ensuring conformance to standards or models, suc ...
*
Software architecture Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. ...
*
Software quality control Software quality control is the set of procedures used by organizationsClapp, Judith A, ''Software Quality Control, Error Analysis, and Testing'', 1995 William Andrew In. to ensure that a software product will meet its quality goals at the best val ...
*
Software metric In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are t ...
s *
Software reusability In computer science and software engineering, reusability is the use of existing ''assets'' in some form within the software product development process; these ''assets'' are products and by-products of the software development life cycle and in ...
*
Software standard A software standard is a standard, protocol, or other common format of a document, file, or data transfer accepted and used by one or more software developers while working on one or more than one computer programs. Software standards enable in ...
*
Software testing Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
*
Testability Testability is a primary aspect of Science and the Scientific Method and is a property applying to an empirical hypothesis, involves two components: #Falsifiability or defeasibility, which means that counterexamples to the hypothesis are logicall ...
*
Static program analysis In computer science, static program analysis (or static analysis) is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs during their execution. The term i ...


Further reading

* Android O
Quality Guidelines
including checklists for UI, Security, etc. July 2021 *Association of Maritime Managers in Information Technology & Communications (AMMITEC)
Maritime Software Quality Guidelines
September 2017 *
Capers Jones __NOTOC__ Capers Jones is an American specialist in software engineering methodologies, and is often associated with the function point model of cost estimation. He was born in St Petersburg, Florida, United States and graduated from the Uni ...
and Olivier Bonsignour, "The Economics of Software Quality", Addison-Wesley Professional, 1st edition, December 31, 2011,
CAT Lab - CNES Code Analysis Tools Laboratory
(on GitHub) *Girish Suryanarayana, Software Process versus Design Quality: Tug of War? *Ho-Won Jung, Seung-Gweon Kim, and Chang-Sin Chung
Measuring software product quality: A survey of ISO/IEC 9126
''IEEE Software'', 21(5):10–13, September/October 2004. *International Organization for Standardization. ''Software Engineering—Product Quality—Part 1: Quality Model''. ISO, Geneva, Switzerland, 2001. ISO/IEC 9126-1:2001(E).
Measuring Software Product Quality: the ISO 25000 Series and CMMI (SEI site)
*
MSQF - A measurement based software quality framework
' Cornell University Library * Omar Alshathry, Helge Janicke, "Optimizing Software Quality Assurance," compsacw, pp. 87–92, 2010 IEEE 34th Annual Computer Software and Applications Conference Workshops, 2010. * Robert L. Glass. ''Building Quality Software''. Prentice Hall, Upper Saddle River, NJ, 1992. * Roland Petrasch,
The Definition of 'Software Quality': A Practical Approach
, ISSRE, 1999 *Software Quality Professional,
American Society for Quality The American Society for Quality (ASQ), formerly the American Society for Quality Control (ASQC), is a society of quality professionals, with nearly 80,000 members. History ASQC was established on 16 February 1946 by 253 members in Milwaukee, ...
(ASQ) *Software Quality Journal by
Springer Nature Springer Nature or the Springer Nature Group is a German-British academic publishing company created by the May 2015 merger of Springer Science+Business Media and Holtzbrinck Publishing Group's Nature Publishing Group, Palgrave Macmillan, and Macm ...
* * Stephen H. Kan. ''Metrics and Models in Software Quality Engineering''. Addison-Wesley, Boston, MA, second edition, 2002. * Stefan Wagner
Software Product Quality Control
Springer, 2013.


References

Notes Bibliography * * * * * * * * * * * * * * * *


External links


When code is king: Mastering automotive software excellence
(McKinsey, 2021)
Embedded System Software Quality: Why is it so often terrible? What can we do about it?
(b
Philip Koopman

Code Quality Standards
by
CISQ The Consortium for IT Software Quality (CISQ) is an IT industry group comprising IT executives from the Global 2000, systems integrators, outsourced service providers, and software technology vendors committed to making improvements in the quali ...
™ *CISQ Blog: https://blog.it-cisq.org
Guide to software quality assurance
(ESA)
Guide to applying the ESA software engineering standards to small software projects
(ESA)
An Overview of ESA Software Product Assurance Services
(NASA/ESA)
Our approach to quality in Volkswagen Software Dev Center LisbonGoogle Style GuidesEnsuring Product Quality at Google
(2011)
NASA Software AssuranceNIST Software Quality Group
*OMG/CIS
Automated Function Points
( ISO/IEC 19515)
OMG Automated Technical Debt StandardAutomated Quality Assurance
(articled in IREB by Harry Sneed)
Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric
(1996)
Analyzing Application Quality by Using Code Analysis Tools
(Microsoft, Documentation, Visual Studio, 2016) {{Authority control Systems thinking
Quality Quality may refer to: Concepts *Quality (business), the ''non-inferiority'' or ''superiority'' of something *Quality (philosophy), an attribute or a property *Quality (physics), in response theory *Energy quality, used in various science discipli ...
Source code