This paper describes a program called FRET that automates system identification, the process of finding a dynamical model of a black-box system. FRET performs both structural identification and parameter estimation by integrating several reasoning modes: qualitative reasoning, qualitative simulation, numerical simulation, geometric reasoning, constraint reasoning, resolution, reasoning with abstraction levels, declarative meta-level control, and a simple form of truth maintenance. Unlike other modeling programs that map structural or functional descriptions to model fragments, FRET combines hypotheses about the mathematics involved into candidate models that are intelligently tested against observations about the target system. We give two examples of system identification tasks that this automated modeling tool has successfully performed. The first, a simple linear system, was chosen because it facilitates a brief and clear presentation of PRET's features and reasoning techniques. In the second example, a difficult real-world modeling task, we show how FRET models a radio-controlled car used in the University of British Columbia's soccer-playing robot project.