I
SYSTEM AND METHOD FOR MANAGING SYSTEM CONFIGURATION ACROSS A NETWORK
Related Application
This applicationisacontinuation-in-part claiming thebenefitof U.S.
Patent Application Serial
Number
08/814,771, filedon March
7,1997
andtobe issuedas U.S. PatentNo. 6,074,434,which
is itselfacontinuation-in-partof
U.S. PatentApplication Serial
Number
08/659,841, filed on June 7, 1996, and issued asU.S. PatentNo.
5,752,042.FieldoftheInvention
The
present inventionrelates generallytocomputer
systems and,more
specifically, to systemconfiguration
management
forapluralityof
computers connected via anetwork.Background
oftheInventionThe
useof
theclient-server distributedcomputing model
in localarea networks and enterprise-wide systems hasbecome
ubiquitousinbusiness, academic, and personalcomputing
environments.With
increasingfrequency, fixed function display terminals havebeen replacedby
desktop andlaptop computerscapable ofexecuting software programs independently and asynchronouslyfrom
thecentralizedmainframe
or enterprise serverprocessor.As
thenumber
of desktop and laptop computers inalocal(or enterprise- wide)network
increases, the complexityofmaintaining the software configuration ineach
computer
increases. Softwaredevelopers frequently distributeupdatedversions or releases oftheirsoftware products, referredto as"updates" in this document,tocorrect software errors or toenhance
functionality, compatibility, andportability.Of
course, software developers also distributenew
softwareproducts designed to improveperformance, typicallywith anincrease inthecomplexity ofinstalling and configuring such
new
software products.END9-1997-0019-US2
Thereare various
known
techniquesfora servertoprovide aclientwitha code updateora userwithnew
data. Inone
technique, clients registerwiththe server for updatesto aparticularprogram
and users registerwith the serverforupdatesornew
data.Whenever
the serverobtains anew
update for thatprogram
ornew
dataofthe specified type, the serverautomatically sendsthe code update ornew
dataofthe specifiedtypeto every client/useron
the list. Unfortunately,some
usersmay
notwishtoobtain aparticularupdateor particular
new
dataofthe specified typebecauseofcost,download
time, or otherreason. Alternately, ausercanperiodically requestall
code
updatesornew
dataofspecifiedtypes
and
the server will respondaccordingly. Unfortunatelyagain, the usermay
notneed everycode
updateor dataofthe specified typebut, nevertheless, endures the costanddownload
time. Ingeneral, because ofthelargenumber
and complexity ofsoftware applicationson
auser's system, andthelargenumber
and complexity ofthecorrespondingupdatesfor that system, itisvery difficultforuserstoknow what
updates areappropriateforthem. Likewise, there issomuch new
data generated everydaythat itis difficulttoknow what new
datais appropriatefor particular users.'Thus,
network
operatorshave beenfacedwiththechallenge ofbalancing theirdesire toprovidetheir clients with themost
currentsoftwareupdatesandproducts against theirrequirementof
minimizing disruptionstothe clients. Softwareconfigurationmanagement
tools havebeen
developed to assistnetworkoperators inthis endeavor.U.S. Patent
No.
5,752,042 issuedtoCole etal. disclosesa servercomputer
and amethod
performedby
a servercomputer
for selectingcodeupdatestodownload
to aclientcomputer.The
server computeridentifiescode updateswhich
areconsistentwith basic systemcharacteristicsof
the clientcomputer. Then, the servercomputer
sendsto the clienta "recognizer"program which
executes inthe clientcomputerto determineif the clientcomputerhas a version of codethatis not current.The
servermay
thengenerate a list,ofcode updates based
upon
theresultofexecutingthe recognizerprogram.A
userattheclientcomputer
endcan selectfromthelist.Based on
the selectionsmade
bytheuser, the servercomputer
sends addressesofthe selected code updatesto the client computer.The
clientcomputer may
thendownload
the selectedupdatesfrom
aserver computer.END9-1
997-0019-US2 -2-
U.S. Patent
No.
5,581,764issuedto Fitzgerald etal. disclosesan automatedmethod
ofmanaging
changes in a distributedcomputing
environment.The
resourceneedsof
individual distributedcomputers are determined basedupon
aShouldHave (SH)
listschema.The SH
listschema
isused toproduceSH
listsforindividual distributed computers. Individual AlreadyHave (AH)
listsmay
bestored orproduced at configuration timefor individual distributedcomputers.A
differencing processisusedto locate differencesbetween SH
lists andAH
lists.The
differencesbetween SH
listsandAH
lists forthe individual distributedcomputers areusedto determinewhat
itemsmust
be updated ormodified inordertoupdateindividualdesktops.Inpriorartconfiguration
management
systems, information describing the software configurationattributesof
eachclientprocessorwas
provided toacentral server processor.The
centralserverprocessorwould
determinewhich
updates andnew
productstoprovide toeachclient, basedonthe software configuration of eachclient.
There remains a need,therefore, for a
more
flexibleand robustsoftware and hardware configurationmanagement
system.Summary
oftheInventionTo meet
thisand
otherneeds, and inview
ofits purposes, thepresent invention provides asystemand method
fordetermining whetherto provide a softwareprogram
updatetoaclientprocessor.A
configuration receivingmechanism
receivesand storesasetof hardware, software, or bothhardware and software(or"system")configuration attributes
from
theclientprocessor.The
systemconfigurationattributes indicatewhetheracopy
ofaclient softwareprogram may
be storedintheclient processor.A
configuration transmittingmechanism
transmits the set ofsystemconfiguration attributestoa serverprocessor.
An
update-receivingmechanism
receives an updaterecognizerprogram and
a softwareprogram
updatefrom
theserver processor.The
updaterecognizer program andthe softwareprogram
update are associatedwiththeclient software program.An
update recognizertransmittingmechanism
transmits theupdaterecognizer program to theclient processor.The
client processor executes theupdate recognizerprogram to issue a notification indicatingEND9-1997-0019-US2 -3-
whether
thesoftwareprogram
updateis applicableto thecopy of
the clientsoftwareprogram which may be
storedinthe clientprocessor.Itisto be understoodthatboththe foregoing general descriptionand the followingdetailed description areexemplary, butare notrestrictive, oftheinvention.
BriefDescription ofthe
Drawing
The
inventionis bestunderstoodfrom
thefollowingdetaileddescriptionwhen
read in connection withtheaccompanying
drawing. Itisemphasized
that,accordingto
common
practice, the various featuresof
the drawingare notto scale.On
the contrary, the dimensions
of
the various features arearbitrarilyexpanded
orreduced for clarity. Included inthedrawing
are thefolloAyingfigures:Fig. 1 illustrates a
computer
networkincludingclients, aselection server,and
a content server;Fig.
2
is a blockdiagram
illustratingmore
detailof
a selection server, content server, and aclient inthenetwork
ofFig. 1;Figs.
3a
and3b form
aflowchartillustratingoperationof
the clientand serverofFig. 2;Fig.
4
isa flow chartillustrating aprogram
sentfrom
the servertothe clientofFig. 2todetermineneedsof
the clientfor a particularcode
update;Fig. 5 is anotherflowchartillustrating a
program
sentfrom
the serverto the clientofFig. 2 to determine needs oftheclientfor anotherparticular codeupdate;Fig. 6 illustratesanother
embodiment
ofacomputer
network;Fig. 7 isa block diagram illustrating
more
detailof
a selection server, contentserver, and aclient inthe network ofFig. 6;END9-1
997-0019-US2 -4-
Figs. 8a
and
8bform
aflowchartillustratingoperationoftheclientand serverofFig. 7;Fig. 9 isaflowchartillustrating a
program
sentfrom
the server to the client ofFig. 7to determine needsof
theclientforaparticularsetofnew
data;5 Fig. 10 isanother flowchartillustrating a
program
sentfrom
the serverto theclientofFig. 7to determine needs oftheclientforanotherparticularsetof new
data;Fig. 1 1 is ablock diagram of an exemplary systemin accordancewiththe presentinvention;
and
Fig. 12is ablock diagram ofthe exemplaryadministration server
shown
10 inFIG. 11.
Detailed DescriptionoftheInvention
Referring
now
tothe figuresin detail, inwhich
likereferencenumbers
indicatelike elementsthroughout, Fig. 1 illustrates a computer
network
generally designated 10 includingclients, aselectionserver, and acontent server.Network
1015 comprises aselectionserver 12witha data base 13, a content server 17, clients 14-16,
and an
Internet20
tointerconnectthe servers andclients.By way
of example, theselectionserver 12comprises a
computer
workstationwithassociatedprogramming
andamodem,
thecontent server 17 comprisesa computerworkstationwithassociatedprogramming and
amodem,
and each oftheclients 14-16 comprises apersonalcomputer
20 withassociated
programming and
amodem. The
Internet20 comprisesacommunication medium
suchastelephonewiresbetween
theclients 14-16, the selection server 12, and thecontent server 17 andprogramming
tomanage
the communications.Communications between
the clients 14-16 andtheselectionserver 12 use hypertexttransportprotocol(HTTP)
and communicationsbetween
the clients 14-16 and25 the contentserver 17usefiletransport protocol(FTP). Althoughnot shown,there are
many
other servers fortheInternet. Selection server 12 is dedicated to automating selectionofcodeupdates, the contentserver 17 includesthe actual code updates (storedEND9-1
997-0019-US2
on
disk21), ancl database 13 includesmeta
dataforthe code updates andFTP
addressing informationto locatethecode
updates in content server 17.The meta
dataprovides descriptive information aboutthe respectivecode updates such asbasic inputoutput system(BIOS)
level, pre-load level, motherboard ID, andthelike.The FTP
addressing informationindicatesthe address oridentificationof
the content serverwhich
storesthe respectivecode update(content server 17 inthe illustrated example), a userID and password
tolog-ontothecontent server, aname
ofthecode
update, alistoffileswhich
comprisethe code updateandthe size, checksum,and
directoryof
eachfile.According
toone
process for storingthe updatesinthecontent server 17 andthemeta
data inthe selection server 12, apersonwritesthecode
updateandmeta
data andloadsthem
inthe content server 17, eithervia the Internetorby manual
loading.The code
updatesremain storedinthe contentserver, but themeta
dataiswrittentothe selection server, eithervia theInternetorby manual
loading.As
illustrated inFig. 2, theselection server 12is anHTTP
serverwith an associated"CGI" program manager
31 and includesan
updateselectionprogram
30.The
client 14 includes an update
manager program 32
(including a graphical userinterfaceor"GUT'), a scout routine 33, a service applicationroutine 34, and a
download
routine39.The
functionsofthe serverandclientprogramming and
atypical client-server sessionfor selectinganddownloading
updatesareillustrated inFigs.3a
and3b.A
userat clientcomputer
14 selects an icon to invoke updatemanager
32. In response, theupdatemanager
contacts the generalmanager
31 in server 12 tobegin a session andsupplies the current level of updatemanager
32, scout33, serviceapplication 34, anddownload
routine 39withinclient 14 (step 104). Inresponse, the generalmanager
31 determinesif the client'supdatemanager
32, scout33, serviceapplication34, anddownload
routine39
arethe latest version(step 106). This determinationis performed
by comparing
the client level information suppliedby
the client 14to the datain selection server 12 forthe latest version oftheclient's updatemanager
32, scout 33, service application 34, anddownload
routine39 storedinthe content server 17.Ifthe client'supdate
manager
32, scout 33, service application 34, anddownload
routine39
arenot the latestversion, the server 12 sends theFTP
addressing informationtotheclient 14to allowthe client to retrievethe latest versionsfrom
aEND9-1
997-0019-US2 -6-
content server 17.
Along
withtheFTP
addressingfortheclientupdate manager, scout, service application, anddownload
routine, the server 12 sendsFTP
addressinginformationtothe client 14 fora basic systeminformation recognizer
program
41 stored in content server 17 (step 107). Next,the client 14downloads
and installsthe latest versionofthe clientupdatemanager
32, scout33, service application34, anddownload
routine
39 from
thecontent server 17iftheFTP
addressingwas
provided (step 108).The
furnishing oftheFTP
addressing informationforthe basicsystem information recognizerprogram
begins the selection process.The
client 14 nextdownloads
the basicsystem
information recognizerprogram
41from
the content server 17and executesit(step 109).The
basic systeminformation recognizerprogram
41 then obtains basicsysteminformation, using scout APIs, aboutclient 14(step 109).The
basic systeminformation comprises system model, pre-load softwarelevel,BIOS
level,and
informationthatis notlikely to change often suchastype ofoperating system.For
example, the basicsystem
informationof
client 14isBIOS
level 123,BIOS
date 1/1/96, andmother
boardID XYZ. The
updatemanager 32
then sends the basicsysteminformation, obtained
by
the basic systeminformation recognizerprogram
41, tothe selectionserver 12 (step 110).This initiatesthe selectionupdate
program
30 (step 112).The
selection updateprogram
30 within server 12 then determineswhich
code updatesareconsistent withthe basic systeminformationof
the clientandwhich code
updates are inconsistent, thereby eliminating the vast majorityof
the code updates storedincontent server 17(and other content servers, ifany)from
furtherconsideration(step 114). In theillustratedembodiment,
this determinationismade
by correlatingthemeta
dataindatabase 13 to thebasic system informationobtainedfrom
client 14.Matches between
themeta
data andthe basicsystem information indicatethatthe correspondingcode
updatesare potentiallyappropriatefor client 14. (Inpractice, themeta
datacanbe
arrangedin a relationaldatabase tofacilitatethecorrelation.)The two columns
ofthe followingtablelist
code
updates available incontent server 17and themeta
dataforthesecodeupdates.The two columns
ofthistable areused for the initial correlationof
the basic system information obtainedfrom
client 14tothe metadata(column 2) storedin selection server12.
END9-1997-0019-US2 -7-
Code Updates Device
DriverABCDE.DRV
Netcomber
2.0Device
DriverFGHU.DRV
Basic
System
Information/MetaData BIOS
Level 123BIOS
date 1/1/96Mother Board ID
XYZ
BIOS
Level 123BIOS
date 1/1/96Mother Board ID
XYZ
BIOS
Level456 BIOS
date2/1/96Mother Board ID
XYZ
Inthis example,the
BIOS
level 123,BIOS
date 1/1/96,and motherboard ID XYZ
basic system information obtained fromclient 14 isconsistentwith adevice driverfilenamed ABCDE.DRV.
andNetcomber
(trademarkof
InternationalBusinessMachines
Corporation) version2.0.Device
driverfilenamed FGHIJ.DRV
requiresBIOS
level456, however, soisinconsistent withthebasicsystem information obtainedfrom
client 14 and iseliminatedfrom
further consideration.For
eachcode
update, suchasdevice driverfilenamed ABCDE.DRV.
andNetcomber program
version2.0,which
isconsistentwiththebasicsystem
informationofclient 14,the selectionupdate
program 30
sendstotheclient 14 theFTP
addressing informationofacorrespondingrecognizerprogram, suchasrecognizerprograms 40 and
42, respectively(step 116).
The FTP
addressing informationisnot provided (andno
recognizerprogram
is fetched)to client 14 for thedevicedriver filenamed FGHIJ.DRV,
however, because fileFGHIJ.DRV
isnot consistentwith the basic systeminformationofclient 14.
From
theFTP
addressing information, the client 14downloads
the actual recognizerprogramsfrom
thecontent server 17 (step 118).Each
recognizerprogram
is executableand small, typically2,000 - 3,000 bytes. Consequently, eachrecognizerprogram
can bedownloaded from
content server17totheclient 14inseconds (whereasthecorresponding code updateis
much
largerandmay
take hourstodownload).END9-1997-0019-US2 -8-
Itshould benotedthat, based
on
the basicsysteminformationalone, the update selectionprogram 30
within server 12 is not surewhich of
thecode updatesthat areconsistentwiththe basic systeminformation are actuallyneeded by
the client.For
example,the client 14may
alreadyhave the latestversion.5 Next, the client 14 executes each recognizer
program 40
and42
with assistancefrom
the scout33 (step 118).The
scout 33 assiststherecognizerprograms by
providing subroutines thatcanbe called bytherecognizerprograms.For
files requiredby
the recognizerprograms, these callablesubroutines canlocatethefiles, determinethe version ofthefiles, determinethe lengthofthe file, identifya directorywhich
lists the 10 files, obtain time stamps for thefiles, obtain datafrom
inside thefiles, and obtaindatafrom
aprogram
registry. Thisfurtherreducesthe requisitelength of eachrecognizerprogram and
therefore shortens thedownload
time.When
executed, eachrecognizer 7£program
further investigates the hardware, software, andothercomponents
ofthe clientM
14 forinformationto determine whetherthecorresponding code updateis appropriateforyj 15 the client 14.
For
example, thisinvestigation revealswhethertheclient 14 alreadyhas«p these codeupdates.
A
recognizerprogram
could also determineifthe correspondingL,
code
updateisconsistentwithaspects ofthe clientotherthanthebasic systemm
information, such asotherprogramswithinthe client.ru
Recognizer
program 40
determinesfrom
the routineof
scout33 in client 20 14ifthesize offileABCDE.DRV.
storedbythe client 14isthesame
as the sizeof
fileABCDE.DRV.
storedinthe database 13. Ifso, then client 14has the latestupdate. If not, thenclient 14likelyhasan old versionwhich
couldbe
updated.Fig. 4 illustratesrecognizer
program 40
inmore
detail. Instep 200, recognizerprogram 40
calls scout 33 to scanthe hard diskofclient 14 forfile25
ABCDE.DRV
todetermine if fileABCDE.DRV
exists inclient 14. Ifnot, therecognizerprogram
provides an indication thatfileABCDE.DRV
isnot appropriatefor client 14 (step 202). IffileABCDE.DRV
exists in client 14, however, then recognizerprogram
40calls scout33 to retrievethesize offile
ABCDE.DRV
in client 14 (step 204),and
thencompares
thefile sizetothe size ofthe latestversion storedinthe contentserver 30 (decision 206). (The recognizerprogram
includes anindication ofthe size ofthecorrespondingupdateinthe content server.) Ifthe
two
sizes are the same, then there isEND9-1
997-0019-US2
(
fefz
no needto
download
fileABCDE.DRV from
thecontent server 17; client 14 alreadyhas the latestversion. Ifthetwo
sizes arenot the same, then recognizerprogram 40 makes
a recordthatthefileABCDE.DRV
storedinthe content server 17isappropriate for client14 (step 208).
5 Recognizer
program 42 compares
a versionnumber of
theNetcomber program
intheclientto the versionnumber
oftheNetcomber program
ofthe code update, andifthe versionnumber
oftheNetcomber program
installed inclient 14 isless, then theclientlikely has an oldversion. Fig. 5 illustratesrecognizerprogram 42
inmore
detail. Instep 300, recognizer
program 42
calls scout33 toread a databasein client 1410 todetermineifthe
Netcomber program
exists in client 14. Ifitdoes, recognizerprogram
n
42 calls scout33 toobtain the versionnumber
oftheNetcomber program from
the dataLJ3 base (step 302). Ifthe version
number
storedinthedatabaseisequal to orgreaterthan theversionnumber
inthe recognizerprogram, thenclient 14 doesnotneed
the version storedin the content server 17(decision304
and step 306). Iftheversionnumber
stored 15 inthedatabaseis lessthanthe versionnumber
inthe recognizer program, however,then the recognizerprogram
recordsthatclient 14 needsthecopy
oftheNetcomber program
stored inthe content server 17 (decision
304
and step308).The
resultsof
the recognizerprograms includeyes/no answersto the questionof
whethereach respectivecode updateis appropriatefortheclient, i.e. not 20 currently residentinclient 14 andconsistentwiththe clientbasic system information asdeterminedpreviously(in step 114).
The
recognizerprograms
can also assign a"critical"levelto each code update based
on
theneed oftheclient for theupdate.For
example, if anotherprogram
inthe clientneedsthis codeupdateto function, thenthiscode
updatewould be
assignedahigh level ofcriticality. Afterthe recognizerprograms
are executed 25 in client 14, client 14sends to selection server 12 alist ofthecode updateswhich
areappropriatefortheclient (step 120).
Based on
the information gatheredby the recognizer programs, theupdate selectionprogram
determines thelevel ofcriticalityof
the respective code updates and builds aselectionform
for display attheclient (step 122).The
selectionform
comprises 30 a listofthe code updatesthat are consistentwiththebasic systeminformationandEND9-1997-0019-US2
-10-
appropriateforthe client 14,
and
adisplayof
the following three selectionchoices (step 124):1.
minimum number
of codeupdates -code
updateswhich
are necessaryfortheclienttoensure compatibilitybetween
programs within the clientand fixa significant"bug" inaprogram
within the client,and
those otherupdatesthatthe authorofthecode
updatedeemed
criticalsuch asreplacementof unsupported programs;2.
maximum number
of codeupdates- allcode
updateswhich
are consistent withthe basicsysteminformationandappropriatefor the client; and3. clientselection ofspecificcode updates -userselectsparticular
code
updates fromthelist ofallcode
updateswhich
are consistent withthe basicsysteminformation and appropriateforthe client.Next, the client
makes
aselection, eitherselection ofthe first orsecond categories oranitemized listof
codeupdates pursuanttothe third category(step 130), andsends the selection tothe server(step 131). In response, theserver 12 sendsto the client 14theFTP
addressinginformation forthe selectedcode
updates (step 132).Using
this
FTP
addressing information, thedownload
routine39
oftheclientdownloads
thecode
updatesfrom
thecontent server 17(step 133). Ina preferredembodiment,
theFTP
addressing informationforall codeupdates representedinthe selection
form
arepassed withtheselectionform
tothe client 14 (instep 124).As
thecode updates arebeingdownloaded, thedownload
routinealso recordsstatus information (suchas theFTP
addresses)of
the codeupdates incaseof interruption tothecommunication
line. Ifthereis suchan
interruption, thedownloading
cancontinue laterwhere
it left off. Becausethe interruptioncould belengthyand
the systemcharacteristicscouldhave
beenaltered, immediately beforethe selected code updates are actually installedthe updatemanager
32 invokes thecorrespondingrecognizer
programs
againto ensurethatthecodeupdates are still required; itis possible thatchanges could have occurred tothe clientsince the recognizerprogramswere
END9-1997-0019-US2
- 11 -previously executed. Ifthe
code
updates arestillappropriate, theserviceapplication routineofclient 14 installs thecodeupdatesinthe client 14as follows (step 134).For
every code updatefilewhose
staleversion isnotcurrentlyinuse by client 14,theservice applicationroutinereplaces the stale filewiththeupdated file.The
updatemanager
also 5 listseachcode
updatefilewhose
staleversion iscurrently inuse. Then, the client isrequestedto re-boot, andthe operatingsysteminstalls thelisted
code
updates duringthe re-boot.For
allcode updates selectedbythe userthatrepresentone
ormore
bytes ofafile, the service applicationroutine replacesjusttheone or
more
bytes ofthe file.For
suchfiles that arenot currentlyinuse, thisoccurswithout requesting the userto re-boot.10
For
suchfilesthat are currentlyin use, theuserisrequested tore-boot,and
the operating systeminstallstheone ormore
bytesduring there-boot.Pi
Fig. 6illustrates another
embodiment
ofacomputer network
generally designated410.Network 410
comprises aselection server412
withadatabase 413, a^
content server 417, clients414-416, andInternet20tointerconnect the servers and15 clients.
By way
of example, the selectionserver412
comprises acomputer
workstation withassociatedprogramming
and amodem,
thecontent server417
comprises acomputer
a workstationwithassociated
programming
andamodem,
and each oftheclients414-416
D
P
comprisesa personalcomputer
with associatedprogramming
and amodem.
M Communications betweenthe clients andthe selectionserver412
usehypertexttransport
lr 20 protocol(HTTP)
and communications
betweenthe clientsand
the content server417
use
Q
filetransportprotocol (FTP). Althoughnotshown, therearemany
other servers for the Internet.Selectionserver
412
is dedicatedto automatingselection ofdataupdates and additionaldata, collectively called"new
data."The
contentserver417
includesthe 25 actual,new
data(storedon
disk421), and database413 includesmeta
datafor thenew
data and
FTP
addressing informationto locate thenew
datain content server 417.The meta
dataprovides descriptive information abouttherespectivenew
datasuch asthose userattributesforwhich
thenew
dataisappropriate (assumingtheuserdoes not already havethenew
data).The FTP
addressing information indicates theaddress or30 identificationofthe content server
which
stores therespectivenew
data (contentserver417
inthe illustrated example), a userID
and passwordto log-ontothe content server, aEND9-1
997-0019-US2
-12-
name
ofthenew
data, alistof
fileswhich
comprisethenew
data andthesize, checksum, and directoryof
eachfile.According
toone
process for storingthenew
datainthe content server417
andthemeta
datainthe selectionserver412, a personwrites thenew
dataandmeta
5 dataand loads
them
into the contentserver417, eitherviatheInternetorby manual
loading.
The new
dataremains storedinthe contentserver, but themeta
dataiswritten totheselectionserver412, either via the Internetorby manual
loading.As
illustrated inFig. 7, the selection server412
is anHTTP
serverwith an associated"CGI" program manager
431 and includes a dataselectionprogram
430.The
G
10 client414
includesan updatemanager program 432
(including aGUI), a scoutroutinetfj 433, aservice application routine 434, and a
download
routine439.The
functions ofthe serverand clientprogramming
and atypical client-serversessionfor selectingand
H
downloadingnew
dataareillustrated inFigs. 8a and 8b.£ A
user at client computer414
selects aniconto invoke updatemanager
JL 15 432. In response, theupdate
manager
contactsthe generalmanager
431 in server412
toL..J
fS begina sessionand supplies thecurrent level of update
manager
432, scout 433, serviceM
application434, anddownload
routine439
withinclient414
(step 504). In response, the.14 general
manager
431 determines ifthe client'supdatemanager
432, scout 433, service0
application434, anddownload
routine439
are thelatestversion(step 506). This 20 determinationisperformedby
comparing theclientlevel information suppliedby
theclient
414
tothedatain selection server412
forthelatestversionoftheclient'supdatemanager
432, scout 433, service application434, anddownload
routine439
stored inthe contentserver417.Ifthe client'supdate manager, scout, service application, and
download
25 routine arenot the latestversion, the server sendsthe
FTP
addressing informationto the clienttoallowtheclientto retrieve the latestversions from acontent server.Along
with theFTP
addressingforthe clientupdate manager, scout, service application, anddownload
routine, the serversendsFTP
addressing informationtotheclient for aserialnumber
recognizerprogram 441
stored in content server417 which
will query client414
30 forthe serial
number
ofclient414
(step 507). Next,the clientdownloads
and installstheEND9-1
997-0019-US2
- 13-latest version
of
theclientupdate manager, scout, service application, anddownload
routine
from
the content serveriftheFTP
addressingwas
provided (step 508).The
furnishing oftheFTP
addressing informationforthe recognizerprogram
441 beginsthenew
data selection process.The
clientnextdownloads
the5 recognizer
program
441from
the content serverand executesit(step 509).The
recognizer
program
441 then obtains the serialnumber
ofthe client414 from
the basic input outputsystem(BIOS)
firmware, using scoutAPIs
(step 509).The
updatemanager
routine
432
thensends the serialnumber
ofthe client414, obtainedby
the recognizerprogram
441, tothe selection server412
(step 510).10 This initiatesthe selectionupdate
program 430
(step 5 12).The
selection updateprogram 430
within server412
then determines,from
atable435, theemployee number
orname
ofthe userthatowns
themachine
comprisingclient414. Alternately,when
there ismore
thanone
userofclient 414, theuserssendtheirnames
orserials
~7
numbers
tothe server412
(in step 510). Inthis scenario, selection server412
doesnot lc 15 sendtheFTP
ofrecognizerprogram
441 to client414 instep507
and client414
does not!L fetchor execute recognizer
program
441. Thereisnoneed.; b
Hse?
Oi
Once
selectionserver412 knows
theemployee number
orname
ofthef^i userofclient414, either
from
recognizerprogram
441 and table435
ordirectlyfrom
theQ
user, theselectionupdateprogram
candeterminewhich
dataisappropriateforthe user 20and which
datais not appropriatefortheuser. This eliminates thevastmajorityofthedatastored in content server
417
(and othercontent servers, ifany)from
further consideration (step 514). In the illustratedembodiment,this determination ismade by
havingthe selectionupdateprogram
firstreadfrom table435
theuserattributescorrespondingtotheuser's serial
number
orname. Theseuser attributesmay
include the 25 user'sjobtitle, department, profession, age, income, orinterests previously expressedby
theuserand forwardedtothe server. Then, the selectionupdate
program
correlates themeta
dataindata base 413 to theuser's attributes.Matches between
themeta
dataand theuser's serialnumber
or other attributesindicatethatthe correspondingnew
datamay
be appropriate forclient414. Inpractice, the
meta
data andtable435
canbe arranged in 30 a relationaldata baseto facilitatethecorrelation function.END9-1
997-0019-US2
- 14-For
example, the followingtable listsdataavailable in content server417
andtheuserattributes-meta
datathatmatches eachof
thenew
data.r3^
New Data User
Attributes-MetaData
Customer
List Marketing person5 PriceList Marketing person
Salary Chart
Manager
Company
Rules AllEmployees
Golf Ad #
1 (news) GolferGolf Ad #2
(equipment) Golfer10
Bowling Ad
#1Bowler
Bowling Ad
#2Bowler
Inthis example, users
who
are marketingemployees
are entitledto receive only"Customer
List,""PriceList," and"Company
Rules" data. Userswho
aremanagement employees
are entitled toreceive only "Salary Chart"and"Company
Rules"15 data. Users
who
aregolfers, but not employees, aretargetedto receiveonly"Golf Ad
#1" and
"Golf Ad
#2" data. Userswho
are bowlers, butnotemployees, are targetedto receiveonly"Bowling Ad #1"
and"Bowling Ad
#2" data.For
eachnew
datawhich
isconsistentwiththeuser's attribute(s),the selectionupdateprogram 430
sendsto the client414
theFTP
addressinginformationof a 20 correspondingrecognizerprogram
andthecorrespondingmeta
data(step 516).For
example, fora userhavingthe attribute ofgolfer, the selectionupdate
program 430
sends theFTP
addressing forrecognizerprograms440
and442, respectively for"Golf Ad
#1"and "Golf
Ad
#2."The FTP
addressing informationis not providedtoclient414,however, forthe recognizer
programs
forthe othernew
datawhich
is not consistentwith 25 theuser's attribute(s).From
theFTP
addressing information, the client414 downloads
the actualrecognizer
programs from
the content server417
(step 518).Each
recognizerprogram
is executable and small, typically2,000 - 3,000 bytes. Consequently, each recognizerprogram
can bedownloaded from
content server417
totheclient414
in seconds (whereas the correspondingnew
datamay
bemuch
30 largerand takeminutes oreven hourstodownload).
END9-1
997-0019-US2
-15-
Itshould be notedthat, based
on
the userattribute(s) alone, the selection updateprogram 430
within server412
is not surewhich
ofthenew
datathatisconsistent withthe user's attribute(s)is actuallyneededby
theclient.For
example,the clientmay
alreadyhave
some
orallof
thenew
data.5 Next, the client
414
executes recognizerprograms440
and442
with assistancefrom
the scout 433 (step 518).The
scout433 assiststhe recognizerprograms by
providing subroutinesthat canbecalled bythe recognizerprograms.For
files requiredby
the recognizerprograms,these callable subroutinescan locatethe files,determinetheversionofthefiles, determinethe lengthofthe file, identifya directory 10
which
liststhefiles, obtaintime stamps forthefiles, obtain datafrom
insidethe files, andn
obtain datafrom
aprogram
registry. Thisfurtherreducesthe requisite lengthof
each J3 recognizerprogram
andtherefore shortens thedownload
time.When
executed, eachiff
*Lj recognizer
program
further investigates storageofthe clientcomputer 414
to determine ifM
theuser already hasthenew
dataavailablefrom
theclientcomputer. Optionally, the^
15 recognizerprogram may
investigate auserprofile437
storedinthe clientcomputer 414
V
to determine whetherthenew
data isconsistentwith otheruserattributes storedinuser^
profile437.m
H> Recognizer
program 440
is illustrated inmore
detail inFig. 9and
!i! investigatestheuser'sstorageas follows. Inthis example,the soleuserattribute (stored
g
20 intable435 intheselection server412) is "golfer." First, recognizerprogram 440
determines
from
the scout routine433 inclient414
ifclient414
already has acopy
oftheGolf Ad
#1 available forthe user(decision 600). Ifnot,then recognizerprogram 440
determinesthat, so far,"Golf Ad
#1" isdeemed
appropriateforthe user(step 602). If client414
stores afilecalled"Golf Ad
#1," however, then recognizerprogram 440
25 optionally will
check
ifthis isthesame
file astheone currentlystoredon
the serverwith thesame
name. Accordingly, recognizerprogram 440 compares
the size ofthe"Golf Ad
#1" file stored in client
computer 414
tothe sizeofthe "GolfAd #1"
file storedinthe contentserver417
(step604 and
decision 606). (ThesizeofGolf Ad
#1 stored in content server417 was
included inthemeta
datathatwas
sentalongwiththeFTP
address ofthe 30 recognizerprogram.) Ifthe sizes are different, then recognizerprogram 440
concludesthattheyare different files
and
thatthis file isdeemed
appropriatefordownloading from
thecontentserver to the clientcomputer
414 (step 602). Ifthe sizes are thesame, thenEND9-1
997-0019-US2
- 16-recognizer
program 440
concludesthattheyare thesame
file, and anothercopy of "Golf
Ad #1"
isnot appropriate fordownloading
totheclientcomputer(step 608). Recognizerprogram 442
performsthesame
analysis for"GolfAd
#2."For new
datathat arelengthy, arespectiverecognizerprogram
could also determine ifthe clientcomputer
has sufficientmemory
forthenew
databy
usingthe appropriate scout function.A
recognizerprogram
could alsocompare
themeta
datafornew
datatouserprofile437
maintainedin clientcomputer
414.to furtherdetermine whetherthenew
datais appropriatefor theuser. Forexample, the userprofile437 may
qualifythat the user's interests ingolfare limited to golf
news
but not golfequipment. In sucha case,the recognizerprogram would
determine that"GolfAd
#1" relating to"news" would
beappropriate forthe user but"GolfAd
#2" relating to "equipment"would
notbeappropriatefortheuser.Assume
that another recognizerprogram 442
illustratedinFig. 10 correspondstothe"Customer
List" data. Recognizerprogram
442,when
executing in client computer414, will determine ifthe user already has afilecalled"Customer
List"(decision700). If not, then the recognizer
program 442
determinesthatthis dataisappropriatefor
downloading
tothe client(step 706). Iftheclientalready has afile called"Customer
List," however,then recognizerprogram 442
willcompare
(step 704)the date associatedwiththe creationofthe"Customer
List" filestoredinthe server (and fetched withrecognizerprogram
442) tothe date associatedwiththe creationof
the"Customer
List"file stored inclient
414
(and obtained in step 702). Ifthe datestoredinthe serveris later, thenthe"Customer
List" data storedinthe serveris appropriatefortheuser(step 706). Otherwise, it is not appropriatefortheuser(step 708).The
results oftherecognizerprograms include yes/no answersto the 25 question of whether each respectivenew
dataisappropriatefortheuser, i.e., notcurrently available in client
414
forthe userand, optionally, consistentwith theuser's .profile, ifany, storedin table
435
inthe client computer. (The selectionupdateprogram
previouslydetermined thatthenew
datawere
consistentwiththe user's attributes,stored intable435
in the server computer.)The
recognizerprograms canalso assigna"critical"30 level toeach
new
databasedon
the need oftheuserforthenew
data.For
example, ifthe dataare especially important such as the"Customer
List" or the"Salary Chart," andtheu
10
15
20
END9-1997-0019-US2
-17-
userhas
no
versionoravery oldversion, thenthis datawould be
assigned ahighlevel ofcriticality. After the recognizer
programs
are executed in client414, client414
sendsto selectionserver412
alist ofthenew
datawhich
is appropriateforthe user (step 520).Based on
the information gatheredby
the recognizerprograms, the 5 selectionupdateprogram
determinesthelevelofcriticalityof
the respective data andbuilds aselection
form
fordisplay attheclient(step 522).The
selectionform
comprises alistofthenew
datathatisconsistent withthe user's attributesand
appropriateforthe client414, and a display ofthe followingthree selectionchoices (step 524):1. critical data(to minimizethe
download
time);2. all
new
datathatareappropriateforthe user; and3. client selectionofappropriate
new
data-user selects particularnew
datafrom
the listofallnew
datawhich
areappropriateforthe user.Next, the user
makes
a selection, either selectionof
thefirst or second15 categoriesoranitemized list of
new
data pursuanttothe thirdcategory (step 530), and sends theselectionto the server(step 531). In response, the server412
sends to the client414
theFTP
addressing informationforthe selectednew
data(step 532). UsingthisFTP
addressing information, the
download
routine439
oftheclientdownloads
thenew
datafrom
the content server417
(step 533). In a preferredembodiment,
theFTP
addressing 20 informationforallnew
data representedinthe selectionform
are passed withtheselection
form
tothe client414
(instep 524).As
thenew
data arebeingdownloaded, thedownload
routine also records statusinformation (such astheFTP
addresses) ofthenew
dataincase ofinterruption to thecommunication
line. Ifthere is such aninterruption, thedownloading
cancontinue 25 laterwhere
itleft off.Upon
completion ofthedownload,the serviceapplication routineofclient
414
installs thenew
datainthe client414
foraccess by theuserasfollows (step 534).For
all filesconstitutingthenew
data, except thosewhich
representupdatesto existing datastoredinthe clientcomputer
forwhich
the stale versionis currently inuseEND9-1997-0019-US2
- 18-by client414, the service application routine replaces theexisting filesin client
414
with thenew
file.The
updatemanager
also listseach data filewhose
staleversionis currently inuse. Then, theuseris requestedto re-boot, andthe operatingsystem installsthe listed data during the re-bootFor
allappropriatenew
data selectedbythe userthatrepresents 5 one ormore
bytesofafile, the service applicationroutine replacesjusttheone
ormore
bytes
of
thefile.For
such filesthat arenotcurrently in use, thisoccurs without requesting the userto re-boot.For
such filesthat are currentlyinuse, the userisrequestedto re-boot,
and
the operating systeminstallsthe oneormore
bytes duringthe re-boot.Techniquesforselecting and transferringcode updates and
new
datato a clientcomputer
havebeen
disclosed.Numerous
modifications andsubstitutionscan be
made, however, without deviatingfrom
the scopeofthepresentinvention.For
example, therecan bemultiple content servers, orthe selection server functions andcontent server function canbe merged
into oneserver. If desired, protocols other thanHTTP
andFTP
can beused. Further, athree-tiered architecture fordetermining
whether
toprovidea softwareupdatemay
be implemented.Figs. 11 and 12 areblock diagrams
showing
anotherexemplaryembodiment of
asystemand method
in accordance withthe presentinvention.The
present invention determines whetherto provide a software
program
update820
(oranew
software program)toone
ofa pluralityofclientprocessors860A-860N,
eachclient processor860A-860N
requiringone of
aplurality ofsoftwareprogram
updates. Fig. 11
shows
an exemplary systemin accordancewiththisembodiment
oftheinvention.The embodiment
includes athree-tiered architecture for determiningthe need for, andcontrollingthe application orremoval (installationand
uninstallation) of, 25computer
readable binary data(referredto as"updates")from
a centrallyadministeredlocation.
The
third (or highest)tier includes aselection serverprocessor850
(whichmay
also bethe content server providing
mass
storage forsoftware and data).The
second (or middle) tierincludesan administration serverprocessor800A which may
include aGUI.
Administration serverprocessor
800A communicates
withselection server processor850
30
on
behalfofthe client processors860A-860N,
the first (orbottom) tierprocessors.The
administration server processor
800A
controlswhich
updates are installed anduninstalledEND9-
1997-0019-US2 -19-
20
on
theclientprocessors860A-860N. The
client processors860A-860N
eachinclude a"client agent/' a
program
executedby
each clientprocessorwhich
acceptscommands from
administration server processor800A,
processes thecommands, and
returns status information 870, 871 (described in detail below)to administration server processor800A.
Inthe
exemplary
system, at leastone selection serverprocessor850
provides a sourceofsoftwareprogram
updates 820forclientsoftwareprogramsand
system configurationmanagement
tools,which
aredescribed in detailbelow.The
selectionserverprocessor
850 may
be, forexample, anenterpriseserverwhich
servesanentirebusiness oruniversity, or adivision orsubsetofalargerentity. Alternatively, the selectionserver processor
850 may
be a server processorfor a software vendor; a pluralityof
administration server processors860A-860N may communicate
withthe selectionserverprocessor850
viaaworldwide
telecommunications network, suchas the Internet.At
leastone
administration serverprocessor800A
isprovided.Administration serverprocessor
800A
provides the toolsand
resourcesformanaging
the system configuration intheclient processors860A-860N
served byadministration server processor800A. The
administration server processor800A
andclientprocessors860A- 860N may,
forexample, allbe connected ina localareanetwork (LAN) 860
within anoffice, afloor ofa building, or alocal campus.
On
the other hand, the administration servermay
serve apluralityofclientprocessorsthatare related bybusinessfunction;the clientprocessors860A-86ON
and administrativeserverprocessor800A
need notall be co-located.The
administration serverprocessor800A
and itsGUI have
thefollowing general features:1)
The
abilityto logically group multiplefirst-tierclient processors in user definable groups.2)
The
abilityto log (track) activity correspondingto each first-tierclient processor.END9-1 997-00 19-US2 -20-
3)
The
abilitytoperformthefirst-tierclientprocessors.
"update discovery" taskforgroups orsingle
4)
The
abilitytoperformthe"updateapply" taskfor sets of updates onto groupsorsinglefirst-tierclient processors.5 5)
The
abilitytoperform the"updateremove"
taskfor setsof
updatesfrom
groups orsinglefirst-tier client processors.6)
The
abilityto schedulethe "update discovery,""updateapply,"and
"update
remove"
tasksto occuratany giventime and frequency.7)
The
abilitytoview which
updatesare potentially applicable toeach10 individual clientprocessor orgroup ofclientprocessors.
8)
The
abilitytoview which
clientprocessors are inneed
ofwhich
updates or agroup ofupdates.Although
FIG. 11 onlyshows
a singleLAN
860, eachofthe other administrationserverprocessors800B
and800C
hasone
ormore
clientprocessors (not shown).The
description of exemplary administration serverprocessor800A
andclient processors860A-860N
also appliesto administration serverprocessors800B
and800C
andtheirrespectiveclient processors (not shown).
FIG. 12
shows
ingreaterdetailthe pertinentprocessesand
dataflows within the exemplary system. Inparticular,the functionsand
dataflowsof20 administration serverprocessor
800A
areemphasized inFIG. 12.The
administration server processor800A
includes threemajor
tasks describedbelow: the"update discovery," "update apply," and "updateremove"
tasks.Withinthe administration server processor800A, the"update discovery" task includes blocks 810-816.
The
"updateapply" task includes blocks817
and 818.The
"update25
remove"
taskisnotshown
inFIG. 12.The
blocks810-818
within administration server processor800A
includeboth general purpose computer hardware and softwareprogram
END9-1
997-0019-US2 -21
-instructions inadministration server processor800A, includingconventionalintra- processorand inter-processor
communications
functions.Update
DiscoveryThe
"update discovery" taskis definedasthe administration server process of determiningthe applicability of(orneedfor) a setof updates820 on
agroup of(or single) clientprocessors860A-860N.
Thisprocess consistsofcommunicating
to selectionserver processor850
inorderto identifytheadministration serverprocessor800A and
itsleveland
type. Thiscommunication may
beperformed, forexample,by
usingHTTP.
The
selection serverprocessor850 returnsmeta
data(whichmay
beHTTP
links)directingor pointing the administrationserver processor
800A
todownload
a"systemrecognizer"
program
851.The
administration serverprocessor800A downloads
(forexample, via
FTP)
thesystemrecognizerprogram
851from
the selectionserver processor 850.The
systemrecognizerprogram
851 is providedby
selectionserver processor850
toasystemrecognizer receivingmeans 810
inadministration server processor800A.System
recognizertransmittingmeans
811 transmitsthesystemrecognizer
program
851 tothe clientprocessor860A.At
block862, the clientprocessor 860A
executes the systemrecognizerprogram
851 todeterminethesystemconfiguration attributes.The
administration server processor800A communicates
acommand
andmeta
data(viaHTTP)
toeach clientprocessor860A-860N,
as directedby
the system administrator(user)from
theGUI
ofthe administration server processor800A
Thiscommand and meta
datacause each affected clientprocessor860A-860N
todownload
25 (via
HTTP)
thesystemrecognizerprogram
851 and execute it.The
systemrecognizerprogram
851 isresponsiblefordetermining asetofhardwareand/or softwareattributes foreach clientprocessor860A-860N
that executes thesystem recognizerprogram
851.The
systemrecognizerprogram
851 in eachclient processor860A-860N
thenreturnsthe 10ry
n
15
20