Methods and apparatus for pre-configuring software

A system, operating on a first computerized device, deploys an agent to a second computerized device. The agent, operating on the second computerized device, obtains the configuration data. The system receives, at the first computerized device, from the agent operating on the second computerized device, configuration data specific to the second computerized device. The system creates software for the second computerized device utilizing the configuration data. The software is customized based on the configuration data specific to the second computerized device. The system then deploys the software to the second computerized device for operation on the second computerized device.

BACKGROUND

Conventional computerized devices, such as personal computers, laptop computers, and data communications devices (e.g., routers, switches, gateways and the like) are configured with programs (i.e., software applications, Operating System applications, etc) that install software applications on the computerized device. Often, the software applications to be installed are comprised of large sets of files that include executable files, dynamically linked libraries (DLL), help files, data files, etc.

Software is created for easy installation on a computerized device, with minimal effort on the part of a user installing the software. Ideally, software for installation requires that a user invokes the installation package, and the installation performs a complete installation.

SUMMARY

Conventional technologies for installing software suffer from a variety of deficiencies. In particular, conventional technologies for installing software are limited in that installing the software is just one step of a long and tedious process of deploying software on a computerized device. After the software is installed, a user may need to properly configure the settings for the computerized device, to complete the installation. Each computerized device, on which the software is installed, must be configured for the newly installed software. Unless all the computerized devices, on which software is being installed, have uniform configurations (i.e., the same software, the same versions of software, the same versions of databases, etc.), each computerized device must be individually configured. This task may add many additional hours to the process of installing software.

Additionally, some software is installed on networks where multiple computerized devices are in communication with each other. In this scenario, correctly configuring the software requires knowledge of the configurations of each of those multiple computerized devices in communication with the network, adding even more hours to the process of installing software.

Embodiments disclosed herein significantly overcome such deficiencies and provide a software configuring process, operating in a first computerized device, that delivers customized pre-configured software to a second computerized device. In an example embodiment, the customized pre-configured software is a customized solution deployment package consisting of software and appropriate installation and configuration scripts. The software configuring process deploys an agent, from the first computerized device, to the second computerized device, to obtain configuration data from the second computerized device. Using the configuration data, the software configuring process creates customized software for the second computerized device. The software configuring process deploys the pre-configured customized software to the second computerized device such that the software can be installed, and correctly configured, on the second computerized device with a minimal amount of user interaction. In an example embodiment, the software configuring process deploys an agent to a plurality of second computerized devices, obtains the configuration data for the plurality of second computerized devices, and then deploys the pre-configured customized software to the plurality of second computerized device such that the software can be installed, and correctly configured, on the plurality of second computerized device with a minimal amount of user interaction.

The software configuring process obtains the configuration data from a configuration database that is in communication with the second computerized device. In an example embodiment, the software configuring process requests the configuration data from the configuration database prior to obtaining the configuration data. In yet another example embodiment, the software configuring process requests permission, from a user, and waits to receive permission to obtain the configuration data prior to obtaining the configuration data from the configuration database.

In an example embodiment, the first computerized device is in communication with at least one other computerized device, such as a network of computerized devices. The software configuring process obtains configuration data, associated with the other computerized device, from the configuration database that is in communication with the first computerized device (and any other computerized devices that are in communication with the first computerized device). The configuration data associated with the other computerized device is necessary for pre-configuring the customized software for the second computerized device.

The software configuring process transmits the software to the second computerized devices, and installs the pre-configured customized software on the second computerized device. In an example embodiment, the software configuring process receives a status, associated with the installation of the pre-configured customized software, from the second computerized device. In another example embodiment, the software configuring process receives an evaluation of the installation of the software on the second computerized device.

The software configuring process deploys an agent, from a first computerized device to a second computerized device. The agent, operating on the second computerized device, obtains configuration data that is specific to the second computerized device. The software configuring process receives, at the first computerized device, the configuration data from the agent. The software configuring process creates software for the second computerized device utilizing the configuration data. The software is customized based on the configuration data specific to the second computerized device. The software configuring process then deploys the software to the second computerized device for operation on the second computerized device.

During an example operation of one embodiment, suppose a second computerized device requires an update to a suite of document processing applications. The software configuring process, operating on a first computerized device, deploys an agent to the second computerized device to obtain configuration data associated with the second computerized device. Included in the configuration data is information such as:

i) software already installed on the second computerized device

