In this paper we support the use of modular software in constructing medium to large size numerical algorithms or systems of algorithms. First we discuss the advantages of modular numerical software, which include ease of development, testing, use and modification. Then we suggest a way of progressing from the initial high-level design of the modular system to the computer code through a series of descriptions which also serve as an important aid to understanding the system. As an example we use our recently developed system of quasi-Newton algorithms for unconstrained optimization. Our final pre-code description stage causes us to be interested in programming languages which allow user specification and efficient execution of basic data operations.
Schnabel, Robert B., "Developing Modular Software for Unconstrained Optimization ; CU-CS-148-79" (1979). Computer Science Technical Reports. 146.