throbber
Dec. 10, 1985
`Schmidt et at.
`[45] Date of Patent:
`
`[19]
`
`[11] Patent Number:
`
`4,558,413
`
`[54] SOFTWARE VERSION MANAGEMENT
`SYSTEM
`
`[75]
`
`Inventors: Eric E. Schmidt, Loa Altos, Calif.;
`Butler W. Lampaon. Philadelphia. Pa.
`
`[T3] Assignee: Xerox Corporation. Stamford. Conn.
`[21] App]. No.: 553,724
`
`[22] Filed:
`
`Nov. 2!, 1983
`
`Int. CL‘
`......... .. GM]? 15/20
`[51]
`1.1.5. CL ............. ..
`. 364/300; 364/203
`[52]
`[58] Field of Search ....................................... .. 364/300
`
`[56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`4.309.756
`
`12‘1982 Beckler ............................. .. 364/300
`
`OTHER PUBLICATIONS
`
`Morse et al.. DOS/AMAP Model of the DOS Control
`Program. LBJ". Technical Doctorow Bulletin. vol. 14,
`No. 3. Aug. 1971. pp. 352—353.
`Alan L. Glasser. “The Evolution of a Source Code
`Control System". Proc. Software Quality and AsSur-
`ance Workshop. Software Engineering Notes, vol. 3.
`No. 5 pp. 122—125. Nov. 1978.
`Ira P. Goldstein & Daniel G. Bobrow, “Representing
`Design Alternatives". Proceedings of the Artificial
`Intelligence and Simulation of Behavior Conference.
`Amsterdam. Jul. 1980.
`Raul
`EllisOn.
`Robert
`A. Nico Habermann,
`Medina—Mora, Peter Feiler. David S. Notkin, Gail E.
`Kaiser, David B. Garlan 8: Steven Popovich, “The
`Second Compendium of Gandall Documentation”
`CMU Department of Camputer Science, May 24, I932.
`Gail E. Kaiser & A. Nico Habennann. "An Environ-
`ment for System Version Control" in The Second Com-
`pendium ofGandalf Documentation. CMU Department
`of Computer Science. Feb. 4, 1982.
`B. W. Lampson et al., “Practical Use of a Polymorhic
`Applicative Language". Proceedings of the l0th Sym-
`posium on Principles of Programming Languages. Aus-
`tin, Texas, Jan. 1983.
`W. F. Tichy. “Design Implementation and EvaluatiOn
`of a Revision Control System". Proceedings of the 6th
`international Conference on Software Engineering.
`Tokyo. Japan. Sep. 1932.
`
` United States Patent
`
`Dissertation of Eric Emerson Schmidt. entitled “Con-
`trolling Large Software Development in a Distributed
`Environment". approved Nov. 1982.
`Xerox Palo Alto Research Centers Publication, CSL—S-
`2-7. dated Dec. I932, "Controlling Large .
`.
`. Environ-
`ment“. Schmidt.
`Ira P. Goldstein d: Daniel G. Bobrow. “A Layered
`Approach to Software Design,“ Xerox Pare. Tech.
`Report. CSL—SO—S, Dec. I980.
`James G. Mitchell et al.. “Mesa Language Manual.
`Version 5.0" Xerox Faro. Tech. Report. CSL—79—3.
`Apr. 1979.
`
`{List continued on next page.)
`
`Primary Examiner—Raulfe B. Zache
`Attorney. Agent. or Firm—W. Douglas Carothers. J r.
`
`ABSTRACT
`[57]
`A software version management system. also called
`system modeller. provides for automatically collecting
`and recompiling updated versiOns of component soft-
`ware objects comprising a software program for opera-
`tion on a plurality of personal computers coupled to-
`gether in a distributed software environment via a local
`area network. The component software objects include
`the source and binary files for the software program.
`which stored in various different local and remote stor»
`age means through the environment. The compoaent
`software objects are periodically updated. via a system
`editor, by various users at their personal computers and
`then stored in designated storage means. The manage-
`ment system includes models which are also objects.
`Each of the models is representative of the scurce ver-
`sions of a particular component software object and
`contain object pointers including a unique name of the
`object. a unique identifier descriptive of the cronologi-
`cal updating of its current version, informatiori as to an
`object‘s dependencies on other objects and a pathname
`representative of the residence storage means of the
`object. Means are provided in the system editor to no-
`tify the management system when any one of the ob-
`jects is being edited by a user and the management
`system is responsive to such notification to track the
`edited objects and alter their respective models to the
`current version thereof.
`
`6 Claims, 29 Drawing Figures
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 1
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 1
`
`

