Streamlined Software Development with Virtualization
Would you like to test your software on multiple different operating systems? Do you have multiple development branches of your software you would like to isolate on separate computers to avoid unwanted interactions? Is the software you are developing a client-server system that requires multiple computers to run? Do you need to debug your crashing software?
If you answered yes to any of the above questions, virtualized development environment may be the solution to your challenges. Virtualization is currently a hot topic in IT-industry. The word virtualization has multiple meanings and the most common meaning is running multiple operating systems simultaneously on one physical computer by virtualizing the hardware layer. Practically this means that you can run multiple operating system installations in parallel on your computer.
There are a few ways to implement virtualization. One way is to run a virtualization software such as VMWare Server (Windows, Linux), VMWare Workstation (Windows, Linux), VMWare Fusion (OS X), Parallels (OS X), Xen (Linux) or XenSource (Linux) on top of the currently installed operating system or host operating system (the supported host operating systems are in parenthesis). These virtualization systems then allow setting up multiple operating system installations of top the host operating system. The operating systems run as if they were installed on bare metal but they are really running on top of virtual hardware environment provided by the virtualization software. Click the image below to see what it looks like to run LabVIEW on virtual Fedora Core 6 linux on VMWare Server on Windows XP host operating system.
Virtual hardware environment
The isolated virtual computers are called virtual machines. From the operating system point of view virtual machines are exactly like real computers. They provide a processor, memory, hard drive, network interface, a monitor, a CD/DVD-drive, mouse, keyboard and may even support some USB-devices. The user of the virtualization software may define how much system resources such as memory and hard drive space each virtual machine may consume. The user may start and stop virtual machines by pressing start and stop buttons.
The virtual hard drive of each virtual machine is really a large file in the host operating system. The file may either be of a fixed size or gradually resizing up to some upper limit specified by the user. The memory is shared with the host operating system but the user may specify how much memory the virtual machine may consume. The host CD/DVD drive can be used with the virtual machines or alternatively a CD/DVD image can be mounted as a virtual CD/DVD drive. The host mouse and keyboard can be used to control the virtual machines. The virtual machine monitor is a window on the host operating system desktop.
The benefits of virtualization in software development
As indicated by the question in the beginning of the article there are multiple ways virtualization can benefit in the software development process. Virtualization allows isolating multiple software development environments on a same physical computer so that each branch is totally unaware of the other brances and cannot have any interactions with one another. This is a nice thing when you want to develop multiple different versions of the same software and don’t want the development of the different versions to interact and to cause problems in this way. You may also want to test your software with multiple different version of your development tool such as LabVIEW and keep all different version of the development tools isolated from one another. The ability to set multiple isolated development environments on a single computers makes the development process easier and saves your money and nerves.
Another issue where virtualization is a great benefit is when you want to test your software on different operating systems or different versions of the same operating system. Virtualization software allows you to set up multiple different operating systems on a single computer and run them all in parallel. Consider for example that you are developing a LabVIEW application and want to test that it runs properly on Windows XP, Windows Vista, different versions of Linux and OS X. With virtualization software you can run all these operating systems on one computer, although running OS X requires this computer to be a Mac.
Third benefit is when you develop a networked application and need to have multiple computers set up to run the application. Instead of really setting up multiple physical computers you may set up multiple virtual machines that run the different components of the software and interact with one another via the network.
A fourth task where virtual machines show their power is debugging your software. Virtualization technology allows you to make snapshots of your entire virtual machine. The snapshot stores the state of the virtual machine including the memory state and hard disk state to a file. Later you can roll back to this snapshot and repeat what ever you were doing. This is a nice tool when you are for example dubugging a crash. It allows you to roll back to the moment just before the crash and see what really was going on when the crash happened.
Conclusions
Virtualization and virtual machines are a great tool for software development. In this article I covered some general benefits of virtualization in the software development process. I’ll write a follow-up article where I talk about setting up a superb free virtualization software, VMWare Server for Windows. Subscribe to the feed not to miss the next article.
I’d also like to cover LabVIEW licensing issues related to running LabVIEW in virtual machines. I’ve emailed twice National Instruments media relations within the last month telling them that I’m writing an article on LabVIEW virtualization and asking them to comment LabVIEW licensing under virtual machines but they don’t seem to bother responding me. I guess blogging is still not considered a real media.
3 Comments
Make A CommentComments RSS Feed TrackBack URL
Leave a comment
You must be logged in to post a comment.

(1 votes, average: 4.00 out of 5)
April 23rd, 2007 at 5:50 pm
Hi Tomi Great, I do my LabVIEW beta testing in a VMwareplayer. Even the server is not necessary, only real hardware testing is a problem. Luckily is the USB bus available.An important issue with licensing is that you can create a new virtual system in a snap is your evaluation period is over. . . . . NI are you reading along?
August 20th, 2007 at 6:40 pm
[...] Tomi M Date: Apr 23, 2007 01:10 I’ve just posted an article <a href="http://expressionflow.com/2007/04/23/streamlined-software-development-with-virtualization/" target="_blank">Streamlined software development with virtualization</a> to my [...]
March 5th, 2008 at 8:39 pm
I use Parallels 3.0 on MacOS X to develop Windows LabVIEW Apps. I have to second everything that Tomi wrote. One point that I’d like to add is that testing deployments is much easier. How often have you thought you had everything bundled up correctly (ActiveX, .NET, etc.), but then when you install the executable on a virgin machine, something is missing? I create a virgin XP machine and snapshot it before installing anything LabVIEW related. I keep snapping back to the clean machine to try my installers and double check that everything is installed where I want, and everything is functional. Very helpful.
Chris