How Static Analysis Helps a Leading PC Company Prevent Defects

Posted on Apr 9, 2015

static-analysis-pcA leading personal computer company is dedicated to adding market-differentiating software "preloads" to their systems, and wants to continue their trend of reducing field-reported defects for those preloads.

Working with Parasoft, industry leader in Development Testing and defect prevention, they have adopted a custom-tailored static analysis solution for eliminating defects early in the software development lifecycle. This "shift left" enables them to accelerate delivery while ensuring high reliability.

The Challenge: Preventing Critical, Yet Uncommon, Defects

To ensure a positive user experience, this company actively tracks and works to mitigate the number of field-reported crashes (monitored via Windows Error Reporting) associated with the software that they develop and preload on their systems. Based on their experience and research, the company's quality leaders were convinced that static analysis could help them prevent many of the crash-causing defects being reported. However, there was one problem: out of the box, none of the leading static analysis solutions (Parasoft included) caught the specific defects that were most common and important for their business.

Being able to deliver differentiating software preloads as rapidly and efficiently as possible is critical to this company's business. However, if defects are identified by QA (rather than development), considerably more time and resources are required to diagnose and eliminate each defect. This significantly impacts the velocity and predictability of their delivery cycles—an issue which is becoming increasingly critical as they transition from waterfall to Agile.

The Solution: A Custom-Tailored Static Analysis Solution

The company proposed that Parasoft partner with them to address this problem. They would share details about the defects that they most wanted to prevent—for example, defects related to accessing null pointers, memory violations, buffer overruns, out of bounds accessing, etc. Parasoft would then evolve the static analysis technology featured in its Development Testing Platform to prevent these types of defects.

This was a win-win situation. The company would gain the very specific technology needed to meet their strict quality needs, and Parasoft would be able to offer their expanded technology to the general market, as well as gain the opportunity to be integrated into the company’s supply chain.

Other factors driving the selection of Parasoft included:

  • Strong support for a broad set of programming languages: The company uses C++, .NET (C#), as well as Java. Parasoft centralizes execution and reporting for static analysis across all of these languages.

  • Enterprise-grade support for centrally-managed rules across teams and projects: With a global workforce, analyzing code versus a uniform set of expectations is critical. Centralized management eliminates the opportunity for miscommunications or human error introducing inconsistencies into the analysis.

  • Workflow integration: One key reason why the company's previous static analysis initiative failed to achieve the desired result is that the solution was not integrated into the development workflow (developers had to review reports outside of their standard tools/process, so reported defects were not being addressed and resolved). Parasoft's open infrastructure allows seamless integration into the company's existing tools and process (e.g., execution via Continuous Integration and reporting via their bug-tracking system).

Next Steps: Tracking and Optimizing How Static Analysis Reduces Field-Reported Errors

This company expects that the solution will provide release management increased visibility into the risks associated with the applications being developed—enabling them to make more informed go/no-go decisions. Since Windows Error Reporting gives them a very reliable account of how many crashes are occurring in the field, they look forward to tracking which defect prevention efforts have the greatest business impact. They can then use this feedback to continuously improve towards their ultimate goal—accelerating the delivery of innovative preload software without compromising the reliability that their enterprise clients expect.

Once the Parasoft solution is fully "baked into" the process across their laptop PCs, the company plans to extend the Parasoft solution across the remainder of their product lines.

Down the road, the company anticipates making the solution a requirement for vendors within their supply chain. When a driver that is preloaded on one of their PCs fails, users are likely hold the company accountable for that failure. As part of their ongoing efforts to ensure a positive user experience, the company monitors these failures (also reported through Windows Error Reporting) and works with vendors to minimize them. If the company finds that the Parasoft solution can effectively prevent the crashes being reported for preloaded drivers, then they plan to require vendors to comply with their selected rule set as part of their partnership terms.

Static Analysis Webinar: Where Does Static Analysis Fit in "Continuous Everything"?

static-analysis-power-hourModern software development strategies call for a staggering amount of process automation to reduce the injection of defects and to get to market faster. These strategies lean on continuous testing, continuous builds, and continuous delivery—in short, "continuous everything." But organizations seeking to enable continuous processes consistently hit two barriers: 

  • Setting criteria for determining next-level readiness. 

  • Evolving policy to meet the demands of continuous development. 

Join the live Where Does Static Analysis Fit in "Continuous Everything"? Power Hour webinar on Thursday April 23 to explore the critical role that static analysis plays in enabling continuous testing, continuous builds, and continuous deliveryincluding how static analysis: 

  • Serves as the backbone for automating quality gates that verify whether code is ready for downstream phases of development. 

  • Helps you prevent avoidable rework that impedes velocity.