Agile methods of software development promote the use of flexible architectures that can be rapidly refactored and rebuilt as necessary for the project. In the mechanical engineering domain, software tends to be very complex and requires the integration of several modules that result from the efforts of large numbers of programmers over several years. Such software needs to be extensible, modular, and adaptable so that a variety of algorithms can be quickly tested and deployed. This paper presents an application of the unified process (UP) to the development of a research process planning system called CyberCut. UP is used to (1) analyze and critique early versions of CyberCut and (2) to guide current and future developments of the CyberCut system. CyberCut is an integrated process planning system that converts user designs to instructions for a computer numerical control (CNC) milling machine. The conversion process involves algorithms to perform tasks such as feature extraction, fixture planning, tool selection, and tool-path planning. The UP-driven approach to the development of CyberCut involves two phases. The inception phase outlines a clear but incomplete description of the user needs. The elaboration phase involves iterative design, development, and testing using short cycles. The software makes substantial use of design patterns to promote clean and well-defined separation between and within components to enable independent development and testing. The overall development of the software tool took about two months with five programmers. It was later possible to easily integrate or substitute new algorithms into the system so that programming resources were more productively used to develop new algorithms. The experience with UP shows that methodologies such as UP are important for engineering software development where research goals, technology, algorithms, and implementations show dramatic and frequent changes.