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 complex software.
2. Background of the Invention
In today's marketplace, software developers and vendors offer various types of 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 are 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.
Customizing complex software for users creates problems, such as conflicts between selected functions or components. For example, two different functions may attempt to modify the same data or information at the same time and thus create problems with data integrity. Further, different functions may cause problems in terms of the screen layout or usability of graphical user interface(s).
Moreover, traditionally, software aimed at providing business processing functionality to various industries has been created and sold as separate industry solution packages. Thus, for example, there might be separate software packages for different industries, such as oil, automotive, travel and/or other industries. Accordingly, non-industry specific changes in software have to be made in the various different industry packages causing significant amount of effort for the software developer.
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 and/or disadvantages.
Embodiments consistent with the present invention provide systems and methods for providing software, configuring software, and/or executing software. In accordance with one aspect of the invention, the software may correspond to any type of application or package, including complex software packages.
According to one embodiment of the invention, a method for configuring software is provided, where the software may comprise a core and a plurality of user selectable functions. The method may include presenting at least one business set for selection by a user and, in response thereto, receiving a selection of at least one business set from the user. The method may further include presenting a plurality of functions for selection by the user based on the selected business set, receiving a selection of functions from the user, and determining whether the user selection of functions is valid. Additionally, the method may include activating switches to enable software elements corresponding to the selected functions, if the user selection of the functions is determined to be valid.
According to another embodiment of the invention, a system for configuring software is provided, where the software may comprise a core and a plurality of user selectable functions. The system may include means for presenting at least one business set for selection by a user, each business set including a plurality of selectable functions, and means for receiving a selection of at least one business set from the user. The system may further include means for receiving a selection of functions from the user based on the selected business set and means for determining whether the user selection of functions is valid. Additionally, the system may further means for activating software elements corresponding to the selected functions, if the user selection of the functions is valid.
According to yet another embodiment of the invention, a method is provided for executing complex software, wherein the complex software comprises code corresponding to a core layer and code corresponding to at least one of a plurality of industry extensions. The method may include detecting, during execution of the code corresponding to the core layer, an enhancement object at a first location, wherein the enhancement object relates to one of the plurality of industry extensions, switching execution from the first location to a second location in code relating to the one of the plurality of industry extensions, and, depending on a type of the enhancement object, executing code corresponding to a code block at the second location along with the code corresponding to the core layer, or executing the code corresponding to the code block at the second location instead of at least a part of the code of the core layer.
According to still another embodiment of the invention, a method is provided for executing code corresponding to a core layer and code provided outside the core layer. The method may include detecting, during execution of the code corresponding to the core layer, an enhancement object at a first location, wherein detecting the enhancement object at the first location includes checking an external file, switching execution from the first location to a second location in the code outside the core layer, and, depending on a type of the enhancement object, executing code corresponding to a code block at the second location along with the code corresponding to the core layer, or executing the code corresponding to the code block at the second location instead of at least a part of the code of the core layer.
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. 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:
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, configuring software, and/or executing software. As disclosed herein, embodiments of the invention may be implemented to offer various types of computerized systems or software, including complex software systems and programs. For example, in accordance with an embodiment of the invention, a complex software package may be offered that includes a core layer. The core layer 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.
Referring to
As shown in
Extension enabling layer 115 may facilitate the enablement of extensions 112-118 according to a user's selection. In addition, extension enabling layer 115 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. Additionally or alternatively, 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 115 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. In one embodiment, industry extensions 120 may represent extensions for specific industries and, unlike the set of extensions 110, may not be complete software packages. Instead, industry extensions 120 may be specific functionality or features (e.g., screen elements, menu screens, data fields, etc.) that modify, add, and/or delete aspects of extensions 110, for example. Alternatively, or additionally, industry extensions 120 may modify, add, and/or delete aspects of other layers of system 100, such as core layer 130 and application platform 140.
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.
Business sets may comprise industry-specific business sets, functional business sets, and/or custom business sets (see, for example,
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
As shown by the exemplary user interface 420 of
In step S.10, 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 300 (
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.20). 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.30). 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 120, etc.
If the selection of functions is determined not to be valid (step S.30; No), then the process may return to step S.20 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.30; Yes), then processing may continue. In step S.40, 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. In another embodiment, step S.40 is made optional or completely eliminated form the overall process of
In step S.50, 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 the functionality 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 100.
Thereafter, in step S.60, 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 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.
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 100. 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.
Consistent with an aspect of the present invention, switches may be utilized to facilitate the activation of user-selected functions. Such switches may be implemented with software and/or other means (e.g., software objects and database entries) to provide an automated framework for selectively activating functions. By way of example,
As discussed earlier, with respect to
As further shown in
Packages 634-636 may comprise one or more objects. In one embodiment, packages may be implemented as object containers. Objects may include, blocks of coding, functional modules, appends, transaction codes (e.g., codes or identifiers to call a sub-routine), business add-ins, transactions, reports, database tables, and/or other software components. Appends may relate to fields, for example, which could be added to an existing database structure. Business add-ins may relate to additional business code that will be processed as part of the processing of the selected business set. Transactions may relate to any financial transaction, such as a purchase order, which may be processed as part of the processing of the selected business set. In one embodiment, an activated switch may result in compilation of code or code blocks corresponding to the activated switch, with the code for the core layer 130 of
As disclosed herein, each activated switch may cause its respective dependent software elements (e.g., screen elements, packages, customizing nodes, etc.) to be enabled. This, in turn, will cause the user-selected functions (i.e., functionality and/or features) to be implemented during execution of the software system. Further, within a package, only certain objects may react directly to an activated switch. Other objects may exist, but only react during run-time when other dependencies are true (i.e., the function module exists, but only reacts if, for example, it is called during run-time).
Consistent with an aspect of the invention, one or more software elements may be grouped to provide industry extensions that are selectable by a user. Each industry extension may relate to functions of one or more business sets. Such a relationship or dependency may be mapped using, for example, a switch-based framework like that presented in
By way of example,
Business Set 702 may further include mapping(s) to Industry Extension Y 730. Industry Extension Y 730 may include one or more software elements, such as Package P3732. Package P3732 may further include sub-packages, such as sub-package P4734 and sub-package P5736.
In one embodiment, one package and/or sub-package of an industry extension may not be assigned to different switches. But, one switch may be assigned to different packages or sub-packages. In addition, if a package is assigned to a switch, then the inner sub-package must not be assigned to another switch. In one embodiment, the automated switch framework, or similar software, may check the switch assignments and give an error message if a developer of the software, for example, makes an incorrect switch assignment.
Referring again to
Referring now to
Consistent with an embodiment of the invention, enhancement objects may also be provided implicitly. For example, an existing source code statement such as “BEGIN of Module A” 804, which indicates the beginning of the source code for program module A 802, may used be as an implicit enhancement object (e.g., an implicit enhancement point). As a further example, the source code statement “END of Module A” 822, which indicates the end of the source code for program module A 802, may also used be as an implicit enhancement object. As will be appreciated by those skilled in the art, these and other identifiable points or areas in the source code may be used as implicit enhancement objects. One advantage of using implicit enhancement objects is that they do not require the addition of explicit statements or identifiers (such as those referenced above for the explicit enhancement points and sections). Another advantage is that they may permit the creation and management of enhancement objects to existing software systems without the need for a developer to enter explicit statements or to otherwise modify the source code. Implicit enhancement objects may be defined and managed through files, containers or tables which are external to the core layer. Alternatively, such files, containers or tables may be made part of the core layer, but remain external or separate to the existing source code of the core.
Consistent with an aspect of the invention, enhancement spots may also be provided to facilitate enhancements to the core. An enhancement spot may be defined through the combination of one or more enhancement points and enhancement sections. Between enhancement spots, one or more enhancement objects may be common. Implicit enhancement objects may also be included in an enhancement spot. Enhancement spots may be defined and managed through files, containers or tables. Such files, containers or tables may be external to the core layer or provided as part of the core layer but separate from the source code of the core.
In
Consistent with an aspect of the invention, each enhancement object may be linked or related to an enhancement implementation. This relationship may direct or indirect through the definition of enhancement spots, as explained further with respect to
As will be appreciated by those skilled in the art,
Referring now to
The linking or relationship between an enhancement spot and its implementations may be provided using a file, table, or container. By way of example,
The relationship between enhancement implementation elements and enhancement spots and related enhancement objects may be defined and managed using a file, table, or container. By way of example,
In one embodiment, the location of an enhancement object in the core layer 130 may be defined external to core layer 130. For example, the enhancement object may be defined via an external file, an external database table or an external application. As disclosed above, such an external file may be used to define implicit enhancement objects in the core layer.
Next, a selection of at least one business set may be received from the user (step S.120). Of course a user, may decide to select none of the business sets, in that case the process may be terminated. Once the selection of at least one business set is received, however, a selection of one or more functions based on the selected business set may be received from the user (step S.130). As part of this step, the user may be presented with a list of functions (corresponding to functionality and/or features) for selection based on the selected business set. Available selections may be presented using a graphical user interface, similar to exemplary user interface shown in
A configuration module or similar logic may determine whether the user selection of functions is valid (step S.140). 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 120, etc.
If the selection of functions is determined not to be valid (step S.140; No), then the process may return to step S.130 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.140; Yes), then processing may continue. In step S.150, a configuration module or similar logic may activate switches corresponding to the selected functions. Thus, for example, tables and/or other data storage elements may be updated to configure the switches based on the selected functions. Such updates may be made to activate software elements corresponding to the functions selected by the user. For example, with reference to
Referring again to the exemplary embodiment of
Table 1000 lists additional exemplary entries for an enhancement section (see
In an exemplary method for executing code corresponding to a core layer (core layer 130 of
Run-time environment module or similar logic may then determine whether the enhancement object is an enhancement point type of object. If the enhancement object is an enhancement point type of object, then run time environment module or similar logic may execute code corresponding to a code block at the second location along with the code corresponding to the core layer. If, however, the enhancement object is not an enhancement point type of object, then run time environment module or similar logic may execute the code corresponding to the code block at the second location instead of at least a part of the code corresponding to the core layer. Thus, consistent with one embodiment, an enhancement object may be of two types: either an enhancement point type of object or an enhancement section type of object (see, e.g.,
In one embodiment, once a user selects a function corresponding to a business set, that function may relate to an enhancement object (e.g., enhancement objects of
In another exemplary method for executing code corresponding to a core layer (130 of
Thus, if the enhancement object is an enhancement point type of object, then run time environment module or similar logic may execute code corresponding to a code block at the second location along with the code of the core layer. If, however, the enhancement object is not an enhancement point type of object, then run time environment module or similar logic may execute the code corresponding to the code block at the second location instead of at least a part of the code corresponding to the core layer.
Processing of code corresponding to various code bocks may result in conflicts. In one embodiment, some conflicts among user-selected functions may be resolved using a combination of switches. Thus, for example, where a user selects two functions, which may attempt to redefine the same object and/or attempt to modify the same code, an alternative set of code may be activated when both functions are activated by the user. In other words, if only one function (e.g., F1) is activated then the switch (e.g., SW1) corresponding to that function may be activated. Similarly, when another function (e.g., F2), but not function F1, is activated then the switch (e.g., SW2) corresponding to the second function may be activated. But, when both functions are activated, then a combination switch (SW3=SW1 AND SW2) may be activated and the alternative set of code that resolves the conflict may be processed.
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.
As disclosed herein, embodiments and features of the invention may be implemented through computer-hardware and/or software. Such embodiments may be implemented in various environments, such as networked and computing-based environments with one or more users. The present invention, however, is not limited to such examples, and embodiments of the invention may be implemented with other platforms and in other environments.
By way of example, embodiments of the invention may be implemented using conventional personal computers (PCs), desktops, hand-held devices, multiprocessor computers, pen computers, microprocessor-based or programmable consumer electronics devices, minicomputers, mainframe computers, personal mobile computing devices, mobile phones, portable or stationary personal computers, palmtop computers or the like.
The storage mediums and databases referred to herein symbolize elements that temporarily or permanently store data and instructions. Although storage functions may be provided as part of a computer, memory functions can also be implemented in a network, processors (e.g., cache, register), or elsewhere. While examples of databases have been provided herein, various types of storage mediums can be used to implement features of the invention, such as a read only memory (ROM), a random access memory (RAM), or a memory with other access options. Further, memory functions may be physically implemented by computer-readable media, such as, for example: (a) magnetic media, like a hard disk, a floppy disk, a magnetic disk, a tape, or a cassette tape; (b) optical media, like an optical disk (e.g., a CD-ROM), or a digital versatile disk (DVD); (c) semiconductor media, like DRAM, SRAM, EPROM, EEPROM, memory stick, and/or by any other media, like paper.
Embodiments of the invention may also be embodied in computer program products that are stored in a computer-readable medium or transmitted using a carrier, such as an electronic carrier signal communicated across a network between computers or other devices. In addition to transmitting carrier signals, network environments may be provided to link or connect components in the disclosed systems. Networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet (i.e., the World Wide Web). The network can be a wired or a wireless network. To name a few network implementations, the network is, for example, a local area network (LAN), a wide area network (WAN), a public switched telephone network (PSTN), an Integrated Services Digital Network (ISDN), an infra-red (IR) link, a radio link, such as a Universal Mobile Telecommunications System (UMTS), Global System for Mobile Communication (GSM), Code Division Multiple Access (CDMA), or a satellite link.
While certain features and embodiments of the invention have been described, other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the embodiments of the invention disclosed herein. Further, the steps of the disclosed methods may be modified in any manner, including by reordering steps and/or inserting or deleting steps, without departing from the principles of the invention.
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 priority under 35 U.S.C. § 119 to U.S. Provisional Application Nos. 60/591,120, filed Jul. 27, 2004 and 60/591,112, filed Jul. 27, 2004, both of which are expressly incorporated herein by reference in their entirety. This application also claims priority to U.S. application Ser. No. 10/845,184, filed May 14, 2004, which is also expressly incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
60591120 | Jul 2004 | US | |
60591112 | Jul 2004 | US |