Are you looking to find out how virtualization (server virtualization, like that offered by VMware, Citrix and Microsoft) can help your software engineering process? Lets look at various stages in the software development process (regardless of the software engineering methodlogy – waterfall/agile/… that you use). By the way, this was
something I wanted to post about and incidentally I also found a recent question about this raised on StackOverFlow.
Do take a look at this list below and let me know use cases that I am missing.
- Requirements gathering and Definition
- Use virtualization during your rapid prototyping and proof of concept (POC) development. Rapidly build up machine configurations, deploy your ‘Hello World’ app and test out the POC.
- Design and Development
- Easily create environments for intermediate (work in progress) demos to customers and management
- Provide a consistent environment to all your developers
- Unit test your code on various target OS systems easily
- Some development organizations may use VDI to ease the management of developers’ desktops
- Snapshot and save your developers’ environments – easy back up and recovery in case of machine failures
- Software Testing
- Probably the first area in software engineering to leverage virtualization, there are umpteen uses of virtualization in testing. Regression tests, performance testing, testing under varied environment conditions/permutations/combinations, integration testing etc. are all cases where virtualization is useful. You will find this question posed on SQA forums as useful reference.
- Virtual lab management is a management layer above the base hypervisor that takes the use of virtualization in software labs to the next level. You will find this other post of mine as useful reading in this context — “What virtual lab automation offers over and above a hypervisor“.
- Software Build and Release Management
- Get virtual machine build farm environments on the fly and on demand. Various virtual lab automation solutions like VMLogix LabManager offer integrations with build tools like IBM Rational Build Forge. Read more about VLA integrations over here. Read more about the Build Forge integration over here.
- Save your build environments so you can easily revert back to the build configuration of an older version of the software. This is particularly useful during patch releases (I found this use as one of the comments in StackOverFlow).
- Source and Version Control
- Maintain your source control systems on a virtual machine. Use the snapshot and save features to capture (backup) your source control systems easily. Revert back to the last known state in case of machine failures etc.
- Software Maintenance
- Software Staging and Deployment
- Products like VMware Stage Manager and VMLogix StageManager help users manage multi-machine configurations in the pre-production staging and system readiness. These management products over the virtualization platforms help users collaborate in a workflow during the staging process and eliminates the risk of service deployment/upgrades to a large extent.
- Software Trials and Evaluations
- Virtualization can help by making software trials and evaluations simpler. Software can be packaged as an appliance and users can immediately evaluate the software features rather than going through the challenges during installation, setup, configuration etc. This is a post that talks about virtual lab automation in software trials and evaluation.