throbber
US007334005B2
`
`(12) United States Patent
`Sobel
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 7,334,005 B2
`Feb. 19, 2008
`
`(54) CONTROLLABLE DEPLOYMENT OF
`SOFTWARE UPDATES
`
`2006/0075001 A1 *
`4/2006 Canning et a1. .......... .. 707/203
`OTHER PUBLICATIONS
`
`(75) Inventor: William E. Sobel, Stevenson Ranch,
`CA (U S)
`
`(73) Assignee; symantec Corporation’ cupertinoa CA
`(Us)
`
`http://web.archive.org/web/20041009093542/www.microsoft.com/,
`Frequently Asked Questions About Updating Your Computer, Aug.
`25, 2004.
`http:/web.archive.org/web/2004l0l6l85847/http://ekb.dbstalk.
`corn/295; Dish Network Receiver Software Versions, Oct. 16, 2004.
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U_S,C, 154(b) by 533 days,
`
`(21) Appl. No.: 11/106,194
`
`(22) Filed:
`
`Apr. 13, 2005
`
`(65)
`
`Prior Publication Data
`
`NOV‘ 2’ 2006
`
`51
`(
`)
`
`US 2006/0248116 A1
`I t Cl
`Gnot'sF /44
`G06F 9/445
`
`(2006 01)
`2006'01
`_
`_
`_
`(
`'
`)
`(52) US. Cl. .................... .. 707/203, 717/177, 717/172,
`_
`_
`_
`708/250
`(58) Field of Classi?cation Search .............. .. 717/ 172,
`_
`_
`717/177} 707/203
`See aPPllcatlon ?le for Complete Search hlstory-
`References Cited
`
`(56)
`
`US. PATENT DOCUMENTS
`7,181,512 B1 *
`2/2007 Lesher et a1‘
`
`709/223
`
`* cited b examiner
`y
`Primary Examinerishahid Alam
`Assistant ExamineriPatrick E Sweeney
`(74) Attorney, Agent, or F irmiFenwick & West LLP
`
`(57)
`
`ABSTRACT
`_
`_
`_
`_
`The risk of inadvertent introduction of software bugs to a
`large number of users during a software update is minimized
`by controlling updates using a uniform mechanism of send
`ing updates to seed users. A value-generating module gen
`erates a value for a computer, the value falling within a
`population range of values. A sampling range-generating
`module generates a sampling range of values as a proper
`subset of the population range, the probability of the random
`Value falling Within the: Sampling range being predetep
`mined. An eligibility determination module determines
`Whether the Computer is eligible to receive a Software
`update, the computer being determined eligible when the
`random value for the computer falls within the sampling
`range, and an update module provides the software update to
`the computer based on the eligibility determination. In some
`embodiments, a problem review module determines whether
`tllgiigpélate has caused a problem for computers receiving the
`
`2003/0066065 Al *
`
`4/2003 Larkin . . . . . . . . . . . . . . .
`
`. . . .. 7l7/l77
`
`'
`
`2004/0019889 Al *
`2004/0060044 A1 *
`
`7l7/l77
`l/2004 Melchione et a1. .
`3/2004 Das et a1. ................. .. 717/171
`
`26 Claims, 5 Drawing Sheets
`
`Generate a Random Value
`for a Computer
`
`402
`
`l
`
`Set a Sampling Range
`of Values
`
`w
`404
`
`l
`
`Determine whether the Computer is w 406
`eligible to receive the Software Update
`
`Random
`Value falls
`within Sampling
`Range?
`
`f 408
`
`Provide
`Software Update
`to Computer
`
`K 410
`Do not provide
`Software Update
`to Computer
`
`1
`
`SYMC 1011
`
`

`

`U.S. Patent
`
`Feb. 19, 2008
`
`Sheet 1 0f 5
`
`US 7,334,005 B2
`
`.mzmmhz
`
`N F
`
`
`
`hzmjo hzmjo hzmjo .EwjQ
`
`
`
`
`
`2
`
`SYMC 1011
`
`

