SystemForge® is now available from 1E as part of a solution designed to enhance software development and testing processes.

1E has a wealth of experience in providing large organizations with the necessary infrastructure to support lengthy software development projects. A key aspect to the success of these projects has been the automation employed to provide developers and testers with trusted environments in which to test their software. The integrity of these environments is ensured as they are never built manually, thereby eliminating the risk of human error and providing a repeatable and reliable process.

Reduce project delivery time & cost
The 1E Professional Services team firmly believes that huge amounts of time can be saved by achieving total automation. This means avoiding the common “80/20” scenario where the bulk of a repetitive task is automated, but the ‘tricky’ pieces remain a manual task. The knowledge from the team has led to the development of SystemForge, a software product designed to accelerate and increase the quality of testing and therefore decrease the overall time and cost it takes to develop software.

Ideally software should be tested in an environment representative of where it will ultimately be deployed. Often corners are cut and bugs remain hidden by installing and testing on a single server. SystemForge is designed for situations where the target environment is complex, i.e. the application is to be distributed across and dependent upon many servers. This allows testing of aspects such as performance and resilience. The complexity is caused by the order of installations and the sheer number of configuration steps across all the software running on those servers. SystemForge allows the user to capture this information as a series of dependencies. A simple example would be: a server cannot join a domain until a domain has been created. More complex examples are encountered where a configuration step is dependent upon several other tasks having been completed across several other servers.

Parallel installation and configuration
Once environments and dependencies have been modelled within SystemForge, the full power of automation becomes apparent. SystemForge is able to orchestrate the individual installation and configuration steps such that instructions are executed in parallel wherever possible. This is hard to match when employing teams of people to perform the equivalent task. Take, as an example, a piece of software which takes 20 minutes to install and a second piece of software which cannot be installed until the first is complete. Most people will endeavour to find something else to do during those 20 minutes. Inevitably they will not return to the server until much later, causing a delay in the execution of the second installation task.

These delays are exaggerated when people need to communicate their status to others. This whole scenario is avoided by using software to execute installation and configuration in parallel across many servers.

SystemForge isn’t just about automating installs of supporting server applications such as SQL Server, it helps deploy the bespoke software being developed and tested. Often this code will not feature a mature installation routine and will require several ‘manual steps’ to deploy and configure correctly. This is especially true during the actual development period. Capturing these steps within SystemForge means the rapid, repeatable and reliable benefits can be extended to bespoke code deployment, as well as the provisioning of the test environment itself.

Fully functional test environment at the push of a button
The satisfaction from using SystemForge doesn’t just come from the ability to create a fully functional test environment at the push of a button, although that always makes for a great demonstration. The solution makes life significantly easier for anyone having to implement infrastructure changes during software development projects. Part of the process of creating automated install and configuration tasks is to expose all options as parameters. For example, a task which formats a drive can take inputs for drive letter, size and file system type. The SystemForge GUI makes the act of changing size from 10Gb to 20Gb a trivial matter. These specific values can be assigned directly to a machine, or inherited from several hierarchical points to help produce standardized, re-usable configurations. Furthermore the system will perform validation checks, such as missing values and circular dependencies, before anything happens in order to avoid mistakes which would waste time. If changes are made to the task itself, for example the format task is enhanced to accept a value for the drive label, the previous script is archived. The built-in change control system allows previous versions to be retrieved if a problem is detected with the new version.

The ease-of-use and power doesn’t end there. SystemForge allows a deployment to be paused and it will pause automatically if an error is detected. In this scenario everything is halted, alerts are raised in the console and the user is given the opportunity to resolve the situation. This could mean altering a variable, editing a script or making a hardware or software change on a server being deployed. If the user believes the problem has been resolved, SystemForge can be instructed to retry and continue the deployment.

Real-time visibility
The SystemForge console also gives visibility to the user during a deployment. Typically the actual servers will be housed some distance away from the user. If anyone wishes to know what is happening during a deployment they either need to visit the machine or use a remote management tool. SystemForge displays output from remote servers within its console in real-time. The progress of a deployment is also updated in real-time. All significant events are written to an Event Log and each machine operation is written to a log file. This allows progress and historic data to be analysed by products such as Microsoft System Center Operations Manager with the provided Management Pack for SystemForge. Integration also extends to Microsoft System Center Configuration Manager 2007 and Microsoft Virtual Server. Extensions for Microsoft Deployment are due shortly. SystemForge is dependent on these technologies to deploy an Operating System. In the case of Virtual Server, there are scripts and best practice which make the provision of new virtual machines almost instantaneous. This makes it simple to empower developers to self-provision their own virtualized test environments.

Summary
SystemForge is perfectly suited for software development projects. It transforms complex infrastructure requirements into simple operational tasks. The benefits of automated test environment provisioning are far reaching. Test teams benefit by having more dependable environments which are built quicker. Developers benefit by sharing the same deployment solution and are able to make use of their own hardware to build virtualized representations of Production environments. Infrastructure teams appreciate that the same deployment mechanism can be used in all areas of the project, from Developer Workstation through to System Test and on to Production.

Simply put - SystemForge accelerates and increases the quality of testing, thereby decreasing the time and costs required to develop software.