ii) the operating system installed on the second computerized device

iii) the amount of memory on the second computerized device

In this scenario, the configuration data obtained by the agent reveals that a spreadsheet component of the suite of document processing applications is already installed on the second computerized device.

Using the configuration data, the software configuring process creates pre-configured customized software to install the suite of document processing applications on the second computerized device. However, during the creation of the software, the software configuring process removes the spreadsheet component from the software since the agent has determined that an up to date version of the spreadsheet component is already installed on the second computerized device. The software configuring process deploys the pre-configured customized software to the second computerized device, and installs the software on the second computerized device.

Other embodiments disclosed herein include any type of computerized device, workstation, handheld or laptop computer, or the like configured with software and/or circuitry (e.g., a processor) to process any or all of the method operations disclosed herein. In other words, a computerized device such as a computer or a data communications device or any type of processor that is programmed or configured to operate as explained herein is considered an embodiment disclosed herein.

Other embodiments disclosed herein include software programs to perform the steps and operations summarized above and disclosed in detail below. One such embodiment comprises a computer program product that has a computer-readable medium including computer program logic encoded thereon that, when performed in a computerized device having a coupling of a memory and a processor, programs the processor to perform the operations disclosed herein. Such arrangements are typically provided as software, code and/or other data (e.g., data structures) arranged or encoded on a computer readable medium such as an optical medium (e.g., CD-ROM), floppy or hard disk or other a medium such as firmware or microcode in one or more ROM or RAM or PROM chips or as an Application Specific Integrated Circuit (ASIC). The software or firmware or other such configurations can be installed onto a computerized device to cause the computerized device to perform the techniques explained herein as embodiments disclosed herein.

It is to be understood that the system disclosed herein may be embodied strictly as a software program, as software and hardware, or as hardware alone. The features disclosed herein may be employed in data communications devices and other computerized devices and software systems for such devices such as those manufactured by IBM Corporation of Research Triangle Park, N.C.

DETAILED DESCRIPTION

Embodiments disclosed herein include methods and a computer system that perform a software configuring process that delivers pre-configured customized software to a computerized device. The software configuring process, operating in a first computerized device, that delivers customized pre-configured software to a second computerized device. In an example embodiment, the customized pre-configured software is a customized solution deployment package consisting of software and appropriate installation and configuration scripts. The software configuring process deploys an agent, from the first computerized device, to the second computerized device, to obtain configuration data from the second computerized device. Using the configuration data, the software configuring process creates customized software for the second computerized device. The software configuring process deploys the pre-configured customized software to the second computerized device such that the software can be installed, and correctly configured, on the second computerized device with a minimal amount of user interaction. In an example embodiment, the software configuring process deploys an agent to a plurality of second computerized devices, obtains the configuration data for the plurality of second computerized devices, and then deploys the pre-configured customized software to the plurality of second computerized device such that the software can be installed, and correctly configured, on the plurality of second computerized device with a minimal amount of user interaction.

The software configuring process obtains the configuration data from a configuration database that is in communication with the second computerized device. In an example embodiment, the software configuring process requests the configuration data from the configuration database prior to obtaining the configuration data. In yet another example embodiment, the software configuring process requests permission, from a user, and waits to receive permission to obtain the configuration data prior to obtaining the configuration data from the configuration database.

In an example embodiment, the first computerized device is in communication with at least one other computerized device, such as a network of computerized devices. The software configuring process obtains configuration data, associated with the other computerized device, from the configuration database that is in communication with the first computerized device (and any other computerized devices that are in communication with the first computerized device). The configuration data associated with the other computerized device is necessary for pre-configuring the customized software for the second computerized device.

The software configuring process transmits the software to the second computerized devices, and installs the pre-configured customized software on the second computerized device. In an example embodiment, the software configuring process receives a status, associated with the installation of the pre-configured customized software, from the second computerized device. In another example embodiment, the software configuring process receives an evaluation of the installation of the software on the second computerized device.

The software configuring process deploys an agent, from a first computerized device to a second computerized device. The agent, operating on the second computerized device, obtains configuration data that is specific to the second computerized device. The software configuring process receives, at the first computerized device, the configuration data from the agent. The software configuring process creates software for the second computerized device utilizing the configuration data. The software is customized based on the configuration data specific to the second computerized device. The software configuring process then deploys the software to the second computerized device for operation on the second computerized device.

