A common analogy for a pipeline is the assembly line used in manufacturing. The end goal is to increase productivity --- the number of instructions executed per second or the number of cars built per day --- by dividing a complex operation into pieces that can be performed in parallel. Separate ``workers'' implement successive steps along the assembly line, and when an item finishes one step it is passed down the line to next step.
Pipelines are used in two major areas in computer design: instruction processing and arithmetic operations. The following requirements must be satisfied in a pipelined system: