Software development: Glossary
- 3-tier
application
- a program that is organized into three major parts: the workstation or presentation interface;
the business logic; and the database and related programming. Each of these is distributed to one
or more separate places on a network.
- agile
software development
- calls for keeping code simple, testing often, and delivering small, functional bits of the
application as soon as they're ready. The focus is to build a succession of parts, rather than
delivering one large application at the end of the project.
- Amdahl's law
- stipulates that, in a program with parallel processing, a relatively few instructions that have
to be performed in sequence will have a limiting factor on program speedup such that adding more
processors may not make the program run faster.
- amelioration pattern
- a design pattern that describes how to go from a bad solution to a better one.
- antipattern
- a frequently used, but largely ineffective solution to a problem. The term was originally used
to refer to a design pattern gone wrong.
- API
- (application programming interface)
- a specific method prescribed by a computer operating system or by an application program by
which a programmer writing an application program can make requests of the operating system or
another application.
- application
integration
- the process of bringing data or a function from one application program together with that of
another application program. Where these programs already exist, the process is sometimes realized
by using middleware.
- application
program
- a program designed to perform a specific function directly for the user or, in some cases, for
another application program.
- aspect-oriented
programming
- (AOP)
- an approach to programming that allows global properties of a program to determine how it is
compiled into an executable program.
- best
practice
- a technique or methodology that, through experience and research, has proven to reliably lead
to a desired result.
- bug
- a coding error in a computer program.
- build
- a version of a program, usually pre-release, and identified by a build number, rather than by a
release number. As a verb, to build can mean either to write code or to put individual coded
components of a program together.
- build tool
- a programming utility that is used when building a new version of a program.
- Capability
Maturity Model
- a methodology used to develop and refine an organization's software development process. The
model describes a five-level evolutionary path of increasingly organized and systematically more
mature processes.
- data
modeling
- the analysis of data objects that are used in a business or other context and the
identification of the relationships among these data objects.
- debugging
- the process of locating and fixing or bypassing bugs (errors) in computer program code or the
engineering of a hardware device.
- design
pattern
- a written document that describes a general solution to a design problem that recurs repeatedly
in many projects.
- development
environment
- the set of processes and programming tools used to create the program or software product.
- development
process
- a set of tasks performed for a given purpose in a software development project.
- driver
- a program that interacts with a particular device or special kind of software. The driver
contains special knowledge of the device or special software interface that programs using the
driver do not.
- driver
development kit
- (DDK)
- a set of programs and related files that are used to develop a new software or hardware driver
or to update an existing legacy application driver for an operating system.
- elegant solution
- a solution in which the maximum desired effect is achieved with the smallest, or simplest
effort.
- embedded systems
programming
- the programming of an embedded system in some device using the permitted programming interfaces
provided by that system.
- enterprise application
integration
- the plans, methods, and tools aimed at modernizing, consolidating, and coordinating the
computer applications in an enterprise.
- entity-relationship
diagram
- a data modeling technique that creates a graphical representation of the entities, and the
relationships between entities, within an information system.
- ergonomics
- the science of refining the design of products to optimize them for human use. Human
characteristics, such as height, weight, and proportions are considered, as well as information
about human hearing, sight, temperature preferences, and so on.
- exploratory model
- a systems development method that consists of planning and trying different designs until one
of them seems to be the right one to develop.
- Extreme
Programming
- a pragmatic approach to program development that emphasizes business results first, and takes
an incremental, get-something-started approach to building the product, using continual testing and
revision.
- feature creep
- a tendency for product or project requirements to increase during development beyond those
originally foreseen, leading to features that weren't originally planned and resulting risk to
product quality or schedule.
- functional
programming
- a style of programming that emphasizes the evaluation of expressions rather than the execution
of commands.
- functional
specification
- a formal document used to describe in detail for software developers a product's intended
capabilities, appearance, and interactions with users.
- Gantt
chart
- a horizontal bar chart frequently used in project management that provides a graphical
illustration of a schedule that helps to plan, coordinate, and track specific tasks in a project.
- gap
analysis
- the study of the differences between two different information systems or applications, often
for the purpose of determining how to get from one state to a new state. Sometimes spoken of as
"the space between where we are and where we want to be."
- genetic
programming
- a model of programming which uses the ideas of biological evolution to handle a complex
problem, most appropriate with problems in which there are a large number of fluctuating variables,
such as those related to artificial intelligence.
- gold code
- the final, ready-to-manufacture (that is, replicate onto media) version of the software.
- help system
- a documentation component of a software program that explains the features of the program and
helps the user understand its capabilities.
- hotfix
- code (sometimes called a patch) that fixes a bug in a product.
- human factors
- the study of how humans behave physically and psychologically in relation to particular
environments, products, or services.
- information
architecture
- the set of ideas about how all information in a given context should be treated philosophically
and, in a general way, how it should be organized; this is expressed in an information
architecture document .
- information
design
- the detailed planning of specific information that is to be provided to a particular audience
to meet specific objectives. In one hierarchical model, the information design follows the
information architecture and information planning stages.
- integrated
development environment
- a programming environment that has been packaged as an application program, typically
consisting of a code editor, a compiler, a debugger, and a GUI builder.
- ISV
- (independent software vendor)
- a company that makes and sells software products that run on one or more computer hardware or
operating system platforms.
- iterative
- describes a heuristic planning and development process where an application is developed in
small sections called iterations.
- ITIL
- a set of best practices standards for information technology (IT) service management developed
by the United Kingdom's Central Computer and Telecommunications Agency (CCTA).
- joint application
development
- a methodology that involves the client or end user in the design and development of an
application, through a succession of collaborative workshops called JAD sessions.
- KISS
Principle
- (Keep It Simple, Stupid)
- the principle that people want products that are easy to learn and use, and that companies
realize time and cost benefits by producing such products.
- KLOC
- (thousands of lines of code)
- a traditional measure of how large a computer program is or how long or how many people it will
take to write it, sometimes used as a rough measure of programmer productivity.
- lean
programming
- a concept that emphasizes optimizing efficiency and minimizing waste in the development of a
computer program; the concept is also applicable to all enterprise practices.
- legacy
application
- an enterprise application that is based on languages, platforms, and/or techniques that predate
current technology.
- metric
- the measurement of a particular characteristic of a program's performance or efficiency.
- object-oriented
programming
- a programming model organized around objects rather than actions and data rather than logic,
based on the idea that what we really care about are the objects we want to manipulate, rather than
the logic required to manipulate them..
- open
source
- describes a program whose source code is made available for use or modification as users or
other developers see fit.
- outsourcing
- an arrangement in which one company provides services for another company that could also be or
usually have been provided in-house.
- Pasta
Theory of Programming
- the idea that various programming structures can be likened to the structures of well-known
pasta dishes: unstructured procedural programming is called spaghetti code , structured
programming is called lasagna code , and object-oriented programming is called ravioli
code .
- patch
- a quick-repair job for the problems in a piece of programming, often available for download
through the software maker's Web site.
- pattern
- see design pattern
- peer
review
- a process used for checking the work performed by one's equals (peers) to ensure it meets
specific criteria.
- PERT chart
- (Program Evaluation Review Technique)
- a project management tool used to schedule, organize, and coordinate tasks within a project
developed by the U.S. Navy in the 1950s.
- polymorphism
- from the Greek meaning "having multiple forms," the characteristic of being able to assign a
different meaning or usage to something in different contexts - specifically, to allow an entity
such as a variable, a function, or an object to have more than one form.
- portability
- a characteristic attributed to a computer program if it can be used in an operating systems
other than the one in which it was created without requiring major rework.
- PRINCE2
- a project management methodology developed by the government of the United Kingdom that makes
use of the best proven practices from a variety of industries and backgrounds.
- program layer
- a separate functional component that interacts with others in some sequential and hierarchical
way, with each layer usually having an interface only to the layer above it and the layer below it.
- project planning
- a discipline for stating how to complete a project within a certain timeframe, usually with
defined stages, and with designated resources.
- prototyping
- a systems development method (SDM) in which a prototype (an early approximation of a final
system or product) is built, tested, and then reworked as necessary until an acceptable prototype
is finally achieved from which the complete system or product can now be developed.
- pseudocode
- (pronounced SOO-doh-kohd)
- a detailed yet readable description of what a computer program or algorithm must do, expressed
in a formally-styled natural language rather than in a programming language.
- rapid
application development
- (RAD)
- an approach based on the concept that products can be developed faster and of higher quality
through: gathering requirements using workshops or focus groups; prototyping and early, reiterative
user testing of designs; reusing software components; and using less formality in communication
documents, such as reviews.
- Rational
Unified Process
- (RUP)
- an object-oriented and Web-enabled program development methodology that is said to be like an
online mentor that provides guidelines, templates, and examples for all aspects and stages of
program development.
- refactoring
- a process that improves the internal structure of a software system without changing its
external behavior.
- regression
testing
- the process of testing changes to computer programs to make sure that the older programming
still works with the new changes.
- risk
management
- the process of planning, organizing, leading, and controlling the activities of an organization
in order to minimize the effects of risk on an organization's capital and earnings.
- ROI
- (return on investment)
- for a given use of money in an enterprise, the amount of profit or cost saving realized.
- runtime
- when a program is running.
- SDK
- (software development kit)
- a set of programs used by a computer programmer to write application programs.
- service pack
- an orderable or downloadable update to a customer's software that fixes existing problems and,
in some cases, delivers product enhancements.
- shotgun
debugging
- the debugging of a program, hardware, or system problem using the approach of trying several
possible solutions at the same time in the hope that one of them will work.
- smoke
testing
- non-exhaustive software testing, ascertaining that the most crucial functions of a program
work, but not bothering with finer details.
- spaghetti
code
- computer programming that is unnecessarily convoluted, and particularly programming code that
uses frequent branching from one section of code to another.
- spiral
model
- a systems development method (SDM) that combines the features of the prototyping model and the
waterfall model.
- SSADM
- (Structured Systems Analysis & Design Method) -
- a widely-used computer application development method in the UK that divides an application
development project into modules, stages, steps, and tasks, and provides a framework for describing
projects in a fashion suited to managing the project.
- structured
programming
- a subset of procedural programming that enforces a logical structure on the program being
written to make it more efficient and easier to understand and modify.
- synchronize-and-stabilize
- a systems development life cycle model in which teams work in parallel on individual
application modules, frequently synchronizing their code with that of other teams, and debugging
(stabilizing) code regularly throughout the development process.
- systems
development method
- (SDM)
- a work discipline that is chosen by the developers of a computer system or product as a way to
ensure successful results.
- systems
development life cycle model
- (SDLC)
- one of a number of structured approaches to information system development, created to guide
all the processes involved, from an initial feasibility study through maintenance of the completed
application. Models include the waterfall model; rapid application development (RAD); joint
application development (JAD); the fountain model; the spiral model; build and fix; and
synchronize-and-stabilize.
- systems thinking
- a holistic approach to analysis that focuses on the way that a system's constituent parts
interrelate and how systems work over time and within the context of larger systems.
- TCO
- (total cost of ownership)
- a type of calculation designed to help consumers and enterprise managers assess both direct and
indirect costs and benefits related to the purchase of any IT component.
- Tool Kit
- (Tk)
- a companion program to Tool Command Language (Tcl) for creating graphical user interfaces.
Together with Tcl, Tk is a rapid program development tool.
- user
acceptance testing
- a phase of software development in which the software is tested in the "real world" by the
intended audience.
- user interface
- everything designed into an information device with which a human being may interact --
including display screen, keyboard, mouse, light pen, the appearance of a desktop, illuminated
characters, help messages, and how an application program or a Web site invites interaction and
responds to it.
- utility
- a small program that provides an addition to the capabilities provided by the operating system.
- waterfall
model
- popular version of the systems development life cycle model that describes a linear and
sequential development method.
- Web services
- services made available from a business's Web server for Web users or other Web-connected
programs.
- write-only
code
- programming code that is hard to read.
This was last updated in June 2006
Tech TalkComment
Share
Comments
Results
Contribute to the conversation