Topic: Computer Science

The study of computers, generally applied to digital computers. There might be grounds for considering this to be a misnomer compared to legacy definitions of science.

Algorithm

An abstract set of steps (tasks or logical instructions which may, or may not, include parallelization) having a defined, internally managed set of termination criteria. Contrast with process.  

Application Software

The software that an End User directly interacts with to accomplish some operationally relevant task (“business logic”). Application software is usually specific to an OS, or OS family, but can be written so as to be portable. Application software is sometimes referred to as a “program”, “application program” or, more recently, an “app”. See also... read more  

Business Logic (software)

From the software engineer’s perspective, the sequences and parallel chains of steps taken by an End User to accomplish some operationally relevant task. This term may confuse some interested parties who make a distinction between “business” and some other operationally relevant aspect of their work (e.g., soldiers and engineers, to whom “business” might be a... read more  

Compile

The conversion of software from human-readable form to machine readable form (usually referred to as “object code”).  Depending on the software production strategy and structure of the code being compiled, compilation might, or might not, result in a body of code immediately capable of execution. Contrast with linking, which is sometimes bundled with the compiler,... read more  

Device Driver

Device drivers communicate directly with the hardware, typically by writing values to memory locations and/or registers and handling interrupts. Device drivers are typically called by both the operating system and application software as needed. Depending upon the operating system, device drivers can be managed by the operating system or considered part of the operating system.... read more  

Digital Computer

A computational device based on (usually more than one) hardware implementation of Boolean algebra. These computers require all problems to be cast in the form of 1’s and 0’s, usually through the use of a compiler. Digital computers are vastly more complicated than the analog computers they have (mostly) replaced, but are also vastly more... read more  

DLL Hell

A predicament in which multiple versions of a Dynamic Linked Library (dll) must be present in order to support multiple linking operations at run-time, couple with an incompletely managed system of defining their applicability by the various pieces of Application Software. The term is actually specific to a certain dominant OS, the concept is broadly applicable.  

Embedded Software

Software that is dedicated to the control of (and usually hosted within) hardware which itself has one or more functions allocated on the basis of a specific End Use. Such hardware is typically not “general purpose”; true embedded software has no functionality other than that required to ensure the correct operation of the hardware (including,... read more  

Endian

In computing, the order in which data are stored: whether “least significant bit”is on the left or right end of a memory address. The two orders are referred to as (you guessed it!) “Big Endian” and “Little Endian”. Some computers do it one way, some do it the other. If we want them to communicate,... read more  

Executable (software)

An image of 1’s and 0’s that is loaded into RAM and actually processed (“executed”) by a digital computer. Contrast with Source Code and Object Code.  

Firmware

Practical, but unofficial definition: data and instructions compiled, or capable of being compiled, into machine readable form such that it can execute without transfer (“loading”) from its on-device storage memory. (i.e., it executes in the same memory address space where it is stored). A computer’s BIOS is a good example of firmware.  

Information Technology

A ten-dollar turn of phrase having a catchier sound than “computers and networks and stuff”.  

Linking (software)

The process of stitching together pieces of object code so that all calls to sub-routines point to exactly one location in one piece of object code (“references have been resolved”). Linking results in executable code. Linking can be either static (resolved before run-time), or dynamic (resolved at run-time). Dynamic linking permits asynchronous changes between code... read more  

Memory Address

A specific location in a memory space, having a size determined by the computer and (often) the OS.  

Memory Space

The list of (usually contiguous) memory addresses available to a process.  

Middle-ware

Software that manages communication between (possibly dissimilar) computers. Examples of middle-ware functions include data type abstraction, data marshalling, endian swaps and network abstraction so that the computers on all sides correctly interpret the raw data when presented to them. From the perspective of the programmer, middle-ware can be a special case of Application Software, supporting... read more  

Object Code

Machine-readable code produced as by compilation. May, or may not, be executable depending on whether linking is required in order to resolve all sub-routine calls.  

Object-Oriented

A conceptual design-organizing approach that packages an entity’s functionality with other features. The term was (apparently) invented for Software development, but the description exactly corresponds to legacy System Engineering practices with regard to identification and population of Specifications, Drawings, and ICD’s to define CI’s. Many software environments ascribe additional characteristics to this notion. For the... read more  

Operating System (OS)

Software (which might be implemented as firmware) used by a computational device to manage the hardware and provide a logical interface for Application Software to request I/O services or task management services. By itself, an OS (e.g., Unix, Windows, Linux) usually has little utility to an End User until application software is installed. An OS typically functions... read more  

Pointer

In the context of Computer Science, a “pointer” is a way to store the “memory address” at which real information is stored.  Among other uses, programmers employ it when the memory resources are not all allocated when the executable is loaded. In many programming languages, pointers sort of inherit the data type of the data... read more  

Portable (Software)

In software development, Application software that can be compiled to run unchanged on any of several different operating systems. If an application is not portable, the source code must be changed in order to be compiled for a different operating system than it was originally written for. There are degrees of portability depending on the... read more  

Process

In the vernacular, a repeatable activity or repeatable set of interrelated activities that collectively create a set of one or more outputs from a set of one or more inputs. A set (which may, or may not, include parallelization) of steps (tasks or logical instructions) not necessarily having a defined, internally managed set of terminating criteria.... read more  

Service

In software usage, a process executing without any specific login and, therefore, available to execute commands at the behest of other processes. In the Linux world, also called a “daemon”. In the early (non-multi-tasking) days of DOS, also referred to as “fork off and die”, which immediately leads to an unfortunate recommendation made to certain... read more  

Service Oriented Architecture (SOA)

A conceptual approach to software development emphasizing (+/- maximizing the use of) services (definition 1) as opposed to vertically integrated application software.  

Software

Practical, but unofficial definition: data and instructions compiled and linked, or capable of being compiled and linked, into machine readable form such that the resulting executable must be loaded into an OS-controlled memory space in order to run. (i.e., it executes in a different memory space than where it is stored).  

Software Version Description (SVD)

A document (not a drawing) that describes a particular release of software, along with the instructions for installing it and adapting it to some specific locale or usage.  

Software Version Description Drawing (SVDD)

In some companies, combines the characteristics of an SVD and a SID into a single drawing type.  Not currently found in ASME Y14.24.  

Source Code

Human-readable software, prior to compilation.  

Tool (Programming)

Software, which may be Application Software from the perspective of the original programmer that assists in the development of other software without being part of said other software. Examples include programming environments and compilers. A collection of programming tools used in sequence is sometimes referred to as a “tool chain”.  

Utility (Software)

A type of software (which may, or may not, be Application Software from the perspective of the original author) performing general purpose tasks (e.g., coordinate system conversion) considered standardized to the point of not requiring End Use-specific validation.