`

`U.S. Patent
`
`Feb. 19,2008
`
`Sheet 2 0f 5
`
`US 7,334,005 B2
`
`vow
`
`
`
`mwE<o< mmE<Q<
`
`
`
`9N N51 5965 8N1 8N1
`
`
`
`
`
`vEo>>Ez woinzmo Allv E952 I mowwmooma
`
`N .QE
`
`3
`
`SYMC 1011
`
`

`

`U.S. Patent
`
`Feb. 19, 2008
`
`Sheet 3 0f 5
`
`US 7,334,005 B2
`
`ink
`
`
`
`
`
`2262 3231 5521
`
`
`
`@582 2N8:
`
`mom K
`
`
`
`
`
`226E :QEEEEEQ 3:565
`
`m .OI
`
`mom \
`
`an \
`
`
`
`
`
`2:82 ms?acmmémcmm 9:553
`
`
`
`
`
`IP 2522 #55338 @633
`
`4
`
`SYMC 1011
`
`

`

`U.S. Patent
`
`Feb. 19, 2008
`
`Sheet 4 0f 5
`
`US 7,334,005 B2
`
`Generate a Random Value
`for a Computer
`
`"v 402
`
`Set a Sampling Range
`of Values
`
`404
`
`Determine whether the Computer is w 406
`eligible to receive the Software Update
`
`Random
`Value falls
`within Sampling
`Range?
`
`/ 408
`
`Provide
`Software Update
`to Computer
`
`f 410
`Do not provide
`Software Update
`to Computer
`
`FIG. 4
`
`5
`
`SYMC 1011
`
`

`

`U.S. Patent
`
`Feb. 19, 2008
`
`Sheet 5 of 5
`
`US 7,334,005 B2
`
`Determine whether the Software Update
`caused Problems for receiving Computers N 502
`
`Problem
`caused?
`
`s04 \
`
`f 506
`
`Set a broader
`Resolve Problem —>
`Sampling Range
`
`f 508
`l
`Determine whether Computer
`is eligible to receive Update
`based-on broader Range
`
`Random
`Value falls within
`broader Range?
`
`510 \
`Provide
`Software Update
`to Computer
`
`f 512
`Do not provide
`Software Update
`to Computer
`
`FIG. 5
`
`6
`
`SYMC 1011
`
`

`

