The quality of software depends on the effectiveness of the software development process. Existing software development processes are still not flexible or practical enough for developing a system that requires a mix of existing processes to be used in the production of that system. In this paper, a formal specification language, called TUG (Tree with Unified Grammar), is presented to support a software development process that accommodates conventional software development, operational specification, rapid prototyping via software transformations, software reuse, software testing, and program proofs of correctness. The development process with TUG can not only allow for a mix of existing development processes applied to a given system but also can be adapted to one of existing development processes. The combination of existing development processes takes advantage of the strengths of each process in the system. The software development process with the aid of the TUG specification language can aid the production of reliable and reusable programs.