Collection of abbreviations and things that I've come across in my daily work. Just as a reminder to myself.

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z

two-phase commit
a set of principals, focussing on maintenance instead of production, one of the major pillars of TPM.
  • Seiri (sort), know where things are, suitable naming
  • Seiton (systematize), stuff where you expect to find it
  • Seiso (shine), clean crap up
  • Seiketsu (standardization)
  • Shutsuke (self-discipline), follow guidelines, reflex on your work, be willing to change
Agile Acceptance Testing
Atomicity, Consistency, Isolation, Durability. Are transactional properties of database management systems.
Anemic Domain Model, considered an anti-pattern by some, (data) objects contain state and setters and getters, all logic implemented in higher layer ("Service" layer). See RDM and Procedural programming. See also here.
Advanced Encryption Standard, uses a a symmetric-key algorithm. Seems to be a good current standard (19/01/2014).
ordinary composition, but it does not imply ownership. For example duck-pond.
Access and Identity Management, see idM.
Asynchronous JAvascript and XML, though people prefer JSON to XML nowadays. JavaScript (on client) calls server resource using XMLHttpRequest, uses the response to dynamically alter the dom. Also AJAX.
Allman, Eric
I prefer his curly bracing and indentation style, that's all
American National Standards Institute
Aspect Oriented Programming, handles cross-cutting concerns preventing boiler-plate code. A good example are Java Annotations. See also AspectJ.
Automatic Resource Management, official name for the JDK7 resource declaration in the try of a try-catch-finally block that makes the resource automatically close neatly upon completion or errors.
Application Programming Interface
American Standard Code for Information Interchange, a coded character set (e.g., hexadecimal value 41 is assigned to “A”).
Abstract Syntax Notation One, a standard and flexible notation that describes rules and structures for representing, encoding, transmitting, and decoding data
Abstract syntax tree, a tree representation of the abstract syntactic structure of source code written in a programming language, see concrete syntax trees (also called parse tree) for the more general version.
Andrew Stuart (Andy) Tanenbaum, American computer scientist and professor emeritus, author of MINIX. His debate with Linus Torvalds is famous. See MINIX and Linus Torvalds.
Acceptance Test-Driven Development, also called BDD, SBE, AAT, ST. See SBE for a more general term.
business to business
backwards compatible
it means the new stuff is new, but can still work with old stuff. See also "deprecated".
Basically Available Soft-state (or Scalable) Eventually Consistent, replaces ACID for Internet systems
Binary Coded Decimal, use 4 bits to express a decimal digit, from 0000 (0) to 1001 (9) effectively not using numbers 10-15.
Behaviour Driven Development, see SBE for a more general term.
Benevolent dictator for life
binary digit
Bean Managed Persistence, deprecated, use JPA instead. Though JDO might be an option.
bean-managed transactions
Backus Normal Form or Backus–Naur Form, a syntax for describing the grammar of computer languages. See EBNF.
Böhm-Jacopini theorem
See structured programming theorem.
Boyscout Rule
we should leave the code cleaner than we found it (paraphrased from "Leave the campground cleaner than you found it."). See Uncle Bob.
Business Process Management
branch predictor
a digital circuit that tries to guess which way a branch (e.g. an if-then-else structure) will go before this is known for sure. The purpose of the branch predictor is to improve the flow in the instruction pipeline. Branch predictors play a critical role in achieving high effective performance in many modern pipelined microprocessor architectures such as x86.
broken windows theory
a criminological theory of the norm-setting and signaling effect of urban disorder and vandalism on additional crime and anti-social behavior. The theory states that maintaining and monitoring urban environments to prevent small crimes such as vandalism, public drinking and toll-jumping helps to create an atmosphere of order and lawfulness, thereby preventing more serious crimes from happening. Applies to source code as well. Well structured, insightful source code will bring the best out in fellow programmers, who have a need to change it. See "Boyscout rule".
Basic Security Profile, was defined by the WS-I organization as an extension to the Basic Profile of web service interoperability.
Any process or organization that sacrifices intelligence and rational thought in favour of administrative red tape.
Certificate Authority or Certification Authority, an entity that issues digital certificates
callback hell
trying to write asynchronous code imperatively, causes a pyramid shape with lots of nesting.
words or phrases, without spaces, where each new word starts with a capital. The first letter is either lower or uppercase.
CAP (Theorem)
Consistency, Availability, Partition tolerance. Only two out of three are possible. (Brewer)
Cargo cult programming
a style of computer programming that is characterized by the ritual inclusion of code or program structures that serve no real purpose
Continuous Delivery. Continuous Integration extended to the Deployment activity. See CI.
Context and Dependency Injection, puts a dependency (some object/resource) which an object requires into the object, without the objects knowledge, with a contract that it behaves in a way that the object expects. Promotes loose coupling. See IoC.
the practice, in software engineering, of merging all developer working copies with a shared mainline several times a day. It was first named and proposed as part of extreme programming (XP).
blueprint or prototype from which objects are created (instantiated).
Class Invariant
an invariant used to constrain objects of a class. Methods of the class should preserve the invariant. The class invariant constrains the state stored in the object. In other words, class invariants make sure the state of an object stays consistent during the lifetime of the object.
clothesline paradox, the
If you put your clothes in the dryer, the energy you use is measured and counted. But if you hang them on the clothesline to be dried in the sun, the energy saved disappears from our accounting. Hence, when you see a graph showing that only a measly 1% (or so) of energy created is solar energy, remember the clothesline.
Capability Maturity Model. See CMMI.
Capability Maturity Model Integration. Five levels, level 1 Initial, level 2 Managed, level 3 Defined, level 4 Quantitatively Managed, level 5 Optimizing
Container Managed Persistence, deprecated. Replaced by JPA
Container Managed Transactions, like the name says.
code smell
any symptom in the source code of a program that may indicate a deeper problem. Not necessarily bugs, but likely indicative of bad design.
the degree to which each program module relies on each one of the other modules. Contrasted with Coupling. Always strive for low coupling and high cohesion. See Coupling.
a class that contains other (different) classes. There is a direct relationship between the two, in that the owner has ownership and the classes owned cannot exist without the owner. For example car-steeringwheel. See aggregation.
composition over inheritance
HAS-A relationship gives more flexibility over an IS-A relationship. Though the inheritance strategy can simply use the methods from the superclass, without having to redefine them.
contract oriented programming
software development based on Hoar triples (:{P} A {Q}). Meaning that state P must hold before executing method A. State Q most hold after executing method A.
In those cases where a certain class can be used, or one of its Superclasses, for example where a Cat class is used, one can also use the Animal superclass. See covariance.
convention over configuration
yes, you can configure and tweak every little bit you want, however, if you don't, there's the sane defaults that work out-of-the-box. Also known as Configuration by Exception
Conway's Law
organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations. Named after computer programmer Melvin Conway, who introduced the idea in 1968.
Common Object Request Broker Architecture
Cross-origin Resource Sharing, the "official" version of JSONP
the degree to which the elements of a module belong together. Thus, it is a measure of how strongly related each piece of functionality expressed by the source code of a software module is. Contrasted with Cohesion. Always strive for low coupling and high cohesion. See Cohesion.
means a subclass can be substituted for a class. A Cat class can be used where an Animal class is expected. See Liskov Substitution and contravariance.
Certification Practice Statement, legal document that describes how the Certificate Authority manages the certificates it issues
continuation-passing style, asynchronous programming by providing callbacks.
Command Query Responsibility Segregation, means that the storing of information and the reading of information are separated in the implemention by two different modules.
Create - Read - Update - Delete, the four universal things to do to a data object.
data access object
Domain Administration Server, an instance of Glassfish for example.
database normalization
The process of organizing the fields and tables of a relational database to minimize redundancy. A typical example of normalization is that a unique ID is stored everywhere in the system but its name is held in only one table.
database management system
Data Control Language, access rights (GRANT/REVOKE)
Double Checked Locking, used in singletons to prevent having to synchronise. Avoid! Either synchronise or initialise at start of application.
deployment descriptor
Domain-Driven Design, primary focus is on the domain and the domainmodel/logic. Requires domain experts.
Data Definition Language, for defining data structures in a database (CREATE TABLE as an example)
distributed DoS. See DoS.
De Morgan's Laws
a pair of transformation rules applicable to boolean logic. To be specific, an "AND" operation ("conjunction") can be transformed in an "OR" operation ("disjunction"), and vice versa.
describes a situation where two or more threads are blocked forever, waiting for each other.
Declarative programming
describes what computation should be performed and not how to compute it. See Imperative programming.
one object relying upon another to provide a specified set of functionalities. In research, this is often referred to as consultation or as aggregation in modeling. It has been argued that delegation may in some cases be preferred for inheritance to make program code more readable and understandable.
Demeter, Law of
See 'Law of Demeter'.
an attribute applied to a computer software feature (characteristic or practice) to indicate that it should be avoided, often because it has been superseded. Support for this computer software feature will soon be dropped. In new versions the computer feature might not even be present.
Data Encryption Standard, deprecated. See TDES.
design pattern
software design pattern, a general reusable solution to a commonly occurring problem within a given context in software design.
(a portmanteau of "development" and "operations") a concept dealing with, among other things: software development, operations, and services. It emphasizes communication, collaboration, and integration between software developers and information technology (IT) operations personnel. DevOps is a response to the interdependence of software development and IT operations. It aims to help an organization rapidly produce software products and services.
See CDI.
Dependency Inversion Principle, high and low-level classes should depend on abstractions (interfaces). See also IOC. It's the D in SOLID. See also SOLID.
Data Manipulation Language, for managing data in a database (UPDATE TABLE as an example)
Demilitarized zone, a physical or logical subnetwork that contains and exposes an organization's external-facing services to a larger and untrusted network, usually the Internet. The purpose of a DMZ is to add an additional layer of security to an organization's local area network (LAN)
you buy food for the dog, you have no idea if he likes it. If you're a programmer of Frameworks/Libraries/etc 'Eat your own dogfood.'
Document Object Model, convention for interacting and representing objects in xhtml, html and xml. Very heavily used by javascript.
Denial-of-service attack, an attempt to make a machine or network resource unavailable to its intended users. Usually by swamping the machine with bogus requests
"Do One Thing And Do It Well". One of the core tenets of the Unix Philosophy.
Don't Repeat Yourself (also known as DIE - Duplication Is Evil)
Dynamic systems development method, one of a number of Agile methods for developing software and non-IT solutions, and it forms a part of the Agile Alliance
Domain Specific Languages
Development, Testing, Acceptance and Production.
Data Transfer Object, an object that carries data between processes in order to reduce the number of method calls. No behaviour, only storage and retrieval. Advantages are that data can be prefetched in session/transaction before delivering it to the presentation layer, and it also adds the benefit that changes made to the data in the presentation layer have no effect. See DAO.
distributed transaction processing
"When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.", addendum from me: even if it isn't a duck, because I don't care, as long as it has the functionality I need.
Enterprise Architecture
  1. a method and an organizing principle that aligns functional business objectives and strategies with an IT strategy and execution plan. (Oracle Enterprise Architecture)
  2. A formal description of a system, or a detailed plan of the system at component level, to guide its implementation (source: ISO/IEC 42010:2007).
  3. The structure of components, their inter-relationships, and the principles and guidelines governing their design and evolution over time. (The Open Group)
