Glossary

A dictionary of the terminology common in software development.

A

Agile Software Development

Agile software development refers to the methodology of delivering incremental improvements continuously to adapt to market demand.

Alpha Testing

Alpha testing is the process where developers and QA teams within the organization test the app to identify bugs and missing features.

Asynchronous Programming

Asynchronous programming is a programming model where operations take place in a non-sequential fashion.

B

Backtracking

Backtracking is a method solving constraint-based problems incrementally while abandoning paths that verifiably fail to satisfy constraints.

Beta Testing

Beta testing is the second level of testing in which users outside the organization test the application and report bugs or request features before releasing it to a broad audience.

Blackbox Testing

The process of testing a software without knowing the internal structure of code or program.

C

Code Refactoring

Refactoring is the process of editing code to reduce or eliminate technical debt, generally undertaken to reduce code smells.

Code Smell

A code smell is an occurrence of poor patterns that indicate more profound issues with the system design and necessitate refactoring.

Command Line Interface (CLI)

A command-line interface, often abbreviated as CLI, is a computer interface where the primary form of input and output is text.

Continuous Delivery

A software development practice of ensuring that latest changes to software are deployable at any time.

Continuous Integration

A development practice in which changes to code are integrated in a shared repository frequently, multiples times a day preferably.

Continuous Quality

Software engineering practice in which isolated code changes are immediately analyzed to detect defects before they are added to the code base.

Cross Browser Testing

Cross browser testing is the process of testing a web app frontend on different browsers and versions to ensure it works as intended.

Cyclomatic Complexity

Cyclomatic complexity is the maximum number of linearly independent paths through which control may flow in a program.

D

Data abstraction

Data abstraction is a principle of data modeling theory emphasizing separation between the external interface and internal implementation.

Dependency Graph

A dependency graph is a directed graph that describes the dependency of an entity in the system on the other entities of the same system.

Domain Name System (DNS)

Domain name system (DNS) maps a human-friendly domain name to the corresponding IP address and stores other domain-related info.

Dynamic Analysis

The process of analyzing a computer software by executing the program in real-time.

Dynamic Programming

Dynamic programming improves recursive algorithms with approaches like memoization (top-down) or tabulation (bottom-up).

E

Exception Handling

Exception handling is the process of dealing with error conditions in a program when they occur to prevent the app from crashing.

F

Functional Programming

A declarative programming style that treats computation as the evaluation of mathematical functions.

G

Git

Git is a free and open-source, secure, distributed version control system designed to achieve speed and efficiency even in large projects.

I

IDE

An IDE (integrated development environment) is a kind of application that facilitates software developers in writing code.

Incremental Development

A method of software development where the product is designed, implemented and tested incrementally until the product is finished.

Iterative Development

A method of software development where a rudimentary version of the entire product is iterated on multiple times to get the final product.

J

JSON

JSON (JavaScript Object Notation) is a standard data interchange format used to transmit and store serialized data as text.

M

Machine Learning (ML)

Machine learning (ML) is the study of algorithms and models that learn from large data sets and make predictions or decisions on new data.

O

Object-Oriented Programming

Object-oriented programming is a programming paradigm built on the concept of objects that contain both data and code to modify the data.

P

Pair Programming

Pair programming is a technique in which two programmers, a driver, and an observer, write code in collaboration on the same workstation.

Performance Testing

Performance testing is a form of testing that tests the speed, response time, and resource usage of software under a particular workload.

Procedural Programming

Procedural programming is a programming paradigm built around the idea that programs are sequences of instructions to be executed.

Pseudocode

Pseudocode is a plain language description of a computer program intended to be understood by a human rather than executed by a computer.

R

Rapid Prototyping

Rapid prototyping is the process of iterating prototypes from low to high fidelity in fast feedback loops involving extensive user reviews.

Reactive Programming

Reactive programming is a declarative paradigm that is primarily concerned with the propagation of change in data to all its consumers.

Regression Testing

The process of re-running functional and non-functional tests to verify the correctness of a software after a change.

S

Smoke Testing

The process of testing to cover major functions of the software but none in depth.

Software Rot

Slow deterioration of software performance over time leading to software becoming buggy and unusable.

Spaghetti Code

Spaghetti code is a pejorative term for unstructured code that is difficult to understand and maintain.

Static Analysis

The process of analyzing a computer program to find problems in it without actually executing it.

Structured Programming

Structured programming is composing programs as sequences of blocks with a single entry and exit points, making them easier to understand.

T

Taint analysis

Taint analysis is an information security process used to trace the flow of user input through a system to see the security implications.

Technical Debt

Quantification of the implied cost of additional maintenance work in future caused by making trade-offs now to deliver software faster.

Test Coverage

Test coverage is a measure of the degree to which the test suite executes the source code of a program.

Test-Driven Development (TDD)

Test-driven development is the practice of writing tests before the code, where the test suite acts as the specification of requirements.

U

Unit Testing

The process of breaking down a program into pieces, and subjecting each piece to a series of tests.

Usability Testing

Usability testing is a test of whether users can accomplish their target actions by finding and accessing the features in the software.

User Acceptance Testing

User acceptance testing, one of the testing steps, checks whether a software application serves the end users' requirements.

V

Version Control System (VCS)

Version control systems are software used to manage changes to a codebase over time to recall specific versions later.

W

Waterfall Methodology

Waterfall development refers to the methodology of delivering large-scale improvements after more extended development periods.

Web Framework

A web framework is a software library that enables developers to write software that runs on the web.

Whitebox Testing

The process of testing a software based on an analysis of the internal structure of the component or system.

X

XML

XML (Extensible Markup Language) is a markup language for encoding documents and transmitting and storing serialized data.

Y

YAML

YAML (YAML Ain't Markup Language) is a human-readable and human-writable data interchange format for storing and transmitting the information.

Ship clean and secure code.