`US 7,334,005 B2
`
`1
`CONTROLLABLE DEPLOYMENT OF
`SOFTWARE UPDATES
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`This invention pertains in general to computer software
`update deployment, and more speci?cally to techniques for
`controlled release of software updates to random subsets of
`seed users over time.
`2. Description of the Related Art
`Deploying a software update to a large number of users at
`a time can pose numerous problems since such updates
`sometimes introduce software bugs or cause other problems
`when released to the public. Software companies have
`attempted to deal with this problem by limiting the initial
`release of a new software update to only a subset of all
`possible users. If a software update is released to only
`10,000 machines in a ?rst round of release rather than to the
`entire pool of millions of users, it is much easier to deal with
`any problems or bugs introduced by the software. The users
`who are affected by the problem are much fewer and more
`manageable in this type of limited initial release.
`There are a number of different ways in which this type
`of limited software update deployment has been performed.
`One method involves limiting the initial release only to users
`in a particular target country or some other de?ned subset of
`users. For example, all users in Denmark for a particular
`software application that is being updated will receive the
`update ?rst and can report any problems with the software
`before it is released to the general public. However, this
`manual release method has caused problems in the past
`when, for example, a particular bug only manifested itself in
`the target country and nowhere else. Thus, in those
`instances, the testing of the product by the seed users in the
`target country was not representative of the entire population
`of users of the software application to whom the update
`would ultimately be deployed.
`Another method for limiting update release includes the
`timed posting and removal of updates. For example, the
`software update can be made available to the general public
`at 2 am. for a couple of hours, and then the update is
`removed. The goal of this method is to permit a subset of
`users to have a chance to download the update during this
`two-hour window, and those users can report problems with
`the software update before it is released more generally to
`the public. The company distributing the software can
`monitor for bug reports and reports of system crashes to
`determine whether the update is ready to be provided to a
`broader group of users. This manual release method, how
`ever, is still not very useful because there are no statistics
`tied into the update release, and there is no way to know who
`the seed users are or whether the coverage of the seed user
`base is adequate for testing the software before a much wider
`release.
`None of the above manual methods of release provide a
`su?icient amount of control over the software update
`deployment. However, control is particularly important in
`situations where software updates have to be released on a
`very short time frame, since the patch may be needed to
`resolve a current issue that users are facing with the soft
`ware. If the software update has to be released within a
`week, there is very little time to run an actual beta test cycle
`for the update. For example, the posting and removal of
`software at 2 am. may have to be repeated numerous times
`over a few days to get enough downloads to form a signi?
`cant enough seed user base. However, for a critical software
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`update for which time is of the essence, there may not be
`time to develop a representative base and the product may be
`released to the public before being properly tested.
`Therefore, there is a need in the art for a method that
`allows a more uniform mechanism of systematically sending
`out software updates to a de?ned and random proportion of
`seed users before the mass distribution of the update, allow
`ing software updates to be controlled to a much more
`granular level.
`
`DISCLOSURE OF INVENTION
`
`The above need is met by controlling software updates
`using a uniform mechanism of sending updates to seed
`users. A value-generating module generates a random value
`for a computer, the value falling within a population range
`of possible values. A sampling range-generating module
`generates a sampling range of values as a proper subset of
`the population range, the probability of the random value
`falling within the sampling range being predetermined. An
`eligibility determination module determines whether the
`computer is eligible to receive a software update, the com
`puter being determined eligible when the random value for
`the computer falls within the sampling range, and an update
`module provides the software update to the computer based
`on the eligibility determination. In some embodiments, a
`problem review module determines whether the software
`update has caused a problem for computers receiving the
`update. In response to a determination by the problem
`review module that the software update has not caused
`substantial problems for the computers receiving the update,
`the sampling range-generating module broadens the initial
`sampling range and software updates are provided to com
`puters with random values falling within the adjusted range.
`The features and advantages described in this disclosure
`and in the following detailed description are not all-inclu
`sive, and particularly, many additional features and advan
`tages will be apparent to one of ordinary skill in the relevant
`art in view of the drawings, speci?cation, and claims hereof.
`Moreover, it should be noted that the language used in the
`speci?cation has been principally selected for readability
`and instructional purposes, and may not have been selected
`to delineate or circumscribe the inventive subject matter,
`resort to the claims being necessary to determine such
`inventive subject matter.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a high-level block diagram illustrating an
`example of a standard computing environment 100, accord
`ing to one embodiment of the present invention;
`FIG. 2 is a high-level block diagram illustrating a standard
`computer system 200 for use with the present invention;
`FIG. 3 is a high-level block diagram illustrating the
`functional modules within the update deployment module
`120, according to one embodiment of the present invention;
`FIG. 4 is a ?owchart illustrating steps performed to
`control the release of software updates, according to one
`embodiment of the present invention; and
`FIG. 5 is a ?owchart illustrating steps performed to
`control the release of software updates where the sampling
`range is being broadened over time, according to one
`embodiment of the present invention.
`The ?gures depict an embodiment of the present invention
`for purposes of illustration only. One skilled in the art will
`readily recogniZe from the following description that alter
`native embodiments of the structures and methods illustrated
`
`7
`
`SYMC 1011
`
`

`

