1. A method for managing memory usage in a software program having a framework and a plurality of algorithm modules, the method comprising the steps of: combining the plurality of algorithm modules with the framework to form the software program, wherein each of the plurality of algorithm modules has a memory interface which responds to a memory allocation inquiry with memory usage requirements of an instance of the algorithm module; loading the software program on a hardware platform; and executing the software program on the hardware platform, wherein the step of executing comprises the steps of: sending a query from the framework to the memory interface of each of the plurality of algorithm modules to request memory usage requirements for each instance of each of the plurality of algorithm modules; receiving a response from the memory interface of each algorithm module identifying memory usage requirements for each instance of the algorithm module; and allocating a portion of memory to each algorithm module to instantiate each instance in accordance with the memory usage requirement identified by the memory interface of each algorithm module, whereby each instance of the plurality of algorithm modules is instantiated and allocated memory dynamically.