This thesis presents a general framework for reasoning about the relationship between the shape of a solid object and its kinematic function in a mechanical device. Such a framework is essential for numerous reasoning tasks concerning mechanical devices such as analysis, prediction of behavior, and design. We propose to use an intermediate representation that relates the geometry of objects to their kinematic function in a mechanism; this representation stems from the notion of configuration spaces, originally introduced for motion planning. We show that configuration spaces are an appropriate symbolic representation for reasoning about the kinematics mechanical devices because the regions of the mechanism's configuration space can be interpreted as representing all the qualitatively different possible motions its objects. Our theory supports both qualitative and causal reasoning. To describe kinematic behavior functionally, we begin by developing two functional languages: possible motions descriptions and causal descriptions. We then present a two-step analysis procedure that starts by deducing the behavior of all kinematic pairs and then composes these behaviors to obtain the overall behavior of the mechanism. For a subclass of mechanisms (fixed axes mechanisms), we show that a simplified version of the composition operation can be used to obtain the overall behavior, and we outline a constraint propagation, label inferencing algorithm to produce a region diagram. This diagram constitutes a total qualitative envisionment of the mechanism's reachable behaviors. Given a sequence of input motions and a region diagram, we indicate how to predict the behavior of the mechanism. In the second part of this thesis, we address the problem of designing the shape of physical objects defined by a set of functional requirements. In particular, we show how to design kinematic pairs from a description of their desired behavior. We provide a general heuristic algorithm for innovative shape design, and present a number of efficient algorithms for special design cases. We also show how to design kinematic pairs when a qualitative or incomplete description of the desired behavior is provided.