Glossary

This page contains a list of often difficult or specialized words, their common abbreviations, and their definitions as used throughout the rest of this website. You can use this as a quick reference, or to share definitions with others. Where applicable, the source material the terminology was retrieved from is included as references.

Glossary hero image

Application Programming Interface

short: API
description:

Specifies a set of software functions that are made available to an application programmer. The API typically includes function names, the parameters that can be passed into each function, and a description of the return values one can expect.

Asymmetric clustering

description:

One machine is in hot-standby mode and does nothing by monitor the other. In case of failure, the hot-standby takes over.

also known as: failover configuration

Asymmetric multiprocessing

description:

Each processor is assigned to a single task. One processor is called the master (or main) processor, and controls the system.

Asynchronous cancellation

description:

Cancellation of a target thread that immediately terminates it. (e.g. Unix’ kill -9 $PID command)

Blade servers

description:

A single chassis with multiple processor boards, I/O boards, and networking boards. Each processor board boots independently and runs its own operating system.

Bootstrap program

description:

An initial program, usually stored on ROM or EEPROM memory, to initialize all aspects of the system.

also known as: bootloader

Bounded buffer

description:

A type of buffer uses with shared memory IPC. Bounded buffers can only use a fixed amount of memory space.

Boyscout rule

description:

The base premise of the Boyscout rule is that if everyone leaves their environment a little bit better than it was when they found it, eventually it will flourish. The term originates from the handbook of the Boyscouts of America, where it was phrased slightly differently to apply mostly to campsites. In software development, the phrase is commonly used to entice programmers to clean up their own messes and the messes that were left behind by their predecessors. This relates strongly to the broken window theory.

Broken window theory

description:

A theory originating from the domain of criminology. The idea being that if an environment is already decayed, people have less ethical problems with making it worse. In the original criminological experiment from the 1990s, researchers measured how long it took for a building to be completely vandalized after breaking a single window. Psychologist believe that outward signs of neglect make us feel that no one cares about the object in question, hence we are not likely to care for it either.

Caching

description:

The storing of information on a faster, smaller storage system than the main memory bank where the data originates from. Cache management is highly important due to the limited size of the faster storage medium. There are different levels of cache-memory, indicating the memory’s proximity to the CPU (lower == closer). As the distance to the CPU increases, so does the available memory space of the cache.

Cascading termination

description:

Some systems terminate all the child processes when they terminate the parent process. This is called ‘cascading termination’.

Conway's Law

description:

Melvin Conway wrote: ‘Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure’. The law originates from the observation that software is built by teams of people who are organized in a specific way. In order to build software effectively, these groups must work together to achieve their shared goal. Therefore, the software produced by these teams will invariably resemble the structure of the teams themselves. As an example, a company with two separate teams working for different departments (invoicing and sales) will likely produce software that is divided into two separate modules, one for invoicing and one for sales. These modules will probably interact with each other along pre-defined interfaces. Much like the teams interact with each other along pre-defined communication channels. If the teams are working in isolation, the software will likely be built in a similar way, with the two modules being designed in a way that allows them to be deployed and changed as independently as possible.

Command Line Interface.

short: CLI
description:

A textual user interface, allowing for system interaction solely through text-based instructions and feedback.

also known as: terminal shell

Clustered systems

description:

Two or more individual systems coupled together, with shared storage and closely linked via a LAN or faster interconnect.

Communication programs

description:

These programs provide the mechanism for creating virtual connections among processes, users, and computer systems. They allow users to send messages to other screens, to browse web pages, to send electronic-mail messages, to log in remotely or to transfer files from one machine to another.

Control card

description:

A batch system concept. This is a command to manage the execution of a process (start, stop, interrupts, …). It can be used to distinct between different error levels, and severity of instructions.

Control program

description:

A control program manages the execution of user programs to prevent errors and improper use of the computer.

Context

description:

  • The circumstances in which an event occurs; a setting.

  • The part of a text or statement that surrounds a particular word or passage and determines its meaning.

Context switching

description:

In computer science: A state save of the current process and the state restore of a different process, when a swap occurs.

CPU registers

description:

Registers are special purpose physical memory used during runtime execution of instruction sets. These registers are usually optimized for their dedicated task. These registers vary in number and type, depending on the computer architecture. They include accumulators, index registers, stack pointers, and general-purpose registers, plus any condition-code information (e.g. status codes). Along with the program counter, the content of these registers must be saved when an interrupt occurs, to allow the process to be continued correctly afterward.

also known as: registry

CPU scheduling information

description:

Information related to task-scheduling on the processor. Usually includes process priority, pointers to scheduling queues, as well as architecture specific information.

Comma-separated values

short: CSV
description:

A commonly used file format to represent tabular data. These files usually start with a line denoting the names of the columns. Each subsequent line is considered to be a data row.

Domain Driven Design

short: DDD
description:

Domain-Driven Design is a set of principles and schemes aimed at creating optimal systems of objects. Reduced to the creation of software abstractions, which are called models of subject areas. These models include business logic that establishes a link between the real conditions of the products’ application area and the code.