`

`
`
`4,558,413
`
`Page 2
`__________________._.———-—‘——-—
`
`OTHER PUBLICATIONS
`_
`A. Nico Habermann. “Tools for Software System Con-
`struction“. Proceedings of the Software Tools Work-
`shop, Boulder, Colorado, May 1979.
`Am Avakian, Sam Haradhvala. Julian Horn & Bruce
`Knobe, “The Design of an Integrated Support Sofiware
`System“. Proceedings of the SIGPLAN ‘82 Sympo-
`sium on Compiler Construction, pp. 308-317, Jun.
`23—25. 1982.
`Lee W. Cooprider, The Representation of Families of
`Software Systems. PhD Thesis. CMU Computer Sci-
`ence Department. CMU—CS—79—l l6. Apr. 14. 1979.
`Eugene Cristofor. T. A. Wendt & B. C. Wonsiewicz.
`"Source Control+Tools=Stable Systems", Proceed-
`ings of the Fourth Computer Software and Applica-
`tions Conference. pp. 527-532. Oct. 29-31. I980.
`A. Demers &. J. Donoahue. “Data Types. Parameters.
`and Type Checking”. Proceedings of the Seventh Sym-
`positun on Principles of Programming Languages. Las
`Vegas, Nevada. pp. 12-23. 1980.
`Frank DeRemer St H. Kron. “Programming-in—
`the-Large Versus Mgmming-in-th&5mall", IEEE
`Transactions on Software Engineering. vol. 2. No. 2.
`pp. 30-86. Jun. 1976.
`Stuart 1. Feldman, “Make—A Program for Maintaining
`Computer Programs“. Software Practice and Experi-
`ence. vol. 9. No. 4, pp. 255—256. Apr. 1979.
`[re P. Goldstein & Daniel G. Bobrow. “Descriptions
`for a Programming Environment". Proceedings of the
`
`First Annual Conference of the NatiOnal Association of
`Artificial Intelligence. Stanford, California. Aug. 1930.
`Eric Harslem and LeRoy E. Nelson. “A Retrospective
`on the Development of Star”, Proceedings of the 6th
`International Conference on Software Engineering,
`Tokyo. Japan. Sep. 1932.
`Thomas R. Horsley 3: William C. Lynch. “Pilot: A
`Software Engineering Case Study". Proceedings of the
`4th International Conference on Software Engineering,
`pp. 94—99, 1979.
`Evan L. Ivie, “The Programmer’s Workbench—A Ma-
`chine for Software Development". Communications of
`the ACM. vol. 20. No. 10. pp. 746-753. Oct. 1917.
`Hugh C. Latter & Edwin H. Satterthwaite. “The [m-
`pact of Mesa on System Design". Proceedings of the
`4th International Conference on Software Engineering.
`pp. 174—132, 1979.
`D. Redell. Y. Dalai, 'I‘. Horsley. H. Lauer. W. Lynch.
`P. Moiones. H. Murray & S. Purcell. “Pilot: An Operat-
`ing System for a Personal Computer“. Proceedings of
`the Seventh Symposium on Operating System Princi-
`plea, Dec. 1919.
`Marc J. Rochkind. “The Source Code Control Sys-
`tem". IEEE Transactions on Software Engineering.
`vol. 1, No. 4. pp. 364—370. Dec. 1975.
`Walter F. Tichy. Software Development Control Based
`on System Structure Description. PH.D.. Thesis. CMU
`C0mputer Science Department. CMU-CS-SO— l 20. Jan.
`1980.
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 2
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 2
`
`

`

`US. Patent Dec. 10,1985
`
`Sheet! on4
`
`4,558,413
`
`
`
`PRIOR
`
`ART
`
`1
`
`no.3]
`
`30.81
`
`3.51
`
`b.51
`
`Makaf119
`
`4.?
`
`11.51
`
`
`
`
`O x
`
`1.2
`
` x1.
`x2.o
`
`
`1.c
`3.5
`x2.c
`
`Makefile 3.5
`Makefi'le
`
`PRIOR ART
`
`FIG. 2
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 3
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 3
`
`

`

`US. Patent Dec. 10,1985
`
`Shoet2of24
`
`4,558,413
`
`
`
`Other modules and boxes
`
`Other modules and boxes
`
`
`
` Compos1t'ion C1
`Version Zfstd)
`
` Other modules
`
`
`
`PRIOR
`
`ART
`
`FIG. 3
`
`Configuration Object F'i'la
`
`H HL—y
`
`Source F119
`
`Implementat1on Object F1135
`
`Source F119
`
`Object fnes for Interfaces
`
`FIG. 6
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 4
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 4
`
`

`

`U.S. Patent Dec.10,1985
`
`Sheet30f24
`
`4,558,413
`
`C1ient:PRUGRAH IMPORTS SqrtInt =
`
`
`
`Imp'lemantor:
`
`PROGRAM EXPORTS SqrtInt ={
`
`{
`
`
`
`
`
`
`
`Sqrt: PUBLIC PRDC[s: HEAL]RETURN[REAL]={
`
`..coda to compute sqrt of a number
`
`}:
`
`Sqr‘tInt:DEFINITIONS I {
`
`
`
`f:l(3.
`
`n4
`
`
`
`Sqrt: PROCEREAL]RETURHS[REAL]:
`
`}.
`
`Impa1amentntion object f11e
`
`.fi
`
`Source H10
`
`Object H193 for intarfacas
`
`f:!C3.
`
`£5
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page5
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 5
`
`

`

