Object Oriented Software Engineering   View all facts   Help

Glossary

80-20 rule (Pareto principle)
A rule that states that 80% of the benefit can often be obtained with 20% of the work; the remaining 20% of the benefit then takes 80% of the work
abstract class
A class that cannot have any instances
abstract operation
An operation in a class that makes logical sense for all subclasses, but that is not implemented in the class
abstraction
A representation that captures only essential aspects of something, reducing the complexity apparent to the abstraction's user
abstraction-occurrence
A pattern in which two classes are related by an association, and one of the classes represents an abstraction of the other
abstraction^2
The quality of software in which only the essential aspects of something are captured, reducing the complexity apparent to the user
acceptability
The extent to which customers and users like a system
acceptance testing
Testing performed by customers, on their own initiative, to decide whether software is sufficiently acceptable to pay for
action^2
Something that takes place effectively instantaneously when a transition occurs in a state diagram, or upon entry or exit from a state
activation box
A box on a lifeline in a sequence diagram indicating the period of time during which an object is actively performing work
activity
Something that occurs over a period of time and takes place while the system is in a state
activity diagram
A UML diagram showing sequences of activities, typically for multiple threads
actor
A role that a user or some other system plays when interacting with your system; a class of user of a system
adapter
A pattern found in class diagrams in which you are able to reuse an 'adaptee' class by providing a class, (the adapter) that delegates to the adaptee
adaptive maintenance
A type of maintenance performed to change software so that it will work in an altered environment, such as when an operating system, hardware platform, compiler, software library or database structure changes
affordance
The set of operations that the user can do in a user interface at any given point in time
aggregate (assembly)
The class on the 'whole' side of an aggregation
aggregation
An association, which specifies that instances of one class contain instances of the other class as parts
algorithm design
The design of computational mechanisms
algorithmic cost estimation model
An approach to cost estimation such as COCOMO or function points, that use mathematical formulas whose parameters are based on industrial experience
alpha testing
Testing performed by the user or client, under the supervision of the software development team
antipattern
A solution to a design problem that is inferior or does not work in this context
application
A program used by an end-user, as opposed to one simply used by other programs
application framework (vertical framework)
A framework that provides many of the functions needed by a particular class of applications, and which is designed to be reused in the development of such applications
Application Program Interface (API)
The set of procedures or methods through which a layer provides its services
architect
The person responsible for leading the decision-making about the architecture, and maintaining the architectural model
architectural model (software architecture^3)
The document produced as a result of performing software architecture
architectural pattern (architectural style)
A pattern used in software architecture
assertion
A statement that must be true; if it becomes false then the software has encountered a failure
association
A relationship between two classes that represents the existence of a set of links between objects of the two classes
association class
A class whose instances are associated with links of a (usually many-to-many) association
asymmetric reflexive association
A reflexive association in which the roles at either end are different.
atomicity
A property of a transaction that ensures it is completed entirely, or not at all
attribute
A simple data item present in all the instances of a class
attribute^2
A detail in the requirements of a system
availability
A quality that measures the amount of time that a system is running and able to provide services to its users
behaviour
The way an object or system acts and reacts, possibly changing its state
beta tester
A person performing beta testing
beta testing
Testing performed by the user or client in a normal work environment
big bang testing
An inappropriate approach to integration testing in which you take the entire integrated system and test it as a unit
black-box tester
A person performing black-box testing
black-box testing
A form of testing in which you manipulate inputs and observe outputs, but cannot observe the internals of the entity being tested
bottom-up design
An approach to design in which you start by designing the low-level details such as the utilities, and then decide how these will be put together to create successively higher-level components, and ultimately the entire system
bottom-up testing
A incremental testing strategy in which you start by testing the very lowest levels of the software using drivers, and then work upwards, as you integrate successive layers
boundary testing
A testing strategy based on testing at the boundaries of equivalence classes - since this is where most errors occur
brainstorming
The process of obtaining ideas, opinions, and answers to a question in a group environment in which all members of the group are given the opportunity to contribute
broker
An architectural pattern in which parts of the system are transparently distributed to different nodes of a network
bug (defect, failure)
A colloquial term for defect or failure
build
The process of compiling and integrating all the components of the software, incorporating any changes since the last build
business process
A process performed by people in an organization
business process change
A change to the way a business does things
Cadillac system
A system that does more than is needed
Chartered Engineer
A term used in the United Kingdom, and certain other jurisdictions, that is equivalent to professional engineer
chief programmer team
A team structure midway between a hierarchical team and an egoless team, in which a chief programmer leads and guides the project, in consultation with experts in various specialties
class
A software module that provides both procedural and data abstraction. It describes a set of similar objects, called its instances
class design
The design of the various features of classes such as associations, attributes, interactions and states
class diagram
A UML diagram that primarily indicates classes and the associations between those classes
class method (static method)
A method that, unlike an instance method, does not execute in the context of a particular instance of a class
class variable (static variable)
A data item present in a class that is shared by all instances of that class
client-server architecture
An architectural pattern in which the system is divided into clients and servers
client^2
A program or process that connects to another program or process, using a communication channel, in order to request a service
cloning (duplication of code)
The practice of duplicating chunks of code; considered bad practice except when copying just one or two lines of code
coder
A programmer who limits their work to programming (i.e. who do no higher-level design or analysis)
coding technique (encoding technique)
A way of representing information so as to communicate it to the user; e.g. using text, colour, icons, grouping, sound etc.
cohesion
A measure of the extent to which related aspects of a system are kept together in the same module, and unrelated aspects are kept out
collaboration diagram
A UML interaction diagram showing a set of objects connected by communications links
collating sequence
The order in which the letters of the alphabet are sorted
combinatorial explosion
In the context of testing, the observation that the number of required tests for exhaustive testing will increase exponentially as the number of inputs increases
command
An action that causes the system to perform some computations
commercial off-the-shelf software (generic software, COTS)
A term for generic software, often abbreviated as COTS
common coupling
A form of coupling in which components share data using a global variable and thus become dependent on each other
Common Object Request Broker Architecture (CORBA)
A well-known standard broker architecture
communication link
In a collaboration diagram, a line drawn between each pair of objects involved in the sending of a message
communicational cohesion
A form of cohesion in which procedures that access the same data are kept together
compilation
The process of translating source code into code that is executable by a computer
component
Any piece of software or hardware that has a clear role and can be isolated, allowing you to replace it with a different component with equivalent functionality
component diagram
A UML diagram showing components and their relationships
composite
A specialization of the general hierarchy pattern, that uses an aggregation instead of an ordinary association
composition
A strong kind of aggregation in which if the aggregate is destroyed, then the parts are destroyed as well
concrete class
A class that can have instances
concurrent engineering model
A process model in which each team works on its own component, typically following a spiral or evolutionary approach
connection
The existence of a communications channel between two computers, typically a client and server
constraint
A small block of text in curly brackets embedded in a UML diagram. It is normally written in a formal language which can be interpreted by a computer
construction
A term often applied to the latter stages of design and to programming, even though the analogy with construction in other areas of engineering is weak
Constructive Cost Model (COCOMO)
An algorithmic cost estimation method that computes effort, in person-months, from an estimate of size, measured in lines of code
constructor
A procedure that is called whenever a new object is created
content coupling
An undesirable form of coupling in which a component surreptitiously modifies internal data of another component
context
The general situation in which a design pattern applies
contracting-out
Paying to have software (typically custom software) developed by some other organization
control coupling
A form of coupling in which one component affects the sequence of execution in another
controller
In the MVC architectural pattern, the class or classes used to control and handle the user's interaction with the view and the model
corrective maintenance
A type of maintenance performed to correct a defect in software
cost estimation
The process of estimating the effort and elapsed time of an activity or project
cost-benefit analysis
The process of deciding whether to do something by evaluating the costs of doing it and the benefits of doing it, and then choosing to do it if the benefits sufficiently exceed the costs
coupling
A measure of the extent to which interdependencies exist between software modules
coverage
A measure of the percentage of paths, statements or branches taken by a set of tests
critical path
A path through a PERT chart indicating the minimum time in which it is possible to complete a project, and the tasks that, if delayed, will delay the whole project
critical race (race condition)
A defect in which one thread or process can sometimes experience a failure because another thread or process interferes with the 'normal' sequence of events
custom software
Software developed to meet the needs of a particular customer
custom software
Software that is developed to meet the specific needs of a particular customer (in contrast to generic software)
customer (client)
A person who make decisions about ordering and paying for software (in contrast to user); customers are those who have the problem that is being solved by the development of software
data coupling
A form of coupling in which one component passes simple data to another as an argument
data processing software
Software used for running businesses, managing data such as payroll, purchases, sales, product inventory etc.
database design
The design of how data is persistently stored so that it may be accessed by many programs and users, over an indefinite period of time
deadlock
A failure in which two or more threads are stopped, waiting for each other to do something
defect (bug)
A flaw in any aspect of the system including the requirements, the design or the code, that contributes, or may potentially contribute, to the occurrence of one or more failures
defect in handling peak loads or missing resources
A defect that occurs when a computer cannot gracefully handle peak loads or missing resources
defect in the process of recovering from a crash
A defect that occurs when a system does not deal with hardware failures, crashes of related systems or the power being turned off
defensive design
Design with awareness that other components cannot be trusted
defining the problem
A part of requirements and specification that involves narrowing down the scope of the system by determining the precise problem that needs solving
delegation
A pattern in which one procedure does nothing more than call another in a neighbouring class; this reduces total coupling in the system
Delphi technique
An approach to cost estimation in which several individuals initially make cost estimates in private, and then share their estimates to discover the discrepancies
deployment
The process of distributing and installing software as well as any other components of a system; deployment also includes managing the transition from any previous system
deployment
The process of distributing and installing the software and any other components of the system such as databases, special hardware etc. It also involves managing the transition from any previous system
deployment diagram
A UML diagram showing hardware nodes, how they are interconnected, and what components will exist on them at run time
deprecate
To declare that a component should not be used in subsequent designs, but remains available to support existing designs that incorporate it
design
The problem-solving process whose objective is to find and describe a way to implement the system's functional requirements, while respecting the constraints imposed by the non-functional requirements, and while adhering to general principles of good quality
design by contract
An approach to design in which each method has a contract with its callers regarding preconditions, postconditions and invariants
design decision
A decision made in the process of design which involves listing design options, evaluating them according to pre-determined criteria, and choosing the alternative that has the best cost-benefit trade-off
design document
Documentation produced as a result of the design process
design issue
A sub-problem of an overall design problem
design option
An alternative solution to a design issue
design pattern
A pattern useful for the design of software
design space
The space of possible design options
detailed design
The design of the internals of individual subsystems
deterioration
The tendency of software to accumulate defects as time passes due to errors being made during maintenance
developer testing
Preliminary testing performed by the people who do the design and programming
development (software engineering process)
A process used to develop software
dialog (dialog box)
A specific window with which a user can interact, but which is not the main UI window
dialog^2
The back-and-forth interaction between user and computer
discriminator
A label on a generalization that describes the criteria used to specialize a superclass into two or more subclasses
distributed system
A system in which computations are performed by separate programs that co-operate to perform the task of the system as a whole
divide and conquer
The principle of dividing something large into smaller units, so it can be dealt with more easily
document
Anything written that that describes software
documentation defect
A defect in a user manual, reference manual or on-line help that gives incorrect information or fails to give information relevant to a problem
domain
A named computer network
domain analysis
The process by which a software engineer learns enough background information so that he or she can understand the problem and make good decisions during requirements analysis and other stages of the software engineering process
domain expert
Somebody with expertise in a given domain, but who may or may not have expertise in software
domain^2
A general field of business or technology in which users work, and which is learned by the software engineer during domain analysis
driver
In the context of testing, a simple program that tests services of lower-level layers when performing bottom-up or sandwich testing
dynamic binding (late binding, virtual binding)
The process of binding a call to a particular method. This is performed dynamically at run-time due to the presence of polymorphism
dynamic modelling
A type of modelling used to represent the internal states of the software and their changes
earned value (budgeted cost of work performed)
The amount of work completed, measured according to the budgeted effort that the work was supposed to consume
earned value chart
A diagram used in project tracking, that allows you to compute the amount by which you are behind schedule and over budget; it shows elapsed time on one axis, and effort expended on the other axis
economies of scale
Sub-linear growth in effort as size increases
efficiency
The extent to which a product or process can operate using the fewest possible resources
efficiency of use
A measure of how fast an expert user can do their work using the system
effort (development effort)
The amount of labour used in a task or project, expressed in person-months or person-days
egoless team
A team structure in which everybody is equal, decisions are made by consensus, and the team works together to achieve a common goal
elapsed time
The difference in time from the start date to the end date of a software project
elapsed-time transition
A transition that occurs in a state diagram due to the passage of a period of time
embedded software
Software that is designed to run specific hardware devices, and thus is embedded in the devices, usually in a form of read-only memory (ROM)
encapsulation
Creating a module to contain some algorithm or data structure, thus hiding its details behind the module's interface
end state
The final state reached by a system or object when it finishes working
engineer
A person who performs engineering (in contrast to scientist). The term engineer is legally reserved, in many jurisdictions, for those who have obtained engineering education and experience, and perform engineering within a company or else have been granted a license, or some other form of certification, to offer engineering services to the public
engineering
The process of solving problems by applying, in a disciplined, systematic and ethical way, scientific and economic knowledge and principles to the design and maintenance of products or processes
enhancement
A type of maintenance performed to add a new capability to software
equivalence class
A set of inputs that a tester believes will be treated similarly by reasonable algorithms
equivalence class testing
A testing strategy based on determining the possible equivalence classes and creating a test case for each
error
A slip or inappropriate decision made by a software engineer that leads to the introduction of a defect into the system
error^2
A mistake made by a user
error^3
An inaccuracy in a numerical computation
event
In a state diagram, something that causes a system or object to change state. May be a message, the passage of elapsed time, a condition becoming true, or completion of an activity
evolution
The process by which software is modified over the course of its lifetime to meet changing requirements and as problems are fixed or reengineering is performed
evolutionary model
A process model that views development as a series of hills, each representing a separate loop of the spiral model
evolutionary project
A software project to modify an existing system
exception
A situation that arises in a program requiring special handling, and hence deviation from the normal path of control
explicit attribute
An attribute^2 that is stated in the requirements
extension
A use case that makes optional interactions explicit or handles exceptional cases
external coupling
A form of coupling in which a software component has a dependency to software written by a third party, or to a particular type of hardware
extreme programming
A process model and methodology that provides a disciplined approach to highly incremental and user-centred development of small projects
facade
A pattern in which you create a class that provides a simplified interface to a package
failure (bug)
An unacceptable behaviour exhibited by a system
fat-client system
A client-server system in which the client does a large amount of computation
feedback
Any response in the system's user interface to a user's actions
filter
A component in the pipe-and-filter architectural pattern that inputs simple data, from the pipeline, processes it and outputs data into the pipeline
flow graph
A graph showing all possible paths through an algorithm
force
In a pattern, an issue or concern that you need to consider when solving the problem, including, criteria for evaluating a good solution
fork
A symbol in an activity diagram indicating splitting of control into multiple threads
formal language
A language that uses mathematics for the purpose of modelling
forward engineering
Moving from requirements to design or design to implementation
framework
A skeletal software component that performs functions needed by a class of systems, and which is intended to be incorporated into the design of such systems
framework
Reusable software that implements a generic solution to a generalized problem. It provides common facilities applicable to different application programs
Function Points
An algorithmic cost estimation method in which you count features of the requirements and use these to compute an estimate of the system's size
functional cohesion
A form of cohesion in which modules which together perform a function (a computation that returns a result and has no side effects) are kept together, and everything else is kept out
functional requirement
A requirement that describes a service provided by a system
Gantt chart
A diagram used to graphically present the start and end dates of each software engineering task; it shows time on one axis, and tasks on the other
general hierarchy
A pattern in which two classes are related both by a generalization and by a one to many association, such that the generated graph of instances forms a hierarchy
generalization
The relationship between a set of similar entities and another entity that contains the common aspects of those entities
generalization^2
The process of creating a relationship between a set of similar entities and another entity that contains the common aspects of those entities
generic software (commercial off-the-shelf software, shrink-wrapped software)
Software designed to be sold on the open market and to perform functions on general-purpose computers that many people need (in contrast to custom software)
glass-box testing (structural testing, white-box testing)
A form of testing in which the tester can examine the design documents and the code, as well as analyze and possibly manipulate the internal state of the entity being tested
global variable
A variable that is accessible from all procedures in the system, or in the scope of just a specific set of modules (e.g. a Java package).
glue code
Code that is written to connect reused commercial off-the-shelf applications
goal
What the user hopes to accomplish by using a system
gold-plating
Building a list of requirements that does more than needed
green field development
Development of a completely new system, as opposed to modifying an existing system
green field project
A software project to develop an entirely new software system from scratch
guard condition
A condition that determines whether a certain transition will occur in a state diagram when an event happens
heavyweight class
A class which is time-consuming and complicated to create instances of
heuristic evaluation
The process of systematically looking for usability defects in a user interface, based on a set of usability guidelines or principles
hierarchical team
A rigid team structure in which each individual reports to a manager and is responsible for performing the tasks delegated by that manager
high-yield testing
A testing strategy that is both efficient and effective
hook
An aspect of the design deliberately added to allow other designers to add additional functionality. It does nothing in the basic version of the system, but is designed to be implemented or overridden when the system is extended or reused
hook method
A method that does nothing other than returning to its caller, but is designed to be overridden in subclasses
horizontal framework
A framework that provides facilities that many different types of applications will need
host
A computer on a network
host name
An alphanumeric name given to a host, normally divided into several components separated by dots
hung system
A system that appears to the user to not be doing anything, caused by such things as a crash, a deadlock, a livelock or an infinite loop
identity
The characteristic of having a distinct existence, such that each entity can be uniquely referred to
immutable
A pattern in which the instances of a class cannot change state after creation
immutable object
an object that has a state which never changes after creation
impact analysis
The process of exploring and documenting all possible effects of a change
implementation
The process of converting a design into an executable software system by programming and related activities
implicit attribute
An attribute^2 that is implied rather than explicitly stated in the requirements
implicit requirement
A requirement not stated explicitly in the requirements document
import coupling
A form of coupling in which one component declares that it imports (makes use of the definitions in) another
inappropriate management of resources
A defect that occurs when a program uses certain resources but does not make them available to other programs when it no longer needs them
inclusion
A use case that captures commonality among a set of other use cases
inclusion coupling
A form of coupling in which one component includes the source code of another component. All the includers of a component are coupled to each other and to the included file
incorrect logical conditions
A common defect in which the logical conditions that govern looping and if-then-else statements are wrongly formulated
incremental development
A process model in which the software is developed in a series of releases
incremental testing
A integration testing strategy in which you test subsystems in isolation, and then continue testing as you integrate more and more subsystems
independent testing
Testing performed by a separate group other than the people who do the design and programming
independent testing group
A testing group separate from those who designed and programmed the system
information hiding
Hiding details so as to reduce complexity
information overload
A situation that occurs when the user has too much to look at
inheritance
The possession by one class of elements defined in another class, by virtue of the fact that the former class is defined to be a subclass of (to extend) the latter
inheritance hierarchy (generalization hierarchy, isa hierarchy)
The hierarchy formed by the generalization relationships of a set of classes
inspecting
A verification process that involves several people systematically proceeding through a document searching for defects
instance diagram
A UML diagram that shows objects and the links between them
instance method
A method that executes in the context of a particular object; it has access to the instance variables of the given object, and can refer to the object itself using the 'this' keyword (in Java and C++)
instance variable (data member, field)
A data item present in all the instances of a class, normally used to implement associations and attributes
insufficient throughput or response time on minimal configurations
A defect that occurs when the system is tested on a minimal configuration and its throughput or response time fails to meet requirements
integration testing
Testing a system in a phased approach - first testing individual subsystems, then testing the integrated system
integration testing
Testing during or following the process of integrating a system
interaction
The set of steps in a use case or other piece of functionality
interaction diagram
A sequence diagram or collaboration diagram used to model the dynamic aspects of a software system
interface^2
The operations provided by a module for other modules to use
internal event
An event caused within a component, such as completion of an activity
internal software quality
A software quality that characterize aspects of the design of the software
internationalization
The process of ensuring that a system can be easily adapted to different locales
IP (Internet Protocol)
Abbreviation for 'Internet Protocol', the low-level protocol used by all computers on the Internet, in which messages are divided into packets for delivery to a remote host
IP address
The address of a computer (i.e. a host) connected to an IP network
ISO 9000-3
An international standard that lists a large number of things an organization should do to improve its overall software process
iteration expression
An expression in an interaction diagram, used to indicate the set of objects (shown as a multiobject) to which a message will be sent
iterative development
An approach to development by which software is developed in stages, with the first stage being very simple, and subsequent stages adding more features
Java applet
A small Java program
Java condition
A condition in Java is a statement that evaluates to a boolean value (true or false)
Java interface
In Java, a software module containing a description of a set of operations that certain classes must implement
Java keyword
A word that has special meaning in Java
Java package
A collection of classes and interfaces
join
A symbol in an activity diagram indicating a point where several threads wait for each other. When all threads reach the join, control continues in a single thread
Joint Application Development (JAD)
An approach to defining requirements, in which all the stakeholders meet intensively for several days in a secluded location
just-in-time compilation (JITC)
A kind of compilation that converts a method into machine code the first time it is executed and stores the machine code to save work on subsequent calls
known bugs list
A list of defects in a system that have not yet been fixed
language^2
In the context of a client-server system, the messages that can be sent from one computer to another
layer
A subsystem that provides a set of services and has layer cohesion
layer cohesion
A form of cohesion in which the facilities for providing or accessing a set of services through an API or hardware interface are kept together. There must also be a strict hierarchy in which higher level layers can access only lower-level layers. In other words, the system is effectively divided into layers
leaf class
A class at the very bottom of an inheritance hierarchy
learnability
The speed with which a new user can become proficient with the system
learning curve
A curve on a diagram that plots the time spent learning on one axis, and the amount of functionality learned on the other axis
legacy system
A software system which is still undergoing evolution, but on which some or all of the original developers are no longer working
license
A legal document authorizing the holder to perform some activity
lifeline
A dashed line in a sequence diagram indicating the period of time during which an object exists
link
A reference from one object to another
listening
A state in which a server is waiting for clients to connect
live activation
The period of time when an object is performing work
livelock
A failure in which a system can never get out of a limited set of states, although it is not in deadlock
locale
An environment where the language, culture, laws, currency and many other factors may be different
localhost
A special host name that always refers to the current computer
localization
The process of adapting a system to a particular locale
locking
A mechanism for reserving a resource so as to avoid inappropriate concurrent access
low coupling
A kind of coupling in which the interconnections among parts of a system are reduced, making makes the resulting application easier to understand, modify and test
maintainability
An important quality of software that measures the extent to which the software can be modified at the lowest possible cost
maintenance
In the context of software, any process involving modifying software following its general release to users
memory leak
A situation in which a program requests memory but does not release it when it is no longer needed
message
Any information sent as a component interacts with another, including using procedure calls, or network communication
method
A concrete implementation of an operation; a procedure in a class
methodology
A description of a process; it usually prescribes how to do things in a step by step manner
metric
A scale on which a software product or process may be measured
milestone
An important deadline date, at which a specific event may occur, and when a specific deliverable may be required
modal dialog
A dialog that the user must dismiss before interacting with any other window
mode
A state in which the UI restricts the affordance
model
An abstract representation of a system, that conveys a certain aspect of it in an understandable and analyzable way
Model-View-Controller (MVC)
A architectural pattern used to separate the functional layer of the system (the model) from two aspects of the user interface, the view and the controller
model^2
The functional layer in the MVC architectural pattern - the underlying classes whose instances are to be viewed and manipulated
modelling
The process of creating a model
moderator (facilitator)
A person who leads a brainstorming session
modularity
The extent to which software is divided into components, called modules, which have high internal cohesion, low coupling between each other, and simple interfaces
module
A component that is defined at the programming language level, such as file, method or package
multi-layer
An architectural pattern in which a system is divided into layers
multiobject
A symbol in an interaction diagram showing several overlapping objects, which are the target of a set of messages defined by an iteration expression
multiple inheritance
Inheritance from more than one superclass
multiplicity
Information placed at each end of an association indicating how many instances of one class can be related to instances of the other class
non-functional requirement
A requirement that constrains design of a system, but does not describe a service that the system is to provide
non-modal dialog
A separate window that the user can choose to interact with, but does not have to
not handling null conditions
A common defect in which a program behaves abnormally when a null condition is encountered
not handling singleton or non-singleton conditions
A common defect in which a program does not properly handle singleton conditions or non-singleton conditions
not setting up the correct preconditions for an algorithm
A common defect in which a program proceeds to do its work even when specifies preconditions, that state what must be true before the algorithm should be executed, are not satisfied
not terminating a loop or recursion
A common defect in which a loop or a recursion does not always terminate, i.e. it is 'infinite'
note
A small block of text embedded in a UML diagram
noun phrase
A string of nouns, or a noun modified by one or more adjectives
null condition
A situation where there normally exists one or more data items to process, but sometimes there are none
object (instance, instance: instance is used when you are talking about the role with respect to the class and object is used when talking in a more general way)
A data element in an object-oriented system, which has its own identity, belongs to a particular class, and has behaviour and properties
Object Constraint Language (OCL)
A language used to write Boolean constraints and assertions in UML
object orientation
A near-synonym for the object-oriented paradigm
object oriented analysis (OOA)
The process of deciding which classes will be important to the users, and working out the structure, relationships and behaviour of these classes
object-oriented paradigm
An approach to software design and programming in which software is primarily thought of as a collection of classes that each have responsibilities for various operations, and which are instantiated at run time to create objects
object-oriented testing
Testing that focuses on the specific properties of object oriented programs
objective
A measurable value you wish to attain
observer
A pattern found in class diagrams in which instances of one class are informed of changes to instances of a second class
obsolescence
The tendency for a technology to reach a state where it is no longer useful, is superseded by better technology or must be upgraded in order to continue to function correctly
occurrence
An object that is a member of a set of classes that set share common information but also differ from each other in important ways
off-by-one error
A defect in which a program inappropriately adds or subtracts one, or inappropriately loops one too many times or one too few times
open beta release
A version of a system released for beta testing by any member of the general public who wishes to participate
operation
The abstract notion of something that can be done by one or more classes
operator precedence error
A defect in which a programmer omits needed parentheses, or puts parentheses in the wrong place
opportunistic approach
An unsatisfactory process model in which developers keep on modifying the software until they or their users are satisfied
optimistic-likely-pessimistic estimation
An approach to cost estimation in which you make three estimates for each task and for the project as a whole: An optimistic estimate, (in which everything goes well) the likely estimate and a pessimistic estimate (where you account for everything that could go wrong)
over-constrain
To make a decision that constrains future choices, with insufficient justification
overriding
The situation where a method local to a class is used in place of a method that otherwise would have been inherited
package
A collection of modelling elements that are grouped together because they are logically related
package diagram
A type of UML class diagram showing packages and their relationships
package^2
A facility for grouping a set of classes
paper prototype
A set of pictures of a system used to demonstrate how the system would work if implemented
paradigm
An approach to software design and programming
parallel development (parallel design)
Independent development of a system or subsystem by several developers, with the objective of exploring design space and generating a variety of different design ideas; the best ideas are generally chosen for further development
paraphraser
A person in an inspection who steps through the document explaining it in their own words
pattern
A widely understood solution to a particular type of problem
pattern language
A group of interrelated design patterns
patterns community
A loose but large collection of people who believe in the usefulness of patterns in software engineering, as well as in certain philosophies regarding their development
peer-to-peer
A variant of the client-server architectural pattern in which components can serve as both servers and clients to each other
peer-to-peer system
A client-server system in which each program can act as both a client and a server for all the other programs
perfective maintenance
A type of maintenance that includes reengineering, and is sometimes applied more broadly to include enhancement
performing a calculation in the wrong part of a control construct
A common defect in which the program performs an action when it should not, or does not perform an action when it should
person-month
A measure of effort. One person month is the amount of work done by one person in one month if they are working full time
Personal Software Process (PSP)
A disciplined approach that an individual software developer can use to improve the quality and efficiency of his or her personal work
PERT chart
A diagram showing the sequence in which tasks must be completed
phased-release model
An approach to incremental development in which, after requirements gathering and planning, the project is broken into separate subprojects, or phases
pipe
A connection between two filters in a pipe-and-filter architecture. It joins the output of one filter to the input to another
pipe and filter (transformational architectural pattern, transformational architecture)
An architectural pattern in which data in a standard format is passed through a series of processes (filters) that transform it in some way
pipeline
A series of processes that transform data in the pipe-and-filter architectural pattern
player-role
A pattern in found in class diagrams in which one class (the player) has several associated role classes. Instances of the role classes can change over the lifetime of a player
polymorphism
A property of object oriented software by which an abstract operation may be performed in different ways in different classes
port
A number associated with a server on a host, used by a client that wishes to connect to that server
portability
The ability for software to be run in a variety of different hardware or software environments with no or minimal changes
post-mortem analysis
The process of looking back at a completed project's design and its development process, in order to identify those aspects where improvements can be made in future projects
postcondition
A statement that is guaranteed to be true following the successful completion of some action
precondition
A statement that must be true before some algorithm, method or use case is executed
priority
An ordering that states which qualities override others in those cases where you must make compromises
problem
In the broad context of software engineering, a difficulty, challenge, need or desire faced by a customer that is to be solved by developing software
procedural cohesion
A form of cohesion in which procedures that are called one after another are kept together
procedural paradigm
An approach to software design and programming in which software is primarily thought of as a hierarchy of procedures - the root of the hierarchy is typically a main procedure, which calls other procedures, etc. (in contrast to the object-oriented paradigm)
process
Anything that operates for a period of time, normally consuming resources during that time and using them to create a useful result
process model (software process model)
A general approach for organizing a project into activities; an aid to thinking, not a rigid prescription of the way to do things
process standard
A document describing a well-respected way of developing software
process^2
A running thread of execution in a computer
professional engineer
A person who has been issued a license, by some jurisdiction, to perform engineering
programming language
A language used to write computer programs
project management
All the activities needed to plan and execute a project.
project manager (development manager)
The person responsible for performing project management tasks
project plan
A document used in project management describing all aspects of the project's process, including the process model, tasks, risks, cost estimates, team structure and schedule
project scheduling
The process of deciding what sequence the various activities will be done, and when they should start and complete
propagation
A mechanism whereby an operation in an aggregate is implemented by having the aggregate perform that operation on its parts - in other words, the operation is propagated to the parts
protocol
The languages and rules by which two programs or processes communicate, as in a client-server system
protocol design
The design of communications protocols
prototype (pilot system)
A version of a system created primarily to learn more about the requirements, and not intended to be the final product
prototyping
The process of developing prototypes
proxy
A pattern found in which a lightweight object stands in place of a heavyweight object that has the same interface. It transparently loads the heavyweight object when needed
quality
An attribute of a product or process that, if improved, would better satisfy one or more of the stakeholders of that product or service
quality assurance
The process of ensuring that the quality of a product or process is sufficient to meet the needs of the stakeholders
rationale
The reasoning underlying requirements or design decisions
read-only interface
A pattern in which an interface is used to restrict which classes have privileges to call update methods of a class
real-time software
Software that must react immediately to stimuli from the environment
realistic requirement
A requirement that the development team has the expertise and technology to implement on the required platform within the budget and time available
reengineering
A type of maintenance performed to improve the design of some part of a software system, in general so that it has higher maintainability. In general, no new features are added for users
refactoring
Changing part of the design; performed as part of reengineering
reference
A variable that refers to an object
reflexive association
An association in which both ends connect to the same class
regression testing
The process of re-testing the a system, using a selected subset of test cases, after changes are made
related pattern
A pattern that are similar to another pattern
release notes
A document describing a particular release of software, including a known bugs list
reliability
An important quality of software that measures the frequency of failures, as encountered by testers and end-users
rendezvous
In concurrent programming, a situation where several threads meet and wait for each other
requirement
A statement about what the proposed system will do that all stakeholders agree must be made true in order for the customer's problem to be adequately solved
requirement stability
A measure of the extent to which requirements are likely to change
requirements analysis
The process of deciding on the requirements of a software system
requirements creep
The tendency for the set of requirements to relentlessly increase in size during the course of development, resulting in a system that is more expensive and complex than originally intended
requirements definition
A high-level requirements document that describes requirements using language understandable by customers and end users
requirements document
Any document describing a set of requirements
requirements elicitation
The process of actively asking stakeholders to describe their view of the requirements; an important aspect of requirements gathering
requirements gathering
A step in requirements analysis in which information is obtained that will form the basis of the requirements
requirements review
The process of systematically evaluating a requirements document
requirements specification (design specification)
A specification of requirements; i.e. a requirements document that is more detailed than a requirements definition
resource
Anything consumed in the development, operation or maintenance of a product or process
response time
The time that elapses from when a user issues a command to when the system provides enough results so the user can continue his or her work
responsibility
Something a system is required to do that is allocated to a particular class
reusability
A quality that measures of the extent to which a product or process can be used in different contexts from which it was originally designed
reusable component
A piece of software, such as a library, command, framework or application that is reused in a software system
reuse
The practice of using the same code or design in more than one place
reviewing
The process of systematically proceeding through a software document to perform a function such as validation, or verification
ripple effect
The situation in which removing defects causes new ones to be added
risk management
The process of evaluating risks and taking corrective action, including revising plans, on a regular basis
role
A name given to one end of an association that acts as a synonym for the class at that end
role^2
A class in the player-role pattern whose instances can be attached to player objects
root cause analysis
The process of determining the ultimate reason why a software engineer made the error introduced a defect
routine call coupling
A form of coupling in which one routine calls another
rule
A principle that should almost always be applied
sandwich testing (mixed testing)
An incremental testing strategy in which you test the top layers and bottom layers, and finally test the integrated system
scenario
An instance of a use case that expresses a specific occurrence of the use case with a specific actor operating at a specific time and using specific data
schedule
The allocation of tasks to time periods
schedule^2
The total elapsed time of a project
scheduling
Determining the sequence of tasks, plus deciding when the tasks should start, and setting deadlines for when they must be complete
scientist
A person who seeks new knowledge about nature (in contrast to engineer)
scope
The region of a source text over which a declaration holds
scope^2
The extent of a software project
semaphore
A mechanism that allow data items to be locked so that they cannot be accessed by other threads when they are not ready
sequence diagram
A UML interaction diagram showing the sequence of messages exchanged by the set of objects and optionally an actor. Actors and objects are on one axis, and time is on the other
sequential cohesion
A form of cohesion in which a series of procedures, where one provides input to the next, are kept together
serialization
A process in Java by which every object is converted by an ObjectOutputStream into a binary form for transmission, and then reconstructed when it is received by an ObjectInputStream
server
A program or process that, in response to requests from clients, provides some kind of service
server socket
Data in a server used to generate connections on a port
set of equivalence classes for a system
The set of all possible combinations of inputs to a system
severity level
A number given to a failure, defect or test case, indicating the amount of impact it has on the user or customer
shelfware
Software that is not used
shrink-wrapped software (generic software)
A term for generic software, so-called because it is often sold in boxes tightly wrapped in plastic
side effect
A change to the state of the system made by a procedure, other than merely returning a result
signature
The format of an operation or message, including arguments and return value
singleton
A pattern that ensures that a certain class can have only one instance
singleton condition
A situation in which there is normally more than one of something, but should be tested for the case where there is only one
singleton^2
A class for which only one instance should exist
slot
A missing part in a framework that is filled in by the application developer who is adapting the framework to suit his or her needs
socket
Data in a client or server that represents an end of a TCP/IP connection. A complete connection has two sockets, one in the client and one in the server
software
Programs and related data that run on a computer
software architecture^2 (architecture design)
The process of designing the global organization of a software system, including dividing software into subsystems, deciding how these will interact, and determining their interfaces
Software Capability Maturity Model (CMM)
A process standard containing five levels of maturity; developed at Carnegie Mellon University
software crisis
The situation that is said to have existed since a least the late 1970's, characterized by an inability of software developers to deliver good quality software on time and on budget
software developer
A person involved in the development of software
software engineer
A person who has education in, and experience performing software engineering; an engineer who specializes in software
software engineering
The systematic activities involved in the design, implementation and testing of software to optimize its production and support
software engineering
(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1)
software engineering
The process of solving customers problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints. The application of engineering to software systems of any kind
software engineering process (development)
A process used by software engineers Normally refers to specific approaches to performing software engineering or specific software engineering activities such as requirements analysis or testing
software engineering^2
The field of study of how to effectively do the process of software engineering
specialization
The inverse of generalization
specification
A document that gives complete detail about something. Normally implicitly means requirements specification, but the term design specification is sometimes also used to mean a detailed and precise design document
spiral model
An incremental process model that explicitly embraces prototyping and an iterative approach to software development
stable architecture
An architecture that permits changes to a system to be made without the architecture having to change
stable sort
A sort algorithm that leaves items, as much as possible, in the same order they were in prior to sorting
stakeholder
A person or organization that may be affected by the success or failure of a project or organization
stamp coupling
A form of coupling in which two components modify or access data in the same object
standard
A document describing a body of well-respected information that engineers should conform to in order to ensure they are following best-practice, and will consistently produce good-quality products
start state
The state a system or object is in when it starts running
state
A situation in which a system or object behaves in a specific way in response to any events that occur
state diagram
A UML diagram showing states and transitions, used to describe the externally visible behaviour of a system or of an individual object
static method (class method)
A synonym for class method, so named because one declares a method to be a class method in Java and C++ using the 'static' keyword'
stereotype
A way to use some of the standard UML notation to represent something special
stress testing
Testing on minimal configurations and at peak loads or with missing resources
structural modelling
A type of modelling used to represent the data or architecture of software
stub
A piece of code that has the same interface (i.e. API) as the lower level layers, but which does not perform any real computations or manipulate any real data
subclass (derived class)
A class that is an extension of another class, and hence inherits from the other class
substate
A state within a state
subsystem
A system that is part of a larger system, and which has a definite interface
subsystem diagram
A UML diagram showing details of a subsystem, including aspects of its operations, its specification and its realization
superclass (base class)
A class of which another class is an extension, and hence defines properties that are inherited by the other class
swimlane
A division in a UML activity diagram showing the activities performed by a particular object
symmetric connection
A connection in which the client communicates with the server in the same way as the server communicates with the client
symmetric reflexive association
A reflexive association in which the roles at either end are identical
synchronization
A mechanism to guarantee that only one thread can access an object at a time
system
A logical entity, having a set of definable responsibilities or objectives, and consisting of hardware, software or both
systems engineering
A type of design that involves deciding which requirements should be implemented using hardware, and which using software
task analysis
The process of determining the detailed steps needed to perform a task effectively and efficiently
TCP (Transport Control Protocol)
An important protocol used to establish and manage connections between computers
TCP/IP (Transport Control Protocol / Internet Protocol)
An important pair of protocols used to establish connections and send data between computers
temporal cohesion
A form of cohesion in which aspects of a system are grouped together which are used during the same phase of execution of a program, i.e. execute close together in time
test
A particular run of a test case on a particular version of the system
test case
An explicit set of instructions designed to detect a particular class of defect in a software system, by bringing about a failure
test case pass target
The desired percentage of test cases that will pass testing
test harness
A program that automates testing of a system
test plan
A document that contains a complete set of test cases for a system, along with other information about the testing process
test-fix-test cycle
The cycle in which software developers repeatedly run tests, discover and fix defects, and then retest. This continues until quality objectives are met
testability
The ability for software to be instrumented so that it can be automatically tested using a test harness
testing
An approach to verification that involves systematically executing software to detect defects
thin-client system
A client-server system in which the client is as small as possible and the server does most of the computation
thread
A path of execution that can run concurrently with other paths of execution
Thread class
A Java class that implements the general concept of a thread
three-tier model of client-server architecture
A model in which a server communicates with both a client (usually through the Internet) and with a database (usually within an intranet, for security reasons)
top-down design
An approach to design in which one starts with the high-level architecture of the system, then elaborates the design of subsystems until finally designing the low-level details such as the structure of individual classes
top-down testing
An incremental testing strategy in which you start by testing only the user interface, with the underlying functionality simulated by stubs, then you work downwards, integrating lower and lower layers
traceability
The ability to determine the information that led to a decision being made
tracking
In the context of project management, he process of determining how well you are sticking to the cost estimate and schedule
transaction-processing
An architectural pattern in which a transaction dispatcher inputs transactions and dispatches them to handlers
transition
A change of state in response to an event
trigger question
A question in a brainstorming session for which the participants can provide simple one-line answers that are more than just numbers or yes/no responses
type use coupling
A form of coupling in which several components make use of the same globally-defined data type
Unified Modelling Language (UML)
A standard language for modelling various aspects of software, which includes, among other things, a set of diagrammatic notations
unit testing
Testing an individual module or component in isolation
usability
An important quality of software that measures the extent to which a product or process is learnable, enables users to be productive and avoid errors, and also subjectively satisfies them (in contrast to utility^2)
use case
A way in which a system can be used, described as a step-by-step sequence of actions, along with the system's response and certain other information
use case analysis
The process of dividing up the functionality of the system into use cases, and determining the relationships among those use cases
use case diagram
A UML diagram showing actors, use cases and their relationships
use case modelling
Representing the sequences of actions performed by users of software.
use of an inappropriate standard algorithm
A common defect in which an unnecessarily inefficient or otherwise inappropriate algorithm is used
usefulness
The extent to which a system can be used to perform a task; combines usability and utility^2
user
A person who uses software (in contrast to customer)
user centred design (UCD)
An approach to software engineering using techniques that focus on users and their needs
user interface component (control, widget)
A component used to create the user interface such as a menu, list, input field etc.
user interface design
The design of the user interface of a software system
user interface state
At any point in time, the information displayed in widgets and the user interface's affordance
utility
A method or class that has wide applicability to many different subsystems and is designed to be reusable
utility cohesion
A form of cohesion in which utilities which cannot be logically placed in other cohesive units are kept together
utility^2
The extent to which, independent of usability, a product or process provides capabilities needed to solve a customer's problem
validation
The process of ensuring that requirements and designs solve the customer's problem
variable
A place where you can put data
verification
The process of ensuring that the design or implementation conforms to the requirements; the process of ascertaining that the software has no defects
vertical framework (application framework)
A complete framework for a particular class of applications. A near-synonym for application framework
view
In the MVC architecture, the class or classes used to render the appearance of the data from the model in the user interface
waterfall model
A process model in which the software engineer works in a series of stages
weighted average cost (burdened cost)
The cost of employing a person, including the cost of benefits, office and management support