Case Studies : Singo Solution
Call centers serve as the "front door" to many businesses and can be a vital part of a company’s success. Originally designed to manage inbound and outbound phone calls, today’s call centers
manage a multitude of customer interactions, from customer service/support functions to sales. Some of the larger call centers provide millions of dollars worth of products and services each hour, so even a brief outage cannot be tolerated. In order to remain competitive in this market, today’s call centers must effectively handle different modes of contact while containing costs, improving agent efficiencies, and delivering high-quality interactions.
Singo Solution, Inc. provides a variety of call-center and specialized solutions to clients across the globe. Services include predictive dialer hosting and on-premise solutions with Digital Voice Recording (DVR), Interactive Voice Response (IVR), blended Skills-Based routing, toll-free enhanced routing, call center disaster recovery services, call center agents, call automation and office phones.
In 2005, Singo realized that, in order to differentiate itself in the marketplace, it needed to develop a robust, reliable and revolutionary platform for the call-center industry. The result was the Blaze Call Management System: a comprehensive, scalable, web-enabled VoIP dialing platform that manages customer interactions via phone lines and a variety of other electronic methods of communication.
When work started on the Blaze product, Singo realized that its own C-based call detection algorithum and the many complicated contact management functionswere too time consuming and costly to maintain, and that enhancing them would not be practical. The company decided to leave its legacy systems behind, and to start from scratch.
The programming language choice was critical, and Singo decided early on that Ada was the best available language for producing code with the expressiveness, speed, and - most importantly - the reliability needed for a call center system of Blaze’s magnitude.
"We know we made the right decisionin choosing Ada,since it helped us get our code done right the first time. The code is efficient but also extremely readable and maintainable."
- Sieu Ngo, President and CEO, Singo Solution, Inc.
Ada is an internationally-standardized language combining object-oriented programming features, structured concurrency facilities, real-time support, and extensive compile-time checking, making it an attractive choice for applications where reliability is critical. Ada’s strong typing and other built-in checks allow the compiler to detect source code errors that in a C-based language would only be caught during run-time debugging, when they are much more time consuming and expensive to track down. Ada’s reader-friendly syntax makes program maintenance easier. In short, using Ada means higher productivity and fewer bugs.
A Robust, Easy-to-Use, Scalable Distributed System
At the heart of the Blaze system is a contact management system, which allows call center agents to log in from any location and act as one centralized team for both inbound and outbound functions. This makes a perfect solution for call center applications by drastically increasing production while providing tools for both call quality and industry compliance.
Increased production comes from their ability to provide dialer functions, filter calls with sophisticated call detection modules, Skills-Based call blending, workforce management, automated email, fax and message blast, and traditional PBX type features. Quality assurance is gained by using Singo's integrated DVR capabilities, live agent monitoring functions and coaching features. Compliance is gained by using Dialing Profiles (for time zone management), list selection/management and real-time queue statistics.
Since Blaze is VoIP native, it can be hosted anywhere with a data connection. The system is also fault tolerant, with key components duplicable to mitigate the risk of outages.
"The key advantage of using Ada is that it is simply more robust than any other language available today"
- Jesse Lang, Chief Technical Officer, Singo Solution, Inc.
As a strongly typed language, Ada detects at compile time many errors that would only be found during testing and integration in a language such as C. This allows developers to spend their time enhancing the core software with new features and functions, versus trying to figure out why things aren’t working.
One of Ada’s distinguishing features is its support for concurrency. Threads (known in Ada as tasks) can interact with each other directly and synchronously (through rendezvous) or indirectly and asynchronously through protected (i.e. mutually exclusive) accesses to shared data. Concurrency is inherent in the Singo Blaze call center software logic: many different calls come in, are routed, and are handled all at the same time. Singo found Ada’s tasking a natural solution for the system’s concurrency requirements, and was able to achieve several objectives:
- Efficiency. Ada’s tasking implementation automatically takes advantage of multi-core platforms. As the number of cores increases, the operating system can automatically exploit the additional processing power by allocating tasks to the new cores, with a resultant speedup in system performance. Blaze does not have to be hard coded to assume a certain number of cores, or a particular board or configuration. New hardware can be inserted to support a larger volume of calls as traffic increases. In part because of the use of Ada tasking, Blaze has achieved better performance than previous generations of call center products from Singo and other companies.
- Reliability. Concurrent programs are notoriously difficult to debug, because of the multitude of possible execution paths and the non-determinism inherent in the operational environment. In many programming languages, concurrency needs to be managed directly by the programmer through calls to low-level routines for creating threads, communication queues, semaphores, etc. The programmer also needs to ensure that shared data is not corrupted when accessed simultaneously by multiple threads. This manual management of threads and their interaction is both complex and error prone. An error may show up as an intermittent and timing-dependent corruption of data that is not detected until long after it has occurred. With Ada’s tasking model, these kinds of data corruption errors can be prevented by defining the shared data structures as protected objects. The Ada tasking implementation ensures that when a protected object is being modified, this operation is executed with mutual exclusion.
Choosing GNAT Pro
"We strive to give our customers the best products, prices and customer service, and we expect the same from our vendors. AdaCore’s knowledgeable Frontline Support team was terrific, and the time we saved was invaluable."
- Jesse Lang, Chief Technical Officer, Singo Solution, Inc.
To implement the Blaze Call Management System, Singo selected AdaCore’s GNAT Pro Integrated Development Environment. The GNAT Pro product offers a modern, professional software build environment and tool-chain that scale up to handle very large systems. Most importantly, GNAT Pro is backed by expert support services provided by the product developers themselves. GNAT Pro is available on more native and embedded platforms than any other Ada environment, and is widely used to write applications with the most demanding reliability, safety and/or security requirements.
In developing the Blaze system, Singo used several AdaCore products that complement the GNAT Pro toolset. One is the Ada Web Server (AWS) technology, which supports development of web-based graphical user interfaces (GUIs). Singo used AWS to implement a flexible GUI that is easily learned by new Blaze users while also providing the advanced functionality needed by experienced Blaze users. The new GUI allowed new users to be instantly productive where past systems almost always required some training prior to use.
Another AdaCore product heavily used in Blaze is PolyOrb, which supports CORBA distributed communications. A call center must have the capacity for a large number of calls and lines. Within Blaze these are represented as telephony call nodes and each node is a CORBA object. Blaze can create and manage any number of these nodes, limited only by the amount of physical memory available. Thus much like the basic architecture where Ada tasking can take advantage of the number of cores, Blaze can handle an increasing number of phone lines without needing to be rebuilt. If the number of lines increase as a call center grows, new memory can be added to the hardware to support new nodes. Thus Blaze is highly scalable, handling a range from just a few call lines to upwards of hundreds of thousands if required.
Realizing the Benefits
With the Distributed model that Ada was able to provide, Blaze is currently one of the largest Call Management Systems available in the world and no longer tied down to physical hardware limitations like most of their competitors and their legacy product line. The system is already being used in both traditional and non-traditional call center applications around the world, and it is attracting attention from major corporations in domains that include healthcare, cable and telecommunications, utilities, insurance and many others.
The transition to Ada and GNAT Pro has been smooth, with AdaCore’s Frontline Support serving in effect as partners with Singo’s development team. As the Blaze Call Management System evolves to meet new requirements, the benefits of Singo’s technology choices – robustness and reliability – should continue to grow.
Today's Tip of the Day - Adherence
Based in Phoenix Arizona, Singo provides Software-as-a-Service contact management solution to clients across three continents. Singo offers a VoIP Native, web-hosted, multi-site capable phone system with integrated inbound skills-based routing (ACD), predictive outbound, call recording, IVR, agent monitoring, automated dialing and PBX functions.
Founded in 1994, AdaCore is the leading provider of commercial software solutions for Ada, a state-of-the-art programming language designed for large, long-lived applications where safety, security, and reliability are critical. AdaCore''s flagship product is the GNAT Pro development environment, which comes with expert on-line support and is available on more platforms than any other Ada technology. AdaCore has an extensive world-wide customer base
Published: Monday, September 5, 2011