1. Technical Field
The present invention relates in general to a system and method for generating dynamic software installation instructions. More particularly, the present invention relates to a system and method for using system parameters to generate customized instructions for use in the process of installing software on a particular computer system.
2. Description of the Related Art
Large computer systems are becoming increasingly complex. A large computer system may have multiple components, such as servers, databases, directories, etc. In addition, a large computer system typically executes a large software system that includes several software packages. A challenge found with maintaining large computer systems is the process of installing and updating these large software systems.
In a personal computer (PC) environment, software manufacturers are able to provide software that is relatively “user independent” and, therefore, not prone to errors during the installation process. For example, a user may purchase software on a compact disc, insert the compact disc into the PC, and the PC automatically loads the software after the user agrees to accept a licensing agreement and perhaps answers a few basic questions.
In a large computer system environment, however, installing software is not as straightforward as in a PC environment. A large software system may involve several software packages and machines, and the process is typically time-consuming and complicated. A user must track many system parameters while installing the software, such as machine names, software associated with the machines, etc. To complicate matters, a user is typically required to follow generic instructions that refer to a system in generalized terms, such as “DB machine.” The software installation process may easily be overwhelming, frustrating, and, in effect, error prone because the user has to continually remember to replace the generalized terms in the instructions with system parameters that are specific to his computer system.
In addition, generic instructions must often support several installation options that result in “blocks” of instructions. For example, generic instructions may include wording such as “If you are using a database on a separate system, perform steps 1-3, otherwise, perform only step 3.” A challenge found with these blocks of instructions is that is leads to further confusion for the user during an already complicated and cumbersome task.
What is needed, therefore, is a system and method for generating customized instructions for installing software that are specific to a particular computer system.
It has been discovered that the aforementioned challenges are resolved by using system parameters in combination with an instruction template for creating customized instructions in which a user follows during the process of installing a software system. A customized instruction generator asks a user particular questions regarding his computer system. In turn, the user provides answers, or system parameters. The customized instruction generator retrieves an instruction template that includes parameter placeholders, and replaces the parameter placeholders with corresponding system parameters in order to generate customized instructions.
A user wishes to load software on a computer system. The software may be a large software system that includes several software packages and the computer system may include many clients, servers, and peripheral devices. In order to facilitate the software installation process, the user uses a customized instruction generator to generate customized instructions that are specific to the software and the computer system. The customized instruction generator begins by providing system questions to the user in order to collect information regarding the computer system. The system questions correspond to particular system parameters in which the customized instruction generator requires. For example, the customized instruction generator may wish to know whether the user wishes to use a directory server.
The user reads the system questions, and provides corresponding answers (e.g. system parameters) to the customized instruction generator. Depending upon the user's answers, the customized instruction generator provides additional, dependent system questions. Using the example described above, if the user wishes to use a directory server, then the customized instruction generator may ask additional questions that are particular to the directory server, such as “What type of directory server?”
Once the customized instruction generator has collected the system parameters it requires from the user, the customized instruction generator retrieves an instruction template that includes one or more parameter placeholders, such as “Host Name.” The customized instruction generator retrieves the system parameters, replaces the parameter placeholders with the system parameters, and generates customized instructions. The customized instructions include instruction sub-sections that are particular to the computer system. For example, if a user is using a directory server, the customized instructions include sections corresponding to the directory server. On the other hand, if the user is not using a directory server, these sections are not included in the customized instructions. The customized instruction generator provides the customized instructions the user, which, in turn, the user uses in order to load the software on to the computer system.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings. The use of the same reference symbols in different drawings indicates similar or identical items.
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention which is defined in the claims following the description.
In order to facilitate the software installation process, user 120 uses customized instruction generator 100 to generate customized instructions that are specific to software 170 and computer system 180. Customized instruction generator 100 begins by providing system questions 110 to user 120 in order to collect information regarding computer system 180. System questions 110 correspond to particular system parameters in which customized instruction generator 100 requires. For example, customized instruction generator 100 may wish to know whether user 120 wishes to use a directory server.
User 120 reads system questions 110, and provides answers (e.g. system parameters 130) to customized instruction generator 100. Customized instruction generator 100 receives system parameters 130 and stores them in parameter store 150. Parameter store 150 may be stored on a nonvolatile storage area, such as a computer hard drive. Depending upon user 120's answers, customized instruction generator provides additional dependent system questions. Using the example described above, if user 120 does wish to use a directory server, then customized instruction generator 100 may ask additional questions that are particular to the directory server, such as “What type of directory server?” (see
Once customized instruction generator 100 has collected the system parameters it requires from user 120, customized instruction generator 100 retrieves an instruction template from instruction template store 140. The instruction template includes one or more parameter placeholders, such as “Host Name.” Customized instruction generator 100 retrieves the system parameters that are stored in parameter store 150, replaces the parameter placeholders with the system parameters, and generates customized instructions 160 (see
Customized instruction generator 100 provides customized instructions 160 to user 120. In turn, user 120 uses customized instructions 160 to load software 170 on computer system 180 (see
In one embodiment customized instruction generator 100 allows for a user to change his configuration preferences. For example, a user may proceed through the customized instruction generation process, and change his mind as to whether he will be using a directory server. In this embodiment, customized instruction generator 100 identifies which system questions are effected by the user's decision, and asks the user to answer the effected system questions.
Window 200 includes question 210 and corresponding check boxes 215 and 220. Question 210 is a top-level question whereby a user selects either check box 215 or 220 to answer. If a user plans to use a directory server, the user selects check box 215. On the other hand, if a user does not plan to use a directory server, the user selects check box 220.
Depending upon a user's answer to question 210, the customized instruction generator displays questions 230 through 260. For example, if the user answers “No” to question 210, the customized instruction generator does not display questions 230 through 260. On the other hand, if the user answers “Yes” to question 210, the customized instruction generator displays questions 230 through 260 which ask more detailed questions corresponding to the directory server.
In order to answer question 235, the user enters, or selects from a pull down menu, a type of directory server in box 235. The example in
In order to answer question 250, the user enters a user identifier in box 255 that corresponds to the directory server. The example in
As one skilled in the art can appreciate, the customized instruction generator may ask other computer system related questions, such as “Will you use a DB2, Oracle, or Cloudscape database?” and “Will you be installing the server in Windows, AIX or Solaris?”
Customized instruction processing commences at 340, whereupon processing receives the user request at step 345. Processing invokes a system parameter collection process at step 350, whereby processing asks the user particular questions in order to receive system parameters that correspond to the user's computer system (pre-defined process block 360, see
After system parameters are collected, processing invokes customized instruction generation at step 370. Processing retrieves an instruction template from instruction template store 140, which includes parameter placeholders, such as “host name” and “user id.” Processing replaces the parameter placeholders with system parameters that are stored in parameter store 150, and generates customized instructions, which it stores in customized instruction store 385 (pre-defined process block 380, see
The user receives the customized instructions at step 320, and installs software 170 in computer system 180 using the customized instructions (step 325). Software 170 is the same as that shown in
Processing displays the top-level question to user 120 at step 420. User 120 is the same as that shown in
A determination is made as to whether the user's answer to the top-level question requires corresponding dependent questions (decision 445). Using the example described above, if the user is not planning on using a directory server, then processing is not required to ask questions related to a directory server. If there are no dependent questions to receive answers, decision 445 branches to “No” branch 447 bypassing dependent question-answering steps.
On the other hand, if there are dependent questions to receive answers, decision 445 branches to “Yes” branch 449 whereupon processing displays dependent questions to user 120 at step 450. In turn, processing receives system parameters corresponding to the dependent questions (step 460), and stores the system parameters in parameter store 150 at step 470.
A determination is made as to whether there are more top-level questions to receive answers (decision 480). If there are more top-level questions, decision 480 branches to “Yes” branch 482 whereupon processing loops back to retrieve (step 490) and process the next top-level question. This looping continues until there are no more top-level questions to process, at which point decision 480 branches to “No” branch 488 whereupon processing returns at 495.
A determination is made as to whether the retrieved instruction section includes one or more parameter placeholders (decision 520). For example, the instruction section may be generalized instructions that are not dependent upon a user's computer system configuration. As another example, the instruction section may have a parameter placeholder such as “Host Name” which corresponds to the host name of the user's computer system. If the retrieved instruction section is not customizable, decision 520 branches to “No” branch 522 whereupon processing stores the instruction section, as is, in customized instruction store 385 (step 530). Customized instruction store 385 is the same as that shown in
On the other hand, if the retrieved instruction section includes one or more parameter placeholders, decision 520 branches to “Yes” branch 528 whereupon processing retrieves system parameters that correspond to the instruction section's parameter placeholders (step 540). For example, if the parameter placeholder is “Host Name”, the retrieved system parameter may be “ldap.example.com.” The system parameters were received from a user and stored in parameter store 150 (see
At step 550, processing replaces the parameter placeholders with the retrieved system parameters. Using the example described above, in places where “Host Name” is located, processing replaces “Host Name” with “ldap.example.com.”
Processing identifies subsections that correspond to the retrieved system parameters at step 560. For example, if a user plans to use a directory server, processing identifies software installation instructions that correspond to a directory server. At step 570, processing generates a customized instruction section based upon the placeholders and sub-sections, and stores the generated customized instruction section in customized instruction section 385 at step 570 (see
A determination is made as to whether there are more instruction sections to process (decision 580). If there are more instruction sections to process, decision 580 branches to “Yes” branch 582 which loops back to retrieve (step 590) and process the next instruction section. This looping continues until there are no more instruction sections to process, at which point decision 580 branches to “No” branch 588 whereupon processing returns at 595.
Window 600 includes line 610, which informs a user that the installation instructions that follow correspond to an LDAP server. For example, a user may have informed the customized instruction generator that the user is using an LDAP server as a directory server, such as the example shown in
Line 650 is a command line that includes specific system parameters to enable a portal server to use an LDAP server. Box 655 includes text specifically for a server of type “IDS”, or IBM Directory Server. Box 660 includes text specifically for a server whose host name is “ldap.example.com.” Boxes 665 and 670 include text that is specific to a user id “wpsadmin,cn=users,dc=example,dc=com” with a corresponding password “mypassword”, respectively.
PCI bus 714 provides an interface for a variety of devices that are shared by host processor(s) 700 and Service Processor 716 including, for example, flash memory 718. PCI-to-ISA bridge 735 provides bus control to handle transfers between PCI bus 714 and ISA bus 740, universal serial bus (USB) functionality 745, power management functionality 755, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 720 is attached to ISA Bus 740. Service Processor 716 includes JTAG and I2C busses 722 for communication with processor(s) 700 during initialization steps. JTAG/I2C busses 722 are also coupled to L2 cache 704, Host-to-PCI bridge 706, and main memory 708 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 716 also has access to system power resources for powering down information handling device 701.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 762, serial interface 764, keyboard interface 768, and mouse interface 770 coupled to ISA bus 740. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 740.
In order to attach computer system 701 to another computer system to copy files over a network, LAN card 730 is coupled to PCI bus 710. Similarly, to connect computer system 701 to an ISP to connect to the Internet using a telephone line connection, modem 775 is connected to serial port 764 and PCI-to-ISA Bridge 735.
While the computer system described in
One of the preferred implementations of the invention is an application, namely, a set of instructions (program code) in a code module which may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, on a hard disk drive, or in removable storage such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive), or downloaded via the Internet or other computer network. Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, changes and modifications may be made without departing from this invention and its broader aspects and, therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For a non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.