Reverse engineering is an approach for constructing a computer-aided design (CAD) model from a physical part through dimensional measurement and surface modelling. This paper presents alternatives for reverse engineering of free-form parts using Non-Uniform Rational B-Spline (NURBS) surfaces. A two-step linear approach is employed for fitting NURBS curves and surfaces using the measured points. During the first step, the weights of the control points are identified from a homogeneous system using symmetric eigenvalue decomposition. The control points are further processed in a way similar to B-spline curve and surface fitting. Some examples are presented to illustrate both the steps of reverse engineering and the process of NURBS curve and surface fitting.