`US 7,334,005 B2
`
`3
`herein may be employed Without departing from the prin
`ciples of the invention described herein.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`4
`As knoWn in the art, the Internet is a large, publicly
`accessible netWork of netWorks. Individual computers and
`other devices can utiliZe communications protocols such as
`the transmission control protocol/Intemet protocol (TCP/IP)
`to send messages to other computers on the Internet. These
`messages can use protocols such as the hypertext transport
`protocol (HTTP), ?le transfer protocol (FTP), simple mail
`transport protocol (SMTP), post of?ce protocol 3 (POP3),
`and Internet message access protocol (IMAP), and data
`representations such as the hypertext markup language
`(HTML) and extensible markup language (XML) to carry
`and exchange information. Embodiments of the present
`invention may use other communications protocols and
`languages to exchange data.
`Another communications link 118 connects the server 116
`to the Internet 112. The server 116 can send information,
`such as softWare updates or patches, across the Internet 112
`and to the client computers 110. Additionally, the client
`computers 110 can send out information (i.e., providing
`randomly generated values to the server 116 for controlled
`update deployment) or make requests across the Internet 112
`to the server 116, such as general requests for softWare
`updates or requests for updates for a particular softWare
`application. The communications link 118 is generally the
`same as the communications links 114 connecting the client
`computers 110 to the Internet 112. Although only one server
`116 and associated communications link 118 are shoWn in
`FIG. 1, embodiments of the present invention may have
`multiple servers and/or links. The server 116 may be a
`conventional computer system or a netWork of systems.
`In the embodiment illustrated in FIG. 1, each client
`computer 110 executes an update deployment module 120
`for controlling softWare update deployment for the client
`computer 110. The update deployment module 120 can be a
`discrete application program, or the module 120 can be
`integrated into another application program or the client
`computer’s 110 operating system. In some embodiments, all
`or a portion of the update deployment module 120 is
`executed on the server 116 Thus, the server 116 controls
`Which softWare updates are sent out and Which computers
`Will receive the updates. For example, the module 120 might
`include tWo different programs, one running on the server
`116 and one running on the client 110. The program running
`on the server 116 can set up parameters for determining
`Which clients 110 Will receive an update, and the program
`running on the clients 110 can generate a value that may or
`may not fall Within the parameters set by the server 116. The
`server 116 can then send the softWare update to the clients
`110 that fall Within the established parameters, Which Will be
`a subset of all of the users Who Will eventually receive the
`update. Thus, both the client computers 110 and the server
`116 can be involved in creating a controlled environment for
`update release.
`FIG. 2 is a high-level block diagram illustrating a func
`tional vieW of a typical computer system 200 for storing and
`executing the compatibility module 120, according to one
`embodiment of the present invention. This computer system
`200 can act as a client computer 110, as shoWn in FIG. 1.
`HoWever, one or more of the components of the computer
`system 200 may be missing or modi?ed in the client
`computer 110. Illustrated is a processor 202 coupled to a bus
`204. Also coupled to the bus 204 are a memory 206, a
`storage device 208, a keyboard 210, a graphics adapter 212,
`a pointing device 214, and a netWork adapter 216. A display
`218 is coupled to the graphics adapter 212.
`The processor 202 may be any general-purpose processor
`such as an INTEL x86, SUN MICROSYSTEMS SPARC, or
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`The update deployment module disclosed herein alloWs a
`more uniform mechanism of systematically sending out
`softWare updates to a random portion of users before the
`general distribution of the update to the public, alloWing
`much more control over softWare updates. Upon success of
`the distribution of the software to the ?rst group of seed
`users, the update deployment module can increase the range
`of the seed users, possibly by an order of magnitude, and the
`module can continue this increasing of the number of seed
`users until some predetermined number of users has
`received the update. As used herein, a “softWare update,” or
`an “update” or “patch,” can include an upgrade to a neWer
`version of a particular softWare application or module or a
`version With neW functionality, alteration of con?guration
`parameters, a virus de?nition (or other malicious code
`de?nition), addition of an executable module (e.g., a neW
`user feature, an alteration of the operating system or other
`installed application), and the like.
`FIG. 1 is a high-level block diagram illustrating a com
`puting environment 100 according to an embodiment of the
`present invention. Multiple client computers 110 are in
`communication With the Internet 112 or other netWork, such
`as a local area network, via communications links 114.
`Although only four client computers 110 are shoWn in FIG.
`1, there can be thousands or even millions of computer
`systems coupled to the Internet 112, according to embodi
`ments of the present invention. In one embodiment, the
`client computers 110 are conventional computer systems. In
`other embodiments, one or more of the client computers 110
`are different electronic devices having connectivity to
`remote update sources, such as cellular telephones, personal
`digital assistants (PDAs), etc. A server 116 is also connected
`to the Internet 112 via a communications link 118.
`As is knoWn in the art, the client computers 110 preferably
`execute an operating system and one or more application
`programs. As used herein, the term “application” or “soft
`Ware application” can include any type of softWare or
`program, a component of a program, a service, an object, a
`distributed object, or a collection of one or more of these.
`The operating system controls the operation of the computer
`system, and some examples of such an operating system
`include LINUX® or one of the versions of MICROSOFT
`WINDOWS®.
`In FIG. 1, each client computer 110 is connected to the
`Internet via a communications link 114. Preferably, the
`communications link 114 utiliZes conventional netWorking
`technology. For example, in one embodiment a client com
`puter 110 uses a modem to connect over standard telephone
`lines With an Internet Service Provider (ISP) having a
`high-speed connection to the Internet 112. In another
`embodiment, a client computer 110 uses a digital subscriber
`line (DSL) or cable modem to access the ISP via a telephone
`line or cable television line, respectively. In yet another
`embodiment, the client computer 110 uses a netWork card
`and Ethernet connection to directly connect to the Internet
`112. In still other embodiments, the communications link
`114 connects the client computer 110 via a Wireless 802.11,
`Bluetooth, or mobile phone (e.g., CDMA or GSM) netWork.
`Thus, many different types of technology can be used to
`provide the functionality of the communications link 114.
`
`50
`
`55
`
`60
`
`65
`
`8
`
`SYMC 1011
`
`

`

`US 7,334,005 B2
`
`5
`POWERPC compatible-CPU, or the processor 202 may also
`be a custom-built processor. The memory 206 may be, for
`example, ?rmware, read-only memory (ROM), non-volatile
`random access memory (NVRAM), and/ or RAM, and holds
`instructions and data used by the processor 202. The storage
`device 208 is, in one embodiment, a hard disk drive but can
`also be any other device capable of storing data, such as a
`Writeable compact disk (CD) or DVD, and/or a solid-state
`memory device. The pointing device 214 may be a mouse,
`track ball, or other type of pointing device, and is used in
`combination With the keyboard 210 to input data into the
`computer system 200. The graphics adapter 212 displays
`images and other information on the display 218. The
`netWork adapter 216 couples the client computer 110 With
`the Internet 112.
`As is knoWn in the art, the computer system 200 is
`adapted to execute computer program modules for providing
`functionality described herein. In this description, the term
`“module” refers to computer program logic for providing the
`speci?ed functionality. A module can be implemented in
`hardWare, ?rmWare, and/or softWare. Where the any of the
`modules described herein are implemented as softWare, the
`module can be implemented as a standalone program, but
`can also be implemented in other Ways, for example as part
`of a larger program, as a plurality of separate programs, or
`as one or more statically or dynamically linked libraries. It
`Will be understood that the modules described herein rep
`resent one embodiment of the present invention. Certain
`embodiments may include other modules. In addition, the
`embodiments may lack modules described herein and/or
`distribute the described functionality among the modules in
`a different manner. Additionally, the functionalities attrib
`uted to more than one module can be incorporated into a
`single module. In one embodiment of the present invention,
`the modules are stored on the storage device 208, loaded into
`the memory 206, and executed by the processor 202. Alter
`natively, hardWare or softWare modules may be stored
`elseWhere Within the computer system 200.
`FIG. 3 is a high-level block diagram illustrating the
`functional modules Within the update deployment module
`120, according to one embodiment of the present invention.
`The update deployment module 120, in the embodiment
`illustrated in FIG. 3, includes a value-generating module
`302, a sampling range-generating module 304, an eligibility
`determination module 306, an update module 308, and a
`problem revieW module 310. Any or all of these modules can
`be included on a client computer 110, on a server 116, or
`both.
`The value-generating module 302 generates a value that
`can be a random value for a client computer 110, the value
`falling Within a population range of possible values. One of
`ordinary skill in the art Will recogniZe that the generation of
`a “random value” or “random number” can be in?uenced by
`a deterministic or knoWn component. For example, the
`random value generated could be affected by a user’s
`preference settings for risk tolerance or some other type of
`bias toWard generating one number over another, and yet the
`number generated is still random. In some embodiments, the
`random value is automatically generated at the time of
`installation of the value-generating module 302 on a client
`computer 110. In other embodiments, the value is generated
`When a server 116 requests this data from a client computer
`110. The value can also be generated any time in betWeen the
`installation and the request. Furthermore, the value can be
`generated When a client computer 110 ?rst requests a
`softWare update from the server 116 or noti?es the server
`116 that an update is needed.
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`The random value generated Will typically be maintained
`for the client computer 110, and thus the value continues to
`exist and is used for a number of different softWare updates.
`HoWever, the value-generating module 302 generates a neW
`number for a computer 110 When necessary or desired. For
`example, a neW number can be generated during a user
`migration to a neW machine, after reinstallation of the
`softWare, after system failure, or as a debugging mechanism.
`In some embodiments, the value can change each time a
`successful update occurs for security reasons.
`The random values are preferably non-unique values, and
`the update deployment process functions most effectively
`When the values generated are non-unique random values.
`The values can be non-unique since the invention does not
`require that every computer 110 or user be tracked (i.e., it is
`not necessary to track every unknoWn), as might be neces
`sary in a system that uses unique ID numbers to prevent
`piracy by tracking each piece of softWare that is sent out or
`by keeping track of every subscriber for the softWare and
`limiting Who can receive updates based on subscriptions.
`Typically, the value-generating module 302 generates the
`random value from a uniform distribution, thus ensuring that
`a straight uniform sampling of client computers 110 receives
`the update regardless of the country they live in, the lan
`guage, the location, the time of day, etc. In this manner, a
`random subset of all users of the client computers 110 is
`tested. HoWever, the value can also be generated from other
`distributions, such as a bell curve distribution, a Poisson
`distribution, an empirically-de?ned distribution, and the
`like.
`A multidimensional number could also be generated.
`Instead of having a single number, a computer 110 can
`generate a feW numbers. For example, the computer 110 can
`have a number based on the country in Which it is located,
`a number based on the risk tolerance of the user (i.e., certain
`users may have a high risk tolerance and may be more
`interested in receiving the most current softWare updates
`Without delay, and certain users may have an especially loW
`risk tolerance and may only Wish to receive the update after
`it has been Well tested by other users), and a number based
`on some other identifying characteristic. A particular update
`can thus be set to be tested by users in a l to 10 range for
`risk tolerance, a l to 3 range for country, and a l to 50 range
`for some other characteristic, thereby testing different per
`centages of the users With different de?ned characteristics.
`As stated above, the random value generated falls Within
`a population range of possible values. This population range
`can be any range from N to N, Where N can be for example
`a 32-bit number, N can be —l, 0, l, 1000, 1 million, etc., or
`N can be any machine-representable number, bounded or
`unbounded. The population range spans the set of values for
`all users to Whom the update Will probably ultimately be sent
`after the testing has been completed. The random values
`generated by computers 110 to receive the update Will fall
`Within the population range.
`The sampling range-generating module 304 generates a
`sampling range of values as a proper subset of the population
`range, the probability of the value falling Within the sam
`pling range being predetermined. The sampling range
`de?nes the subset of users Who Will test the product by
`de?ning a range in Which the values generated by some of
`the clients 110 Will fall. As described above, the random
`values generated by the clients 110 Will fall Within the
`population range, and the population range spans the set of
`values for all users to Whom the update Will probably
`ultimately be sent after the testing has been completed. Thus,
`the sampling range generated by the sampling range-gener
`
`9
`
`SYMC 1011
`
`

`

