SRINIDHI VARADARAJAN, an assistant professor at Virginia Tech, worries a lot about tests. But Varadarajan isn’t fretting about blue book exams; he’s concerned about the complex tests software developers need to run on new programs. So he’s creating a testing environment that closely mimics the real world yet is easy to use.
Software developers currently face two testing options: simulation and emulation. Simulation provides realistic results but also requires extensive rewriting of the software, plus there’s no guarantee that the test version will function exactly like its real-world counterpart. Emulation is less realistic, but it saves time and effort by allowing direct testing of the actual software. Varadarajan’s new technology, which he calls Weaves, aims to combine the controllability of simulation with the speed and accuracy of code emulation.
Weaves, says Varadarajan, is a framework that translates codes from any programming language into code modules to create a highly accurate design, development and analysis environment. In effect, Weaves can thread together different codes, bindings and other elements to create a virtual world that tricks programs into believing they are running in their actual intended environment. The environments can range from something as relatively simple as a Web browser to as complex as a global network. “Even a virtual network that’s of the scale and scope of the Internet,” says Varadarajan.
Weaves also provides automatic checkpointing and recovery. The same reverse analysis that lets the code compiler translate any language enables it to record and save data changes, letting developers go back in time and test their software at an earlier stage.
Weaves’ most promising application may lie in the testing of various kinds of Internet-based software. “Using the Internet as a test platform is not exactly the best way to do things,” Varadarajan says. “You can’t test a piece of network software on 200 million computers. But with Weaves we can create hundreds of thousands of virtual machines that make software think it’s running on a very large-scale network.”