Common software terms Flashcards
spagetti code
multiple pages of nested if clauses and for loops with a lot of copy-pasted procedural code and no proper segmentation
ravioli code
hundreds of similar little pieces of logic, often classes or objects, without proper structure. If you never can remember if you have to use FurnitureTable, AssetTable or Table, or even TableNew for your task at hand, you might be swimming in ravioli code. The problem is that it tends to lead to functions (methods, etc.) without true coherence, and it often leaves the code to implement even something fairly simple scattered over a very large number of functions. Anyone having to maintain the code has to understand how all the calls between all the bits work, recreating almost all the badness of Spaghetti Code except with function calls instead of GOTO.
god object
an object that knows too much or does too much. Most of such a program’s overall functionality is coded into a single “all-knowing” object, which maintains most of the information about the entire program, and also provides most of the methods for manipulating this data. The god object is an example of an anti-pattern. The polar opposite of the god object is ravioli code.
lasagna code
Program structure characterized by several well-defined and separable layers, where each layer of code accesses services in the layers below through well-defined interfaces. Lasagna code generally enforces encapsulation between the different “layers”, as the subsystems in question may have no means of communication other than through a well-defined mechanism. Loosely coupled layering is generally desirable because it makes objects at each layer more interchangeable with existing or possible future implementations, but other types of changes to the code will actually increase in complexity as more layers are added and so an extensively layered architecture can be seen as an anti-pattern as well.
big ball of mud
Popularized in Brian Foote and Joseph Yoder’s 1997 paper of the same name. A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated.
Note: in Lisp, it can be used differently: to describe the malleability of a Lisp system.
write-only language
A programming language with syntax (or semantics) sufficiently dense and bizarre that any routine of significant size is too difficult to understand by other programmers and cannot be safely edited. Examples often cited: APL, Perl, Forth, and regular expression syntax.
WSGI
“wizgi”: The Web Server Gateway Interface: a simple and universal interface between web servers and web applications or frameworks for the Python programming language.
How do you pronounce Xindice?
pronounced zeen-dee-chay in your best faux Italian accent
polymorphism
(In software) Provides for multiple implementations of the same method
triple store
A database optimized for RDF triples.
Typically optimized for very many short data items.
OLAP
Online analytical processing. It’s an approach to answering multidimensional analytical queries.
POCO
Plain old CLR object
Often incorrectly expanded to “plain old C# object”, but it can be created in any language targeting the CLR.
Simple objects without inheritance or other attributes needed for a specific framework. In CLR, typically a non-Serviced Component.
CLR
Common Language Runtime. The runtime environment of .NET.
yesterday’s weather
(In Software development.) The principle that says you’ll get as much done today as you got done yesterday. In iterative projects it says that you should plan to do as much this iteration as you did last iteration.
http://martinfowler.com/bliki/YesterdaysWeather.html
COTS
“commercial off-the-shelf”. A Federal Acquisition Regulation (FAR) term defining a non-developmental item (NDI) of supply that is both commercial and sold in substantial quantities in the commercial marketplace, and that can be procured or utilized under government contract in the same precise form as available to the general public. E.g: computer sw (incl. FLOSS), construction materials.
FLOSS
“Free-Libre / Open Source Software (FLOSS)”. It is considered commercial software, even though some people mistakenly distinguish between commercial & free sw.