Software Design/Glossary

This is a glossary of terms used in the Software Design research project. The primary terms shall be used for consistency across all pages in the project.

The terminology is not aligned with any single programming language, though it's biased towards terms used in object-oriented programming.


 * Field: property, element
 * Variable: field (in some contexts, variable may mean either a field, a parameter, or a local variable), property, constant, parameter, declaration
 * Collection: container, array, data structure
 * Function: method, procedure, routine, subprogram
 * Anonymous function: lambda, closure
 * Class: (data) structure, type, typeclass, interface (in some contexts, class may mean either a class or an interface), trait, component, source code file, component, page
 * Exception: error, panic, failure
 * Abstract class: interface (as in C#, Java, and Go; not to be confused with interface as a shared boundary between dependency and dependent software, and between software and its non-software users: humans and systems), class, (abstract) (data) type, typeclass, trait.
 * Package: module, namespace, unit, source code directory. The term module is used more widely in modern programming languages than package, but it's avoided because in Java "module" means something different and therefore it may be confusing.
 * Patch: pull-request
 * API: a specific method prescribed by a computer operating system by which a software programmer while writing an application program can make requests of the operating system or another application.