1. Field of the Invention
The present invention generally relates to software and to systems and methods for providing and/or distributing software, including complex software. More particularly, the invention relates to systems and methods for providing software and a corresponding pricing model that is dependent on the software provided to each user.
2. Background of the Invention
In today's marketplace, software developers and vendors offer various types applications and programs to members of the public. Software applications and programs are often designed with a specific set of functionality and offered as a complete package. Many times, users are faced with the dilemma of selecting software that best fits their needs. In some cases, a certain application or program may include more components or functions than is required by the user. In other cases, a particular software program may not have all of the required functionality and, as a result, the user may be forced to purchase more than one application in order to fulfill his or her needs.
For more complex software, such as enterprise resource planning software and other business applications, some flexibility is often provided to users. For example, software vendors may permit their customers to adapt or customize the software they purchase to better meet their business needs or requirements. However, despite this flexibility, customers are normally restricted by the number or types of changes that can made to the software. Further, in many cases, developers of such software will only offer their software in limited packages with corresponding prices. Thus, in the case of complex software, business entities and other users may also be forced to purchase functionality and/or features that they may not have any use for.
By way of example, a small business may not need all of the functionality associated with an enterprise resource planning or supply chain management software package. However, if all of that functionality is included in the software, then the small business has no choice but to pay for that functionality even though only certain core features are needed. In other cases, the software may not have the specific functionality or features that would meet the customer's industry needs. These and other problems can arise due to the-difficulty of tailoring industry specific functionality into a one-size fits all type of package.
Software purchased with un-needed functionality or features can waste a customer's resources. For example, upon installation of such software at the customer's premises, database tables and other components may be installed at the customer site and consume disk space, which may never be used by the customer and could be applied more productively for other uses. Also, screen elements and other features included with the software may never be used by the customer and, as a result, hinder efficient use of the software.
Moreover, this rigidity in packaging and distributing software can result in inefficiencies for software developers and vendors. For instance, software providers may not be able to effectively sell their software to customers, because the price of the software may be deemed too high for the features and functionality ultimately used by the customer. This problem can be particularly acute for complex software, where the price for the software is often much higher than the average, off-the-shelf program or commercial offering.
Accordingly, in view of the foregoing, there is a need for systems and methods for providing software that overcomes one or more of the above-noted problems or disadvantages.
Embodiments consistent with the present invention provide improved systems and methods for packaging and/or offering software. In accordance with one aspect of the invention, the software may correspond to any type of application or package, including complex software packages. Further, a pricing model may be utilized whereby the software is offered and/or distribute at a price that corresponds to the functions and/or features selected by a user.
According to one embodiment of the invention, a core layer of a complex software package may provide various functions in combination with extensions, such as software-based extensions. Extensions may relate to sub-system capabilities for an industry, such as banking and automotive, or may relate to specific functional areas, such as supply chain management or financial management. By selectively activating the relevant functionality through the extensions, a software vendor can configure a complex software system based on a user's selections. Further, based on the selected extensions, a price can also be determined for offering and/or distributing the software.
In accordance with an embodiment of the invention, a method for configuring software based on a user selection of extensions is provided. The method may include presenting extensions for selection by a user. The method may further include determining whether the selection of extensions by the user is valid and, if the user selection is determined to be valid, performing updates to source code for the software based on the user selection of extensions. The method may further include compiling the source code corresponding to the selected extensions and for a core layer of the software to generate a user-specific system.
According to another embodiment of the invention, a system is provided for distributing software. The systems may comprise: means for presenting extensions for selection by a user; means for determining whether the user selection of extensions is valid; means for determining, if the user selection is determined valid, a price for the software with the user selection of extensions; and means for offering or distributing the software to the user at the determined price.
In accordance with still another embodiment of the invention, a method is provided for configuring software based on a user selection of a business set and a corresponding set of functions. The method may include presenting a plurality of business sets for selection by a user and, based on a business set selected by the user, presenting functions associated with that business set for selection by the user. The method may further include determining whether the user selection of functions is valid and, if the user selection is determined to be valid, configuring the source code according the selections made by the user. Additionally, or alternatively, the method may include compiling the source code corresponding to the selected business set and functions by the user.
Additional objects and advantages of the various embodiments of the invention will be set forth in part in the description, or may be learned by practice of the invention. The objects and advantages of the embodiments of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
The various embodiments can include and/or exclude different aspects, features and/or advantages, where applicable. In addition, various embodiments can combine one or more aspects or features of other embodiments, where applicable.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments of the invention and together with the description, serve to explain the principles of the invention. In the drawings:
FIGS. 5A-C illustrate exemplary interfaces for receiving user selections to configure software, consistent with embodiments of the present invention;
The following detailed description of embodiments of the present invention refers to the accompanying drawings. Where appropriate, the same reference numbers in different drawings refer to the same or similar elements.
Systems and methods consistent with the present invention relate to providing software. The invention also relates to offering or distributing software according to a pricing model that is dependent on selections made by a customer or user. As disclosed herein, embodiments of the invention may be implemented to offer various types of software, including complex software. For example, in accordance with an embodiment of the invention, a complex software package may be offered that includes a core layer. The core may include core functions and features that can be combined with extensions, such as software extensions. Extensions may relate to sub-system and/or specific capabilities for an industry, such as banking and automotive, or may relate to additional functionality and/or features that are not otherwise provided by the core. By selectively activating the extensions, a software vendor or seller can configure a complex software system based on a user's specific needs. Activation of the selected extensions may result in relevant functionality and/or features (e.g., screen elements, menu screens, data fields, etc.) being automatically configured for the selected extensions. Further, based on the extensions selected by a user, an appropriate price can also be determined for selling, licensing or otherwise providing the complex software to the user.
Referring to
Complex software system 100 may include a set of selectable extensions 110, an extension enabling layer 120, a core layer 130, and an application platform 140. In accordance with an aspect of the invention, these software elements or components may interact with and/or be dependent upon one another. As shown in
Extension enabling layer 120 may facilitate the enablement of extensions 112-118 according to a user's selection. In addition, extension enabling layer 120 may record or track the extensions selected by a user. This may be achieved by, for example, a registration table or other database tables or storage means. Where appropriate, extension enabling layer may also evaluate a user selection to determine if a set of selected extensions is valid. In one embodiment, this may be achieved through software-based logic or an appropriate algorithm. In another embodiment, the validity of selections may be determined by comparing a user selection to a look-up table or other storage means that indicates valid combinations of extensions. Whether or not a particular set of extensions is “valid” may rest upon on one or more factors, such as the interoperability or dependency of the extensions alone, in combination with other selected extension(s), and/or relative to other software layers (such as core layer 130). If a user selection is determined to be valid, extension enabling layer 120 may activate the selected extensions by including or enabling the same within the source code or compiled code delivered to the user. Further, any non-selected extensions may be left inactive or non-enabled in the software delivered to the user.
Core layer 130 may correspond to core software components or applications for complex software system 100. Core layer 130 may provide core functionality and/or features that are not particularized or embodied for any specific industry group, function group or custom group. Additionally, or alternatively, core layer 130 may include functionality that can be shared by extensions 112-118 of complex software system 100. By way of example, core layer 130 may be implemented with a core system such as the R/3 system, available from SAP AG (Walldorf, Germany).
Application platform 140 may comprise a software platform for supporting the various other layers of complex software system 100, including core layer 130. Such a software platform may comprise software (such as system operating software, portal software, database software, etc.) either alone or in combination with suitable hardware (such as a computing platform, a server, memory, etc.). In one embodiment, application platform 140 may include a web server, a business warehouse, and an enterprise portal. By way of example, application platform 140 may be implemented with SAP Netweaver, which is commercially available from SAP AG.
As shown in
In step S.20, extension enabling layer 120 may determine whether the user selection of the extensions is valid. In one embodiment, this step may include detecting any conflicts among the selected extensions. Extension enabling layer 120 may detect conflicts by applying logic or a suitable algorithm. In one embodiment, extension enabling layer 120 may access one or more tables that indicate permissible combinations of extensions. Conflicts between selected extensions may relate to, for example, incompatible or unsupported combinations of extensions. Invalid extension selections may also arise if it is determined that any two selected extensions will result, for example, in attempts to modify or call the same data or system components at substantially the same time. In one embodiment, such conflicts may be known or determined based on analysis of various configurations of extensions 110.
If the selection of extensions is determined not to be valid (step S.20; No), then the process may return to step S.10 where the user is again prompted to make a selection. As part of this step, the user may be informed of his/her selection was determined to be invalid. Additionally, or alternatively, in one embodiment, extension enabling layer 120 may propose at least one alternative or additional extension to the user, such that the conflict among the extensions can be resolved by selecting that extension.
If the user selection is determined to be valid (step S.20; Yes), then processing may continue. As shown in
In one embodiment, the user-selected extensions may be registered and reported through a software-based, reporting agent. In such a case, the reporting agent may be provided as part of extension enabling layer 120 or otherwise within system 100 to record valid user selections. When called, the reporting agent may access one or more database tables, such as a registration table, and report the user selection. Such a report may take the form of any suitable output (e.g., a printed report, a display output, a file output, etc.). Further, the reporting agent may be called at anytime to permit access to the user selection information by a software vendor, even after installation of the software at a customer's premises.
In step S.40, extension enabling layer 120 or similar logic may configure and/or perform updates to source code, for example, based on the user selection of extensions. Thus, for example, tables and/or other data storage elements may be updated to configure the original source code according to the user selection. Such updates may be made to activate the extensions selected by the user. Updates may be required throughout the code for one or more layers of the complex software system 100. Any extensions that are not selected by a user may be left inactive or completely removed from the source code.
Thereafter, in step S.50, the configured source code may be compiled to generate a user-specific system. In one embodiment, only the selected extensions may be operable in the software shipped to the user. The other remaining extensions in the set of extensions may not be made operable or, as indicated above, not included in the code. Thus, once configured and shipped to the user, the user may not access or use unselected extensions from the set of extensions 110. In such case, extension enabling layer 120 or other logic may keep track of selected and non-selected extensions and prevent the user from accessing functionality related to the non-selected extensions.
In accordance with an embodiment of the invention, a user may be permitted change the selection of extensions after delivery of the software. For example, after the user-specific system has been shipped to the user, the user may be able to request additional extensions or otherwise modify the selection of extensions. For this purpose, the reporting agent may keep track of such requests and based on a pre-agreed policy, the source code may be reconfigured and compiled so that the newly selected extensions are activated once the user has paid for them. An administrator code, password and/or key may be required to perform such an update on the software. The updates may be made either remotely by the software vendor or at the user's location. In one embodiment, requested extensions may be activated by extension enabling layer 120 upon receiving the request for them and the seller of the system may invoice the user, once the software vendor receives a report regarding the additional extensions from the reporting agent.
In step S.100, the selection of extensions by the user is detected. By way of example, this step may be performed by extension enabling layer 120 or a suitable pricing module that is internal or external to complex software system 100 (
To detect the selection of extensions by the user (step S.100), extension enabling layer or a pricing module may access one or more database tables. For example, a registration table or other suitable database table(s) may be accessed that contain a record of the user selection of extensions (registered, for example, as part of step S.30 of
Instep S.100, pricing for the software is determined based on the detected user selection. In one embodiment, pricing for the user-specific system (such as complex software system 100) may be generated based a predetermined pricing model. For example, a pricing model may be provided that combines a predetermined, base price for core layer 130, application platform 140, etc. with a certain price for the user-selected extensions. The total price may represent a software license fee or other price for any period of permitted use, such one month, six months, one year, or longer. If needed, invoices may be issued periodically to the user (e.g., monthly, annually, etc.).
The base price for the software may depend on the number of users that will use complex software system 100, for example. The price for user-selected extensions maybe based on the number of users who will be using the extensions concurrently, for example. The price for the selected extensions may increase depending on the total number of extensions selected by the user. In this manner, the user would pay only for the functionality that the user desires. Further, even if complex software system 100 is shipped with code for inactive extensions, the user would not be forced to pay extra for that unused code and functionality.
Referring again to
In one embodiment, subsequent to the purchase of complex software system 100, the user may be permitted to modify the selected extensions by, for example, adding or deleting extensions. For example, upon receiving the request to modify the extensions, the software vendor seller may remotely activate additional extensions, deactivate extensions, and/or otherwise modify the extension. Alternatively, the user may be shipped a new compiled version of the code based on the updated selection of extensions. Based on the updated set of enabled extensions, a new invoice may be issued to the user.
While not shown in
In one embodiment, a user may select a business set, such as business set #1, business set #2, . . . or business set #n. Further, after a user selects a business set, then the user may select specific functionality and/or features that are grouped or associated with that selected business set. This approach can provide a controlled and/or guided process for user selection and, ultimately, configuration of the software.
As shown in
FIGS. 5A-C illustrate exemplary interfaces for receiving user selections to configure software, consistent with embodiments of the invention.
Specifically,
As shown by the exemplary user interface 520 of
In step S.200, business sets may be presented to the user for selection. In one embodiment, a user may be presented the selection of business sets using a graphical user interface, such as interface 500 (
Next, the user may be presented with a list of functions (functionality and/or features) for selection based on the selected business set (step S.210). Available selections may be presented using a graphical user interface, similar to exemplary user interface shown in
Next, a configuration module or similar logic may determine whether the user selection of functions is valid (step S.220). In one embodiment, this step may include detecting any conflicts among the selected functions. Conflicts may be detected by applying logic or a suitable algorithm. In one embodiment, one or more tables may be accessed that indicate permissible combinations of functions. Conflicts between selected functions may relate to, for example, incompatible or unsupported combinations of functions or logic. Invalid function selections may also arise if it is determined that any two selected functions may result in, for example, attempts to modify or call the same data or system components at substantially the same time. In one embodiment, such conflicts may be known or determined based on the analysis of various configurations of industry extensions 220, etc.
If the selection of functions is determined not to be valid (step S.220; No), then the process may return to step S.210 where the user is again prompted to make a selection. As part of this step, the user may be informed of his/her selection was determined to be invalid. Additionally, or alternatively, in one embodiment, at least one alternative or additional function may be proposed to the user, such that the conflict among the functions can be resolved by selecting that function.
If the user selection is determined to be valid (step S.220; Yes), then processing may continue. In step S.230, the user-selected business set and functions may be registered or otherwise recorded. In one embodiment, the user-selected business set and functions may be registered with a reporting agent, which may keep track of the user-selected business sets and functions for pricing purposes, for example.
In step S.240, a configuration module or similar logic may configure and/or perform updates to the source code based on the user-selected business set and combination of functions. Thus, for example, tables and/or other data storage elements may be updated to configure the original source code according to the user selections. Such updates may be made to activate functions and/or features selected by the user. As described above, updates may be required throughout the code for one or more layers of the complex software system 200.
Thereafter, in step S.250, the configured source code may be compiled to generate a user-specific system. In one embodiment, only the selected functionality and/or features may be operable and the remaining functions in the extension layer 220 and elsewhere may not be made operable in the software shipped to the user. Thus, once configured and shipped to the user, the user may not access or use unselected functionality or features. In such case, a configuration module or other logic may keep track of unselected and selected functions and prevent the user from accessing certain functionality and/or features.
In accordance with one embodiment of the invention, a user may be permitted to change the selection of functions after delivery of the software. For example, after the user-specific system has been shipped to the user, the user may be able to request additional functions from a business set. For this purpose, the reporting agent may keep track of such requests and based on a pre-agreed policy, the source code may be reconfigured and compiled so that the newly selected functions are activated once the user has paid for them.
In step S.300, the user-selected business set and functions are detected. This may be performed by accessing, for example, a registration table or other database table(s) containing information on the selected business set and functions. A pricing module may be provided which, when executed by a computer, may provide the functionality corresponding to step S.300 as well as steps S.310 to S.320. Thus, for example, the pricing module may access one or more database tables keeping track of the user's selections (recorded as part of step S.230 of
In one embodiment, subsequent to the purchase of complex software system 200, the user may order additional functions, request that certain functions be deleted or otherwise alter the business set and function selection. For example, upon receiving a request from a user, the software vendor may remotely activate additional business set(s) and/or related functionality, after receiving a payment from the user for the additional business set(s) and/or related functionality, for example. In one embodiment, an administrator code, password or key and/or user interface similar to that shown in FIGS. 5A-C, may be used by the software vendor to activate the selected business set(s) and/or related functionality. One skilled in the art will appreciate that activation commands may be communicated locally or remotely to complex software system 200 through a network (not shown), such as the Internet. In one embodiment, a configuration module (not shown) may receive the activation commands and re-configure the business set(s) and/or related functionality, so that the user has access to the additional business set(s) and/or functions.
In the above-described embodiments, business sets may be mutually exclusive. That is, the user may only select one business set at any given time. This can result in greater control over the selection process and provide greater stability for the core and other layers of system 200. Alternatively, the user may be permitted to select more than one business set. In such a case, the validity of the combination of business sets selected may be determined, in a similar fashion to that described for checking the validity of selected functions.
The foregoing description has been presented for purposes of illustration. It is not exhaustive and does not limit the invention to the precise forms or embodiments disclosed. Modifications and adaptations of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the disclosed embodiments of the invention. For example, the described implementations include software, but systems and methods consistent with the present invention may be implemented as a combination of hardware and software or in hardware alone. Additionally, although aspects of the invention are described for being stored in memory, one skilled in the art will appreciate that these aspects can also be stored on other types of computer-readable media, such as secondary storage devices, for example, hard disks, floppy disks, or CD-ROM, the Internet or other propagation medium, or other forms of RAM or ROM.
Computer programs based on the written description and flow charts of this invention are within the skill of an experienced developer. The various programs or program modules can be created using any of the techniques known to one skilled in the art or can be designed in connection with existing software. For example, programs or program modules can be designed in or by means of Java, C++, HTML, XML, or HTML with included Java applets or in SAP R/3 or ABAP. One or more of such modules can be integrated in existing e-mail or browser software.
Moreover, while illustrative embodiments of the invention have been described herein, the scope of the invention includes any and all embodiments having equivalent elements, modifications, omissions, combinations (e.g., of aspects across various embodiments), adaptations and/or alterations as would be appreciated by those in the art based on the present disclosure. The limitations in the claims are to be interpreted broadly based on the language employed in the claims and not limited to examples described in the present specification or during the prosecution of the application, which examples are to be construed as non-exclusive.
Accordingly, other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is therefore intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
This application claims the priority under 35 U.S.C. § 119 of U.S. Provisional Application No. 60/470,428, filed May 15, 2003, the disclosure of which is expressly incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
60470428 | May 2003 | US |