That portion of the cost of acquiring software that is treated as an asset to be depreciated over time rather than as an immediate expense.
See object-oriented programming (OOP).
An architecture for distributed computing that mixes the best features of time-sharing and the personal computer. The application is partitioned onto a set of clients (each a desktop or personal computer dedicated to one user) and one or more servers (high-performance computers supporting many clients). The client emphasizes the presentation (that portion of an application that emphasizes presenting information to and gathering information from the user through a user interface), and the servers emphasize application logic (deciding what to do next). In a three-tier client-server architecture, the servers are further differentiated into those that support application logic and those that support data management. Client-server is distinguished from peer-to-peer, where peers (typically desktop computers) symmetrically interact with other peers. An example of client-server is the Web; Web services utilize a hybrid architecture in which clients interact with servers, and servers assume a dual role as peers interacting with one another.
A term describing infrastructure that emphasizes what services are offered and ignores or deemphasizes the implementation detail. It is especially common to speak of a network cloud.
Any digital representation of information or software in terms of a discrete alphabet. In the case of information or software object code, the alphabet is typically bits or bytes (collections of eight bits), and in the case of software source code, it is usually the English alphabet and punctuation so as to be human-readable.
See object-request broker (ORB).
Module of hardware or software capability designed independently of any specific system context, intended to be used "as is" in many contexts, and supporting composition with other components. Components are typically purchased from a supplier and integrated into a design. Within a development organization, modules developed for one project may be reused in other projects, where modification is typically allowed. Handcrafted modules are implemented and used once for a single project.
As an alternative to decomposition as a methodology for defining architecture, a system is assembled by the integration of existing modules. If these existing modules obey certain strong properties, they are called components. To be composable, two modules must be interoperable (able to successfully exchange meaningful messages to coordinate their interaction) and complementary (have functionality that allows meaningful and useful new properties to emerge from their integration).
Equipment supporting the execution of software and storage of data, complemented by a network that allows computers to share data. Types of computers include a mainframe computer (a relatively expensive computer that emphasizes the high-performance processing of large amounts of information), a time-sharing computer, more recently called a server (a moderately priced computer shared by multiple users that allows them to interact with applications and collaborate with one another), and a personal computer (a relatively inexpensive computer normally dedicated to a single user, often participating as a client in a client-server architecture). A host is any computer that has Internet access and participates in distributed applications.
Overlapped in time, usually applied to programs whose execution is overlapped in time while interacting among themselves.
Choosing from among a predefined set of parameters or options in a software distribution as part of software deployment.
See statistical multiplexing.
An outside individual or organization that provides advice or services related to the opportunities and needs of a vertical industry (industry consultant) or individual firm (business consultant).
See rights management.
See intellectual property.
A person intent on evasion of security policies for personal gain or disruption. Distinguished from a hacker, who takes satisfaction in overcoming perceived limits through technical acumen.
A body of techniques widely used in security based on the mathematics of hard-to-compute problems. Encryption is an algorithm that transforms a plaintext and an encryption key into a form (the ciphertext) that is meaningless without knowledge of a decryption key. There are two forms: symmetric (same key used for encryption and decryption) and asymmetric (different keys that are coordinated, but one cannot be inferred from the other). Escrowed encryption creates a class of user called an authority who has conditional access to encrypted information under exceptional conditions.