Easier to Ask Forgiveness than Permission, see ducktyping
Enterprise application integration, the use of software and computer systems architectural principles to integrate a set of enterprise computer applications.
Enterprise ARchive, package of a JEE Application.
Entity–attribute–value model, a data model to describe entities where the number of attributes (properties, parameters) that can be used to describe them is potentially vast, but the number that will actually apply to a given entity is relatively modest (high "attribute volatility")
Extended Backus Backus–Naur Form, a syntax for describing the grammar of computer languages. Less lengthy than BNF. See BNF.
Enterprise Content Management, management of unstructured information within an enterprise, usually comprised of a large variation of possible documents/records/archives/etc.
Enterprise Information System, a resource for your application, usually a database
Enterprise Java Bean, an JEE application component
emergent design
the mistaken idea that without planning up front, but by delivering small pieces of well-tested functionality and afterwards refactoring/merging of common areas, magically an efficient design will emerge.
Expression Language
elvis operator
"?:", a binary operator that returns its first operand if that operand is true, and otherwise evaluates and returns its second operand. It is a variant of the ternary conditional operator, ? :, found in those languages (and many others): the Elvis operator is the ternary operator with its second operand omitted. So named because it resembles an Elvis emoticon.
entity–relationship diagram of an entity–relationship model, a data model for databases
enterprise resource planning
Enterprise Service Bus, software architecture model, special case client-server, promotes asynchronous message oriented design between applications in complex networks. See SOA. Also jokingly referred to as Enterprise Spaghetti Bus.
ETL tools
Extraction, Transformation and Load, used for moving/copying data from one place/format to another.
Execute Around Method
software pattern, where several pieces of arbitrary code need to be executed within some boilerplate-like code. Usually implemented using boilerplate code that accepts a lambda/closure.
expression problem, the
in object oriented languages it is easy to extend/create new objects, in functional languages it is easy to extend/create new methods. Both have advantages and disadvantages. Combining the two characteristics in one programming language is a problem though.
an open source Web template system under the Apache license and the default view handler technology (aka view declaration language) for JavaServer Faces (JSF)
feature creep
Also known as creeping featurism or featuritis. The ongoing expansion or addition of new features in a product, such as in computer software. Has the negative connotation of over-complicating the original design, adding features that are not part of the function of the software or provide no additional value to the users of the software.
threads in userspace, prevents inefficient context switching when some fibers are blocked
Free and open-source software
fluent interface
expressive coding technique, see FluentInterface
Flash of Unstyled Content, instance where a web page appears without style briefly, because stylesheet hasn't been loaded yet.
Fowler, Martin
a British software engineer, author and international speaker on software development, specializing in object-oriented analysis and design, UML, patterns, and agile software development methodologies, including extreme programming.
File Transfer Protocol
Fear, Uncertainty, and Doubt, spreading of rumour, lies or misinformation regarding a product due to poor knowledge of said product and/or because it's a competing product. Usually in an attempt to influence perception.
Functional programming
uses functions instead of state/data.
General Availability, software version that is live in the field and in production. See also RC.
geographic information systems (think Google maps)
glob patterns specify sets of filenames with wildcard characters, particular in a Unix-like environment.
God Facade
A Facade(Boundary/Gateway) that cannot make up its mind if it's SOA oriented or Domain object oriented. Usually identified by a huge number of methods, of which some are almost but not entirely alike and where several methods need to be called to complete a single process.
Gang of Four, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, best known for their book "Design Patterns: Elements of Reusable Object-Oriented Software"
Google core java library (
Graphical User Interface, the whole point-clicky thing
"#!", character sequence at the beginning of a file identifying the file as a script. The file can be run directly, if set to executable.
Hypermedia as the Engine of Application State, no fixed interface or IDL defined, decouple client and server. Basically, the server returns URLS that allow the client to "dig deeper" without knowing specifics and allow the server to expand functionality without influencing the client. Part of the REST architecture (See REST, IDL). Do people actually use this acronym?
Human-Computer Interface
Bug that disappears when changing code to add print/log statements
experience-based techniques for problem solving, learning, and discovery that give a solution which is not guaranteed to be optimal. See design pattern.
Hoare logic/triple
{P} C {Q}, where P and Q are assertions and C is a command. P is named the precondition and Q the postcondition: when the precondition is met, executing the command establishes the postcondition. Developed initially by C.A.R. Hoare.
Hofstadter's Law
Self-referential law regarding the time it takes to do stuff. "It always takes longer than you expect, even when you take into account Hofstadter's Law."
Hollywood Principle
"Don't call us, we'll call you", because implementations typically rely on callbacks. See IoC.
Hibernate Query Language, a superset of JPQL.
HyperText Markup Language
HTTP over Secure Socket Layer (SSL) protocol
Hyper-Text Transfer Protocol
Huffman encoding
an entropy encoding algorithm used for lossless data compression
a piece of computer software, firmware or hardware that creates and runs virtual machines.
internationalization, where 18 stands for the number of letters between the first i and last n in internationalization. Making software suitable for multiple languages. See NLS and L10n.
Interface Definition Language
Identity management, describes the management of individual identities, their authentication, authorization, roles and privileges within or across system and enterprise boundaries with the goal of increasing security and productivity while decreasing cost, downtime, and repetitive tasks.
if it hurts, do it more often.
a phrase used in agile methodology, referring to putting things off will increase the pain many fold (because more needs to be done).
Immediately-invoked function expression, design pattern in javascript to make use of function scope to prevent polluting the global namespace.
Internet Inter-ORB Protocol. See CORBA.
classes can inherit attributes and behavior (i.e., previously coded algorithms associated with a class) from pre-existing classes called superclasses or parent classes. The new classes are known as subclasses or child classes. The relationships of classes through inheritance gives rise to a hierarchy. See delegation.
Internet Message Access Protocol
Imperative Programming
define sequences of commands for the computer to perform. See Declarative programming.
spreading out stuff among multiple things, in an alternating fashion. Used to improve the performance of forward error correcting codes. Interleaving creates a more uniform distribution of errors, given the fact that pockets of errors can occur together if the single medium at that point becomes weak.
if neither covariance nor contravariance is supported. See covariance, contravariance.
Inversion of Control, no central control, business knowledge incorporated by the responsible entity and preferably nowhere else.
Internet of Things.
Identity, Policy and Audit (basically authentication and authorisation of users, primarily linux/unix based)
International Organization for Standardization, see OSI.
Interface segregation principle, several interfaces is better than one big interface. I find it similar to SRP. The I of SOLID. See also SOLID.
Information Technology Infrastructure Library, 5 books on ITSM, Service Strategy, Service Design, Service Transition, Service Operation, Continual Service Improvement
Information Technology Service Management
Java Authentication and Authorization Service, Java implementation of PAM.
Java ARchive, for packaging resources/classes/xmlfiles and the like.
aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, a programming language. JavaScript's popularity is due entirely to its role as the scripting language of the WWW.
Java Architecture for XML Binding
Java API for XML Processing, fairly low-level adaptable XML parser API, can work with multiple parsers.
Java API for XML Registries, a standard API for Java platform applications to access and programmatically interact with various kinds of metadata registries over the Web via XML.
Java API for XML-based RPC, deprecated. The new name is JAX-WS. See also JAX-WS.
Java API for RESTful Web Services, see REST
Java API for XML Web Services, so SOAP XML like etc using JAXB. Also provides Client APIs.
Java EE Connector Architecture, Java-based technology solution for connecting application servers and EIS as part of EAI solutions
Java Cryptography Extension
Java DataBase Connectivity, but not really.
Java Development Kit
Java Data Objects, POJOs with Persistence without ORM.
Java Enterprise Edition
Java Language Specification
Java Memory Model, seriously complicated stuff
Java Message Service, supports Point-to-point and Publish and subscribe. Not Request and Reply. See MOM.
Java Management Extensions, Java technology that supplies tools for managing and monitoring applications, system objects, devices (e. g. printers) and service oriented networks. Those resources are represented by objects called MBeans (for Managed Bean)
Java Naming and Directory Interface
Java Native Interface, used to call and be called to/from other applications not necessarily java.
Java Network Launching Protocol, 'Java Web Start'
Java Persistence API
Java Persistence Query Language, SQL for OO
Java Runtime Environment
Java Remote Method Protocol, the Java technology-specific protocol for looking up and referencing remote objects. It is a wire level protocol running at the level under Remote Method Invocation (RMI) and over TCP/IP.
Java Software Development Kit
Java Server Faces, web app framework on top of jsp, though Facelets are now the default. Creates templates and descriptions using xml. See JSP
Job Specification Language used for Java Batch
Java Specification Request, new feature requests in the Java and JEE language/frameworks.
Java Script Object Notation
JSON with Padding
Java Server Pages, java servlets in template form
Java Standard Tag Library
Java transaction service, a specification for building a transaction manager that maps onto the Object Management Group (OMG) Object Transaction Service (OTS) used in the Common Object Request Broker Architecture (CORBA) architecture
Java Transaction API, enables distributed transactions to be done across multiple X/Open XA resources in a Java environment
Java Virtual Machine, runs a java bytecode program.
Japanese for "good change". The word Kaizen in English is typically applied to measures for implementing continuous improvement.
Knowledge Discovery in Data, a better known name is Data Mining
Kernighan, Brian Wilson
Canadian computer scientist who worked at Bell Labs alongside Unix creators Ken Thompson and Dennis Ritchie, one of the first Prophets
Keep It Simple, Stupid
Kernighan & Richie, also known as the first Prophets
Kernel-based Virtual Machine
localization, where 10 stands for the number of letters between the first L and last n in localization. Making software suitable for multiple locations (with different languages/dialects/etc). See NLS and i18n.
an operator used to denote anonymous functions or closures, following the usage of lambda calculus
Law of Demeter
loose coupling, only talk to direct friends, don't talk to strangers
Lowest Common Denominator, pick the one with the fewest features, so it works on everything.
LeBlanc's Law
"Later equals never". The law is attributed to Dave LeBlanc.
According to the Angular guidelines, it stands for:
  • Locating code is easy
  • Identify code at a glance
  • Flat structure as long as we can
  • Try to stay DRY (Don't Repeat Yourself) or
Linus Torvalds
a Finnish-American software engineer, who is the creator of the Linux kernel and for a long time, principal developer. He also created the distributed revision control system git.
A thread often acts in response to the action of another thread. If the other thread's action is also a response to the action of another thread, then livelock may result. As with deadlock, livelocked threads are unable to make further progress. However, the threads are not blocked — they are simply too busy responding to each other to resume work.
A concurrent application's ability to execute in a timely manner
Lines of Code, meaningless statistic to impress people, used to be used to measure developer productivity, but now deprecated (by me).
Least Recently Used, caching algorithm
Lean Software Development. See TPS.
Liskov substitution principle, L in SOLID. See also SOLID.
Lempel–Ziv–Welch, a universal lossless data compression algorithm created by Abraham Lempel, Jacob Ziv, and Terry Welch.
hidden program complexity (of a sort that makes the way the source code works very hard to understand.) begind a simple interface. I do not approve of magic.
a software project management and comprehension tool, can manage a project's build, reporting and documentation from a central piece of information.
Managed Beans, see JMX
Method Chaining
methods of an object return the object itself, enabling methods to be chained together, like customer.newOrder().with(6, "TAL").with(5, "HPK").skippable().with(3, "LGV").priorityRush(); See also fluent interface.
a POSIX-compliant, Unix-like computer operating system based on a microkernel architecture created by Andrew S. Tanenbaum for educational purposes.
a class that provides some functionality to be inherited or used by its subclasses, but is not meant for instantiation, also known as an abstract class. It is a means to collect common functionality at a higher level.
Multidimensional On Line Analytical Processing, uses "cubes".
Message-Oriented Middleware, a common reliable way for programs to create, send, receive and read messages in any distributed Enterprise System.
monkey patch
a way for a program to extend or modify supporting system software locally (affecting only the running instance of the program).
Must Have, Should Have, Could Have, Won't Have
Most Recently Used, caching algorithm
Mean Time Between Failures, MTTF + MTTD + MTTR, but an average ofcourse.
Message Transmission Optimization Mechanism, a more efficient way of sending binary data to/from webservices. Usually SOAP uses conversion to tekst, which is inefficient for large files. See XOP.
Mean Time Till Diagnose
Mean Time Till Failure
Mean Time Till Repair
mushroom management
keep them in the dark, feed them ...dung, watch them grow
Model–view–controller, is often seen in web applications where the view is the HTML or XHTML generated by the application. The controller receives GET or POST input and decides what to do with it, handing over to domain objects (i.e. the model) that contain the business rules and know how to carry out specific tasks such as processing a new subscription, and which hand control to (X)HTML-generating components such as templating engines, XML pipelines, Ajax callbacks, etc.
Multiversion concurrency control, in databases it means that updates/deletes on a table, obsoletes the old values and creates the new (timestamped) version. It allows for PITR and snapshots and ACID (without many locks).
Model–view–presenter, software engineering design and architectural pattern
Model View ViewModel, an architectural pattern used in software engineering that originated from Microsoft as a specialization of the Presentation Model design pattern introduced by Martin Fowler.
Model-View-Whatever, AngularJS is such a framework that uses it. See also, ha ha only serious.
measurement unit for arrogance, in computer science. See Edsger W. Dijkstra
Non Functional Requirements, for example security.
National Language Support or Native Language Support. Making software suitable for multiple locations/different languages. See i18n and L10n.
non-reifiable type
non-reifiable types are types where information has been removed at compile-time by type erasure. See reifiable and type erasure.
(Database) normalization
a database schema to minimize redundancy and dependency, for example by using autoincrement keys as pks, and not storing the same data in several tables. For the reverse, see OLAP.
not a RDBMS, but more a 'structured storage' system of which RDBMSes are a subset. Usually not totally ACID. (See RDBMS, ACID)
NullPointerException, the Bane of Existence for any Java Programmer.
an instance of a class containing both state (attributes/properties) and logic (methods), as a coherent entity.
Open - Closed Principle. The O in SOLID. See also SOLID.
Odersky, Martin
Professor at EPFL and creater of the Scala programming language.
On Line Analytical Processing, de-normalized data in a database, periodic in nature, for management and trends
Online transaction processing, basically what an RDBMS can do.
Object Management Group, responsible for the CORBA standard.
Object Oriented Analysis and Design. Managing complexity of software systems by modelling real life objects.
Object Oriented Design, see OOAD
Object Oriented Programming, see OOAD
Object Request Broker
Object-relational mapping (ORM, O/RM, and O/R mapping), mapping between tables/columns/rows (SQL) and objects/attributes/fields/lists (OOD)
Operating System
Open Systems Interconnection (OSI) model (ISO/IEC 7498-1), a concept of a communication model using 7 layers.
Open Services Gateway initiative framework, a module system and service platform for the Java programming language that implements a complete and dynamic component model
Ontwikkeling Test Acceptatie and Productie, the Dutch equivalent of the English DTAP.
Open Web Application Security Project, a 501c3 not-for-profit worldwide charitable organization focused on improving the security of application software.
the standard Pluggable Authentication Module, information security framework
path dependence
the set of decisions one faces for any given circumstance is limited by the decisions one has made in the past, even though past circumstances may no longer be relevant. See "backwards compatible".
Peter principle
the selection of a candidate for a position is based on the candidate's performance in their current role, rather than on abilities relevant to the intended role. Thus, employees only stop being promoted once they can no longer perform effectively, a.k.a. "managers rise to the level of their incompetence."
Post - Get - Put - Delete, http request types mirroring CRUD. See CRUD. (Made this one up myself)
Point-In-Time Recovery, data or a particular setting can be restored or recovered from a(ny) time in the past.
Plain Old Java Object
principle of least astonishment, user interface or software design should be created in such a way to align with peoples expectations, people should not be "astonished" or "surprised" if the system behaves in a certain way. This minimizes the learning curve, among other things.
a programming language feature that allows values of different types to be handled by a uniform interface.
  • ad hoc polymorphism - function overloading
  • parametric polymorphism - generics
  • (inclusion) polymorphism - subtyping
Project Object Model, an XML representation of a Maven project held in de file name pom.xml. See Maven.
Portable Operating System Interface, a family of standards specified by the IEEE for maintaining compatibility between operating systems.
PRojects IN Controlled Environments, a project management method
Principle of least astonishment
"If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature."
Quality assurance
Query By Criteria, create a query via Java syntax. Advantage is in the type checking and the like. See ORM.
Query By Example, find what you need based on an example, finds the objects that are similar. See ORM.
Quality of Service
a non-empty computer program which takes no input and produces a copy of its own source code as its only output. Basically a selfreplicating program.
race condition
a flaw in an electronic system or process whereby the output or result of the process is unexpectedly and critically dependent on the sequence or timing of other events. The term originates with the idea of two signals racing each other to influence the output first.
resource (adapter) archive
Release Candidate, software version before GA. See GA.
Relational database management system
Rich Domain Model, business logic resides in the objects themselves, see ADM.
reifiable type
a reifiable type is a data type whose type information is fully available at runtime. See non-reifiable.
See "reifiable type".
Release early, release often
emphasizes the importance of early and frequent releases in creating a tight feedback loop between developers and testers or users, contrary to a feature-based release strategy
interactive shell called the Repeat-Eval-Print Loop
REpresentational State Transfer
Rich Internet Applications
Richardson Maturity Model
A model (developed by Leonard Richardson) that breaks down the principal elements of a REST approach into three steps. See HATEOAS.
Ritchie, Dennis MacAlistair
American computer scientist who worked at Bell Labs alongside Unix creators Ken Thompson and Brian Kerighan, one of the first Prophets. Created programming language C.
Remote Method Invocation
Remote Method Invocation over IIOP
Relational On Line Analytical Processing, but still in a relational database
Remote Procedure Call
Real Soon Now, don't hold your breath
rubber duck debugging
informal term used in software engineering for a method of debugging code. In short, explain your problem thoroughly to a rubber duck. Chances are you find out at that time what you are doing wrong/what the problem is.
Rational Unified Process
SOAP with Attachments API for Java, a standard way to send XML documents over the Internet from the Java platform. SAAJ enables developers to produce and consume messages conforming to the SOAP 1.1 and 1.2 specifications and SOAP with Attachments note.
A random byte array added to a password that is about to be hashed to prevent dictionary attacks, see
Single Abstract Method, functional interface, an interface with a single abstract method. Can be instantiated using lambdas. See Lambda.
Security Assertion Markup Language, an XML-based open standard data format for exchanging authentication and authorization data between parties, in particular, between an identity provider and a service provider. SAML is a product of the OASIS Security Services Technical Committee.
Simple API for XML, event-based XML Parser
Specification By Example, use realistic examples instead of abstract statements.
Scala is a programming language with both object oriented aspects as well as functional aspects, and static type checking running on the JVM. It began life in 2003, created by Martin Odersky and his research group at EPFL, next to Lake Geneva and the Alps, in Lausanne, Switzerland. Scala has since grown into a mature open source programming language, used by hundreds of thousands of developers, and is developed and maintained by scores of people all over the world.
System change number, a stamp that defines a committed version in an Oracle Database
A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value. Scrum is:
  • Lightweight
  • Simple to understand
  • Difficult to master
Systems Development Life-Cycle also Software Development Life-Cycle
seagull management
Seagull managers fly in, make a lot of noise, dump on everyone, then fly out.
JBoss webframework, on top of Java/JSP/Facelets. Uses EL (See EL) and finer grained webcontexts (like long "conversations", spanning multiple webrequests.)
second-system effect
when an architect designs a second system, it is the most dangerous system he will ever design, because he will tend to incorporate all of the additions he originated but did not add (due to inherent time constraints) to the first system. Thus, when embarking upon a second system, an engineer should be mindful that he is susceptible to over-engineering it.
security role
a semantic grouping of permissions that a given type of users of an application must have in order to successfully use the application.
service endpoint interface, defines the interface/business methods of the EJB when exposing the EJB as a Web service
see hashbang.
Service Implementation Bean, a Java object implementing a web service
short-circuit evaluation
the idea that in boolean logic, the right side need not always be evaluated. This happens when in an "and", the left side evaluates to false and in an "or", the left side evaluates to true.
a server side object participating in distributed object communication.
Simple Logging Facade For Java - functions as an interface that can delegate requests for logging to different logging frameworks.
Stateless Session Bean
Specific, Measurable, Attainable, Relevant, Time-bound
refers to the use of someone wearing sneakers as the transport mechanism for the data, instead of networking cable of somekind.
Service Oriented Architecture
Simple Object Access Protocol, web services via verbose XML, usually over HTTP.
Separation of Concerns
Software entropy
also called software decay, software erosion, code rot. Basically two laws.
  1. A computer program that is used will be modified
  2. When a program is modified, its complexity will increase, provided that one does not actively work against this.
In other words, any software program that keeps getting modified will descend into a big mess, unless programmers actively work against this.
  • Single responsibility - the notion that an object should have only a single responsibility
  • Open-closed - the notion that “software entities … should be open for extension, but closed for modification”.
  • Liskov substitution - the notion that “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”.
  • Interface segregation - the notion that “many client specific interfaces are better than one general purpose interface.”
  • Dependency inversion - the notion that one should “Depend upon Abstractions. Do not depend upon concretions.”
an open source platform for continuous inspection of code quality
spaceship operator
"<=>"a three-way comparison, usually returning -1, 0 and 1 to indicate smaller, equal or bigger. So named as it resembles a kind of spaceship.
service provider interface, LDAP/database/flatfile/etc for JNDI
Spolsky's Law of Leaky Abstractions
implementation details will always leak through, regardless of how good you try to model the abstraction
Software Quality Assessment based on Lifecycle Expectations, a method to support the evaluation of a software application source code. See SONAR.
Standard Query Language, for talking to relational databases (RDBM)
Single Responsibility Principle, don't try to do too much. Split it up into independent entities. Is the S in SOLID. See also SOLID.
System Requirements Specification
secure socket layer
Single Sign On, pattern for providing credentials to users upon sign on, so they do not require to re-authenticate themselves for every little thing
Story Testing
describes a situation where a thread is unable to gain regular access to shared resources and is unable to make progress. This happens when shared resources are made unavailable for long periods by "greedy" threads.
Streaming API for XML
Standard Template Library, a software library for the C++ programming language
"Shoot The Other Node In The Head", make sure the master node, after failure and takeover by the slave node cannot be started again. To prevent multiple masters in the system.
structured programming theorem
states that only three specific control structures should be used:
  1. Executing one subprogram, and then another subprogram (sequence)
  2. Executing one of two subprograms according to the value of a boolean expression (selection)
  3. Executing a subprogram until a boolean expression is true (iteration)
a client side object participating in the distributed object communication.
Sun Microsystems, Inc.
Sun Microsystems, Inc. was a company that sold computers, computer components, computer software, and information technology services and that created the Java programming language, and the Network File System (NFS). Was acquired by Oracle in 2010.
System Under Test
There ain't no such thing as a free lunch
Transaction Control, database, commit and rollback and the like
Transmission Control Protocol
Test Driven Design (does anyone really use that?) See BDD also.
Triple DES, 3DES. See DES. Not yet deprecated, but it's not going to take long. See AES.
technical debt
a metaphor referring to the eventual consequences of any system design, software architecture or software development within a codebase.
Tell, Don't Ask
tell an object to do something, do NOT ask (values) of an object and do it yourself.
Transport Layer Security, an upgrade of SSL Version 3.0. No longer SSL, due to breaking interoperability with older versions.
transfer object
Total Productive Maintenance, see 5S
Toyota Production System
two pizza team
small groups can innovate and test their visions independently of everyone else. Jeff Bezo, founder of, came up with the notion of the 'two-pizza team': If you can't feed a team with two pizzas, it's too large. That limits a task force to five to seven people, depending on their appetites. (source)
type erasure
removal of type information at compile time. So type checking can only be done at compile time, never at runtime. The opposite of type erasure is called reification
Universal Description Discovery and Integration, XML based registry for companies to indicate to other companies what kind of web services they provide
User Datagram Protocol
user interface
user identification (number)
Unified Modelling Language, a standardized general-purpose modeling language in the field of object-oriented software engineering, created by Grady Booch, James Rumbaugh and Ivar Jacobson
Uncle Bob
Robert Cecil Martin. Always ask yourself, what would Uncle Bob do.
Unit of Work
a design pattern described by Martin Fowler as “[maintaining] a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.”
Universal Resource Identifier, for example
Universal/Uniform Resource Locator (See URI). for example scheme://domain:port/path?query_string#fragment_id
URL rewriting
Instead of creating a GET-string or POST data, put data inside the url. So, instead of, use
Uniform Resource Name, for example urn:ietf:rfc:2648. (See URI)
User expectations
the consistency that users expect from products. See "Principle of least astonishment".
Unicode Transformation Format. Various UTF encodings have been devised, with the variable-length UTF-8 and UTF-16 encodings being commonly used.
Universally unique identifier, for use in distributed systems, for example
Virtual Machine
virtual machine monitor, see Hypervisor.
Value Object
von Neumann, John
Hungarian-American pure and applied mathematician, physicist, and polymath. Was involved with one of the first computers in 1945.
von Neumann bottleneck
unavoidable latency due to transfer times between the processor and the memory. Hence, as processors become faster, they're idling more as they're waiting for memory. See Von Neumann.
Web Application Description Language, describes api containing HTTP REST services
Web Archive, jar file. For packaging a Web module.
windows, icons, menus, pointer
Web Services Description Language, describes api containing Web services
Web Services Interoperability Technology is an open-source project started by Sun Microsystems to develop the next-generation of Web service technologies. It provides interoperability between Java Web Services and Microsoft's Windows Communication Foundation (WCF).
unit of measurement for code quality, number of wtf per second during code reviews
What You See Is All You Get. See Sarcasm. See Kernighan.
what you see is what you get (wizz-zee-wig)
eXtended Architecture
See XMLHttpRequest.
eXtensible Markup Language. Advantage often mentioned is that it is readable by both humans as well as computers. Not often mentioned is that both humans and computers have a hard time reading it.
an API available to web browser scripting languages such as JavaScript. It is used to send HTTP or HTTPS requests to a web server and load the server response data back into the script. See Ajax.
XML Name Space. (See XML)
Extensible Messaging and Presence Protocol
XML-binary Optimized Packaging. See MTOM.
eXtreme Programming
Extensible Stylesheet Language Transformations, schemas used for transforming xml docs into other xml docs or other formats like xhtml and pdf, an example is Apache Xalan.
You Ain't Gonna Need It, also known as 'When in doubt, leave it out.'