FIG. 1is a block diagram illustrating example architecture of embodiments disclosed herein. The software configuring process145, operating on a first computerized device110, deploys an agent135to a second computerized device120to obtain configuration data130from a configuration database125. The software configuring process145, operating on a first computerized device110, receives the configuration data130, via the agent135. The software configuring process145creates software140, and deploys the software140to the second computerized device120.

FIG. 2illustrates an example architecture of a first computerized device110. The first computerized device110may be any type of computerized device such as a personal computer, workstation, portable computing device, console, laptop, network terminal or the like. In this example, the first computerized device110includes an interconnection mechanism111that couples a memory system112, a processor113, and a communications interface114. The communications interface114enables the first computerized device110to communicate with other devices (i.e., other computers) on a network (not shown). This can allow access to the software configuring application by remote computer systems.

The memory system112may be any type of computer readable medium that is encoded with an software configuring application145-1that may be embodied as software code such as data and/or logic instructions (e.g., code stored in the memory or on another computer readable medium such as a removable disk) that supports processing functionality according to different embodiments described herein. During operation of the first computerized device110, the processor113accesses the memory system112via the interconnect111in order to launch, run, execute, interpret or otherwise perform the logic instructions of the software configuring application145-1. Execution of software configuring application145-1in this manner produces processing functionality in a software configuring process145-2. In other words, the software configuring process145-2represents one or more portions of runtime instances of the software configuring application145-1(or the entire application145-1) performing or executing within or upon the processor113in the first computerized device110at runtime. It is to be understood that embodiments disclosed herein include the applications (i.e., the un-executed or non-performing logic instructions and/or data) encoded within a computer readable medium such as a floppy disk, hard disk or in an optical medium, or in a memory type system such as in firmware, read only memory (ROM), or, as in this example, as executable code within the memory system112(e.g., within random access memory or RAM). It is also to be understood that other embodiments disclosed herein can provide the applications operating within the processor113as the processes. While not shown in this example, those skilled in the art will understand that the computer system may include other processes and/or software and hardware components, such as an operating system, that have been left out of this illustration for ease of description.

Further details of configurations explained herein will now be provided with respect to a flow chart of processing steps that show the high level operations disclosed herein to perform the software configuring process145-2.

FIG. 3is a flowchart of the steps performed by the software configuring process145-2when it deploys an agent135to the second computerized device120.

In step200, the software configuring process145-2deploys an agent135to the second computerized device120. In an example embodiment, the software configuring process145-2operates on a first computerized device110, and deploys the agent135from the first computerized device110to the second computerized device120.

In step201, the software configuring process145-2receives the configuration data130obtained by the agent135operating on the second computerized device120. The configuration data130is received by the software configuring process145-2at the first computerized device110, from the agent135operating on the second computerized device. In other words, the software configuring process145-2, operating on the first computerized device110, deploys the agent135to the second computerized device120. The agent135, operating on the second computerized device120, obtains configuration data130, and transmits the configuration data130back to the software configuring process145-2, operating on the first computerized device110. The configuration data130is specific to the second computerized device120and contains configuration information associated with the second computerized device120such as operating system, software applications, versions of software applications, databases, etc.

In step202, the software configuring process145-2creates software140for the second computerized device120utilizing the configuration data130. The software140is pre-configured and customized based on the configuration data130specific to the second computerized device120. In an example embodiment, a software solution developer creates the customized software specifically for the second computerized device120. The software solution developer uses the configuration data130, obtained by the agent135, to create pre-configured customized software140for the second computerized device120. In an example embodiment, the customized software is a customized solution deployment package consisting of software and appropriate installation and configuration scripts.

In step203, the software configuring process145-2deploys the software140to the second computerized device120for operation on the second computerized device120. The software configuring process145-2deploys the software140to the second computerized device120where the software140is installed and configured on the second computerized device120. In an example embodiment, installing and configuring the software140on the second computerized device120is a ‘one click’ operation by a user operating the second computerized device120. In other words, the installation and configuration of the software140on the second computerized device120requires minimal interaction by the user, thus eliminating the many hours required to configure the software140on the second computerized device120.

FIG. 4is a flowchart of the steps performed by the software configuring process145-2when it deploys an agent135to the second computerized device120.

In step204, the software configuring process145-2deploys an agent135to the second computerized device120. In an example embodiment, the software configuring process145-2operates on a first computerized device110, and deploys the agent135from the first computerized device110to the second computerized device120.