`US. Patent Dec. 10,1935
`
`Sheet4of24
`
`4,558,413
`
`Storage
`Disk
`
`Persona1
`
`
`
`
`
`
`
`Computer
`
`
`
`To other networks
`
`FIG. 7
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page6
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 6
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 5 of 24
`
`4,558,413
`
`Users make changes while
`running on re1eased software
`
`Re1ease Master sends
`ca11 for subm1ssions
`
`DF f11es in boot fiie
`
`are a31 announced as ready
`
`Boot f1le for new
`
`re1ease is prepared
`
`Remaining DF Files are
`a11 announced as ready
`
`Re1easa Hester prepares
`top-1eve1 DF f11e
`
`
`
`
`
`Phases One and Two
`are run at 1east once
`
`Phase Three is run
`
`ReIease Hester announces
`
`reiaase 1s comp1ete
`
`
`Users make changes to
`their software 1n response
`
`to errors reported by
`
`Phases One and Two
`
`
`FIG. 8
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page?
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 7
`
`

`

`
`
`US. Patent Dec. 10,1985
`
`Sheet6of24
`
`4,558,413
`
`Fi1eToo1.DF
`
`UserExec.DF BBV.DF
`
`LN
`
`BugBane.DF
`
`
`
`TTYID.DF
`
`l
`
`ViewersAndTioga.DF
`
`fi
`
`PricrityQuene.DF
`
`
`
`L__________;
`I
`C°1°FPaCk39°-DF 0n11neMergeSort.DF
`w a
`
`CedarCOntro1.DF
`VF___I
`Specia1Br1ngOver.DF
`
`MesaScanner.DF
`
`Graphics‘DF
`
`Inscript,np
`
`R1991n9Makar.DF
`
`Runtime.DF. 10.0F. Wor1dVH.DF.
`ListsAndAtoms.DF. CIFS.DF
`
`DateAndTime.DF
`
`
`
`RPCRuntime.DF

`GrapevinaUser.DF CedarSnapshot.DF
`
`l
`
`R1gg1ng_DF
`
`l
`
`Loader.DF
`
`CedarReaIs.DF Bus1cHaads'.DF
`
`CFU.DF
`
`FTP.DF
`
`'
`
`Bed-0F
`
`|
`
`
`
`Pine.DF
`
`
`
`Compat1b11ityPackaga.DF
`
`f_I
`
`Tormiaa]Mult1p1as.DF
`
`Random.DF
`
`Pup.DF
`
`|
`
`Commun1fat1on'.DF
`
`P11otInterfaces.DF
`
`FIG. 9
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Pages
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 8
`
`

`

`US. Patent Dec. 10, 1985
`
`Sheet7of24
`
`4,558,413
`
`
`
`IO.DF. wor1d.DF. VersionMap.DF,
`Runtime.DF.
`L1stsAndAtoms.DF. CIFS.DF
`
`
`
`stands for
`
`hi
`
`
`
`
`
`Runt1ma.DF*—-—->-Hor1dVM.DF
`
`CIFS.DF
`
`10-”
`;
`
`L'i stsAndAtoms . 0F
`
`i
`
`VisionHap.DF
`
`FIG. 10
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page9
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 9
`
`

`

`
`
`U. S. Patent Dec. 10,1935
`
`Sheet8 of24
`
`4,558,413
`
`TTYIO.DF
`
`F11eToo1.0F
`
`BBV.DF
`
`gm;
`
`V1ewersAndTioga.DF
`+
`TIP.DF
`
`Co]or1ackage.DF|
`
`UserExec.OF
`
`Lea
`
`Graphics.DF
`
`IO.DF
`
`BugBane.DF
`
`
`
`
`Pine.DF
`
`ListsAndAtoms.DF
`
`
`Inscript.DF
`
`Runtime.DF-—Hor1dVM.D
`
`
`
`
` Vis1onHap.DF
`HesaScanner.D'
`
`Loader.DF
`
`RPCRuntime.DF
`+
`Grapev1neUsar.DF
`
`SpaciaIBring
`0ver.DF
`
`Rigging.DF
`
`FTP.DF
`
`Cedar
`Bcd.DF Contro1.DF
`
`l W
`
`P
`Com at1b111tyPackaga.DF
`
`PriorityOuaua.DF
`
`Commun1cat1on'.DF
`
`Term1naIHu1t1p19x.DF
`
`
`
`
`
`
`CodarReaIs.DF
`
`DataAndTime.DF
`
`BTreas.DF
`
`CadarSnapshot.DF
`Basicfiaads'.DF
`
`
`
`FIG. 11
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page10
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 10
`
`

`

`US. Patent Dec.10,1985
`
`Sheet90f24
`
`4,558,413
`
`Vis1chapBu11der.DF
`
`Chat.DF
`
`UECP.DF
`
`CIFSCummands.DF
`
`
`
`
`
`Sequ'injFi—HIFSFHeJF
`
`I
`
`4F—"Mode1ler.DF
`
`DFFiles.DF
`
`Comp11er.DF
`
`Boot
`
`F113
`
`Binder.DF
`
`Lister.DF
`
`Packager.DF
`PGS.DF
`
`PressPackagB.DF '4— Print.DF
`PerfStats.DF <— CadarDB.DF
`
`CoFork.DF 4-—-————-P1otPackage.DF
`
`Spy.DF'4-‘-—-————*Lupine.DF
`SirPress.DF *——'PrassScraen.df
`
`BrovoToT1oga.DF
`CedarRaalTest.DF
`
`Inc1udeChecker.DF
`
`Haintain.DF
`
`MakeBoat.DF
`
`HCross.DF
`
`0the11o'.DF '
`
`PupHatch.DF
`
`RedBTackTreeRaf.DF
`
`Set,DF
`
`STPServar.DF
`
`TJnmGraphics.DF
`
`Unique.DF
`waInutSand.DF
`
`RedBIack
`Tree.DF
`
`"atBrLily.nF
`
`I=!(3. 1:?
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page11
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 11
`
`

`

