A software architecture for automatically (i.e., programmatically) determining
a storage configuration of a storage system for a certain software application.
Software programs which determine the storage configuration may have a modular
software architecture that allows the software programs to be used for a plurality
of different types of software applications. A storage configurator core engine
program may be executable to perform the automatic storage configuration function
that is independent of, or generic to, a plurality of possible software applications.
The core engine program may be configured to interface with one of a plurality
of possible application specific programs, depending on the software application
for which the storage configuration is being determined. The core engine program
may also be configured to interface with other programs or files in performing
the automatic storage configuration function, such as a rule information file,
a free space file, and user input.