IEEE Internet Computing, September/October 2009, pp. 52–59
System Virtualization Tools for Software Development
The increasing complexity of IT ecosystems has exacerbated the need for specialized roles. In most organizations, system administrators control deployment, whereas the software development team handles all previous development tasks. (We use the phrase development team loosely to describe the many roles involved in the development process, such as requirements engineers, software architects, quality-assurance staff, and testing engineers.) System administrators are primarily responsible for operating and maintaining production sites, and service availability and performance are their main concerns. Consequently, administrators have neither the resources nor technical skills to help the development team test and deploy immature software components. Developers’ productivity and, as a result, time to market are negatively affected by this role mismatch. The situation is even worse when organizations apply agile software development models that dictate rapid iterations over the basic waterfall life cycle. Frequent test execution is the cornerstone of these methods, so the need for a suitable deployment environment is even more pressing. This organizational gap is a showstopper for the software development process.