`US. Patent Dec. 10,1935
`
`Sheet 100m 4,558,413
`
`C1ient1mp1.Hesa
`
`
`
`
`C1ientmp1zPRDGRAM IMPORTS Sort={
`
`TastTham:PROC[I:LIST 0F Dbject]={
`
`~~ca11 USortList with this list
`
`I#Sort.USortL1st[I.Compareobjact];
`
`DIRECTORY
`
`Sort:
`
`
`
`}: Sort.Mesa
`
`
`
`}:
`
`
`
`ComparaObject:PROC[n.b:0bjact]
` RETURNSEComparisOn]-{
`
`
`--compares the two objects
`
`
`
`--raturns less. equa1. or greater
`
`Sort:DEFINITIOHS-{
`
`0bject:TYPE-RECORD[
`
`x.y:INT
`
`]:
`
`USortL1st:PRDC[LIST 0F Object. CompareProc]
`
`RETURNS[LIST 0F Object]:
`
`FIG. 13A
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page12
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 12
`
`

`

`US. Patent Dec. 10,1985
`
`Sheetllof24 4,558,413
`
`SortImp1.Mesa
`
`DIRECTORY
`
`Sort:
`
`SortImp‘l :PRDGRAM EXPORTS Sort-{I
`
`};
`
`
`
`USortList:PROC[I:LIST 0F Object.
`
`compareProc: ComparePruc]
`
`RETURNS[newI:LIST 0F Object]-{
`
`"code to sort the Hat I.
`
`e1‘im1nat1ng dupHcates
`
`T0 FIG. 13A
`
`FIG. 13B
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page13
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 13
`
`

`

`US. Patent Dec. 10, 1935
`
`Sheet120f24 4,558,413
`
`SortCoord.Mesa
`
`Sort:DEFINITIONS={
`
`0bject:TYPE=RECORD[
`
`x.y:INT
`
`]:
`
`USortList:PROC[LI5T 0F Object. CompareProc]
`
`SortNames.Masa
`
`Sort:DEFINITIONS*{
`
`0bject:TYPE-RECORD{
`
`1:5TRIHG
`
`]:
`
`RETURNSELIST 0F Object]:
`
`RETURNS[LIST OF Object]:
`
`
`
`USurtList:PROC[LIST 0F Object. CompareProc]
`
`FIG. 14
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page14
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 14
`
`

`

`US. Patent Dec. 10,1985
`
`Sheet13 of24 4,558,413
`
`SertQuickImp1.Masa
`
`DIRECTORY
`
`Sort:
`
`SortQuickImp1:PROGRAH EXPORTS Sort={
`
`USortList:PUBLIC PROC[I:LIST 0F Object.
`
`comparePro¢zCumpareProcj
`
`RETURNSCnewI:LIST 0F Object]-{
`
`--code to sort the list I. eIiminating dup11cates
`
`--use QuickSort
`
`SortHeapImp1.Masa
`
`
`
`}:
`}:
`
`DIRECTORY
`
`Sort;
`
`SortHaapImp1:PROGRAH EXPORTS Sort-{
`
`USortListtPUBLIC PROC[I:LIST 0F Object.
`
`comparaProc:CompareProc]
`
`RETURNSEnewI:LISI OF Dbjact]={
`
`--code to sort the list I. e11m1nat1ng dup11cates
`
`--use HeapSort
`
`FIG. 15A
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page15
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 15
`
`

`

`US. Patent Dec. 10,1935
`
`Sheet14 on4 4,558,413
`
`Clientlmp1.Masa
`
`DIRECTORY
`
`Sort:
`
`C1ient1mp1:IMPORTS SortQuickInst:Sort.SurtHeapInst:Sort=
`
`TestThem:PROC[I:LIST 0F Object}={
`
`--ca]1 USOftLiSt with this 11$t.
`
`try QuickSort
`
`newI+SortQu1cklnst.USortList[I.CompareObject]:
`
`---now try HaapSort
`
`}:
`
`
`
`newl+$ortHeapInst.USortListEI.CompareObject]:
`
`}:
`
`CompareObject:PROC[a.b:0bject]
`
`RETURHSECompar1son]-{
`
`--compares the two objects
`--returns 1955. equal. or greater
`
`FIG. 15B
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page16
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 16
`
`

`

`
`
`US. Patent Dec. 10,1985
`
`Sheet150f24 4,558,413
`
`ClientImp1.Hesa
`
`DIRECTORY
`
`SortCoord:INTERFfiCE Sort.
`
`SortNamesxlflTERFACE Sort:
`
`C1ientImpI:PROGRAH IMPORTS SortQuickCooruInst:SortCoord.
`
`SartQuickNamesInst:SortNames.SortHeapCoordInst:SortCoord.
`
`SartHeapNamesInst={
`
`--compares a and b. returns 1ess. equal. or greater
`
`TestThem:PROC[Il:LIST 0F SortCaord.Dbject.IZ:LIST 0F SartNames.0bject]=
`
`newI-SortQuickCoordInst.USortList[11. CompareCoordinataObjects];
`
`newI-SortHeapCoordInst.USurtList[11. CompareCanrdinateObjects]:
`
`nauI~SortQuickNameslnst.USortListhZ. CompereNamaObjects].
`
`newI~SortHeapNamesInst.USortListEIZ. CompereNamesObjects]:
`
`CompareCoordinateObjects:PRDC[a.b:?sgrtCoord.Object]RETURNS{Compar1son]={
`
`--compares a and b. returns 1e55, equa1. or greater
`
`}:
`
`CompereNameObjects:PRDC[a.b:SortNames.0bject]RETURN5[Comparison]={
`
`FIG. 16
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 17
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 17
`
`

`

`US. Patent Dec. 10,1935
`
`Sheet 16 on4 4,558,413
`
`Btreemodenwan14,1983.14:44:11}
`
`LET®I|ndigaj<Cedar}Ced-armsraces.nrodef!iJuiy 25. 1932. 14:03:033IN
`
`BTmeflNTEFIFACE BTree-@[Ivy]<Schmidt>BTree.cedar![Sept9.1982.18:52:55}
`
`[Ascif].
`
`BTreeJnsr: BTree~@[Ivy](Schrnid1>BTree1msJ.cedarltJan 14. 1933.14:44:09}
`
`'[][1nsrances.fiopa InstancesJO. msmncesfipacel] ]
`
`Cedarlnterfacesmodelwuly, 25. 1982.14:03:03)
`
`I
`
`Asca‘i:iNTERFACE-@IIndigokCedarMscii.cedarEEJuly 10.1982. 1225:0010
`
`Hope:INTEFIFACE-@E1ndigo]<Cedar>Rope.cedarttJuly 1U. 1932J?:00100)‘[].
`
`10:INTEFIFACE~@[1ndigo](Cedar)IO.cedarluuly12.1982.11:00:00]'[].
`
`SpaceflNTEHFACE~@[1ndigo}<Cedar>Space.CedarI-{June 10. 1932. 3:35:00)' []]
`
`LETlnsran:es~@[lndigo](Cedar)CedarInstandesmodeflwuly 25. 1982. 14'10:12)|N
`
`
`
`Cedarlnstancesmodel!{Ju|y 25,1982.14:10112)
`
`[115ch Hope. :0. Space]-
`
`LET@Cedanmerfac e.modei![Ju!y 25. 1932. 14:03:03] IN [
`
`@{lndigo]<Cedar)Asch‘ImpLcedar!(JuIy10.1982.12:30:00}[][].
`
`@findigo}<Ceda'l)Hopelmpf.cedalltJuly10.1982.1T:10:2£}'{]' [].
`
`@{Indigo](Cedat)101mp!.cedarl[July 20. 1982. 13:03:03)’[]'[].
`
`@[lndigokCEzdaDSpacac edarfidune 11,1932. 15:00:00] '[l '[]]
`
`FIG. 17
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 18
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 18
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 17 on4 4,558,413
`
`Objecttype table
`
`Source 0019c!
`Type
`
`
`BTreeCedarEtSept 9. 1982. 13:52:55]
`
`[lNTEHFACEAscaJ- [INTERFACES Tree]
`
`BTreermpl.ceder!lJan 9. 1983‘ 14:44:09)
`
`[Rope-.INTERFACERODE. FO,Space:INTEFIFACE Space-1
`
`BTree:tNTERFACEBTree]
`
`[[Ropelnstrfiope. JO. Spacemsrfipace] {arreeinst
`arreen
`
`
`
`Space. b1nary!8348823FF?61.
`BTree.ba‘nary143956A3C32FU]
`
`
`Projection table
`
`
`
`Source object
`Parameter values
`Results object
`
`
`BTree.cedar![Sept9.l982.
`13:52:55)
`
`[145chbinaryl23ACD904EFFA]
`
`BTree.binaryE43956A3C32F0
`
`Brreeu‘mpmedariuan 14. 1983.
`14:44:09)
`
`[F1ope.bu‘nary!AC9023E76FA6.
`10.bmary!23843396A24f.
`
`BTreeimprinaryEZMSFFDZBSC
`
`FIG. 18
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 19
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 19
`
`

`

`US. Patent Dec. 10, 1985
`
`Sheet180f24 4,558,413
`
`Version map
`
`
`
`Object name
`File location
`
`
`Ascii.binary!23ACDQO4EFFA
`[lndigo]<Cedar>AscEi.binary23
`
`
`
`
`8Tree.cedar![8ept 9. 1982. 13:52:55}
`
`[Ivy](Schmidt>BTree.cedar4
`
`BTreeJmchedar!(Jan 14,1983. 14:44:09}
`
`[ivy](SchmidDBTree|rnpl.cedar!9
`
`BTree.binary!43956A3C32F0
`
`[ivy}<Schmidt>BTree.binary!2
`
`BTreelmpLbinary!2045FF0283C
`
`[Ivy](SchmidDBTreelrnpl.binaryIS
`
`FIG. 19
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 20
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 20
`
`

`

`US. Patent Dec. 10,1985
`
`Sheet 19 on4 4,558,413
`
`
`
`Cedar Mode11er. started on 3—Feb-83 16:16:01 PST
`
`StoreBack Unioad Stophlode1
`Startflode'fiBegin Continue
`MakeHodech Bind
`NewModeHer
`
`Compi1e Load Start
`
`Modelflame:
`
`Examplo.Hodai
`
`no errors.
`
`Compiling: Examplelmp1A.Mese
`Compi‘ling: ExamplelmpTB.Mesa
`
`
`StarModo‘t Examp‘lo.Mode1
`Prasing Examp1o.Hode1
`Ane1yzing Parameters
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`q a o u q - - - _ _ _ _ _ _ _ _ - _ _ __
`
`- — u — a u — u p _ _ _ __-_—___--
`
`Begin Examp1e.Moda1
`Try for compilation:
`Examp1eImp1A.Hesa:Confirm Compflation ? Yes
`Compilation completed. no errors.
`ExamplelmpIB.Hesa: Confirm Compi'lation 1‘ Yes
`
`
`
`
`
`
`
`
`
`FIG. 20
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 21
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 21
`
`

`

`
`
`U. S. Patent
`
`Dec. 10, 1985
`
`Sheet 20 of24 4,558,413
`
`StartMode1
`
`User Eéfts Fi1e5'4--]
`
`
`
`Not1ce Operation
`
`
`
`
`
`l
`
`
`User Test Program
`
`l
`
`User Edits F1195
`
`Notice Operation
`
` Succeeds
` Continue
`
` StoreBack
`
`FIG. 2 1
`
`
`StopModa'l
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page22
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 22
`
`

`

`US. Patent Dec. 10,1935
`
`Sheet210f24 4,558,413
`
`
`
`@[Ivy]<5¢hmidt)x.flesal(July 25. 1982 14:03:02}
`
`
`
`
`
`
`
`Lnokup in F119 Type Tab1e
`
`
`
`Found
`
`Not found
`
`Lookup f11e in Version map
`
`Not found
`
` Search [Ivy]<8chm1dt> for a11 "X.Mesa"
`
`Not found
`
`
`
`
`
`
`
`
`Enter in version map
`
`
`
`Read F113
`
`
`
`
`Enter 1n F113 Type Tab1e
`
`FIG. 22
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page23
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 23
`
`

`

`US. Patent Dec. 10,1985
`
`Sheet 22 on4 4,558,413
`
`Look for X.Mesa of Juiy 25. 1932 14:03:02 with
`no parameters in projection table
`
`
`
`
`
`
`
`Found
`
`Not found
`
`Generate unique id it wou1d have = X.Bcd of
`1ABC023460£D Lookup in Version Map
`
`Not found
`
`
`
`Enumerate [Ivy]<Schmitd> 1ooking for
`X.Bcd of 1ABCDZS460ED
`
`Not found
`
`Enter
`
`in version map
`
`Compi1e X.Hosa with no parameters
`
`
`
`
`
`
`
`
`
`Enter X.Bcd of IABCDZE4SDED
`
`in projection tah1e
`
`
` Object fi1e X.Bcd of 1ABCD234GDED exists
`
`
`
`FIG. 23
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page24
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 24
`
`

`

`US. Patent Dec. 10,1935
`
`Sheet 23 on4 4,558,413
`
`
`
`Load XImp1.Bcd 0f 2ADEF345EDCA
`
`
`
`
`
`Lookup in Version Map
`
`
`
`Found
`
`Not found
`
`
`
` Enumerate [Ivy]<5chmidt>
`100k for XImpl.Bcd 0F ZADFE245EDCA
`
`Not found
`
`
`
`[Ind1go](Cedar>Y.Hasar1 [Ivy]<5chm1dt>YImp1.Mesal34
`
`
`
`Enter
`
`in Version map
`
`
`
`
`
`
`Read f11e [Ivy]<Schm1dt>XImp1.Bcdlzz and 103d
`
`
`
`FIG. 24
`
`ReIease T001: Phase Hove
`
`[Ivy]<5chmiat)x.nesal4
`
`[Indigo]<tedar>x.flasalz
`
`[Ivy]<$chmidt>XImp1.Mesalfi
`
`[Indigo]<Cedar>XImp1.Mesala
`
`[Ivy]<5chmidt>¥.flesal43
`
`[Indigo]<Cedar>YImp1.Mesalz
`
`FIG. 25
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page25
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 25
`
`

