This invention relates generally to the field of computer software. More particularly, this invention relates to computerized method for analyzing a computer system relative to a set of requirements for an application program.
For proper installation and operation of application software on a computer, it is necessary for the computer to satisfy a set of requirements that may be specific to that application program. These requirements may be checked manually at any time or checked by the installation process when the software is installed on the computer.
The manual process is time consuming and error prone. It is normally only done before installation of the application software or when operation of the software fails. The manual process may involve running a number of programs and comparing the output against documented requirements. This creates problems in two areas. Firstly, the user performing the manual check must understand the meaning of the output and, secondly, the documentation is fixed in time and may not reflect the latest requirements.
Installation software for a specific application may test for critical requirements, such as disk space, memory capabilities, previous versions of the software, etc. However, it is unusual for the installation software to perform a thorough examination of the environment to determine the successful operation of the software. This is due to the amount of programming required and the execution time that would be added to the installation program. Each time a piece of application software is developed for publishing, new code must be written to evaluate the environment.
The problem is still greater in a network of computers. For example, applications implemented on an enterprise network may span a number of computers. Currently, each affected computer in the network must be checked manually to see if it will comply with the requirements of the new application software. This consumes significant time and resources each time a new application is to be implemented.
One approach to the problem is the use of asset management systems, which attempt to keep track of the computers in the network. However, this information is often inaccurate, or incomplete. Further, the information in an asset management system must still be checked against the published requirements manually.
Another approach is the use of application specific software that assesses the readiness of a computer system prior to the installation of a specific piece of software. This approach has been used prior to installation of specific operating systems.
While this invention is susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail one or more specific embodiments, with the understanding that the present disclosure is to be considered as exemplary of the principles of the invention and not intended to limit the invention to the specific embodiments shown and described. In the description below, like reference numerals are used to describe the same, similar or corresponding parts in the several views of the drawings.
The invention relates to a computerized method and associated software for analyzing a computer system relative to a set of requirements for an application program. In one embodiment, a list of the requirements for the application program is stored in a computer file. A computer is then operated to determine the capabilities of the computer system and perform a comparison between the capabilities of the computer system and the application program's requirements. The results of the comparison are then reported. The computer file containing the list of the requirements for the application program may be generated by the producer of the application program. A software tool including a user interface may be used by the publisher to generate the computer file.
At block 108 the requirements file is distributed to the user. The user may be provided with the requirements file prior to procuring the application software. This allows the user to determine if the application software will operate on his or her computer system before the software is purchased. This benefits the publisher in that it reduces the number of software returns. It also benefits the user, since the user can avoid the inconvenience of returning software and obtaining refunds for software that does not operate correctly on the user's computer. Alternatively, the application software may be distributed at the same time as the requirements file. The process terminates at termination block 110.
At block 210, the discovered capabilities are analyzed by comparing them to requirements listed in the requirements file. At block 212 a report is generated describing results of the analysis. This report allows the user to determine if the selected application will operate correctly on his or her computer system. The process ends at termination block 214.
The process 200 may be performed by the user prior to or after installation of an application. It may also be performed at programmed intervals after an application has been installed. This allows a computer system to be monitored to discover if a required resource becomes unavailable.
Software updates to an installed application may be distributed with updated requirements files.
Requirements files may be updated at any time if, for example, the original requirements are found to be in error.
The report may be copied to the publisher to assist in technical support of the published application software.
In one embodiment, the process 200 is performed by a single computer program. In a further embodiment, the processes 208 and 210 are performed by a separate computer programs that may be executed on different computers.
The requirements file 306 and the associated application software 308 may be packaged together as a published software bundle 310 for distribution, or they may be distributed separately. A copy 306′ of the requirements is distributed (as indicated by arrow 312) to a target computer 314 of one or more users. A copy 308′ of the application software may be distributed to the user at the same time in a copy 310′ of the published software bundle, or may be distributed at a later time.
The user may determine if his or her computer system is capable of running the application software by using generic software analysis tools 316. Each tool comprises a set of programming instructions. The generic software analysis tools 316 include a file reading and interpreting tool 318 for reading and interpreting the requirements file, a capabilities discovery tool 320 that discovers the resources and capabilities available on the user's computer system. The generic software analysis tools 316 also include a capabilities/requirements analysis tool 322 that is used to compare the discovered capabilities of the user's computer system to the application software requirements listed in the requirements file 306′. The generic software analysis tools 316 also include a reporting tool 324 that is used to generate a report 326 for the user. The report 326 contains the results of the analysis and allows the user to determine if the software application 308′ will operate correctly on the user's computer system. The generic software analysis tools 316 may be run before installation of the application software 308′ or after installation.
It will be apparent to those of ordinary skill in the art that the published software bundle 310 may be distributed to multiple users.
It will also be apparent to those of ordinary skill in the art that the generic software analysis tools 316 may be used to analyze multiple pieces of application software. Thus, the publisher is freed from the task of producing system capability analysis software for each new application.
The generic software analysis tools 316 also include a reporting tool 324 that is used to generate a report 326 for the user. The report 326 may contain any anomalies to enable the user to determine if the software application 308′ will operate correctly on the user's computer system and to make decisions about the time and resources needed to prepare for an application.
The analysis uses information from the requirement file 306′ and identifies any systems in the network that do not meet the requirements. In one embodiment, the description of the required software, hardware and configuration comprises a list of attribute tags and associated values. The file may be written in accordance with an industry-standard protocol such as the Standard Generalized Markup Language (SGML) administered by the International Organization for Standardization (ISO) or the eXtensible Markup Language (XML) protocol administered by the World Wide Web Consortium.
An example of an XML requirements file is listed below.
This example is for an application named “Network Node Manager” and contains requirements or prerequisites for running the application under the HP-UX™ operating system of Hewlett Packard Corporation and the WINDOWS 2000™ operating system of Microsoft Corporation. Hardware, software and conflict avoidance requirements are specified for each operating system. Other tags may be used as required.
In prior approaches, each affected computer in the network must be checked manually to see if it will comply with the requirements of the new application software. This consumes significant time and resources each time a new application is to be implemented. The automated process described above avoids the need for a manual process, and thereby reduces the chance of human error.
Those skilled in the art will appreciate that the program steps and associated data used to implement the embodiments described above can be implemented using disc storage as well as other forms of storage, such as, for example, Read Only Memory (ROM) devices, Random Access Memory (RAM) devices, optical storage elements, magnetic storage elements, magneto-optical storage elements, flash memory, core memory and/or other equivalent storage technologies without departing from the present invention. Such alternative storage devices should be considered equivalents.
The present invention, as described in embodiments herein, is implemented using a programmed processor executing programming instructions that are broadly described above in flow chart form that can be stored on any suitable electronic storage medium. However, those skilled in the art will appreciate that the processes described above can be implemented in any number of variations and in many suitable programming languages without departing from the present invention. For example, the order of certain operations carried out can often be varied, additional operations can be added or operations can be deleted without departing from the invention. Error trapping can be added and/or enhanced and variations can be made in user interface and information presentation without departing from the present invention. Such variations are contemplated and considered equivalent.
While the invention has been described in conjunction with specific embodiments, it is evident that many alternatives, modifications, permutations and variations will become apparent to those of ordinary skill in the art in light of the foregoing description. Accordingly, it is intended that the present invention embrace all such alternatives, modifications and variations as fall within the scope of the appended claims.