Abstract:
Methods and apparatus for testing software with real-time source data from a projectile according to various aspects of the present invention operate in conjunction with a real-time data source, a signal processor, a recordable medium, and a testing platform. The signal processor receives real-time data from a real-time data source during a test and saves it to a storage medium before providing the real-time data to the testing platform for permanent storage. During a subsequent test, the testing platform may upload the saved real-time data to the signal processor foregoing the need to generate new real-time data from the real-time data source.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Patent Application No. 60/917,743, filed May 14, 2007, and incorporates the disclosure of the application by reference. 
    
    
     BACKGROUND OF INVENTION 
     Software development typically involves writing, debugging, and testing computer code. Traditional methods of testing software include supplying the computer code with a set of synthetic data which produce a known result if the software is functioning correctly. When the software produces unexpected or undesired results, the computer code may be changed or modified accordingly. Alternatively, new features may be added to the software which also require testing before the software may be released for use. This is an iterative process that eventually results in computer code that functions as designed. 
     Some software applications, however, require real-time data that must be generated each time the software is to be tested. In these instances, synthetic data may not adequately reflect the actual conditions in which the software is expected to perform. For example, in applications such as the tracking of high speed projectiles, synthetic data may not be able to replicate environmental conditions or the actual trajectory of the projectile while in flight. Achieving a compliant software package may therefore require multiple range/field tests in which a projectile has to be fired or launched under conditions reflective of the expected environment and may increase development time or development costs. 
     SUMMARY OF THE INVENTION 
     Methods and apparatus for testing software with real-time source data from a projectile according to various aspects of the present invention operate in conjunction with a real-time data source, a signal processor, a recordable medium, and a testing platform. The signal processor receives real-time data from a real-time data source during a test and saves it to a storage medium before providing the real-time data to the testing platform for permanent storage. During a subsequent test, the testing platform may upload the saved real-time data to the signal processor foregoing the need to generate new real-time data from the real-time data source. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       A more complete understanding of the present invention may be derived by referring to the detailed description and claims when considered in connection with the following illustrative figures. In the following figures, like reference numbers refer to similar elements and steps throughout the figures. 
         FIG. 1  representatively illustrates a projectile tracking system; 
         FIG. 2  is a block diagram of a real-time test in accordance with an exemplary embodiment of the present invention; and 
         FIG. 3  is a block diagram of a real-time test performed with saved data in accordance with an exemplary embodiment of the present invention. 
     
    
    
     Elements and steps in the figures are illustrated for simplicity and clarity and have not necessarily been rendered according to any particular sequence. For example, steps that may be performed concurrently or in different order are illustrated in the figures to help to improve understanding of embodiments of the present invention. 
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
     The present invention may be described in terms of functional block components and various processing steps. Such functional blocks may be realized by any number of hardware or software components configured to perform the specified functions and achieve the various results. For example, the present invention may employ various computers, networks, servers, databases, and the like, which may carry out a variety of functions. In addition, the present invention may be practiced in conjunction with any number of networks, storage media, or real-time data sources, and the systems described are merely exemplary applications for the invention. Further, the present invention may employ any number of conventional techniques for transferring data, calculating information, presenting information, storing information, and the like. 
     Methods and apparatus for testing software according to various aspects of the present invention operate in conjunction with a computer connected to real-time data source, such as a radar system. The computer may be configured to convert the real-time data source into a signal capable of being used to test software. For example, referring to  FIG. 1 , a real-time system  106  according to various aspects of the present invention operates in conjunction with a real-time data source  104  configured to provide real-time information relating to a projectile  102 . The real-time data source  104  provides an input signal of real-time data  110  to the signal processor  114  that is processed and used to test a software package. The real-time data  110  may be stored temporarily to memory  116  before being transferred to a test computer  108  for permanent storage. Saved real-time data  110  may then be passed to the real-time system processor  118  for testing of a software package. 
     The projectile  102  comprises a target, for example to a system to deliver a payload. The projectile  102  may comprise any system such as a missile, a rocket, or a ballistically launched artillery shell. The projectile  102  may be guided or unguided and may comprise any suitable material such as lead, steel, or explosive elements. In an exemplary embodiment, the projectile  102  comprises a rocket propelled grenade (“RPG”). 
     The real-time data source  104  generates real-time data  110  information relating to the projectile  102 . The real-time data source  104  may comprise any system for gathering real-time projectile  102  data such as a radar system, an infrared tracking system, a laser tracking system, or the like. The real-time data source  104  may comprise a single method or multiple methods of collecting real-time data  110 . For example, in one embodiment of the present invention, the real-time data source  104  may comprise a radar system configured to produce projectile  102  track data relating to velocity vectors and directional motion of the projectile  102  after it is fired. 
     The real-time data  110  may also be configured in any suitable manner and may comprise unprocessed radar imaging data or data that has been subjected to preprocessing steps, such as image or track discrimination. The real-time data  110  may comprise either analog or digital data. The real-time data  110  may also comprise unique time stamp information relating to the time when the real-time data  110  was initially generated by the real-time data source  104 . 
     For testing purposes, the real-time data  110  may be generated by any suitable method or process. For example, a projectile  102  may be fired towards a target while the real-time data source  104  generates the real-time data  110  during projectile  102  flight. The real-time data  110  may then comprise information such as when the projectile was fired, the velocity and acceleration of the projectile during flight, the directional components of the projectile in relation to the real-time data source  104  during flight, and the amount of time elapsed during flight of the projectile. In another embodiment, the real-time data source  104  may be the target and the real-time data  110  collected may include projectile tracking data in addition to estimates of time of impact or potential points of intercept. 
     The real-time system  106  receives the real-time data  110  and processes the raw data into a form used by the software package. The real-time system  106  may comprise any suitable system for receiving, processing, and saving data. For example, the real-time system  106  may comprise a signal processor  114 , a memory module  116 , and a real-time system processor  118 . The real-time system  106  may comprise a system as simple as a dedicated processor and a memory module or the real-time system  106  may be integrated into preexisting systems or computers such as a tracking computer or the real-time data source  104  itself. The real-time system  106  may further be implemented entirely or partially through software stored in memory and executed by the processor, and/or may be implemented entirely or partially via hardware. 
     The memory module  116  stores the output from the signal processor  114 . The memory module may comprise any suitable system for storing data such as volatile or non-volatile memory. In one embodiment, the memory module  116  may comprise random access memory suitably configured to store a processed real-time data signal  112  from the signal processor  114 . In another embodiment, the memory module  116  may be further configured to send and receive the processed real-time data signal  112  to the test computer  108 . For example, in the present embodiment, the memory module  116  may be configured to save the processed real-time data signal  112 , transfer the processed real-time data signal  112  to the test computer  108 , and receive the processed real-time data signal  112  prior to the running of a software test. 
     The signal processor  114  converts projectile  102  data produced by the real-time data source  104  from one form into another. The signal processor  114  may comprise any suitable system for processing, digitizing, or converting data. For example, the signal processor  114  may comprise an integrated circuit card assembly capable of converting the real-time data  110  signal from an analog signal into a digital signal suitably structured for analysis and/or processing by the real-time system processor  118 . 
     Referring now to  FIG. 2 , in one embodiment, the signal processor  114  may be configured to receive the real-time data  110  directly from the real-time data source  104 . The real-time data  110  may be sent from the real-time data source  104  to the signal processor  114  by any suitable method such as through a high speed data cable such as RS-422, RS-232, or coaxial cabling, over a wireless connection, or through an integrated circuit. The real-time data  110  may then be processed or converted from one form into another, such as through an analog-to-digital converter, and then stored in memory or passed on to the real-time system processor  118  for testing. For example, the signal processor converts the real-time data  110  into the processed real-time digital signal  112 . The processed real-time data signal  112  may be stored as an array of complex numbers representative of raw digitized radar data. 
     The processed real-time data signal  112  may be stored or saved by any suitable method or process. In one embodiment for example, the processed real-time data signal  112  may be saved to a temporary memory such as RAM and immediately transferred to the real-time system processor  118  for testing. Following the software test, the processed real-time data signal  112  may be written from RAM to the test computer  108  in any form of permanent memory such as a hard disk drive, a CD-ROM, a DVD-ROM, or the like. In another embodiment, the processed real-time data signal  112  may be written to memory and transferred to the real-time system processor  118  substantially simultaneously. In another embodiment, the processed real-time data signal  112  may be permanently stored to the test computer  108  without forwarding it to the real-time system processor  118 . 
     After the processed real-time data signal  112  has been saved to a permanent storage medium, it may then be used repeatedly in place of new real-time data  110  to test changes or modifications to the software code. Referring now to  FIG. 3 , rather than generating new real-time data  110 , the processed real-time data signal  112  may be modified and used to test software at any time. For example, the test computer  108  may modify the processed real-time data signal  112  to appear as though it were generated in real-time. This updated signal  302  is then transferred to the memory module  116  of the real-time system  106 . The updated data signal  302  is then sent to the real-time system processor  118  where it is treated as though it were newly generated real-time data  110 . Software may then be tested without the necessity of repeated projectile  102  launches. 
     Modification of the processed real-time data signal  112  may be accomplished by updating or adjusting the time stamps associated with the processed real-time data signal  112  that were created when the data was originally generated by the real-time data source  104 . Data pertaining to or dependent on time may be stored at known locations within an array of numbers. The test computer  108  may then be configured to overwrite these data locations with values reflective of the time when the software test is being run. For example, if part of the real-time data  110  contained information associated with the time and date when the source information was generated, that information may be updated to reflect the current time and date at the instant the test is begun. 
     The test computer  108  provides commands to the real-time system  106  during testing. The test computer  108  may comprise any suitable system for controlling the real-time system  106  such as a bench tester, a replicator, or computer. For example, in one embodiment, the test computer  108  may comprise a PC configured to command the real-time system  106  to save the real-time data  110  to temporary memory prior to transferring the processed real-time data signal  112  to the test computer  108  for permanent storage. The test computer  108  may be further configured to reload the saved processed real-time data signal  112  to the memory module  116  prior to conducting a software test. 
     The test computer  108  may also be configured with a user interface suitably adapted to facilitate modification of the processed real-time data signal  112 . The user interface may comprise any suitable system for allowing personnel such as a test engineer to manually interact with the signal processor. The user interface may comprise a graphic user interface responsive to an input device such as a keyboard or a mouse, a touch screen, or the like. 
     In another embodiment, the test computer  108  may comprise a simulator and be configured to perform a software test using the saved processed real-time data signal  212  without uploading the updated signal  302  to the real-time system  106 . The test computer  108  may be configured to use the processed real-time data signal  212  to test output characteristics of the real-time system  106  by testing software saved on the test computer  108 . By simulating the real-time system  106 , the test computer  108  may be used to test software in both a software only environment or in a combined hardware/software environment. 
     In the foregoing specification, the invention has been described with reference to specific exemplary embodiments. Various modifications and changes may be made without departing from the scope of the present invention as set forth in the claims. The specification and figures are illustrative, rather than restrictive, and modifications are intended to be included within the scope of the present invention. Accordingly, the scope of the invention should be determined by the claims and their legal equivalents rather than by merely the examples described. 
     For example, the steps recited in any method or process claims may be executed in any appropriate order and are not limited to the specific order presented in the claims. Additionally, the components and/or elements recited in any apparatus claims may be assembled or otherwise operationally configured in a variety of permutations and are accordingly not limited to the specific configuration recited in the specification and shown in the drawings. 
     Benefits, advantages, and solutions to problems have been described above with regard to particular embodiments. Any benefit, advantage, solution to problem or any element that may cause any particular benefit, advantage or solution to occur or to become more pronounced are not to be construed as critical, required or essential features or components of any or all the claims. 
     As used in this description, the terms “comprise”, “comprises”, “comprising”, “having”, “including”, “includes” or any variation thereof, are intended to reference a non-exclusive inclusion, such that a process, method, article, composition or apparatus that comprises a list of elements does not include only those elements recited, but may also include other elements not expressly listed or inherent to such process, method, article, composition or apparatus. Other combinations and/or modifications of the above-described structures, arrangements, applications, proportions, elements, materials or components used in the practice of the present invention, in addition to those not specifically recited, may be varied or otherwise particularly adapted to specific environments, manufacturing specifications, design parameters or other operating requirements without departing from the general principles of the invention.