As Thanksgiving approaches, let’s take a look at why leading companies like Cisco Systems are thankful for static analysis…
The world’s top corporations depend on Cisco Systems, a global leader in networking solutions, to keep their mission-critical systems continuously operating. That’s why the company has actively invested in efforts to ensure the quality of its software is world-class. Considering that system failures have multi-million dollar consequences, Cisco knows that quality assurance is a core factor in its continuing market success.
To address its objectives around software quality in the Java environment, Cisco has embraced Parasoft’s static analysis tool for Java: Parasoft Jtest. Parasoft Jtest is standard at Cisco with over 1100 developers using it on a daily basis. The company is realizing productivity benefits from the automated configuration of rules and settings as well as the ongoing development of Java skills. Development teams are detecting errors much earlier in the software development lifecycle – leading to greater overall productivity and quality in a market that increasingly demands it.
Cisco’s products power many sites and Web applications permeating the Internet, so the company understands that much is riding on its ability to deliver high quality solutions. To meet constantly rising customer demands and expectations Cisco launched a far-reaching initiative to drive excellence in terms of software quality.
”Cisco realizes that to remain at the forefront of the market, it has to have the best tools for increasing quality,” says Andy Chessin, a Technical Leader who is responsible for evaluating software testing products and tools and promoting their adoption.
One of Cisco’s challenges, however, revolved around getting its Java developers committed to a development testing process that would eliminate software errors and generate clean code. With quality expectations high at Cisco, software developers and engineers are held accountable for meeting strict demands for software testing and quality. Three areas that have been given particular attention are static analysis, unit testing and code review.
Such high demands, however, cannot be met without sophisticated testing platforms and software. With this in mind, Cisco invested in static code analysis tools from Parasoft. Central to its Java development efforts, Cisco implemented Parasoft’s Jtest to eliminate critical software errors as the application code is developed.
Quality, however, is as much a matter of culture and commitment as it is a technology. To ensure its software quality efforts were successful, the company needed to drive high adoption rates of static analysis. Chessin played a particularly critical role in this effort. When he arrived at the company, he realized the necessity of developing a clear plan for implementing the static analysis, training developers and supporting adoption.
Chessin drew on Parasoft’s static analysis framework to create a “blueprint” plan that established roles, responsibilities, and expectations to drive the implementation of Jtest among Cisco developers.
The results of these efforts have been phenomenal. Over the past few years, the number of developers using Parasoft static analysis has grown explosively – rising from 24 to over 1100 regular users. What made the high adoption possible is that in addition to directives from Cisco’s senior leadership, successful implementation was tied to diligent planning and active support.
Chessin and his team have provided the infrastructure and assistance necessary to scale up the adoption of Parasoft Jtest. They met with developers to address questions, held educational lunches, and produced video-on-demand courses to support their training. Such moves proved extremely important to the success of the roll-out. By providing resources to developers and architects in a just-in-time fashion, they were able to support the training and development of many more people than they could have using conventional training.
Meanwhile, Parasoft proved extremely responsive. Not only did the company’s representatives actively address developer concerns and questions, they also rapidly rolled out new features and capabilities necessary to support the usability and scalability of Jtest in Cisco’s demanding environment.
”Without the cooperation of Parasoft, I personally would have been a lot less successful,” says Chessin. ”Things would have gotten done, but not as fast. Whatever I felt was a show-stopper or was getting in the way was resolved right away.”
One key productivity boost came through automated configuration. Parasoft enables software architects easily to transfer a configuration of rules and settings for testing one code base to another code base in which modifications and new rules are easily configured.
This capability becomes particularly important when developers work in different technologies such as threads or Enterprise Java Beans. In a matter of seconds, rules can be turned on or off to protect the code base without the manual introduction of new rules and settings. When the architect puts the new and tailored rules on the team server, they become instantly accessible to all developers. For a team with a few leads and an array of developers worldwide, this represents a huge productivity gain.
Productivity gains also are realized by identifying errors in a way that helps developers improve their own accuracy. When a developer clicks on an error, for instance, documentation not only explains how a particular rule works but also provides an example of preferred code. ”One of the biggest gains is that Parasoft has taught engineers how to be better developers,” says Chessin. ”In the process of using Parasoft, we are getting fewer and fewer defects in the code base because developers are learning how to write better Java. As they become better developers, the architect then incorporates more rules and the result is better code. There’s a cyclical impact.”
In addition, upstream quality management is producing better products downstream. Nightly builds of the code base, for instance, have become cleaner as developers run Jtest at the desktop before checking in their code. By addressing software errors and defects earlier in the software development process, they eliminate quality problems that might otherwise have harmed productivity or created quality problems downstream.
Finally, Cisco has realized developer productivity gains as a result of the integration of Parasoft Jtest with the Eclipse Foundation’s Integrated Development Environment (IDE). The richness of Eclipse’s IDE enables developers to manage projects in a single location and switch between them. It also offers quick-fix functionality. In many cases, Parasoft Jtest has provided a gateway for introducing this powerful tool and framework to developers – driving productivity gains that will continue to grow over time.
Having deployed Parasoft Jtest to 1100 developers, Cisco is now focused on increasing adoption through education in order to significantly increase quality and productivity throughout the coming years. Parasoft works with Cisco to provide ongoing technical training to ensure learning resources are available for all users – whether they are new or advanced developers, architects, or testers.
While Cisco’s tool evaluation team considered other possible tools for Java-based software quality management, it has now clearly established Parasoft as the standard. ”We have the best tool in this space that could be deployed in this company,” says Chessin. With the success of this endeavor, it is now conducting evaluations to determine what tools should become standard with regard to testing software code in web applications and SOA/API-driven environments.
”If I could hold other vendors accountable for the kind of support I got from Parasoft, it would be a perfect world,” says Chessin. ”The support, cooperation and genuine interest I received from Parasoft were remarkable.”
Parasoft’s industry-leading automated software testing tools support the entire software development process, from when the developer writes the first line of code all the way through unit and functional testing, to performance and security testing, leveraging simulated test environments along the way.