This two-part series discusses the benefits of using virtualization in the software development process. VMware Workstation features, for example, can improve backup and virtual machine management during software development.
In the first part of this tip, I listed common software development problems. Environment integrity, portability and the lack of physical resources, for example, are just a few factors that can slow the manufacturing and deployment of new products in the software development process.
In this article, we'll discuss how using certain VMware Workstation features during each phase of the software development process may mitigate or completely solve some problems, speeding up releases and saving loads of money.
VMware Workstation features can address some of the biggest problems in the software development process. The probability is near zero that a software engineer could take VMware Workstation features for a spin and still stick with traditional tools.
The first problem VMware Workstation features can address in the software development process is the issue of environment integrity. The snapshot feature in VMware Workstation allows developers and testers to save a virtual machine state and revert back to it as needed. Developers can make savvy use of the snapshot VMware Workstation feature by installing a brand new operating system in the virtual machine, fitting it with all tools they need to produce new code, and finally, saving a snapshot.
The operation creates a pure environment completely isolated from the everyday workstation. In this scenario of the software development process, a developer can browse the Internet, read emails and even play games on the machine without jeopardizing the development workspace.
For maximum security, the virtual machine could be completely disconnected from the real network card to remove any chance that the workspace might be compromised with a remote attack or virus infection. This would also save the hassle of continuously patching the operating system or installing an antivirus to maintain VMware security.
But wait, you might say. Even if the workspace cannot be compromised, it still can be overloaded with libraries, utilities and other clutter during a project. In this case, a software engineer can revert back to a clean state as soon as the project is closed, simply calling back the first snapshot, which takes only seconds.
VMware Workstation's snapshot feature provides a much-needed tool for QA as well. When compatibility testing takes place during the software development process, testers need to assure that the new application works correctly with several different products, both from within the parent company and from third parties.
A snapshot manager allows VMware Workstation users to save multiple states of the same virtual machine, meaning testers can install one application after another without needing to reinstall the whole environment every time.
As an example, if a new prototype application has to be tested for compatibility with Microsoft Office and several service packs, the best approach is to save a snapshot of the newly installed operating system, then another after the non-service packed version of Office has been installed and still another one after the service pack is in place. Then, testers are able to proceed with the code installation in the software development process.
If something goes wrong, or if they want to test the same installation with a different service pack, the testers need only revert back to the snapshot taken before the service pack installation. Trying to do the same thing without virtualization, or a lot of different physical machines, would take hours or days.
Two other VMware Workstation features, multiple snapshots branches and linked clones, can further improve the software development process.
Multiple snapshot branches and linked clones
The multiple snapshots branches feature sets an existing snapshot as the original virtual machine image, and then it takes new snapshots from there. Linked clones act in similar way but disjoin the new snapshots from the original virtual machine image location. Both VMware Workstation features are particularly useful for QA, because they don't copy what already exists of the original virtual machine but rather refer to it for what will be done in future.
Let's reconsider the previous example. A tester who needs to verify compatibility of a new application against multiple Microsoft Office versions and their service packs can create a snapshot of the brand new operating system. After installing Office 2003 over this snapshot, the QA engineer will be able to set the new starting point on the snapshot the engineer took after installing the fresh OS.
At this point, the engineer will be able to invoke a new snapshot for both branches before installing Service Pack 2 on Office 2003 and Service Pack 1 on Office 2000.
Our application can be tested against all these environments while the Snapshot Manager makes it easy to create and discard snapshots and linked clones.
VMware Workstation features such as snapshots and linked clones not only drastically reduce the time needed to prepare a new development or testing environment, but they also address the problem of unavailable physical resources. QA engineers don't need a new machine for every single environment to test; they just need enough disk space to contain several branches of snapshots and clones.
Another one of the important VMware Workstation features is Teaming, which is useful both in the software development process and testing.
Teaming allows you to logically link together multiple virtual machines and launch them at the same time. It also allows users to create virtual connections between the virtual machines with simulated speeds. So, for example, a software engineer developing a multi-tier application can control how code performs when used on a modem or a broadband connection. A usability tester can verify how much bandwidth is needed for a networked application to run without providing a bad user experience.
VMware's ability to share virtual machines between different products is hugely helpful to the software development process. This not only permits developers to move without modifications and show their work to other teammates or product managers, but it also allows them to port applications to other virtualization facilities, where the code will be tested or even put in production.
So, as simply as copying a folder, the virtual machine containing the new software can be moved from Workstation to Server, VMware's free enterprise virtualization product. There, the software can be tested for compatibility and usability, and its performance can be verified against stress tests.
After the QA phase, the same virtual machine can be moved again into ESX Server, the VMware product aimed at data center deployment, where it will be put in production.
Whenever a problem appears, the virtual machine can be moved back and forth among these platforms for patching errors or testing new configurations. And if a customer wants an onsite demonstration of the new product, the same virtual machine can be moved once again, put in VMware Player (the VMware free virtualization product for desktops) and distributed to sales managers worldwide.
Automation to come
The migrations we have discussed so far are done manually. In the near future, VMware will provide automation for them with a new product called Lab Manager, which will be launched in beta in October.
The product, formerly called Slingshot (and obtained when VMware acquired Akimbi in June 2006), will also offer in future releases the capability to provide software lifecycle automation for the competing platform, Microsoft Virtual Server.
This will greatly simplify control and optimization of software production phases in the software development process at big companies, wherein multiple departments adopt different development tools but need to leverage virtual machines images in mandatory testing and production virtual infrastructures.
VMware is also expected to introduce new improved tools for easing the development phase in the upcoming Workstation 6.0, which will be presented at VMworld 2006 in November.
Reducing software development problems with virtualization
Using virtualization for software development environments
Continuous integration can ease software development problems
The benefits of cloud computing for software development