|
|
|
| United States Patent | 5495610 |
| Link to this page | http://www.wikipatents.com/5495610.html |
| Inventor(s) | Shing; Norman (New Hyde Park, NY);
Erlikh; Leonid (Brooklyn, NY);
Lim; Nicholas R. (London, GB2);
Lambert; Jeffrey L. (East Brunswick, NJ);
Moskowitz; Joel M. (New York, NY);
Wadhwa; Vivek K. (Paramus, NJ);
Hughes; James (Hartsdale, NY);
Power; Elaine C. (New York, NY) |
| Abstract | A method for creating and electronically distributing a new release of a
software program in a computer system having a number of processors is
disclosed. One of the software programs is modified. An impact analysis is
performed to identify modules to be modified as a result of the
modification. A new release of the software program is built by modifying
the identified modules. Typically, the new release is built in one or more
repositories. The new release is stored in a central storage device. It is
determined which processors require a copy of the new release, and the new
release is electronically down-loaded from the central storage device to
each processor. A down-load complete message is issued at each processor
upon completion of the download. An install order is transmitted to each
of the processors to which the new release was down-loaded. The new
release is installed at each of these processors. The new release can be
installed concurrently at each processor. The previous version can be
reinstalled if, for example, errors or problems occur. |
|
|
|
Title Information  |
|
|
|
|
|
Drawing from US Patent 5495610 |
|
|
Software distribution system to build and distribute a software release |
|
|
|
|
|
| Publication Date |
February 27, 1996 |
|
|
|
|
|
| Filing Date |
July 13, 1995 |
|
|
|
|
|
|
|
|
|
|
|
| Parent Case |
This application is a continuation of application Ser. No. 08/371,655,
filed Jan. 11, 1995 now abandoned, which is a continuation of application
Ser. No. 07/684,966, filed as PCT/US 90/07011, Nov. 30, 1990, now
abandoned, which is a continuation-in-part of application Ser. No.
444,102, filed Nov. 30, 1989, now abandoned. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
| Add a new US reference: |
| | Reference | Relevancy | Comments | Reference | Relevancy | Comments | 5307354 Cramer 714/4 Apr,1994 |      Your vote accepted [0 after 0 votes] | | 5301270 Steinberg 715/866 Apr,1994 |      Your vote accepted [0 after 0 votes] | | 5295222 Wadhwa
Mar,1994 |      Your vote accepted [0 after 0 votes] | | 5287488 Sakata 703/22 Feb,1994 |      Your vote accepted [0 after 0 votes] | | 5249270 Stewart 709/222 Sep,1993 |      Your vote accepted [0 after 0 votes] | | 5204812 Kasiraj 707/9 Apr,1993 |      Your vote accepted [0 after 0 votes] | | 5202996 Sugino 717/107 Apr,1993 |      Your vote accepted [0 after 0 votes] | | 5155847 Kirouac 709/221 Oct,1992 |      Your vote accepted [0 after 0 votes] | | 5109486 Seymour 709/224 Apr,1992 |      Your vote accepted [0 after 0 votes] | | 5084813 Ono
Jan,1992 |      Your vote accepted [0 after 0 votes] | | 5008814 Mathur
Apr,1991 |      Your vote accepted [0 after 0 votes] | | 5005122 Griffin 709/203 Apr,1991 |      Your vote accepted [0 after 0 votes] | | 5005119 Rumbaugh 718/101 Apr,1991 |      Your vote accepted [0 after 0 votes] | | 4999806 Chernow 717/177 Mar,1991 |      Your vote accepted [0 after 0 votes] | | 4939689 Davis 707/102 Jul,1990 |      Your vote accepted [0 after 0 votes] | | 4930071 Tou 707/4 May,1990 |      Your vote accepted [0 after 0 votes] | | 4894771 Kunii 707/4 Jan,1990 |      Your vote accepted [0 after 0 votes] | | 4893232 Shimaoka 707/1 Jan,1990 |      Your vote accepted [0 after 0 votes] | | 4888690 Huber 707/4 Dec,1989 |      Your vote accepted [0 after 0 votes] | | 4866638 Cosentino 715/763 Sep,1989 |      Your vote accepted [0 after 0 votes] | | 4864569 DeLucia 714/38 Sep,1989 |      Your vote accepted [0 after 0 votes] | | 4862345 Lekron 700/83 Aug,1989 |      Your vote accepted [0 after 0 votes] | | 4833604 Cheng 707/200 May,1989 |      Your vote accepted [0 after 0 votes] | | 4809170 Leblang 717/122 Feb,1989 |      Your vote accepted [0 after 0 votes] | | 4788637 Tamaru 709/221 Nov,1988 |      Your vote accepted [0 after 0 votes] | | 4751635 Kret 707/10 Jun,1988 |      Your vote accepted [0 after 0 votes] | | 4734854 Afshar 717/107 Mar,1988 |      Your vote accepted [0 after 0 votes] | | 4714992 Gladney 707/206 Dec,1987 |      Your vote accepted [0 after 0 votes] | | 4658093 Hellman 705/52 Apr,1987 |      Your vote accepted [0 after 0 votes] | | 4635189 Kendall 707/10 Jan,1987 |      Your vote accepted [0 after 0 votes] | | 4558413 Schmidt 707/203 Dec,1985 |      Your vote accepted [0 after 0 votes] | | 4479196 Ferrer 707/100 Oct,1984 |      Your vote accepted [0 after 0 votes] | | 4455619 Masui 345/530 Jun,1984 |      Your vote accepted [0 after 0 votes] | | 4956773 Saito 717/104 Dec,1969 |      Your vote accepted [0 after 0 votes] | | |
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
We claim:
1. A method to create and electronically distribute a new release of a
software program in a computer system comprising a plurality of
processors, a plurality of software programs and a central storage device,
at least one of the plurality of processors storing and executing one of
the plurality of software programs, each one of the plurality of software
programs comprising a plurality of modules, the method comprising the
steps of:
modifying, in at least one repository, one of the plurality of software
programs;
performing an impact analysis to identify all modules to be modified as a
result of the modification to the one of the plurality of software
programs;
building, in the at least one repository, a new release of the one of the
plurality of software programs by modifying all modules identified in the
previous step;
storing the new release in the central storage device;
determining which of the plurality of processors require a copy of the new
release;
electronically down-loading the new release from the central storage device
to the plurality of processors which require a copy of the new release as
determined in the previous step;
issuing a down-load complete message at each of the plurality of processors
to which the new release was electronically down-loaded upon completion of
the down-load at each of said processors;
transmitting an install order to each of the plurality of processors to
which the new release was electronically down-loaded; and
installing the new release at each of the plurality of processors to which
the new release was electronically down-loaded.
2. The method of claim 1 wherein the step of installing the new release
occurs concurrently at each of the plurality of processors to which the
new release was electronically down-loaded.
3. The method of claim 1 wherein the step of transmitting an install order
takes place only when each one of the plurality of processors to which the
new release was down-loaded has issued a down-load complete message.
4. The method of claim 1 wherein the at least one repository includes a
development repository and a staging repository, the modifying step being
performed in the development repository and the building step being
performed in the staging repository.
5. A method to build and electronically distribute a release of a software
program in a computer system comprising a plurality of workstations, at
least one of the plurality of workstations storing and executing the
software program, the software program comprising a plurality of modules,
the method comprising the steps of:
identifying modules that require modification;
building a release of the software program by modifying the modules
identified in the previous step;
uploading the modules modified in the previous step to a central warehouse;
determining which of the plurality of workstations are using the software
program;
issuing a down-load order to each of the plurality of workstations that are
using the software program;
storing the down-load order at each of the plurality of workstations that
are using the software program;
processing the down-load order at each of the plurality of workstation that
are using the software program such that said workstations request each
modified module from the central warehouse;
down-loading each modified module from the central warehouse to a local
warehouse at each of the plurality of workstations that are using the
software program when requested by each said workstation;
issuing a completion status message at each said workstation upon
completion of the down-load step at each said workstation;
issuing an install order to each workstation that received each modified
module;
at each workstations saving a previous version of each module to be
modified;
installing each modified module at each workstation that received the
install order by transferring each modified module from the local
warehouse to the respective workstation for processing.
6. The method of claim 5 further comprising the step of restoring the
previous version of each module that was modified.
7. The method of claim 6 wherein the step of saving a previous version of
each module to be modified further comprises saving a previous version of
each module to be modified in compressed form at the local warehouse of
each workstation.
8. The method of claim 7 wherein the step of restoring the previous Version
of each module that was modified further comprises the step of installing
the previous version of each modified module at each workstation by
transferring the previous version of each modified module from the local
warehouse to the workstation for processing.
9. The method of claim 5 wherein the down-load order includes a list of
modules that were identified in the identifying step as requiring
modification.
10. The method of claim 5 wherein the step of uploading the modules
modified further comprises the step of storing the modified modules in the
central warehouse without over-writing previously released versions of the
modules.
11. The method of claim 5 wherein the step of downloading each modified
module from the central warehouse further comprises saving each modified
module in a compressed file at the local warehouse of each workstation.
12. The method of claim 5 wherein the step of downloading each modified
module from the central warehouse is performed by a file transfer process.
13. The method of claim 5 wherein the step of identifying modules that
require modification further comprises the step of performing an impact
analysis.
14. The method of claim 5 wherein the step of building a release of the
software program further comprises storing modules that comprise the
release in a staging repository.
15. The method of claim 5 wherein the computer system further comprises a
plurality of software programs.
16. The method of claim 5 wherein each modified module is installed
simultaneously at each of said workstations.
17. A method to build and electronically distribute a release of a software
program in a computer system comprising a plurality of workstations, at
least one of the plurality of workstations storing and executing the
software program, the software program comprising a plurality of modules,
the-method comprising the steps of:
identifying modules that require modification;
building a release of the software program by modifying the modules
identified in the previous step;
uploading the modules modified in the previous step to a warehouse;
determining which of the plurality of workstations are using the software
program;
issuing a down-load order to each of the plurality of workstations that are
using the software program;
transferring, when requested by each of the plurality of workstations that
are using the software program, each modified module from the warehouse to
a local warehouse at each of said workstations;
issuing an install order to each workstation that received each modified
module; and
installing each modified module at each workstation that received the
install order by transferring each modified module from the local
warehouse to the workstation for processing.
18. The method of claim 17 wherein the down-load order includes a list of
modules that were identified in the identifying step as requiring
modification.
19. The method of claim 17 wherein the step of uploading the modules
modified further comprises the step of storing the modified modules in the
warehouse without over-writing previously released versions of the
modules.
20. The method of claim 17 wherein the step of identifying modules that
require modification further comprises the step of performing an impact
analysis.
21. The method of claim 17 wherein the computer system further comprises a
plurality of software programs.
22. The method of claim 17 wherein each modified module is installed
simultaneously at each workstation to which the modified modules were
transferred. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
This invention relates to multiprocessor computer systems and in particular
to the distribution of updated versions of software to particular
processors within such systems.
BACKGROUND OF THE INVENTION
Traditionally, there have been two basic hardware configurations employed
in the design of computer systems for multiple users. The first of these
configurations includes a central processing unit, sometimes referred to
as a "mainframe," connected to a plurality of user input/output terminals.
Each user input/output terminal is typically comprised of a keyboard for
data entry and a cathode-ray tube or printer for data display.
The other of these two basic hardware configurations is comprised of a
number of individual processor units or "nodes", one for each user or
small group of users, connected in a network. The network, which can serve
to connect nodes separated by large geographic distances, allows the
sharing of software and data among users. Each node in the system may be
connected to one or more input/output terminals. In networks such as this,
there may also be an additional node or nodes not dedicated to a
particular user which may control one or more centralized databases for
storing and retrieving data and software for the various users whose nodes
are connected to the network. Furthermore, an additional node may be used
by computer system overseers or "operator" personnel who monitor and
control the operation of the network. Typically, such additional nodes
also have input/output terminals connected to them. This "networked"
system of multiple nodes has gained wide acceptance today.
The acceptance of the multinode networked system is generally based upon
the proliferation of "micro" or "personal" computers in the business and
technical fields. These computers provide each user of a multinode system
with dedicated computer power necessary to perform his business or
technical functions. With a micro-computer node dedicated to his use, a
user can perform his business or technical tasks more efficiently and
easily. In addition to dedicated micro-computers, such systems often
include mainframes for, among other things, database-related processing,
and mini- or super-mini-computers to perform real-time processing.
The software employed in computer systems, whether of the first or second
type hardware configuration described above, can generally be classified
into one of two main categories. First, there is the so-called "operating
systems software." Operating systems software is concerned with
controlling the basic operation of a computer processor and/or system for
input/output tasks, as well as memory-access tasks. In addition, operating
systems software controls the execution of other computer programs. These
other computer programs comprise the other main category of software,
termed "applications software." Applications software typically performs a
specialized technical or business-related function with which a user is
concerned.
Software, whether of the operating systems or application variety, is often
comprised of many interrelated constituent computer programs. Constituent
programs generally form a "software hierarchy" with "executive" programs
controlling or directing the operation of "subordinate" programs within
the hierarchy. The range of hierarchical structures for software is almost
limitless. For example, there can be one or more "executive" programs,
each controlling the execution of (or "calling") one or more subordinate
programs. These subordinate programs or "subroutines" can call subordinate
programs of their own, and so on. There may be many levels of subordinated
constituent programs in a hierarchy. Generally, the lower the level of a
program in a hierarchy, the more elemental its task or function. Those
programs which call one or more subordinate programs generally perform
more complex tasks which are, in effect, amalgams of more elemental tasks
performed by called subordinate programs. With applications software,
there is often more than one hierarchy of programs associated with the
application.
Applications software can be thought of as accomplishing a business or
technical "function." A function, in turn, is comprised of one or more
"processes." It is a "process" which is comprised of one or more
hierarchies of programs. Because a program hierarchy is generally
responsible for performing a certain task, a process can therefore be
viewed as a logical subdivision of a business or technical function.
In the multinode computer system context, an application may be executed on
more than one node. When constituent processes of an application execute
in a parallel fashion on separate nodes in the system (i.e., simultaneous
execution of parts of the application on multiple nodes), the application
is said to be processed in a "distributed" fashion. When processes of an
application execute in a serial fashion on separate nodes in the system
(i.e., execution such that a given node is the only node in the system
executing an application | | |