`

`US. Patent Dec. 10,1985
`
`Sheet 24 of24 4,558,413
`
`Re1ease T001: Phase Buiid
`
`[Ivy]<5chmidt)x.3cd[23
`
`[Indigo]<0edar>X.BchZ
`
`[Ivy}(Schmidt>lep1.Bcd!22
`
`[Indigo]<Cedar>XImp1.Bcdll
`
`[Ivy]<$chmidt>Y.Bcd116
`
`[Indigo]<Cedar>Y.Bchl [Ivy]<5chmidt)YImp1.Bcdllz
`
`
`
`[Ind1go]<Cedar)YImp1.Bcdlz
`
`[Indign](Cedar>YImp1.Bcdlz
`
`FIG. 26
`
`Version Map After Release
`
`File Location
`
`X.Mesa of JuTy 25.1982 14:03:02
`
`[Indigo]<Cedar>X.Mesal2
`
`XImp'l.Hasa of Ju'Iy 25.1982 14:05:06 [Indigo]<Cedar>XImp1.Mesa13
`
`Y.Masa of July 25.1982 15:06:08
`
`[Indigo]<Cedar>Y.Hesa11
`
`YImp1.Mesa of Ju'lyI 25.1962 16:07:03
`
`[Indigo]<Cedar‘>YImp1.Mesalz
`
`X.Bcd of IABCDZ346DED
`
`[Indigo]<Cedar>x.Bcd!2
`
`XImp1.Bcd of ZAD£F345EDCA
`
`[Indigo]<Cedar>XImp1.Bcdll
`
`Y.Bcd 0f 3421ABD4235A
`
`[Ind1go]<Cedar‘>Y.Bcdl1
`
`YImp1.Bcd of 234553000638
`
`FIG. 27
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page26
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 26
`
`

`

`
`
`1
`
`4,558,413
`
`SOFTWARE VERSION WAGMNT SYSTEM
`
`BACKGROUND OF THE INVENTION
`
`This invention relates to software version manage-
`ment system and method for handling and maintaining
`software, e.g. software updating uniformin across the
`system. particularly in a large software development
`environment having a group of users or programmers.
`The system is also referred to as the “System Mo-
`deller".
`Programs consisting of a large number of modules
`need to be managed. When the number of modules
`making up a software environment and system exceeds
`some small. manageable set, a programmer cannot be
`sure that every new version of each module in his pro-
`gram will be handled correctly. After each version is
`created, it must be compiled and loaded. In a distributed
`computing environment. files containing the source text
`of a module can be stored in many places in a distributed
`system. The programmer may have to save it some-
`where so others may use it. Without some automatic
`tool to help. the programmer cannot be sure that ver-
`sions of software being transferred to another user or
`programmer are the versiOns intended to be used.
`A programmer unfamiliar with the composition of
`the program is more likely to make mistakes when a
`simple change is made. Giving this new programmer a
`list of the files involved is not sufficient. since he needs
`to know where they are stored and which versions are
`needed. A tool to verify a list of files. locations and
`correct versions would help to allow the program to be
`built correctly and accurately. A program can be so
`large that simply verifying a description is not suff-
`cient, since the description of the program is so large
`that it is impractical to maintain it by hand.
`The confusion ofa single programmer becomes much
`worse, and the cost of mistakes much higher. when
`many programmers collaborate on a software project.
`In multi-person projects, changes to one part of a soft-
`ware system can have far-reaching effects. There is
`often confusion about the number of modules affected
`and how to rebuild affected pieces. For example. user-
`visible changes to heavily-used parts of an operating
`system are made very seldom and only at great cost.
`since other programs that depend on the old version of
`the operating system have to be changed to use the
`newer version. To change these programs, the “cor-
`rect” versions of each have to be found, each has to be
`modified. tested, and the new versions installed with the
`new operating system. Changes of this type often have
`to be made quickly because the new system may be
`useless until all components have been convened. Mem-
`bers or users of large software projects are unlikely to
`make such changes without some automatic support.
`The software management problems faced by a pro-
`grammer when he is developing software are made
`worse by the size of the software, the number of refer-
`ences to modules that must agree in version. and the
`need for explicit file movement between computers.
`For example. a programming environment and system
`used at the Palo Alto Research Center of Xerox Corpo-
`ration at Palo Alto, Calif, called "Cedar" now has
`approximately 441,000 lines of Cedar code. and approx-
`imately 2030 source and 2000 object files. Almost all
`binary or object files refer to other binary or object files
`by explicit version stamp. A program will not run until
`all references to an binary or object file refer to the
`
`5
`
`10
`
`15
`
`20
`
`25
`
`35
`
`45
`
`50
`
`55
`
`65
`
`2
`same version of that file. Cedar is too large to store all
`Cedar software on the file system of each programmer‘s
`machine. so each Cedar programmer has to explicitly
`retrieve the versions he needs to run his system from
`remote storage facilities or file servers.
`Thus, the problem falls in the realm of "Program-
`ming-the-Large" wherein the unit of discourses the
`sofiware module.
`instead of “Programming-in-the-
`Small", where units include scalor variables. statements.
`expressions and the like. See the Article of Frank
`DeRerner and H. Kron, “Programming-in-the-Large
`versus Programming in the small". IEEE Transactions
`on Sojhvare Engineering. Vol. 2(2). pp. 80—86. June 1976.
`To provide solutions solving these problems over-
`viewed above, consider the following:
`1. Languages are provided in which the user can
`describe his system.
`2. Tools are provided for the individual programmer
`that automate management of versions of his programs.
`These tools are used to acquire the desired versions of
`files. automatically recompile and load aprogram. save
`new versions of software for others to use. and provide
`useful informatiou for other program analysis tools such
`as cross-reference programs.
`3.
`In a large programming project. software is
`grouped together as a release when the versions are all
`compatible and the programs in the release run cor-
`rectly. The languages and tools for the individual pro-
`grammer are extended to include informatiou about
`cross-package dependencies. The release process is
`designed so production of release does not lower the
`productivity of programmers while the release is occur-
`ring.
`To accomplish the foregoing, one must identify the
`kinds of information that must be maintained to describe
`the software systems being developed. The information
`needed can be broken down into three categories:
`1. File Information: For each version of a system. the
`versions of each file in the system must be specified.
`There must be a way of locating a copy of each version
`in a distributed environment. Because the software is
`always changing. the file information must be change-
`able to reflect new versions m they are created.
`2. Compilation Information: All files needed to com-
`pile the system must be identified. It must be possible to
`compute which files need to be translated or compiled
`or loaded and which are already in machine runnable
`format. This is called "Dependency Analysis." The
`compilation information must also include other param-
`eters of compilation such as compiler switches or flags
`that affect the operation of the compiler when it is run.
`3. interface Information: In languages that require
`explicit delineation of interconnections between mod-
`ules (e.g. Mesa. Ada}. there must he means to express
`these interconnections.
`There has been little research in version control and
`automatic software management. or that, almost none
`has built on other research in the field. Despite good
`reasons for it. e.g. the many differences between pro-
`gram environments. and the fact
`that programming
`environments ususally emphasize one or two program-
`ming languages. so the management systems available
`are often closely related to those programming lan-
`guages. this fact reinforces the singularity of this re-
`search. The following is brief review of previous work
`in this area.
`
`[1} Make Program
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 27
`
`
`
`PMC Exhibit 2121
`Apple v. PMC
`IPR2016-01520
`Page 27
`
`

`

`4,558,413
`
`5
`
`10
`
`.5
`
`20
`
`25
`
`35
`
`4-0
`
`45
`
`55
`
`65
`
`4
`IEEE Transactions on Software Engineering, Vol. 1(4),
`pp. 25-34, April 198].
`A programmer who wants to change a file under
`SCCS control does so by (l) gaining exclusive access to
`the file by issuing a "get" command. (2) making his
`changes, and (3) saving his changed versiOn as part of
`the SCCS—controlled file by issuing a "delta" command.
`His changes are called a “delta” and are identified by a
`release and level number. e.g., "2.3". Subsequent users
`of this file can obtain a version with or without the
`changes made as part of “delta 2.3". While the program-
`mer has “checked-on ” the file. no other programmers
`may store new deltas. Other programmers may obtain
`copies of the file for reading, however. SCCS requires
`that there be only one modification of a file at a time.
`There is much evidence this is a useful restriction in
`multi-person projects. See Glasser, Supra. SCCS stores
`all versions of a file in a special file that has a name
`prefixed by “s.". This "5." file represents these deltas as
`insertions, modifications, and deletions of lines in the
`file. Their representation allows the “get” command to
`be very fast.
`(3) Software Manufacturing Facility (SMF)
`Make and SCCS were unified in special tools for a
`development project at Bell Labs called the Software
`Manufacturing Facility {Shall-7) and discussed in the
`Article of Eugene Cristofer, F. A. Wendt and B. C.
`Wonsiewicz, "Source Control & Tools=Stable Sys-
`tems”, Proceedings of the Fourth Computer Softwre &
`Applications Conference. pp. 527-532. Oct. 29—31., I980.
`The SMF uses Make and SCCS augmented by special
`files called slists. which list desired versions of files by
`their SCCS version number.
`A slist may refer to other slists as well as files. In the
`SMF, a system coasists of a master slist and references
`to a set of slists that describe subsystems. Each subsys-
`tem may in turn describe other subsystems or files that
`are part of the system. The SMF introduces the notion
`of a consistent software system: only One version of a
`file can be present in all slists that are part of the system.
`Part of the process of building a system is checking the
`consistency.
`SMF also requires that each slist refer to at least one
`Makefile. Building a system involves (l) obtaining the
`SCCS versions of each file, as described in each slists.
`(2) performing the consistency check. (3) running the
`Make program on the version of the Makefile listed in
`the slist, and (4) moving files from this slist to an appro-
`priate directory. FIG. 2 shows an example of a hierar-
`chy of slists, where ab.sl is the master slist.
`SMF includes a database of standard versions for
`common files such as the system library. Use of SMF
`solves the problem created when more than one pro-
`grammer is making changes to the sofiware of a system
`and no one knOws exactly which files are included in
`the currently executing systems.
`(4} PIE Project
`The PIE project is an extension to Smalltalk devel—
`oped at the Palo Alto Research Center of Xerox Cpl-po-
`ratiOn and set forth in the Articles of Ira P. Goldstein
`and Daniel G. Bobrow. “A Layered Approach to Soft-
`ware Design". Xerox PARC Technical Report CSL-SO—S.
`December 1980; Ira P. Goldstein and Daniel G. Bo-
`brow, "Descriptions for a Programming Environment".
`Proceedings of the First Annual Conference of the Na-
`tional Association of Artificial Intelligence. Stanford.
`Califl, August 1980; Ira P. Goldstein and Daniel G.
`Bobrow, “Representing Design Alternatives”, Proceed-
`
`
`
`PMC Exhibit 2121
`
`Apple v. PMC
`|PR2016-01520
`
`Page 28
`
`In Table I. the expression, “cc-c xl.c" is the com-
`mand to execute and produce a new version of xl.o
`when xl.c is changed. Make decides to execute the
`make rule i.e.. compile xl.c, if the file modification time
`ofxlc is newer than that of xl.o.
`The description mechanism shown in Table I is intu-
`itively easy to use and explain. The si

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