Software Quality Definitions
This glossary explains the meaning of key words and phrases that information technology (IT) and business professionals use when discussing software quality and related products. You can find additional definitions by visiting WhatIs.com or using the search box below.
-
#
12 factor app (twelve-factor app)
Twelve-factor app is a methodology for building distributed applications that run in the cloud and are delivered as a service. The approach was developed by Adam Wiggins, the co-founder of Heroku, a platform-as-a-service which is now part of Salesforce.com.
-
3-tier application architecture
A 3-tier application architecture is a modular client-server architecture that consists of a presentation tier, an application tier and a data tier.
-
A
acceptance testing
Acceptance testing is a quality assurance (QA) process that determines to what degree an application meets end users' approval.
-
Agile retrospective
An Agile retrospective is a meeting that's held at the end of an iteration in Agile software development.
-
Agile software development
Agile is a type of software development methodology that anticipates the need for flexibility and applies a level of pragmatism to the delivery of the finished product.
-
alpha testing
Alpha testing is the initial phase of validating whether a new product will perform as expected.
-
Apache JMeter
Apache JMeter is an open source, Java-based load testing tool that can analyze the functional behavior of a system and measure the performance of a system under a load test.
-
application
An application, also referred to as an application program or application software, is a computer software package that performs a specific function directly for an end user or, in some cases, for another application.
-
application firewall
An application firewall is an enhanced firewall that limits access by applications to the operating system (OS) of a computer... (Continued)
-
application lifecycle management (ALM)
Application lifecycle management (ALM) is an integrated system of people, tools and processes that supervise a software application from its initial planning and development, through testing and maintenance, and into decommissioning and retirement.
-
application platform
An application platform is a framework of services that applications rely on for standard operations.
-
application security
Application security, or appsec, is the practice of using security software, hardware, techniques, best practices and procedures to protect computer applications from external security threats.
-
artifact (software development)
An artifact is a byproduct of software development that helps describe the architecture, design and function of software.
-
automated testing
Automated testing is a software testing technique that automates the process of validating the functionality of software and ensures it meets requirements before being released into production.
-
B
behavior-driven development (BDD)
Behavior-driven development (BDD) is an Agile software development methodology in which an application is documented and designed around the behavior a user expects to experience when interacting with it.
-
best practice
A best practice is a standard or set of guidelines that is known to produce good outcomes if followed.
-
black box (black box testing)
Black box testing assesses a system solely from the outside, without the operator or tester knowing what is happening within the system to generate responses to test actions.
-
bug
In computer technology, a bug is a coding error in a computer program.
-
build
In a programming context, a build is a version of a program that, as a rule, is a pre-release version and is identified by a build number rather than by a release number.
-
build server
A build server is a machine on which a software project can be continuously built from changes that are committed to the repository.
-
C
cache thrash
Cache thrash is caused by an ongoing computer activity that fails to progress due to excessive use of resources or conflicts in the caching system.
-
Capability Maturity Model (CMM)
The Capability Maturity Model (CMM) is a methodology used to develop and refine an organization's software development process.
-
citizen development
Citizen development is a business process that encourages non-IT-trained employees to become software developers, using IT-sanctioned low-code/no-code (LCNC) platforms to create business applications.
-
collaboration diagram
A collaboration diagram, also known as a communication diagram, is an illustration of the relationships and interactions among software objects in the Unified Modeling Language (UML).
-
continuous integration (CI)
Continuous integration (CI) is a software development practice in which frequent, isolated changes are immediately tested and reported on when they're added to a larger codebase.
-
continuous quality
Continuous quality is a systematic approach to finding and fixing software defects during all phases of the software development cycle.
-
cookie
A cookie is information that a website puts on a user's computer.
-
cross-browser testing
Cross-browser testing, also called browser testing, is a quality assurance (QA) process that checks whether a web-based application, site or page functions as intended for end users across multiple browsers and devices.
-
cruft
Cruft is the elements of a program, system or product that are either useless, poorly designed or both. In computing, cruft describes areas of redundant, improper or simply badly written code, as well as old or inferior hardware and electronics. Cruft may also be used to describe a group of hackers, like a pod of whales, exultation of larks or murder of crows. (Continued...)
-
D
daily stand-up meeting
A daily stand-up meeting is a short organizational meeting that is held each day.
-
debugging
Debugging, in computer programming and engineering, is a multistep process that involves identifying a problem, isolating the source of the problem and then either correcting the problem or determining a way to work around it.
-
development environment
In software, web and mobile application development, the development environment is a workspace with a set of processes and programming tools used to develop the source code for an application or software product.
-
DevOps Dojo
DevOps Dojos provide software developers and operations engineers with an immersive learning environment where team members can gain practical work experience without having to worry about introducing errors into the production environment.
-
Disciplined Agile Delivery (DAD)
Disciplined Agile Delivery (DAD) is a scalable Agile software delivery framework. It takes a people-first, learning-oriented approach to software development and delivery.
-
dynamic application security testing (DAST)
A dynamic application security test (DAST) is a program used by developers to analyze a web application (web app), while in runtime, and identify any security vulnerabilities or weaknesses.
-
software documentation
In the software development process, software documentation is the information that describes the product to the people who develop, deploy and use it.
-
E
end-to-end testing
End-to-end (E2E) testing is a software testing methodology that verifies the working order of a software product in a start-to-finish process.
-
exception handling
Exception handling is the process of responding to unwanted or unexpected events when a computer program runs.
-
F
fault injection testing
Fault injection is a testing process which deliberately introduces errors to a system to ensure the system can withstand the error and recover.
-
feature-driven development (FDD)
Feature-driven development (FDD) is an Agile software development methodology that can be used by development teams and managers with the intention of bringing a steady, continuous flow of new features to users at a set time.
-
finite element analysis (FEA)
Finite element analysis (FEA) is the use of calculations, models and simulations to predict and understand how an object might behave under various physical conditions.
-
functional programming
Functional programming is a programming paradigm that uses functions to construct programs and control how those programs operate.
-
functional specification
A functional specification is a formal document used to describe a product's intended capabilities, appearance, and interactions with users in detail for software developers.
-
functional testing
Functional testing is a process used to evaluate software during development to ensure that it meets the application's intended requirements and specifications.
-
G
Gantt chart
A Gantt chart is a horizontal bar chart developed as a production control tool in 1917 by Henry L. Gantt, an American engineer and social scientist.
-
garbage in, garbage out (GIGO)
Garbage in, garbage out, or GIGO, refers to the idea that in any system, the quality of output is determined by the quality of the input.
-
green software
Green software, also known as sustainable software, is software that is designed, developed and implemented to limit energy consumption and have minimal environmental impact.
-
H
happy path testing
Happy-path testing is a type of software testing that uses known input and produces an expected output. Also referred to as golden-path or sunny-day testing, the happy-path approach is tightly scripted. The happy path does not duplicate real-world conditions and verifies only that the required functionality is in place and functions correctly.
-
histogram
A histogram is a type of chart that shows the frequency distribution of data points across a continuous range of numerical values.
-
hybrid application (hybrid app)
A hybrid app is a software application that combines elements of both native apps and web applications.
-
Hypertext Transfer Protocol Secure (HTTPS)
Hypertext Transfer Protocol Secure (HTTPS) is a protocol that secures communication and data transfer between a user's web browser and a website.
-
I
integrated development environment (IDE)
An integrated development environment (IDE) is a software suite that consolidates basic tools required to write and test software.
-
integration testing or integration and testing (I&T)
Integration testing -- also known as integration and testing (I&T) -- is a type of software testing in which the different units, modules or components of a software application are tested as a combined entity.
-
iteration
In agile software development, an iteration is a single development cycle, usually measured as one week or two weeks. (Continued...)
-
iterative
In the world of IT and computer programming, the adjective iterative refers to a process where the design of a product or application is improved by repeated review and testing.
-
iterative development
Iterative development is a way of breaking down the software development lifecycle (SDLC) of a large application into smaller chunks.
-
J
Jenkins
Jenkins is an open source continuous integration/continuous delivery and deployment (CI/CD) automation software DevOps tool written in the Java programming language.
-
Jira
Jira is an application lifecycle management (ALM) tool from Atlassian that provides different packages to suit various customer needs.
-
joint application development (JAD)
Joint application development, frequently shortened to JAD, is a methodology that involves the client or end user in the design and development of a software application through a succession of collaborative workshops called JAD sessions.
-
L
LDAP injection
LDAP (Lightweight Directory Access Protocol) injection is a type of security exploit that is used to compromise the authentication process used by some websites.
-
Lean software development
Lean software development is a concept that emphasizes optimizing efficiency and minimizing waste in the development of software.
-
low-code and no-code development platforms
Low-code/no-code development platforms are types of visual software development environments that allow enterprise developers and citizen developers to drag and drop application components, connect them together and create mobile or web apps.
-
M
mob programming
Mob programming is a collaborative approach to software development in which a group of developers work together in real time on one task.
-
model-based testing
Model-based testing (MBT) requires a test team to create a second, lightweight implementation of a software build- typically only the business logic - called the model.
-
model-driven development (MDD)
Model-driven development (MDD) is a format to write and implement software quickly, effectively and at minimum cost.
-
MoSCoW method
The MoSCoW method is a four-step approach to prioritizing which project requirements provide the best return on investment (ROI).
-
N
native app
A native application is a software program developers build for use on a particular platform or device.
-
NIST (National Institute of Standards and Technology)
NIST (National Institute of Standards and Technology) is a nonregulatory government agency located in Gaithersburg, Md.
-
no-code
No-code is a software development approach that requires few, if any, programming skills to quickly build an application.
-
O
offshore software testing
Offshore software testing is a software development model where an organization outsources the software testing process to a service partner team located in a different country with a different time zone.
-
Open Web Application Security Project (OWASP)
The Open Web Application Security Project (OWASP) is a nonprofit foundation that provides guidance on how to develop, purchase and maintain trustworthy and secure software applications.
-
P
pair programming
Pair programming is an Agile software development technique originating from Extreme programming (XP) in which two developers team together and work on one computer.
-
performance testing
Performance testing is a testing measure that evaluates the speed, responsiveness and stability of a computer, network, software program or device under a workload.
-
PERT chart
A PERT chart, sometimes called a PERT diagram, is a project management tool used to schedule, organize and coordinate tasks within a project.
-
pigs and chickens
Pigs and chickens is an analogy used in the Scrum software development model to define the type of role an attendee can play at a daily scrum meeting.
-
pipeline as code
Pipeline as code is an approach to a continuous integration (CI) pipeline where the pipeline is expressed entirely in computer code.
-
polyglot programming
Polyglot programming is the practice of writing code in multiple languages to capture additional functionality and efficiency not available in a single language.
-
product owner
A product owner is a role on a Scrum team that is accountable for the project's outcome. The product owner is responsible for maximizing product's value by managing and optimizing the product backlog.
-
program
In computing, a program is a specific set of ordered operations for a computer to perform.
-
Project Management Professional (PMP)
Project Management Professional (PMP) certification is a qualification program overseen by the Project Management Institute (PMI)... (Continued)
-
Q
quality assurance (QA)
Quality assurance (QA) is any systematic process of determining whether a product or service meets specified requirements.
-
quality gate
A quality gate is a milestone in an IT project that requires that predefined criteria be met before the project can proceed to the next phase.
-
R
rapid application development (RAD)
Rapid application development (RAD) is a model based on the concept that higher-quality products can be developed faster through more expedient processes, such as early prototyping, reusing software components and less formality in team communications.
-
rapid mobile app development (RMAD)
Rapid mobile application development (RMAD) uses low-code/no-code programming tools to expedite the application creation process for mobile platforms.
-
regression testing
Regression testing is a type of software test that assesses if changes to an application, or other related software components, introduce defects.
-
release
A release is the distribution of the final version or the newest version of a software application.
-
release plan
In agile software development, a release plan is an evolving flowchart that describes which features will be delivered in upcoming releases. (Continued...)
-
requirements analysis (requirements engineering)
Requirements analysis (requirements engineering) is the process of determining user expectations for a new or modified product.
-
reverse-engineering
Reverse-engineering is the act of dismantling an object to see how it works.
-
runtime
Runtime is a piece of code that implements portions of a programming language's execution model.
-
S
Scrum
Scrum is a framework for project management that emphasizes teamwork, accountability and iterative progress toward a well-defined goal.
-
sequence diagram
A sequence diagram is one of the multiple types of system interaction diagrams used within Unified Modeling Language (UML) to visually represent interactions between the objects that live within a system.
-
session ID
A session ID, also called a session token, is a unique identifier that a web server assigns to a user for the duration of the current session.
-
shift-right testing
Shift-right testing is a method of continuously testing software while it is in a post-production environment.
-
smoke testing
Smoke testing, also called build verification testing or confidence testing, is a software testing method that is used to determine if a new software build is ready for the next testing phase.
-
soak testing
Soak testing is a type of performance evaluation that gauges how an application handles a growing number of users or increasingly taxing tasks over an extended period of time.
-
software development life cycle (SDLC)
The software development life cycle (SDLC) is a framework used in project management to describe the stages and tasks involved in each step of writing and deploying the instructions and data computers use to execute specific tasks.
-
Software Process Improvement and Capability Determination (SPICE)
Software Process Improvement and Capability Determination (SPICE) is an international framework to assess software development processes.
-
software requirements specification (SRS)
A software requirements specification (SRS) is a comprehensive description of the intended purpose and environment for software under development. The SRS fully describes what the software will do and how it will be expected to perform... (Continued)
-
software resilience testing
Software resilience testing is a method of software testing that focuses on ensuring that applications will perform well in real-life or chaotic conditions.