In order for VoIP to be seen as a superior alternative to landline phones, VoIP devices need to work as reliably as landline phones. This is a problem: landline phones are analog, but VoIP phones are based on code, and there are a lot more ways for code to break. In other words, writing code for reliable VoIP telephony involves writing the most stable, flexible, and interoperable telecommunications code there is.
How does Edgewater Networks write code in a way that improves customer experience? Here are a few ways that our team has customized their coding practices to make the Intelligent Edge that much smarter:
Improving on Agile
Like many developers, Edgewater Networks take Agile as our starting point. Agile is a great way to get fast, functional code. One of the core tenets of Agile is flexibility—in other words, if specific aspects of Agile aren't working, it's much better to tweak the methodology than to push forward with brute force. This is extremely useful for any organization that faces unique development challenges.
In our case, the Edgewater Networks development team faced two big challenges that led us to tweak Agile for our specific circumstances with programming for telecommunications code.
- Our team's distribution among multiple time zones meant that we couldn't run integration tests at night
- Intelligent Edge devices need to be interoperable with a large number of technologies in a number of configurations
Telecommunications Code: Test, Test, Test, Test (and Test again)
One of the most important additions that we made to our Agile framework was the implementation of Continuous Integration (CI). CI helped us kill two birds with one stone—unifying the efforts of a widely-dispersed development team, while allowing them to program for interoperability.
With Agile, integration tests are typically performed at night—but with Edgewater Networks developers located in several different time zones, there was always at least one team awake. CI fixed this problem with virtualization and automation.
The continuous integration process automatically creates a virtual Intelligent Edge device for every check-in. Tests are run automatically, and any errors are flagged. CI doesn't just let tests run constantly—we've found that it actually allows us to detect and fix errors much faster than otherwise.
Vanquishing Rogue Devices
Another difficulty with programming the Intelligent Edge is that, while our Intelligent Edge devices are smart, they are, in many cases, installed alongside devices that aren't. We're talking about third-party devices that were never designed to handle SIP messages, incorrectly-configured PBXs, and other errors that produce crashes, one-way audio, and memory leaks.
In some ways, CI allows us to get around this problem—our tests simulate a lot of the real-world conditions that lead to a decline in QoS. Additionally, we've improved the CI process by adding a static analysis tool. This tool looks at batches of new code in order to anticipate how they would react to a variety of malformed SIP messages of the kind generated by rogue devices. This lets us build more resilience into the intelligent edge, and as a result our devices last longer before they need maintenance in the field.
More reliability, more uptime, happier customers
The end result of making modifications to Agile is that our development process is faster and more error-free. This increases satisfaction for both service providers and end-users. The intelligent edge is now even more likely to work right out of the box when placed into any environment—and customers can now get updates and new features faster than ever. For more information on how Edgewater Networks is making the Intelligent Edge even more reliable, check out our solution brief: Four Best Practices for Engineering Quality Assurance.