Glossary » Software Engineering
a programming language extension that allows functions to be called every time a variable (the active value) is changed.
Along with callbacks and constraint systems, active values belong to a family of techniques that are extremely helpful in programming user…Read more »
while most software is designed to respond directly to user commands, agents are pieces of software designed to act on their own. In the background, while users are working, agents work in parallel on other tasks: searching for relevant or…Read more »
algorithms are the formal procedures for performing some computational task, such as the procedure to sort a set of numbers. An algorithm animation is a graphical display of process over time (auditory cues are also quite common). Algorithm animations are…Read more »
a stage of software development where the software is first tested for bugs by real users. In contrast to beta testing, alpha software is usually assumed to have some significant bugs or unimplemented portions.Read more »
abstraction-link-view architecture. A technique for building software by developing the application as a user interface (the View), the abstract data and semantics (the Abstraction), and a set of relationships between these parts (the Links).
This technique makes it easy to…Read more »
a method of measuring the usability of a system automatically; that is, the usability is tested by a software application rather than manually, by a person.
Some types of automatic evaluation do not involve users at all. For instance, some…Read more »
Abstract Windows Toolkit; a Java library for development of user interfaces, including standard widgets and layout tools.Read more »
designing software to work with previous versions of itself, e.g. by making files in the same format and working with the same equipment. In user interface design, this also means minimizing the learning curve so that existing users can easily…Read more »
testing a nearly-finished version of a piece of software, with the goal of finding bugs missed by the developers. Often beta testing is carried out by people outside of the developers organization.Read more »
software with too many features, interfering with usability. Usually a result of adding features over the course of multiple versions of the software and driven by ever-increasing feature lists used for evaluation in software reviews.Read more »
a programming technique common in user interface toolkits. A function can be registered as a callback for an object in the system, which causes the function to be called whenever some event takes place on the object. For instance, a…Read more »
computer-aided software engineering, a field that examines how computer tools can be used to support programmers. Examples include tools for visualizing software code, tracking bugs, and organizing software projects.Read more »
an architecture for distributed applications, which may involve multiple processes and which depends on one central process to serialize all events. Serialization is necessary to make sure that actions performed by multiple participants in a conversation are in a single…Read more »
a prototype, typically done as a paper-and-pencil version of the interface, that the designer walks through with the user and manually demonstrates how the interface would respond to user actions. For example, the user might say “I’d click this button”,…Read more »
(graphic design) a rapidly-drawn but high-quality sketch intended for presentation purposes. Traditionally comps are created as quick color sketches done in marker, often used for client presentations especially in advertising and architecture. A comp is usually intended to be a…Read more »
a declarative specification of relationships between variables. These relationships are automatically maintained by the system. Among other applications, constraints are used in graphics systems to specify layout, e.g. by specifying that two objects should always be connected with a line…Read more »
a diagram similar to a circuit diagram used in workflow analysis, programming, and process management. It has a set of nodes and lines between the nodes indicating how information flows from one node to another.
For instance, in workflow analysis,…Read more »
software system to support the drawing of graphics through specifying the graphic objects that exist and their properties without having to specifically instruct the computer to draw at any specific time, in contrast to procedural graphics where each drawing command…Read more »
a term from industrial design that emphasizes the importance of making tradeoffs so that designs are actually practical to manufacture at reasonable costs, in a reasonable amount of time, given the resources, personnel, and tools available. User interface designers need…Read more »
an architecture for distributed applications which divides work among several processes. Generally no process has any privileged role in the application and the processes don’t depend on each other to continue operating.Read more »
an ideal of programming practice that involves being unattached to your code and eager to hear criticism and make improvements.Read more »
programming that is done by a software user who is not a programmer, presumably without any specific training in programming. The idea is to make the power of computers fully accessible to all users so that they are not limited…Read more »
a central software routine for applications in graphical user interfaces that processes events as they arrive, primarily user input such as keystrokes and mouse clicks, but also system events such as time-based triggers. The events arrive in an event buffer.…Read more »
an approach to managing programming projects to maximize the quality output of programming teams and optimize shared knowledge and training. The technique relies on pairs of programmers sharing a single computer and collaboratively solving problems. Programming tasks are kept to…Read more »
a visual way of representing a task or procedure, traditionally used by programmers to visualize the flow within their programs. Steps of a process are represented in boxes and flow is represented by arrows connecting the boxes. Input and output…Read more »