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
  • network security

    Network security encompasses all the steps taken to protect the integrity of a computer network and the data within it.

  • cloud-native network function (CNF)

    A cloud-native network function (CNF) is a service that performs network duties in software, as opposed to purpose-built hardware.

  • Wi-Fi 6E

    Wi-Fi 6E is one variant of the 802.11ax standard.

  • incident response

    Incident response is an organized approach to addressing and managing the aftermath of a security breach or cyberattack, also ...

  • MICR (magnetic ink character recognition)

    MICR (magnetic ink character recognition) is a technology invented in the 1950s that's used to verify the legitimacy or ...

  • What is cybersecurity?

    Cybersecurity is the protection of internet-connected systems such as hardware, software and data from cyberthreats.

  • privacy compliance

    Privacy compliance is a company's accordance with established personal information protection guidelines, specifications or ...

  • contingent workforce

    A contingent workforce is a labor pool whose members are hired by an organization on an on-demand basis.

  • product development (new product development -- NPD)

    Product development, also called new product management, is a series of steps that includes the conceptualization, design, ...

  • talent acquisition

    Talent acquisition is the strategic process employers use to analyze their long-term talent needs in the context of business ...

  • employee retention

    Employee retention is the organizational goal of keeping productive and talented workers and reducing turnover by fostering a ...

  • hybrid work model

    A hybrid work model is a workforce structure that includes employees who work remotely and those who work on site, in a company's...

  • digital marketing

    Digital marketing is a general term for any effort by a company to connect with customers through electronic technology.

  • hockey stick growth

    Hockey stick growth is a growth pattern in a line chart that shows a sudden and extremely rapid growth after a long period of ...

  • Salesforce Trailhead

    Salesforce Trailhead is a series of online tutorials that coach beginner and intermediate developers who need to learn how to ...