In step205, the software configuring process145-2transmits the agent135to the second computerized device120to obtain the configuration data130from the second computerized device120.

In step206, the software configuring process145-2receives the configuration data130obtained by the agent135operating on the second computerized device120. The configuration data130is received by the software configuring process145-2at the first computerized device110, from the agent135operating on the second computerized device120. In other words, the software configuring process145-2, operating on the first computerized device110, deploys the agent135to the second computerized device120. The agent135, operating on the second computerized device120, obtains configuration data130, and transmits the configuration data130back to the software configuring process145-2, operating on the first computerized device110. The configuration data130is specific to the second computerized device120, and contains configuration information associated with the second computerized device120such as operating system, software applications, versions of software applications, etc.

In step207, the software configuring process145-2receives notification that the second computerized device120requires the software140. In an example embodiment, the software configuring process145-2, operating on the first computerized device110, receives notification that the second computerized device120requires software140to be installed and configured on the second computerized device120. In one embodiment, the notification is received from the second computerized device120. In another embodiment, the notification is received from a computerized device (not shown) other than the second computerized device120.

Alternatively, in step208, the software configuring process145-2obtains the configuration data130from a configuration database125in communication with the second computerized device120. The configuration database125contains information such as what software140is installed on the second computerized device120, what other computerized devices (not show) are on a network that is in communication with the second computerized device120, what is the operating system of the second computerized device120, how much memory is on the second computerized device120, what types and versions of databases exist on the second computerized device120, etc.

In step209, the software configuring process145-2requests the configuration data130from the configuration database125. In an example embodiment, the software configuring process145-2obtains the configuration data130that is needed (to customize software140for the second computerized device120) from the configuration database125(for example performing a database query to retrieve the configuration data130from the configuration database125). In another example embodiment, the software configuring process145-2requests specific configuration data130from the configuration database130. The specific configuration data130is necessary to customize the software140for the second computerized device120(for example specifically requesting the version of the operating system used on the second computerized device120).

FIG. 5is a flowchart of the steps performed by the software configuring process145-2when it receives at the first computerized device110, from the agent135operating on the second computerized device120, configuration data125specific to the second computerized device120.

In step210, the software configuring process145-2receives the configuration data130obtained by the agent135operating on the second computerized device120. The configuration data130is received by the software configuring process145-2at the first computerized device110, from the agent135operating on the second computerized device. In other words, the software configuring process145-2, operating on the first computerized device110, deploys the agent135to the second computerized device120. The agent135, operating on the second computerized device120, obtains configuration data130, and transmits the configuration data130back to the software configuring process145-2, operating on the first computerized device110. The configuration data130is specific to the second computerized device120, and contains configuration information associated with the second computerized device120such as operating system, software applications, versions of software applications, etc. In an example embodiment, the software configuring process145-2also operates on the second computerized device120.

In step211, the software configuring process145-2obtains configuration data associated with at least one other computerized device in communication with the second computerized device120. The configuration data125, associated with at least one other computerized device is necessary for creation of the software140for the second computerized device120. In an example embodiment, the second computerized device120is in communication with other computerized devices (not shown) on a network. In order to provide properly pre-configured customized software140to the second computerized device120, the software configuring process145-2requires configuration data130associated with other computerized devices (not shown) that are in communication with the second computerized device120.

Alternatively, in step212, the software configuring process145-2requests access to obtain the configuration data130from the second computerized device120. In an example embodiment, a security process is in place on the second computerized device120. The software configuring process145-2must request, and receive permission for access prior to obtaining the configuration data130from the configuration database125. This security process is to prevent malicious software from obtaining unauthorized configuration data130.

In step213, the software configuring process145-2requests access from a user associated with the second computerized device120. In an example embodiment, permission to access the configuration data130from the configuration database125is granted (or not granted) by a user, such as a system administrator, operating the second computerized device120.

In step214, the software configuring process145-2notifies the user what configuration data130will be obtained from the second computerized device120. Prior to receiving access to obtain the configuration data130, the software configuring process145-2provides the user with an inventory of what configuration the agent135will obtain data130from the configuration database125. Typically, a user, such as a system administrator, decides what configuration data130will be obtained from the configuration database125by the agent135.

