WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Software distribution system to build and distribute a software release    
United States Patent5495610   
Link to this pagehttp://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)
AbstractA 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 Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5495610
Software distribution system to build and distribute a software release - US Patent 5495610 Drawing
Software distribution system to build and distribute a software release
Inventor     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)
Owner/Assignee     Seer Technologies, Inc. (New York, NY)
Patent assignment
All assignments
Publication Date     February 27, 1996
Application Number     08/502,201
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     July 13, 1995
US Classification     709/221 709/220 710/19 710/21 714/18
Int'l Classification     G06F 013/00 G06F 015/00 G06F 003/00
Examiner     Black; Thomas G.
Assistant Examiner     Homere; Jean R.
Attorney/Law Firm     Kenyon & Kenyon
Address
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.
Priority Data    
USPTO Field of Search     395/600 395/200.08 395/839 395/841 395/182.16 395/650 364/DIG. 1
Patent Tags     software distribution build distribute software release
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5307354
Cramer
714/4
Apr,1994

[0 after 0 votes]
5301270
Steinberg
715/866
Apr,1994

[0 after 0 votes]
5295222
Wadhwa

Mar,1994

[0 after 0 votes]
5287488
Sakata
703/22
Feb,1994

[0 after 0 votes]
5249270
Stewart
709/222
Sep,1993

[0 after 0 votes]
5204812
Kasiraj
707/9
Apr,1993

[0 after 0 votes]
5202996
Sugino
717/107
Apr,1993

[0 after 0 votes]
5155847
Kirouac
709/221
Oct,1992

[0 after 0 votes]
5109486
Seymour
709/224
Apr,1992

[0 after 0 votes]
5084813
Ono

Jan,1992

[0 after 0 votes]
5008814
Mathur

Apr,1991

[0 after 0 votes]
5005122
Griffin
709/203
Apr,1991

[0 after 0 votes]
5005119
Rumbaugh
718/101
Apr,1991

[0 after 0 votes]
4999806
Chernow
717/177
Mar,1991

[0 after 0 votes]
4939689
Davis
707/102
Jul,1990

[0 after 0 votes]
4930071
Tou
707/4
May,1990

[0 after 0 votes]
4894771
Kunii
707/4
Jan,1990

[0 after 0 votes]
4893232
Shimaoka
707/1
Jan,1990

[0 after 0 votes]
4888690
Huber
707/4
Dec,1989

[0 after 0 votes]
4866638
Cosentino
715/763
Sep,1989

[0 after 0 votes]
4864569
DeLucia
714/38
Sep,1989

[0 after 0 votes]
4862345
Lekron
700/83
Aug,1989

[0 after 0 votes]
4833604
Cheng
707/200
May,1989

[0 after 0 votes]
4809170
Leblang
717/122
Feb,1989

[0 after 0 votes]
4788637
Tamaru
709/221
Nov,1988

[0 after 0 votes]
4751635
Kret
707/10
Jun,1988

[0 after 0 votes]
4734854
Afshar
717/107
Mar,1988

[0 after 0 votes]
4714992
Gladney
707/206
Dec,1987

[0 after 0 votes]
4658093
Hellman
705/52
Apr,1987

[0 after 0 votes]
4635189
Kendall
707/10
Jan,1987

[0 after 0 votes]
4558413
Schmidt
707/203
Dec,1985

[0 after 0 votes]
4479196
Ferrer
707/100
Oct,1984

[0 after 0 votes]
4455619
Masui
345/530
Jun,1984

[0 after 0 votes]
4956773
Saito
717/104
Dec,1969

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


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.
 Description Submit all comments and votes
 


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