Introduction: Build It or Buy It
For software vendors and intelligent device manufacturers, the ability to effectively deliver new software and data updates, patches, and bug fixes to every customer is vital to the success of any product line. Keeping customers on the most current software version optimizes user productivity and satisfaction and significantly reduces the vendor’s customer support costs.
Unfortunately, most software vendors and intelligent device manufacturers today have no means of proactively delivering updates to their user base. Many still rely on ineffective updating methods, such as mailing update CDs to every customer or trying to alert users through email that new updates are posted on their Web site. Manually shipping update CDs is slow and often expensive, while still requiring end users to do too much work to install the update, and posting new updates to a Web site assumes customers will actually take the time to visit the site, find the correct file and install it properly. Neither method is reliable, nor do they give software vendors/intelligent device manufacturers a way of knowing which customers have successfully installed the latest updates.
The easiest and most effective way to ensure customers have the latest updates and patches is for software vendors/ intelligent device manufacturers to use an electronic software update solution with built-in usage reporting functionality. Such a solution enables software vendors to proactively deliver updates and patches to their user base, as well as receive real-time usage data reports detailing how many users have installed any update, the total number of active users of an application, and more.
Once a software vendor decides to use an electronic update solution, one question that usually arises is whether the software vendor should purchase the solution or attempt to build their own tool. On the surface, building an update solution may seem like a relatively simple task, one that might take a few developers just a month or two to accomplish. But creating an effective update solution is far more complex than it might seem. The following document details some of the requirements a development team must consider when designing their own software update solution. It also discusses several of the technical components developers must program into the solution and a few of the additional challenges they must overcome in order to create and maintain an effective software updating tool. Finally, this document introduces an alternate for software vendors contemplating building their own update solution.
Different Software Update Requirements
When developing an effective software update solution, you must be constantly aware of the many requirements of both the customer receiving the updates and the software vendor product manager responsible for update distribution. Figure 1 depicts the relationship between the software vendor and its customers when it comes to update solutions.
The following section examines some of the requirements of the product manager and the customer. Because the customer receiving the updates can be different depending on whether you sell software to consumers or enterprises (as shown in Figure 1), the customer section is broken up into two parts: the consumer end user and the IT administrator.
Product manager requirements
When designing an update solution you must consider the following requirements of the software vendor product manager tasked with handling the publishing and management of the updates:
- Product managers need a proactive, simple way to deliver updates. Getting customers on the current version of your software improves user satisfaction and reduces customer support costs, but delivering updates and patches to customers can be a never-ending headache for product managers. They need an easy way to proactively notify all their end users of new updates and deliver and install those updates to their customers’ systems.
- Product managers need a non-programmatic way to publish updates. Product managers aren’t developers; they shouldn’t be required to make source code-level changes, or hand edit raw data files each time they have to deliver a new update. An effective update solution provides product managers with an easyto-use interface that walks them through the update publishing process.
- The update solution must have role-based security. Because a software vendor might need different people to access their software update solution, it must have role-based security that lets product managers define the access rights and privileges of every user in their group. Additionally, the security model must support the definition of groups of users or product groups and restrict permissions based on these groups. The wrong user must never be allowed to access unauthorized data or perform restricted tasks, especially for other product lines they aren’t associated with.
- Product managers should be able to access the solution from anywhere at any time. Product managers may need to access update information or publish new updates, patches, or hot fixes at bizarre times, and they can’t always be sitting at their office to do it. They should be able to log on to the update solution from anywhere at any time.
- The update solution needs to coexist with an software vendor’s update site. For software vendors that also enable end users to download updates from their Web site, the update solution must coexist with this update site. This means that updates posted to your corporate Web site should be the same files used in the update solutions, which ideally would reference them directly. If two update sources don’t have the same build, the software vendor will be forced to waste time by doubling its QA effort, or worse yet, deliver the incorrect update files.
- Testing updates before distribution should be easy. Often product managers will want a quick look at the user experience of a new update before sending it to their QA lab or out to customers. An effective update delivery solution should provide testing functionality so product managers can preview the end-user interface, and download, apply, and test the update without having the associated application deployed to the other production users. An update solution should also enable an software vendor’s QA lab to test the update process for new updates before deploying them out to customers.