1. Field of the Invention
The present invention relates generally to software distribution. More specifically, the invention relates to a method and apparatus for distributing software and providing associated services therefor.
2. Description of the Related Art
The traditional way of selling a software product is to write the software onto a medium (e.g., a CD-ROM (“CD”), or a diskette) and then sell the software to the customers. A customer purchases the software CD and then installs the software from the CD onto his computer(s). Another traditional method of distributing software is to download the software from a web site onto a client's computer and then install it. However, there are several problems associated with each of these approaches.
First, manufacturers of software products generally need to test the software over hundreds of different hardware and software configurations of client machines to ensure that it can be installed properly by the customers. In addition, installation of the software by customers can fail due to conflicts caused by other software or hardware components already installed on the client computer. As a result, customer support needs to be provided to help address the installation or run time problems associated with software installation. The costs incurred by the software developer due to testing and customer support can be substantial. In addition, any downtime associated with non-installation of the software may in some instances cause the client to incur substantial costs.
Second, using CD as a means to distribute software makes illegal copying of software trivial. The cost associated with pirated software is substantial to the software developer.
Third, the two methods discussed above do not provide an easy and cost effective means for the manufacturer to provide continued service to the customers. Namely, customers generally will buy the software, but will rarely, if ever, subscribe to additional associated services provided by the software manufacturer.
Thus there is a need for an innovative method and apparatus for distributing software and providing associated services for the distributed software.
The present invention generally provides a secured method of selling and distributing software and related services; and utilizing the received software. In the method of distribution, a software application is provided on a hardware device by a manufacturer of the software application, wherein the software application is executable directly on the hardware device. The hardware device is enclosed within an enclosure (e.g., a tamper resistant enclosure) and distributed to the customers. The manufacturer may provide associated services for the software application, wherein the hardware device is connectable between at least one end user's computer and the manufacturer or potentially with a third party provider of the associated services. The hardware device is adapted to provide the associated services via a communication link between the hardware device and the manufacturer (e.g. a web site or a computer system operated by the software manufacturer) or a third party provider of the associated services.
The teaching of the present invention can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
To facilitate understanding, identical reference numerals have been used, wherever possible, to designate identical elements that are common to the figures.
It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
The present invention generally provides an alternative means of distributing software. Specifically, the software is distributed through a hardware enclosure (e.g., a closed hardware box), where it prevents unauthorized parties (e.g., users) from (1) downloading/copying or adding/modifying/deleting any software pre-installed in the hardware enclosure; (2) from accessing/copying the data on its storage devices; (3) from changing the hardware configuration. However, it will allow users to submit data to the hardware enclosure for processing by the installed software application and allow the software manufacturer to provide continuing services through a web connection with the hardware enclosure.
At step 104, the code of the software application is developed with the appropriate features. For example, if the software application is an application which provides tax services (e.g., TURBO TAX, produced by Intuit, Inc. of Mountainview, Calif.) an appropriate feature is the preparation of tax forms. The method then proceeds to step 106.
At step 106, the manufacturer may select a particular hardware configuration and packaging material to host the software. In selecting the hardware configuration or the hardware capability, the manufacturer determines the appropriate processor type, the CPU speed, the memory and storage size, and the network connection options. Namely, a manufacturer may optionally offer the software in different hardware configurations to suit the needs of different users. In one embodiment, the enclosure may implement tamper resistant devices or packaging such as the IBM 4758 cryptocard which is a high security, programmable PCI board. Specialized cryptographic electronics, micro-processor, memory, and random number generator housed within a tamper-responding environment provide a highly secure subsystem in which data processing and cryptography can be performed. The IBM 4758 cryptocard is only disclosed here as an example and is not intended to limit the present invention. The method proceeds to step 108.
At step 108, the manufacturer selects the service level to be included with the software application package. Some associated on-going services include upgrades, backup/mirroring of data, maintenance/warranty service and new functionalities, such as a usage based charging mechanism. For example, in a tax form software application, potential services may include but are not limited to the software manufacturer providing updated tax forms, the software manufacturer forwarding the client's information to an online tax auditing service, and/or the software manufacturer electronically filing the client's tax forms.
In another example, the software application can be an accounting program (e.g., QUICKBOOKS, produced by Intuit, Inc. of Mountainview, Calif.). In this example, the web based appropriate features may include provisions which allow the software manufacturer to forward the client's information to a check writing service.
In yet another example, the software application can be a backup service. These backup services are not limited by the backup protocol utilized. For example, the protocols used may include but are not limited to the Network File System (“NFS”), Distributed File System (“DFS”), and the Andrew File System (“AFS”) protocols. In addition, the continued service may include the software manufacturer forwarding the end user's data to a storage facility. The backup service can be accomplished with some mechanism provided for privacy protection of user data. This protection may also protect the user's privacy against the vendor/manufacturer. One approach is to use encryption to protect the privacy of the customers. The manufacturer can provide not only backup service, but also mirroring service which will provide a fast recovery time for critical applications. Maintenance service can be performed through remote diagnosis via the internet or other network.
As in the case of an upgrade or update, performing maintenance to a closed box is far easier in contrast to a general purpose client machines which can have any hardware and software configuration. In a closed box environment, the manufacturer has precise knowledge of the configuration and can hence better determine the appropriate diagnostic information to collect or monitor. It can also collect diagnostic information to provide preventive maintenance. The new functionality, for example, can be a payment method based on metering of the usage, i.e., a usage based charging mechanism.
Each of these appropriate features can be provided via the “web” or other networks. In order for the software manufacturer to provide such appropriate features for the continued services, programming code is included which allows the software manufacturer to view the software application and some of the information input by the end user (i.e., the software manufacturer has limited access to the end user's information on the hardware device). In addition, programming code is included which prevents an unauthorized user from copying, downloading, or altering the application software.
At step 110, the software application is installed within the selected enclosed box with the selected level of services. Installing the software in such an enclosed box provides several advantages. First, the software application is executable on the hardware within the enclosed box. Thus, a customer can access the software application by simply connecting an additional box to a receptor, e.g., a backplane with slots for receiving a plurality of such enclosed boxes, that is connected to the client machine, instead of installing the software to his machine. The closed box not only eliminates the testing and support problem on the software product over countless software and hardware configurations, but it also prevents the problem of illegal copying of the software. Furthermore, it supports a new capability of providing direct service from the software manufacturer to the customers. The service can be auto-updates on software patches, upgrades, maintenance, backup of data and new functionalities, such as usage based charging mechanism. When a new software patch is released the new patch can be automatically installed, by the software manufacturer, through the internet or other networks. An update or upgrade is straightforward because the operation is performed, by the software manufacturer on an enclosed box. The manufacturer has full or exact knowledge on the hardware and software configuration of the enclosed box. This is in contrast to a client machine where there are too many variables due to the specific hardware and software configurations that can cause numerous problems during an update or upgrade operation.
The software manufacturer distributing a software application via an enclosed box is advantageous for several reasons. First, the ever decreasing hardware cost makes the distribution through an enclosed box affordable. Second, the availability of the software within the enclosed box to a network, via a wireless access or USB port, etc., makes a separately packaged hardware box directly accessible to other computers through a network, e.g., a home network. Third, the advancement of software technology and standards such as web services makes the interaction between the closed software box and other computers straightforward.
The intent of the present invention is to provide an alternative means for a software manufacturer to distribute software through an enclosed hardware box, where it prevents users from downloading/copying or adding/modifying/deleting any software pre-installed in the closed or sealed box. It also prevents users from changing the hardware configuration. Furthermore, the closed box also prevents user accessing/copying the data on its storage devices. However, it will allow users to submit data to the closed box for processing by the software application. With the closed box approach, a new software application may be installed in a network by merely adding another enclosed box software application provided by the software manufacturer. Because the software application is self-contained in a box, the closed box approach eliminates various testing and support problems, for the software product that may have to operate with over countless software and hardware configurations on client machines.
The closed box approach also makes maintenance easier. Specifically, the software manufacturer can ship an identical box to the customer if necessary, e.g., the box is not functioning properly and/or responding to remote diagnosis. If there is user data stored in the closed box, the software manufacturer can, in one embodiment, use the backup or mirrored data to restore the data in the replacement box. In another embodiment, the user data is stored in the user's computer. As such, the replacement box uses the user's data as the original box would.
The closed box approach also prevents users from accessing the data in the storage devices of the sealed box. This feature can be used to provide applications that can protect data privacy and security. For example, a sealed box application on digital entertainment can enforce copyrights by allowing only listening (for music) or viewing (for video) of the entertainment without allowing the user to copy the digital entertainment data. Another example of data protection is to allow a user to subscribe to certain data sources to support the computation in the sealed box, without direct access to the raw data.
Returning to
In addition, multiple software application boxes can be connected through a backplane which provides the network connection and/or power supply, where each enclosed application box is inserted into a backplane (as described below in further detail with respect to
At step 114, the software manufacturer provides such illustrative continued services as described above. The method 100 proceeds to and ends at step 116.
The backplane 310 reduces the interconnection cost. The backplane 310 comprises multiple slots 312, 314, 316, and 318. Each slot has a slot connector 320. Slots 312 and 314 are empty. However, slots 316 and 318 contain enclosed boxes 206 with each having a software application therein. Each application box 206 is inserted into an empty slot and connected to a corresponding slot connector 320. The backplane has a network interface 315 which can be connected to the interconnect 204. The backplane 310 can also provide power to the application boxes 206.
At step 404, a user receives the enclosed box 206 and connects the enclosed box 206 to the interconnect 204, as described with respect to
At step 406, the user activates the application program from a client machine. There are various methods available to invoke the application software in the closed box 206 from a client machine 202. For example, in one embodiment, the software application program is invoked through a web browser. In another embodiment, software code (such as Java applets) is used to invoke the software application. This software code can either be downloaded from the software manufacturer's web site or from the enclosed box 206. In yet another embodiment, software code provided by the vendor and installed on one of the customer's machines can be used to invoke the software application.
In addition, the software manufacturer can optionally require that the closed box 206 be enabled by the software manufacturer after the lease/purchase of the software application (e.g., by using a software key (e.g., a password, a serial number, and/or an instruction code from the software manufacturer) to unlock the software application). This optional step can, in one embodiment, be accomplished after step 406 via the internet. As web service becomes a standard, the software application can be invoked as a web service.
After activation, the enclosed box 206 can perform a diagnostic to make sure that the local client environment meets certain standards (e.g., bandwidth, installed protocols, drivers or other devices) or has other software already installed, e.g. either communication software needed to perform the required function or digital rights management software to guarantee that copyright isn't violated or some base software package that this box is an add-on to.
At step 510, the method waits for an instruction. The instruction can be received from either the software manufacturer or the end user's computer. Upon receipt of an instruction, the method proceeds to step 520.
At step 520, the method queries whether the received instruction is from an end user's computer. If answered affirmatively, the method proceeds to step 540. At step 540, the application processes the request received from the user's computer, e.g., initiation of the program, a function of the program, or continued service. If at step 520 the query is answered negatively, the method proceeds to step 530.
At step 530, the method determines that the instruction was received from the software manufacturer and performs the service associated with the received instruction. The service requested by the software manufacturer can be upgrades, backup of data, adding new functionalities, and providing maintenance/warranty service.
In addition, the invention has been illustratively described above, with respect to a manufacturer selecting a hardware configuration and packaging material to host the software application. This illustration is not intended in any way to limit the scope of the invention. For example, in other embodiments, the manufacturer can provide multiple types of packages with different prices based on the software features, hardware configuration, packaging material, and service level for the end user to select. For example, some users may be willing to pay a higher price for a faster hardware configuration, higher level of services, or a particular type of interconnection method. Further, it is appreciated that in various embodiments, the application software can be configured for use in conjunction with a web service. The notion of “web service” represents a suite of protocols, standardized by the w3c and oasis, which include SOAP (Simple Object Access Protocol), XML (Extensible Markup Language), and UDDI (Universal Description Discovery Integration). Namely, instead of a user interacting with information on a web page, a program on the client computer can interact with an application on the box via a web service. Similarly, the box can interact with the provider's computer via some kind of message sending system (e.g., IBM's Websphere/MQ or the like) or via a web service.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.