Abstract:
A system and method for efficiently reinstalling computer software, which tracks frequency of utilization for each software application loaded onto the computer and reinstalls applications based on frequency of utilization, with the option to reinstall a computer operating system first or to reinstall computer applications along with libraries, so that computer users can resume working as soon as possible instead of waiting many hours for the entire reinstallation image to complete before a computer system reboot allows for continuation of computer usage.

Description:
BACKGROUND OF THE INVENTION 
     1. Technical Field 
     The present invention relates in general to computers, in particular to computer software, and more particularly to reinstalling computer software. 
     2. Description of the Related Art 
     A common frustration among computer users occurs when there is a fatal hardware flaw in a computer system that necessitates reinstallation of the entire operating system and reinstallation of non-base applications on that operating system. Few systems have the capability to customize the reinstallation of backup or archival images onto a computer system. However, the current strategy of reinstallation of archive images does not take into account the most frequently utilized applications that a user would need installed the soonest upon reinstalling applications on a new computer. For example, while reinstallation of foreign language fonts occurs, such activity on a new computer may prevent a user from using the system to perform other tasks that are of a more urgent need to the user. Therefore, a need exists for efficient reinstallation of computer software based on frequency of utilization for each software application loaded onto a computer. 
     SUMMARY OF THE INVENTION 
     It is therefore one object of the present invention to provide an improved method and system for efficiently reinstalling computer software, which tracks frequency of utilization for each software application loaded onto the computer and reinstalls applications based on frequency of utilization. 
     The foregoing objects are achieved as now described: a system and method are disclosed for efficiently reinstalling computer software, which tracks frequency of utilization for each software application loaded onto the computer and reinstalls software applications based on frequency of utilization, with the option to reinstall a computer operating system first before reinstalling computer applications and libraries. 
     At the time of setting up a reinstallation system according to a user&#39;s needs, a user can adjust the priority of reinstallation onto a new computer based on frequency of utilization of computer applications. The user can also adjust the priority of reinstallation onto a new computer based on frequency of utilization of computer libraries. The user can further adjust the priority of reinstallation onto a new computer based on frequency of utilization of computer applications while deferring to reinstallation of the computer operating system before reinstallation of any applications or libraries. 
     The system for efficient reinstallation of computer software comprises a computer, an operating system, a tracking program which reports a frequency of utilization for each software application loaded onto the computer, and means for reinstalling applications based on said frequency of utilization. After the tracking program is installed onto a running computer system, a user can configure the analysis program to track daily usage of applications and libraries on the computer. At a set time, either daily or weekly for example, these statistics are uploaded (along with any updated application specific configuration files) to a backup or archival server. When the user requires a system reinstallation, the user proceeds with a basic installation of an operating system, after which the network restoration program consults the usage statistics file compiled by the tracking program. Thereafter, a priority installation plan is formulated wherein application and requisite libraries are installed first, and then applications and libraries used least often are then installed in the background or during “offline hours.” Within many larger applications, various sub-portions of the application could be broken down and installed asynchronously, wherein the databases that the user uses the most are installed first, and then the rarely used databases are installed at lower priority times. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram of a computer that may contain an operating system, libraries, and software applications; 
         FIG. 2  is a pictorial representation of a graphical user interface showing how a computer may track frequency of utilization of computer applications loaded onto its system, according to one embodiment of the invention; and 
         FIG. 3  is a logic flow chart of the process of efficiently reinstalling computer software wherein the user may choose to prioritize the reinstallation of a computer operating system above reinstallation of computer applications. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The illustrative embodiments contained herein provide a method, system, and program product for efficiently reinstalling computer software, which tracks frequency of utilization for each software application loaded onto the computer and reinstalls applications based on frequency of utilization. 
     In the following detailed description of exemplary embodiments of the invention, specific exemplary embodiments in which the invention may be practiced are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, architectural, programmatic, mechanical, electrical and other changes may be made without departing from the spirit or scope of the present invention. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims. Within the descriptions of the figures, the specific numerals assigned to the elements are provided solely to aid in the description and are not meant to imply any limitations (structural or functional) on the invention. 
     It is understood that the use of specific component, device and/or parameter names are for example only and are not meant to imply any limitations on the invention. The invention may thus be implemented with different nomenclature/terminology utilized to describe the components/devices/parameters herein, without limitation. Each term utilized herein is to be given its broadest interpretation given the context in which that terms is utilized. 
     With reference now to the figures, and in particular to  FIG. 1 , there is illustrated a computer  110  associated with an operating system  112 , libraries  114 , and software applications  116 . The computer  110  may be associated with other components not appearing in this embodiment. In one embodiment, computer  110  may be a laptop computer. In another embodiment, computer  110  may be a PDA or any other device used to run software applications. 
     Referring now to  FIG. 2 , there is depicted a pictorial representation of a graphical interface showing how a computer may track frequency of utilization of computer applications loaded onto its system, according to one embodiment of the invention. In this graphical user interface, there is illustrated a list  210  of software applications or libraries running on a computer. There is also depicted a column that tracks utilization  212  for each corresponding software application or library. The list of software applications or libraries may be sorted according to image name, memory usage, CPU, or utilization. This list is used to track frequency of utilization of computer applications loaded onto a computer system. 
     With reference now to  FIG. 3 , there is depicted a logic flow chart of the process of efficiently reinstalling computer software wherein the user may choose to prioritize the reinstallation of a computer operating system above reinstallation of computer applications. The process comprises the steps of: reinstalling a computer system, reinstalling an operating system, and reinstalling software applications based upon their utilization. The process begins with step  310 , which depicts the process moving forward to step  312 , which illustrates the decision to reinstall a computer system. This decision may be brought about by an internal crash or other system failure that may require reinstallation of all software applications and libraries. If the computer system needs to be reinstalled, the process continues to step  314 , which depicts reinstallation of the computer operating system. The reinstallation of the operating system should occur before reinstallation of software applications and libraries so that the computer may function properly after system failure. This reinstallation of the operating system may occur such that only mandatory portions of the operating system are installed before moving onto the next step, in order to save time and prioritize reinstallation of all applications on a new system. Non-mandatory portions of the operating system can be reinstalled after prioritized applications. After the computer operating system or mandatory portions thereof are reinstalled, the process proceeds to step  316 , which illustrates reinstallation of software applications based on utilization. The utilization of software applications is tracked in a program that runs on a functioning computer, and the program is accessed upon the need for reinstallation of computer applications following a system failure. If there is no need to reinstall the computer system, or after the reinstallation of software applications based upon utilization, the process ends, as depicted at step  318 . 
     In the flow charts above, one or more of the methods are embodied in a computer readable medium containing computer readable code such that a series of steps are performed when the computer readable code is executed on a computing device. In some implementations, certain steps of the methods are combined, performed simultaneously or in a different order, or perhaps omitted, without deviating from the spirit and scope of the invention. Thus, while the method steps are described and illustrated in a particular sequence, use of a specific sequence of steps is not meant to imply any limitations on the invention. Changes may be made with regards to the sequence of steps without departing from the spirit or scope of the present invention. Use of a particular sequence is therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims. 
     As will be further appreciated, the processes in embodiments of the present invention may be implemented using any combination of software, firmware or hardware. As a preparatory step to practicing the invention in software, the programming code (whether software or firmware) will typically be stored in one or more machine readable storage mediums such as fixed (hard) drives, diskettes, optical disks, magnetic tape, semiconductor memories such as ROMs, PROMs, etc., thereby making an article of manufacture in accordance with the invention. The article of manufacture containing the programming code is used by either executing the code directly from the storage device, by copying the code from the storage device into another storage device such as a hard disk, RAM, etc., or by transmitting the code for remote execution using transmission type media such as digital and analog communication links. The methods of the invention may be practiced by combining one or more machine-readable storage devices containing the code according to the present invention with appropriate processing hardware to execute the code contained therein. An apparatus for practicing the invention could be one or more processing devices and storage systems containing or having network access to program(s) coded in accordance with the invention. 
     Thus, it is important that while an illustrative embodiment of the present invention is described in the context of a fully functional computer (server) system with installed (or executed) software, those skilled in the art will appreciate that the software aspects of an illustrative embodiment of the present invention are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the present invention applies equally regardless of the particular type of media used to actually carry out the distribution. By way of example, a non-exclusive list of types of media, includes recordable type (tangible) media such as floppy disks, thumb drives, hard disk drives, CD ROMs, DVDs, and transmission type media such as digital and analogue communication links. 
     While the invention has been described with reference to exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular system, device or component thereof to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiments disclosed for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another.