`US 7,334,005 B2
`
`7
`ating module 304 is a subset of the population range, and the
`sampling range de?nes the subset of values that Will be
`involved in the testing (i.e., the clients 110 With values
`falling Within the sampling range that Will test the software
`update). For example, if the population range is 1 to 1
`million, and the update is to be sent out to all users, the
`sampling range Would also be set to be 1 to 1 million. If the
`population range is 1 to 100 and the sampling range is 1 to
`5, clients 110 With values falling Within that sampling range
`(e.g., a value of 4) Will receive the software update.
`The sampling range can also be discontinuous. For
`example, the range can run from 1 to 10 and from 21 to 100.
`This might be useful in a situation Where certain users have
`especially loW risk tolerances and do not Wish to participate
`in the testing procedure. Users generating numbers falling
`Within 11 to 20 can be set to receive the update last, after it
`has been tested by many other users.
`The sampling range can be speci?ed in a ?le that is
`associated With the softWare update package to be deployed
`(e.g., bundled With the softWare update package or linked
`With an URL, reference, or pointer to the package). The
`sampling range can also stored on the client computer 110 or
`on a server 116 (e.g., in a central location such as a relational
`database, a registry, or a repository directory).
`The sampling range-generating module 304 not only
`generates the initial range of seed users, but also can
`generate successively broader sampling ranges (Within the
`population range) as the update testing progresses. For
`example, if the population range is from 1 to 1000, the
`sampling range-generating module 304 can initially gener
`ate a range of from 1 to 10. This range can be set With the
`goal of controlling the initial deployment of the update so
`that 1% of the population of users With random values Within
`the population range Will receive the update in the ?rst
`round. Once deployment has occurred for a period of time
`and signi?cant problems have not been reported, the module
`304 can generate a second broader range to encompass a
`larger number of target users. For example, the second range
`might be from 1 to 100, thus rolling out the update to 10%
`of the users to Whom the patch applies in this second round
`of release. This broadening of the range can continue until
`the update has been provided to all users to Whom the patch
`applies. Thus, all or most computers 110 With random values
`Within the population range of 1 to 1000 Will receive the
`update. If there are problems at any point during the roll out
`of the update, the roll out can be stopped While the problem
`is being resolved. HoWever, any problems encountered
`should only a?fect the initial sets of seed users rather than the
`entire population of users, thus permitting much easier
`control of damage caused due to problems With the update.
`In some embodiments, the starting sampling range Will
`vary as different softWare updates are released. For example,
`if the initial sampling range is 1 to 10 for one softWare
`update, the initial sampling range can be set to be 11 to 20
`for the next softWare update. In this manner, the ?rst set of
`seed users Who are most likely to be a?fected by problems
`With the updates Will vary from one update release to
`another.
`In some embodiments, the value-generating module 302
`can also generate random values according to an unknoWn
`or unexpected distribution. For example, computers and
`softWare have been knoWn in the past to have biases,
`sometimes unexpected, in their random number generators.
`These biases can result in the generation of random values
`that are either not truly random or that do not conform to the
`anticipated distribution, e.g., a uniform, normal, or other
`distribution. In some embodiments, the sampling generator
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`can set the WindoW according to any knoWn distribution
`such that the probability of any given value generated Will
`have the desired probability of falling Within the WindoW.
`Additionally, the range can be set based on an empirically
`determined frequency of values generated, for example by
`estimating the empirical distribution for the numbers tested
`over a WindoW in time such that it Will more accurately
`re?ect the true distribution of the sample values that are
`received. The sampling range-generating module 304 can
`adjust the siZe of WindoW based on knoWn patterns or rates
`of requests for updates. After setting a range, the sampling
`range-generating module 304 can collect information
`regarding hoW many people actually test the update (e.g., it
`can keep track of the number of doWnloads), and so the
`module 304 can build statistical data as it is in operation to
`determine if oversampling or undersampling is occurring.
`Therefore, it does not necessarily matter What values are
`generated or according to What distribution since the sam
`pling range generator can adjust for this.
`The eligibility determination module 306 determines
`Whether the computer 110 is eligible to receive a softWare
`update. The computer 110 is determined to be eligible When
`the random value for the computer 110 falls Within the
`sampling range. Thus, the eligibility determination module
`306 determines Whether or not the value for each computer
`110 falls Within the sampling range. In some embodiments,
`the module 306 ?rst determines Whether there is a sampling
`range set for a particular update, and if so, What the range is.
`The eligibility determination module 306 can make its
`determination each time softWare updates are available by
`asking each client computer 110 for its random value, and
`then c

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket