This two-part series discusses how to streamline the software development process in a virtual infrastructure. There are a variety of software development problems that can plague a data center, but deploying VMware virtualization can make it easier to roll out new products.
In this article, we'll look at how deploying a VMware virtual infrastructure could reduce software development problems in your company's software development plan. In part two, we'll explore VMware Workstation features that can be used to tweak applications and continue to overcome software development problems.
VMware is not the only company that offers virtualization solutions, but the wide range of VMware products and its capability to seamlessly migrate a virtual machine from one platform to another make it a good choice for avoiding some common software development problems.
Typical software development problems
The very first issue of our common software development problems is environment integrity.
Many software engineers keep their development tools on an everyday workstation. When a new software development plan starts, the majority simply start coding in the same environment that they use for browsing the Web, reading email, watching videos or presentations -- often even gaming. In theory, the systems used for coding new products ought to be perfectly clean, like the fresh installation in which customers are supposed to host the product being developed. Unfortunately, this rarely happens, and software development problems can ensue.
Machines that serve many functions on a day-to-day basis will tend to have a lot of installed software, which means each machine has multiple libraries, requires high-level permissions, modifies environmental variables and so on. This is not to mention possible malware infections. The newly developed code for your software development plan could easily run or not run because of these variations, but moving it onto different machines -- machines on which the operating systems have been compromised in different manners -- will produce different results, leading to software development problems and time-consuming troubleshooting.
Another of the common software development problems in a complex software development plan is environment portability. Software architects and engineers, product managers, have to keep track of a product's growth during the whole software development process or have to collaborate on it to improve or debug its routines.
Having many persons around the same monitor or permitting remote access to the development environment is highly unpractical. On the other hand, moving code from an operating system to another is no simple matter.
Any application based on database access, for example, is very hard to share if the developer has installed the database instance on his own machine or relied on a remote instance on a dedicated network segment that not everybody can access. But even without a database, the software development plan could be in need of libraries or, in the case of multi-tiered applications, of other services that aren't moved along with the code.
A third of these typical software development problems is the lack of physical resources. When software engineers are savvy enough to not rely on locally installed services for their software development plan, they need remotely accessed services that have to be deployed, configured and notified to the team. This requires time but most of all implies machine high availability, which cannot be taken for granted.
Similarly, hardware configurations often have to be modified during execution of the software development plan to add more memory or another network interface card. Adding new components can cause even more major software development problems in big companies in which hardware is acquired in stock from OEMs. Virtualization hardware could help in this case, if you decide to virtualize the environment.
But the amount of machines needed for a proper software development plan is not only limited to machines on which to deploy needed services. QA engineers have to try the same code on several versions of the same operating system to verify that the code works as expected in all possible scenarios -- with different permission levels in several Windows editions or with different libraries availability in several Linux distributions. A dedicated machine is expected to be available for each of them, and software development problems can occur when multiple new applications are concurrently in development.
It's obvious that lack of hardware can soon turn to be another of the possible software development problems for IT managers. Once the software development plan is carried out, they have a certain amount of computers that will be wasted until the next software development plan begins, and could become obsolete in the meantime.
Even having enough resources, software engineers and testing staff members still have to face the most frightening of software development problems: short deadlines. A long series of logistical operations can severely slow down a software development plan, distracting coders from their goals. For example recognizing the need for environment integrity leads to the act of debugging code always on a fresh installation, which is impossible until developers reinstall the whole operating system from scratch every time. But even without such level of attention, when the developed code includes an installer, it's critical to be working on a virgin OS.
Lack of time availability also affects testers. Testers not only need multiple physical machines for every platform on which the code has to be certified as but also need to reinstall the same operating system several times -- perhaps because last installation failed or simply to test different languages, service packs or concurrent applications.
Fundamentally every test case should be conducted on a dedicated environment and this implies a notable effort. Even if disk backup solutions are in place, their usefulness depends on the underlying hardware and restore times.
These are some of the most typical software development problems that could plague your software development plan. But virtualization can save the day.
In part two of this series, we'll explore VMware WorkStation features, detailing a winning strategy to improve the process, from code writing to production release and customer delivery.
About the author: Alessandro Perilli, a self-described server virtualization evangelist, launched his influential virtualization.info blog in 2003. He is an IT security and virtualization analyst, book author, conference speaker and corporate trainer. He is a Microsoft Most Valuable Professional for security technologies and the certifications he holds include Certified Information Systems Security Professional; Microsoft Certified Trainer; Microsoft Certified System Engineer with Security competency; CompTIA Linux+; Check Point Certified Security Instructor; Check Point Certified System Expert+; Cisco Certified Network Associate; Citrix Metaframe XP Certified Administrator.