Browse Definitions :

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.


a frequently used, but largely ineffective solution to a problem. The term was originally used to refer to a design pattern gone wrong.


(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
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.


a coding error in a computer program.


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.


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.


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
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.


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.


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.


(independent software vendor)
a company that makes and sells software products that run on one or more computer hardware or operating system platforms.


describes a heuristic planning and development process where an application is developed in small sections called iterations.


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.


(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.


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.


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 .


a quick-repair job for the problems in a piece of programming, often available for download through the software maker's Web site.


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.


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.


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.


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.


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.


(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
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
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.


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.


(return on investment)
for a given use of money in an enterprise, the amount of profit or cost saving realized.


when a program is running.


(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.


(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.


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
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
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.


(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
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.


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


  • compliance risk

    Compliance risk is an organization's potential exposure to legal penalties, financial forfeiture and material loss, resulting ...

  • information governance

    Information governance is a holistic approach to managing corporate information by implementing processes, roles, controls and ...

  • enterprise document management (EDM)

    Enterprise document management (EDM) is a strategy for overseeing an organization's paper and electronic documents so they can be...


  • information security (infosec)

    Information security, often shortened to infosec, is the practice, policies and principles to protect data and other kinds of ...

  • denial-of-service attack

    A denial-of-service (DoS) attack is a security event that occurs when an attacker makes it impossible for legitimate users to ...

  • user authentication

    User authentication verifies the identity of a user attempting to gain access to a network or computing resource by authorizing a...



  • risk mitigation

    Risk mitigation is a strategy to prepare for and lessen the effects of threats faced by a business.

  • call tree

    A call tree is a layered hierarchical communication model that is used to notify specific individuals of an event and coordinate ...

  • Disaster Recovery as a Service (DRaaS)

    Disaster recovery as a service (DRaaS) is the replication and hosting of physical or virtual servers by a third party to provide ...


  • cloud storage

    Cloud storage is a service model in which data is transmitted and stored on remote storage systems, where it is maintained, ...

  • cloud testing

    Cloud testing is the process of using the cloud computing resources of a third-party service provider to test software ...

  • storage virtualization

    Storage virtualization is the pooling of physical storage from multiple storage devices into what appears to be a single storage ...