1. A method of managing software that is available for use in a system for testing or diagnosis of a vehicle or an engine, comprising: prioritizing software that may be utilized by the system to implement one or more testing or diagnostic functions; storing a select portion of the software in a non-volatile random access memory serving as main memory of the system, based on the prioritization; booting a processor of the system to use the software directly from the non-volatile random access memory; modifying the prioritization of the software that may be utilized by the system to implement one or more testing or diagnostic functions, and storing a different select portion of the software in the non-volatile random access memory, based on the modified prioritization; and booting the processor of the system to use the different select software directly from the non-volatile random access memory.