Domain-Driven Design is about creating shared understanding of the problem space. This shared understanding is reinforced ubiquitously via conversations, code and diagrams. DDD’s Shared understanding enhances synergy and alignment, increasing the ability to deliver value sustainably — ideally over the lifetime of a product.

Debugger

description:

A program to help the user find and correct defects in their program. The term “bug” originates from one of the original calculation machines at the IBM labs. Notoriously, one of their calculations misbehaved, and the researches were unable to find a logical error in their work. It had turned out an insect wandered into the machinery and disrupted its proper execution. To fix their calculation, one of the researchers had to physically rid the machine of pesky “bugs”, hence coining the phrase “debugging the system”.

Deferred cancellation

description:

Thread cancellation style, in which the target thread is gracefully shut down. The target thread periodically checks whether it should/can terminate, allowing it an opportunity to terminate itself in an orderly fashion. By doing this, it can release any held system resources, and cascade the shutdown command to its children.

Deprecated methods

description:

Methods that are still implemented in the current API, but are marked for removal in the future. Reliance on these methods is generally discouraged.

Desiderata

description:

(singular: Desideratum) Latin for “the things we want”. Occasionally used in software development and program management to make a clear distinction between a “requirement” and a “desired result”. Whereas requirements define the minimum acceptable qualities of a result, approximating our desiderata is often sufficient to call our efforts a success.

also known as: requirements desires wishes

Direct communication

description:

A type of message-passing system, where each process that wishes to communicate with another must explicitly name the recipient or sender of the communication.

Dispatch latency

description:

The time it takes to stop one process and start another one.

Distributed lock manager.

short: DLM
description:

A function that ensures that no conflicting operations occur in clustered systems.

Direct Memory Access

short: DMA
description:

A specific way of organizing memory on a computer system. After setting up buffers, pointers, and counters for the I/O device, the device controller transfers an entire block of data directly to or from its on-buffer storage to memory, with no intervention by the CPU. Only one interrupt is generated per block to tell the device driver that the operation has completed, rather than the one interrupt per byte generated by low-speed devices. While the device controller is performing those operations, the CPU is available to accomplish other work.

Domain Specific Language

short: DSL
description:

A specialized programming language intended to be used in a specific business context. Usually a bespoke language, developed to fit the business context. These languages are created to serve as shorthand for common operations within a business environment (e.g. configuration, creation of new CRUD endpoints, etc.). As a higher-order language, DSLs are generally built on top of existing powerful language stacks, such as Kotlin, Java, Rust, and Typescript. You might see them as specialist programming interfaces, written in such a way that most of the boilerplate and ceremony can be avoided.

Engineering

description:

Engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems.

Fault-tolerant systems

description:

Systems that can suffer a failure but continue to work nonetheless.

First come, first served

short: FCFS
description:

A scheduling algorithm: the first process that requests a system resource will get priority over the others.

File management

description:

Programs that create, delete, copy, rename, print, dump, list, and generally manipulate files and directories.

File modifications

description:

Several text editors may be available to create and modify the content of files stored on disk or other storage devices. There may also be special commands to search contents of files or perform transformations of the text.

Fizz Buzz

description:

Fizz Buzz is a children’s game well known to software developers, as it is commonly used as a training exercise or interview question. The aim is to write a program that counts to a given number. When the current count is divisible by 3, the program should print out Fizz rather than the current count. When the current count is divisible by 5, it should print out Buzz. When divisible by both, we expect Fizz Buzz. The Fizz Buzz exercise aims to gauge basic programming aptitude, such as the use of loops and accumulators.

Fluent API

description:

In software engineering, a fluent interface is an object-oriented API whose design relies extensively on method chaining. Its goal is to increase code legibility by creating a domain-specific language. The term was coined in 2005 by Eric Evans and Martin Fowler.

also known as: chainable methods

Garbage collection

short: GC
description:

The practice of reclaiming memory of objects that are no longer used. Control over the memory is returned to the system, rather than being allocated to a specific program/process.

Graceful degradation

description:

The ability to continue providing service proportional to the level of surviving hardware in the event of a system failure.

Graphical User Interface

short: GUI
description:

A user interface that enables human-to-machine interaction using visual iconography that is more complex than its purely textual CLI alternative.

Heap

description:

Block of memory that is dynamically allocated during process run time. The heap is usually linked to a specific execution environment or process. In certain programming languages, this memory is also referred to as “the stack”.

also known as: stack

Integrated Development Environment

short: IDE
description:

An application that helps you to develop software, by combining useful features and libraries into one single application. These IDEs usually allow you to run your tests and code without needing to leave the comfort of your development environment.

Indirect communication

description:

A message passing system, in which processes send messages to mailboxes, or ports, rather than to a directly addressed recipient. (as opposed to direct communication)

Interrupt Vector

description:

An array which contains the addresses of the interrupt service routines.

Inter-process communication

short: IPC
description:

A mechanism for passing information and data between cooperating processes. There are two fundamental models:

  • shared memory: a region of memory is established for the processes to use
  • message passing: the communication takes place through passing messages between the processes.

Jargon

description:

The specialized language of a trade, profession, or similar group, especially when viewed as difficult to understand by outsiders."_. Its goal is to make the exchange of information more efficient by giving specific names to things that are relevant to the in-group. It is said that the Inuit have over thirty words to differentiate between different types of snow. Other professions, such as software developers, strongly rely on metaphors to refer to technical concepts.

also known as: lingo

Just In Time compiler

short: JIT compiler
description:

A compiler that turns the architecture-neutral byte code into native machine language for the host computer, only when it is needed for execution. An example can be found in the Java programming language, which uses a virtual machine to translate its source code into machine executable instructions.

Kernel mode

description:

One of two modes of operation of a computer system. Opposed to User Mode. When in kernel mode, privileged instructions can be executed. A mode bit, added to the hardware, indicated the current mode.

also known as: root mode elevated access mode

Key Performance Indicator

short: KPI
description:

The critical (key) indicators of progress toward an intended result. KPIs provide a focus for strategic and operational improvement, create an analytical basis for decision-making and help focus attention on what matters most.

Natural order

description:

Elements of a collection (a list, array, …) having a relationship that allows them to be sorted. Mathematically speaking, elements of these collections are said to form a linearly bi-ordered group. A group G is said to be linearly ordered, if and only if it is equipped with a total order <= that is translation-invariant.

In software development, we use this group property in order to sort collections according to a specific order-function. Examples include: “is larger than”, “is smaller than”, “Alphabetical order of first letter”, etc.

Layered approach

description:

A method to make the operating system more modular. The OS is broken up into several layers (as in “layers of a cake”), each of which performing a specific function. The bottom-most layer is said to be the hardware, the top-most layer the user interface. Intermediary layers can be added as needed. Within a layered approach, any layer consumes services from the layer below it and offers services to the one above. Effectively stacking functionality on top of each other.

Refactoring

description:

The process of rewriting software, without changing the way it functions, in order to improve its readability, testability or maintainability.

Sunk-cost fallacy

description:

A psychological trick we play on ourselves, to justify additional investment into a decision, even though there is evidence to suggest that future costs will outweigh the expected benefit. We do this because we feel that we have already invested too much into something to back out now.

Example: “We already spent two months working on getting this software to function properly, we are not going to stop now!” Even though little to no progress has been made.

also known as: Escalation of commitment

Non-Preemptive scheduling

description:

Scheduling that takes place, only when a process switches from running to waiting state, or when a process terminates. In contrast, pre-emptive scheduling can interrupt a process while it is running.

Dispatch latency

description:

The time it takes to stop one process and start another one.

Throughput

description:

The amount of processes that are completed per unit of time.

Turnaround time

description:

The interval of time counted from the moment of submission of a process to the time of completion.

Waiting time

description:

The sum of the periods processes spend waiting in the ready queue.

Response time

description:

The time it takes from the submission of a request until the first result is produced. In specific software development niches, the response time is commonly divided into multiple subcategories, as results are produced incrementally.

As an example, loading a modern web page requires multiple steps, such as loading the HTML, CSS, and JavaScript files, authentication, and backend data retrieval. This results in a significant difference between the time it takes to load the first byte of the HTML file, and the time it takes to render the entire page. What is more, web developers tend to invest into making their partially loaded pages useable for the site’s visitor, even if all the data is not present yet. This response time is known as “time to interactive”.

also known as: Load time Render time Time to interactive First input delay

Selective Perception

description:

The tendency not to notice, and more quickly forget, events and data that do not align with our expectations. This bias is a common psychological phenomenon, and is often used to explain why people tend to ignore or forget information that contradicts their current beliefs or causes emotional discomfort.

also known as: Situational blindness Perceptual defense

Silver Bullet

description:

A simple, magical, solution to a complex problem. The term likely originates from the use of silver weapons in Greek mythology, as they were believed to symbolize purity of heart, and known to bestow divine favour on the person wielding them. Later in history, the use of silver bullets was popularized in folkloric tales about werewolves, vampires, witches, and other monsters. This trope made its way into modern times, where it is used to describe a method that works without fail.

also known as: Cure-all Panacea

Entropy

description:

Entropy is a measure of the amount of disorder in a system. It is a measure of the number of ways in which a system can be arranged, often taken to be a measure of “disorder” (the higher the entropy, the higher the disorder). The second law of thermodynamics teaches us that any isolated system will inevitably tend towards a state of maximum entropy.

Tip: Next time someone asks you why your desk is a mess, you can tell them that you are simply a victim of the laws of physics.

also known as: chaos disorder

Polymath

description:

A person with a wide range of knowledge or learning. The term is often used to describe people who have excelled in multiple fields, and are able to make significant contributions to each of them. Many admired scholars, such as Aristotle, Galileo, Da Vinci, and Isaac Newton, were considered “Polymaths” or “Renaissance men”.

also known as: Renaissance men