In step215, the software configuring process145-2waits to receive permission from the user prior to obtaining the configuration data130. When the software configuring process145-2receives permission to obtain the configuration data130, for example, from a user such as a system administrator, the software configuring process145-2obtains the configuration data130from the configuration database125. The software configuring process145-2, operating on the first computerized device110, then receives the configuration data130necessary to pre-configure customized software140for the second computerized device120.

FIG. 6is a flowchart of the steps performed by the software configuring process145-2when it creates software140for the second computerized device120utilizing the configuration data130.

In step216, the software configuring process145-2creates software140for the second computerized device120utilizing the configuration data130. The software140is customized based on the configuration data130specific to the second computerized device120. In an example embodiment, a software solution developer creates the customized software specifically for the second computerized device120. In one example configuration, the software solution developer receives a notification that the second computerized device120requires the software140. The software solution developer begins to create the software140while the agent135is obtaining configuration data130from the second computerized device120. Using the configuration data130, the software solution developer then pre-configures the customized software140for the second computerized device120.

In step217, the software configuring process145-2identifies a plurality of components necessary to render the software140operable on the second computerized device120. The software140may comprise, for example, a plurality of software applications, each of which have libraries, include files, databases, etc. These components are necessary for each of the software applications to be properly installed and configured on the second computerized device120. The software configuring process145-2identifies all the components needed to create software140that is customized for the second computerized device120. The customized software140can be properly installed and configured on the second computerized device120.

In step218, the software configuring process145-2identifies a subset of components that exist on the second computerized device120. The subset of components is included within the plurality of components necessary to render the software140operable on the second computerized device120. In an example embodiment, the software configuring process145-2identifies that some of the components necessary to properly install and configure the software140on the second computerized device120, already exist on the second computerized device120. For example, a new revision of a database application may use an existing library. The software configuring process145-2creates software140to install the most recent version of the database application on the second computerized device120. The software configuring process145-2determines that the most recent version of the database application utilizes a version of a library that currently already exists on the second computerized device120.

In step219, the software configuring process145-2removes the subset of components from the plurality of components when creating the software140customized for the second computerized device120. Upon determining that the most recent version of the database application utilizes a version of a library that currently already exists on the second computerized device120, the software configuring process145-2removes the library from the plurality of components compiled into the software140created to install and configure the database application on the second computerized device120. Thus, the software configuring process145-2creates pre-configured customized software140that efficiently installs on the second computerized device120.

In step220, the software configuring process145-2compiles the plurality of components to create software140deployable on the second computerized device120. The software is customized for the second computerized device120such that it is properly installed and configured on the second computerized device120.

In step221, the software configuring process145-2creates software140to minimize user interaction during a deployment of the software140on the second computerized device120. The software140is customized for the second computerized device120such that it is properly installed and configured on the second computerized device120with a minimal amount of user intervention. For example, a user may only have to invoke installation of the software140, and not be required to perform any other interaction with the software140.

FIG. 7is a flowchart of the steps performed by the software configuring process145-2when it deploys the software140to the second computerized device120for operation on the second computerized device120.

In step222, the software configuring process145-2deploys the software140to the second computerized device120for operation on the second computerized device120. In an example embodiment, the software configuring process145-2deploys the software140to the second computerized device120where the software140is installed and configured on the second computerized device120. In an example embodiment, installing and configuring the software140on the second computerized device120is a ‘one click’ operation by a user operating the second computerized device120. In other words, the installation and configuration of the software140on the second computerized device120requires minimal interaction by the user.

In step223, the software configuring process145-2installs the software140on the second computerized device120. In an example embodiment, the software configuring process145-2installs and activates the customized pre-configured software140on the second computerized device120.

Alternatively, in step224, the software configuring process145-2receives a status from the second computerized device120. The status is associated with a deployment of the software140on the second computerized device120. In an example embodiment, the software configuring process145-2must receive permission from the second computerized device120, or a user, such as a system administrator responsible for the second computerized device120, prior to receiving the status of the installation from the second computerized device120.

In step225, the software configuring process145-2receives an evaluation of the deployment of the software140on the second computerized device120. In an example embodiment, a user, such as a system administrator, can report back an evaluation of the installation and configuration of the second computerized device120. In another example embodiment, the software configuring process145-2runs an evaluation application that assesses the installation and activation of the software140on the second computerized device120.

While computer systems and methods have been particularly shown and described above with references to configurations thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope disclosed herein. Accordingly, embodiments disclosed herein are not intended to be limited by the example configurations provided above.