Concurrent engineering involves the simultaneous consideration in the design phase of life-cycle factors such as product, function, design, materials, manufacturing processes, testability, serviceability, quality, and reliability. Concurrent engineering is important because it is at the design stage that many of the costs of a product are specified. We present a new approach to concurrent engineering using artificial intelligence constraint networks. A system that uses constraint networks can advise the designer on improvements that can be made to the design. This approach has a number of advantages, including being flexible enough to allow the design problem to be approached from a variety of viewpoints; allowing the designer to design despite having incomplete information; and being able to handle the large variety of life-cycle information. The existing approaches to concurrent engineering are reviewed and the requirements of a concurrent engineering system are indicated. Constraint networks are described and this leads into a description of SPARK, a constraint network language. The final part of the paper uses an example from Larry, a concurrent engineering system for printed wiring boards which is written in SPARK. Larry advises the designer on improvements that can be made to a design in order to improve its life-cycle effectiveness. The example used is based on data from a company that manufactures sophisticated printed wiring boards.