throbber
United States Patent 15
`Schmidt et al.
`
`(11] Patent Number:
`[45] Date of Patent:
`
`4,558,413
`Dec. 10, 1985
`
`[54] SOFTWARE VERSION MANAGEMENT
`SYSTEM
`
`[75]
`
`Inventors: Eric E, Schmidt, Los Altos, Calif.;
`Butler W. Lampson, Philadelphia, Pa.
`[73] Assignee: Xerox Corporation, Stamford, Conn.
`[21] Appl. No.: 553,724
`{22] Filed:
`Nov.21, 1983
`
`[S21]
`Tint, Ch.8 cc cceeeeeeneseeetseeeeseeenenes GO6F 15/20
`[52] U.S. Ch. on.eee eeeteeerertereeee
`.. 364/300; 364/200
`(58] Field of Search ............:.c:sscceecereetneees 364/300
`(56]
`References Cited
`U.S. PATENT DOCUMENTS
`
`4,309,756
`
`1/1982 Beckler .........ccseeeeeeeee 364/300
`
`OTHER PUBLICATIONS
`
`Morse et al., DOS/AMAP Model of the DOS Control
`Program, £.B.M. Technical Disclosure Bulletin, vol. 14,
`No. 3, Aug. 1971, pp. 852-853.
`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 & Steven Popovich, “The
`Second Compendium of Gandall Documentation”
`CMUDepartmentof Computer Science, May 24, 1982.
`Gail E. Kaiser & A. Nico Habermann, “An Environ-
`mentfor System Version Control” in The Second Com-
`pendium of Gandalf Documentation, CMU Department
`of Computer Science, Feb. 4, 1982.
`B. W. Lampsonet al., “Practical Use of a Polymorhic
`Applicative Language”, Proceedings of the 10th 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. 1982.
`
`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-8-
`2-7, dated Dec. 1982, ‘Controlling Large ... Environ-
`ment”, Schmidt.
`Ira P. Goldstein & Daniel G. Bobrow, “A Layered
`Approach to Software Design,” Xerox Parc. Tech.
`Report, CSL-80-5, Dec. 1980.
`James G. Mitchell et al., “Mesa Language Manual,
`Version 5.0” Xerox Parc. Tech. Report, CSL-79-3,
`Apr. 1979.
`
`(List continued on next page.)
`
`Primary Examiner—Raulfe B. Zache
`Attorney, Agent, or Firm—W. Douglas Carothers, Jr.
`[57]
`ABSTRACT
`A software version management system, also called
`system modeller, provides for automatically collecting
`and recompiling updated versions of componentsoft-
`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 componentsoftware 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 component
`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 source ver-
`sions of a particular component software object and
`contain object pointers including a unique nameofthe
`object, a unique identifier descriptive of the cronologi-
`cal updating ofits current version, informationas 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
`
`Page | of 58
`
`SAMSUNG EXHIBIT 1018
`
`Page 1 of 58
`
`SAMSUNG EXHIBIT 1018
`
`

`

`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.
`Arra Avakian, Sam Haradhvala, Julian Horn & Bruce
`Knobe, “The Design of an Integrated Support Software
`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, Ph.D Thesis, CMU Computer Sci-
`ence Department, CMU-CS-79-116, 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, 1980.
`A. Demers & J. Dononhue, “Data Types, Parameters,
`and Type Checking”, Proceedings of the Seventh Sym-
`posium on Principles of Programming Languages, Las
`Vegas, Nevada, pp. 12-23, 1980.
`Frank DeRemer & H. Kron,
`“Programming-in—-
`the-Large Versus Programming-in-the-Smail”, IEEE
`Transactions on Software Engineering, vol. 2, No. 2,
`pp. 80-86, Jun. 1976.
`Stuart I. Feldman, ““Make-A Program for Maintaining
`Computer Programs”, Software Practice and Experi-
`ence, vol. 9, No. 4, pp. 255-256, Apr. 1979.
`Ira P. Goldstein & Daniel G. Bobrow, “Descriptions
`for a Programming Environment”, Proceedings of the
`
`First Annual Conferenceofthe National Association of
`Artificial Intelligence, Stanford, California, Aug. 1980.
`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. 1982.
`Thomas R. Horsley & 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. 1977.
`Hugh C. Lauer & Edwin H. Satterthwaite, “The Im-
`pact of Mesa on System Design”, Proceedings of the
`4th International Conference on Software Engineering,
`pp. 174-182, 1979.
`D. Redell, Y. Dalal, T. Horsley, H. Lauer, W. Lynch,
`P. McJones, H. Murray & S. Purcell, “Pilot: An Operat-
`ing System for a Personal Computer”, Proceedings of
`the Seventh Symposium on Operating System Princi-
`ples, Dec. 1979.
`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
`Computer Science Department, CMU-CS-80-120,Jan.
`1980.
`
`Page 2 of 58
`
`Page 2 of 58
`
`

`

`U.S. Patent Dec.10, 1985
`
`Sheet 1 of24
`
`4,558,413
`
`ab.sl
`
`ab.s1
`
`a.$]
`
`b.s]
`
`3.6
`
`4.7
`
`2.3
`
`
`Makefile 4.9 4.7
`
`2.3
`
`b.s]
`
`
`
`3.6
`
`
`Makefile 3.5
`Makefile 4.5
`
`1.2
`
`x2.0
`
`x2.c
`
`1.3
`
`1.4
`
`PRIOR ART
`
`FIG. 2
`
`Page 3 of 58
`
`Page 3 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet2 0f24
`
`4,558,413
`
`
`
`
`
`
`Composition C1
`
`
`Other modules and boxes
`
`Other modules and boxes
`
`Version 2(std)
`
`Other modules
`
`PRIOR
`
`ART
`
`FIG. 3
`
`Configuration Object File
`
`a4
`
`Source File
`
`Implementation Object Files
`
`Source File
`
`Object files for Interfaces
`
`FIG. 6
`
`Page 4 of 58
`
`Page 4 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 3 0f24
`
`4,558,413
`
`
`
`Client:PROGRAM IMPORTS SqrtInt =
`pee eo eee
`
`phe ee oe
`
`..code to compute sqrt of a number
`
`
`
`}3
`
`{
`
`
`Implementor:
`PROGRAM EXPORTS SqrtInt ={
`
`
`
`Sqrt: PUBLIC PROC(s: REAL ]JRETURN[REAL ]={
`
`
` SqrtInt:DEFINITIONS = {
`
`
`
`Sqrt: PROC[REAL ]RETURNS[ REAL];
`
`
`eee ener
`
`}.
`
`FIG. 4
`
`Impelementation object file
`
`od
`
`Source file
`
`Object files for interfaces
`
`FIG. 5
`
`Page 5 of 58
`
`Page 5 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 4 of24
`
`4,558,413
`
`
`
`
`Personal
`Storage
`
`Computer
`Disk
`
`
`
`
`
`
`
`[centeteee}
`Server
`[—|
`
`
`Computer
`
`
`Personal
` 10
`
`Computer
`
`To other networks
`
`
`40~{
`
`Personal
`Computer
`
`FIG. 7
`
`Page 6 of 58
`
`Page 6 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 50f24
`
`4,558,413
`
`Users make changes while
`running on released software
`
`Release Master sends
`call for submissions
`
`DF files in boot file
`are all announced as ready
`
`Boot file for new
`release is prepared
`
`Remaining DF Files are
`all announced as ready
`
`Release Master prepares
`top-level DF file
`
`Phases One and Two
`are run at least once
`
`Phase Three is run
`
`
`
`
`
`Users make changes to
`their software in response
`
`to errors reported by
`
`Phases One and Two
`
`
`FIG. 8
`
`Release Master announces
`release is complete
`
`Page 7 of 58
`
`Page 7 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet60f24
`
`4,558,413
`
`FileTool.DF
`
`
`UserExec.DF BBV.OF
`
`TTYIO.DF
`
`BugBane.DF
`
`ViewersAndTioga.DF
`
`PriorityQuene.DF
`
`ColorPackage.DF Qn1ineMergeSort.DF
`
`CedarControl.DF
`
`MesaScanner.DF
`Graphics .DF
`Inscript.OF
`Rigg ingMaker . DF
`
`SpecialBringOver.DF
`
`IO.DF, WorldVM.DF,
`Runtime.OF,
`ListsAndAtoms.DF, CIFS.ODF
`
`RPCRuntime.DF
`
`DateAndT ime. DF
`
`GrapevineUser.DF|CedarSnapshot.DF
`
`
`
`
`\_
`
`
`
`
`
`
`
`
`
`_DF TerminalMultiples.DF
`Random.DF
`sDF
`cmtDF
` certorracksDF
`
`
`
`
`
`
`
`
`
`Pine. DF CedarReals.DF|BasicHeads*.DF CFW.DF
`
`BTrees.DF
`
`FTP.DF
`
`Bcd.DF
`
`FIG. 9
`
`Page 8 of 58
`
`Page 8 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 7 0f24
`
`4,558,413
`
`
`
`I0.DF, World.DF, VersionMap.DF,
`Runtime.DF,
`ListsAndAtoms.DF, CIFS.DF
`
`
`
`stands for
`
`CIFS.DF
`
`10. DF
`
`
`
`
`ListsAndAtoms.DF
`
`Runtime .DF <<—————— Wor 1d VM. DF
`
`VistonMap.DF
`
`FIG. 10
`
`Page 9 of 58
`
`Page 9 of 58
`
`

`

`
`BBY.DFwortDFTTYIO.DFaDF
`“—TDF
`wat[ UserExec.DF
`
`te 4DF BugBane.DF
`foueDF ListsAndAtoms .DF
`
`
`Inscript.DF
`
`
`Runtime.DF— WorldVM.D
`
`
` VisionMap.DF
`
`Loader .0F
`
`CIFS.DF
`RPCRuntime.DF
`
`
`
`GrapevineUser .DF
`
`
`SpecialBring
`Over .DF
`
`Rigging.DOF
`
`Cedar
`FTP.DF Bed.DF Control.DF
`
`U.S. Patent Dee. 10, 1985
`
`Sheet80f24
`
`4,558,413
`
`MesaScanner.DF
`
`
`
`
`
`
`
`CedarSnapshot.OF
`DateAndT ime. DF
`
`BasicHeads*.DF
`
` PilotInterfaces.DF
`
`PriorityQueue.DF
`
`Communication*.DF
`
`TerminalMultiplex.DF
`
`CompatibilityPackage.DF
`
`CedarReals.DF
`
`BTrees .DF
`
`FIG. 11
`
`Page 10 of 58
`
`Page 10 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet9 of 24
`
`4,558,413
`
`VisionMapBuilder.DF
`
`UECP.DF
`
`
`Chat.DF
`
`CIFSCommands .DF
`
`
`DFFiles.DF
`
`i —— i
`Sequin.DF
`TFSFI1e.DF wogeller.DF
`
`Boot
`
`File
`
`Compiler.DF
`
`Binder .DF
`Lister .DF
`
`Packager .DF
`PGS .DF
`PressPackage.DF “——Print.DF
`PerfStats.DF ~———CedarDB.DF
`
`CoFork.DF ~————PlotPackage. DF
`Spy .DF ~———————— Lupine. DF
`
`SirPress.DF ~————PressScreen.df
`
`BrovoToTioga.DF
`CedarRealTest.DF
`
`InciudeChecker .DF
`
`Maintain.DF
`
`MakeBoot.DF
`
`MCross .DF
`
`Othello*.DF
`
`PupWatch.DF
`
`RedBiackTreeRef .DF
`
`Set.DF
`
`STPServer.DF
`
`TJamGraphics.DF
`
`Unique .DF
`WalnutSend.DF
`
`RedBlack
`Tree.DF
`
`WaterLily.DF
`
`FIG. 12
`
`Page 11 of 58
`
`Page 11 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 10 of24 4,558,413
`
`Clientimp1.Mesa
`
`DIRECTORY
`
`Sort;
`
`Clientmp1:PROGRAM IMPORTS Sorte{
`
`TestThem:PROCLI:LIST OF ObjectJ={
`
`--call USortList with this list
`
`IT¢+Sort.USortList[1,CompareObject];
`
`};
`
`CompareObject:PROC[a,b:O0bject]
`
`RETURNS[Compar ison ]={
`--compares the two objects
`
`~-returns less, equal, or greater }:
`
`FROM
`FIG.
`13B
`
`Sort.Mesa
`
`Sort: DEFINITIONS={
`
`Object: TYPE=RECORD[
`
`x,y: INT
`
`};
`
`USortList:PROC[LIST OF Object, CompareProc]
`
`RETURNS[LIST OF Object];
`
`FIG. 13A
`
`Page 12 of 58
`
`Page 12 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 11 of 24 4,558,413
`
`SortImp].Mesa
`
`DIRECTORY
`
`Sort;
`
`Sortimp1:PROGRAM EXPORTS Sort={
`
`USortList:PROC[I:LIST OF Object,
`
`}:
`
`compareProc: CompareProc]
`
`RETURNS[newl:LIST OF Object]*{
`
`--code to sort the list I,
`
`eliminating duplicates
`
`JO FIG.
`
`13A
`
`FIG. 13B
`
`Page 13 of 58
`
`Page 13 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 12 of 24 4,558,413
`
`SortCoord.Mesa
`
`Sort: DEFINITIONS={
`
`Object: TYPE=RECORD[E
`
`xX, yt INT
`
`3;
`
`USortList:PROC[LIST OF Object, CompareProc]
`
`RETURNS[LIST OF Object];
`RETURNS[LIST OF Object];
`
`SortNames.Mesa
`
`Sort: DEFINITIONS={
`
`Object: TYPE=RECORD[
`
`x:STRING
`
`];
`
`USortList:PROC[LIST OF Object, CompareProc]
`
`FIG. 14
`
`Page 14 of 58
`
`Page 14 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 13 of 24 4,558,413
`
`SortQuickIimp].Mesa
`
`DIRECTORY
`
`Sort;
`
`SortQuickImp1:PROGRAM EXPORTS Sort={
`
`USortList:PUBLIC PROC[I:LIST OF Object,
`
`compareProc:CompareProc]
`
`RETURNS[newI:LIST OF Object]={
`
`--code to sort the list I, eliminating duplicates
`
`--use QuickSort
`
`};3
`33
`
`SortHeapImp!.Mesa
`
`DIRECTORY
`
`Sort;
`
`SortHeapImp1]:PROGRAM EXPORTS Sort={
`
`USortList:PUBLIC PROC[I:LIST OF Object,
`
`compareProc:CompareProc]
`
`RETURNS[newl:LIST OF Object]={
`
`--code to sort the list I, eliminating duplicates
`
`--use HeapSort
`
`FIG. 15A
`
`Page 15 of 58
`
`Page 15 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 14 of 24 4,558,413
`
`ClientImp].Mesa
`
`DIRECTORY
`
`Sort;
`
`Clientimp1]: IMPORTS SortQuickInst:Sort.SortHeapInst:Sort=
`
`}:
`
`TestThem:PROC[I:LIST OF Object]={
`
`--call USortList with this list,
`
`try QuickSort
`
`newl+SortQuickInst.USortList[I.CompareObject];
`
`---now try HeapSort
`
`newl+SortHeapInst.USortList[I.CompareObject]:
`
`};
`
`CompareObject:PROC[a,b: Object]
`
`RETURNS[Compar ison ]={
`
`--compares the two objects
`--returns less, equal, or greater
`
`FIG. 15B
`
`Page 16 of 58
`
`Page 16 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 15 of24 4,558,413
`
`ClientImp1].Mesa
`
`DIRECTORY
`
`SortCoord: INTERFACE Sort,
`
`SortNames: INTERFACE Sort;
`
`--compares a and b, returns less, equal, or greater
`
`ClientImp1:PROGRAM IMPORTS SortQuickCoordInst:SortCoord,
`
`SortQuickNamesInst: SortNames, SortHeapCoordInst:SortCoord,
`
`SortHeapNamesInst={
`
`TestThem:PROC[I1:LIST OF SortCoord.Object,I2:LIST OF SortNames.Object]={
`
`newI+SortQuickCoordInst.USortList[I1, CompareCoordinateObjects];
`
`newl+SortHeapCoordInst.USurtList[I1, CompareCoordinateObjects);
`
`newl+SortQuickNamesInst .USortList{I2, CompareNameObjects},
`
`newl+SortHeapNamesInst.USortList[I2, CompareNamesObjects];
`
`}:
`
`CompareCoord inateOb jects: PROC[a,b: 7SortCoord. Object JRETURNS[Comparison]={
`
`--compares a and b, returns less, equal, or greater
`
`}3
`
`CompareNameOb jects: PROC([a,6:SortNames. Ob ject JRETURNS[Comparison]={
`
`FIG. 16
`
`Page 17 of 58
`
`Page 17 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 16 of24 4,558,413
`
`Btree.model!(Jan 14, 1983, 14:44:11}
`
`LET @[Indigo}<Cedar>Cedarinsiaces.modell{July 25, 1982, 14:03:03)IN
`
`LETinstances~ @[Indigo}<Cedar>Cegar Instandes.model|(July 25, 1982, 14:10:12)IN
`
`8Tree:INTERFACE 8Tree~ @[Ivy]<Schmidt87ree. cedar!(Sept 9,1982, 13:52:55)
`
`[Asciij,
`
`BTreelnst: BTree~ @[Ivy]<Schmict>87ree/mp).cedar!(Jan 14, 1983, 14:44:09)
`
`*[] [instances. Rope, instances./O, instances.Space] } }
`
`CedarInterfaces.model!(July, 25, 1982, 14:03:03)
`
`[
`
`Ascii:INTERFACE~ @{Indigo}<Cedar>Ascii.cedar!(July 10, 1982, 12:25:00)(],
`
`Rope:INTERFACE ~ @[Indigo]<Cedar>Rape.cedar!(July 10, 1982, 17:00:00)*[]j,
`
`lO:INTERFACE ~ @[Indigo}<CedarriO.cedar!(July 12, 1982, 11:00:00) *[],
`
`Space:INTERFACE ~ @[Indigo]<Cedar>Space.Cedar!(June 10, 1982, 8:35:00)*[] ]
`
`Cedarinstances.model!(July 25, 1982, 14:10:12)
`
`{Ascii, Rope, 10, Space]~
`
`LET @Cedarinterface.model!(July 25, 1982, 14:03:03)IN [
`
`@[indigo}<Cedar>Asciiimp!.cedar!(July 10, 1982, 12:30:00)[][],
`
`@[Indigo}<Cedat>Ropeimpi.cedati{July 10, 1982, 17:10:24)*f]* (],
`
`@[!ndigo}<Cedar>/O/mpl.cedar!(July 20, 1982, 13:03:03) °()*[],
`
`@[Indigo}<Cedar>Space.cedar!(June 11, 1982, 15:00:00) *{]*{} }
`
`FIG. 17
`
`Page 18 of 58
`
`Page 18 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 17 of24 4,558,413
`
`Object type table
`
`
`Source object
`Type
`
`
`8Tree.Cedarl(Sept 9, 1982, 13:52:55)
`
`(INTERFACEAsceii]- [INTERFACES Tree]
`
`8Treeimpi.cedar!(Jan 9, 1983, 14:44:09)
`
`{[Rope:INTERFACERope, /O,Space:INTERFACE Space,
`
`BTree:INTERFACE8 Tree}
`
`([Ropelnst:Rope, !0, Spaceinst:Space} ([BTreeinst:
`BTree]j
`
`Projection table
`
`Source object
`Parameter values
`Results object
`
`
`BTree,cedar!(Sept 9.1982,
`13:52:55)
`
`[Ascii.binary!23ACD904EFFA]
`
`BTree. binary!43956A3C3I2F0
`
`BTreeimpl.cedar'(Jan 14, 1983,
`14:44:09)
`
`[Rope. binary!AC9O23E76FA6,
`10. binary!$23843396A24f,
`
`BTreelmpl.binary!2045FFD283C
`
`Space. binary!8348823FF761,
`BTree. binary!43956A3C32F0]
`
`
`FIG. 18
`
`Page 19 of 58
`
`Page 19 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 18 of 24 4,558,413
`
`Version map
`SR
`
`Object name
`File location
`
`
`BTree.cedar!(Sept 9, 1982, 13:52:55)
`
`[lvy]<Schmidt>BTree.cedar4
`
`BTree.impl.cedar!(Jan 14,1983, 14:44:09)
`
`[lvy]<Schmidt>BTreelmpl.cedar!9
`
`BTree. binary!43Q56A3C32F0
`
`{lvy]<Schmidt>BTree.binary!2
`
`BTreeimpl.binary!2045FFD283C
`
`{lvy]}<Schmidt>BTreeimpl.binary!5
`
`[Indigo]<Cedar>Ascii.binary23
`Ascii.binary!\23ACDSO04EFFA
`
`
`FIG. 19
`
`Page 20 of 58
`
`Page 20 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 19 of 24 4,558,413
`
`
`
`Cedar Modeller, started on 3-Feb-83 16:16:01 PST
`
`
`
`
`
`StoreBack Unload StopModel
`StartModelBegin Continue
`MakeModelBcd Bind
`NewModeller
`Compile Load Start
`
`
`
`
`ModelName: Example,Model
`
`
`Compiling: ExampleImplA.Mesa .... no errors.
`Compiling: ExampleImp18.Mesa ...
`
`
`
`StarModel Example.Model
`Prasing Example.Model
`Analyzing Parameters
`
`
`
`
`
`
`
`
`
`Begin Example.Model
`Try for compilation:
`
`ExampleImplA.Mesa:Confirm Compilation ? Yes
`Compilation completed, no errors.
`ExampleImp1B.Mesa: Confirm Compilation 7? Yes
`
`
`
`
`
`
`
`LL
`
`
`
`
`FIG. 20
`
`30
`
`32
`
`34
`
`36
`
`4
`
`
`
`Page 21 of 58
`
`Page 21 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 20 of 24 4,558,413
`
`StartModel
`
`User Edits Files
`
`Notice Operation
`
`User Test Program
`
`User Edits Files
`
`Notice Operation
`
`i]Fails
`
`Succeeds
`
`StoreBack
`
`FIG. 21
`
`Page 22 of 58
`
`Page 22 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 21 of 24 4,558,413
`
`
`
`@[Ivy ]<Schmidt>X.Mesal(July 25, 1982 14:03:02)
`
`
`
`Lookup in File Type Table
`
`
`
`Found
`
`Not found
`
`Lookup file in Version map
`
`
`Not found
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`"X.Mesa"
`Search [Ivy]<Schmidt> for all
`
`Not found
`
`Enter in version map
`
`Read File
`
`Enter in File Type Table
`
`
`
`FIG. 22
`
`Page 23 of 58
`
`Page 23 of 58
`
`

`

`Generate unique id it would have = X.8cd of
`1ABCD2346DED Lookup in Version Map
`
`
`
`
`
`
`
`U.S. Patent Dec. 10, 1985
`
`Sheet 22 of24 4,558,413
`
`Look for X.Mesa of July 25, 1982 14:03:02 with
`no parameters in projection table
`
`Found
`
`Not found
`
`
`
`
`
`
`Found
`
`Not found
`
`Enumerate [Ivy]<Schmitd> looking for
`X.8cd of 1ABCD2346DED
`
`
`
`
`
`Not found
`
`Enter in version map
`
`Compile X.Mesa with no parameters
`
`Enter X.Bed of 1ABCO2346DED
`in projection table
`
`Object file X.Bcd of 1ABCD2346DED exists
`
`FIG. 23
`
`Page 24 of 58
`
`Page 24 of 58
`
`

`

`U.S. Patent Dec.10, 1985
`
`Sheet 23 of24 4,558,413
`
`
`
`
`Load XImp1.Bcd Of 2ADEF345EDCA
`
`
`
`Lookup in Version Map
`
`
`
`
`
`
`
` Enumerate [Ivy]}<Schmidt>
`
`look for XImp1.Bcd OF 2ADFE245EDCA
`
`Found
`
`Not found
`
`Not found
`
`
`
`Enter
`
`in Version map
`
`Read file [Ivy]<Schmidt>XImp1.Bcd!22 and load
`
`FIG. 24
`
`
`
`Release Tool: Phase Move
`
`[Ivy ]<Schmidt>X.Mesal 4
`
`[indigo ]<Cedar>X.Mesal2
`
`[Ivy]<Schmidt>XImp1.Mesal6
`
`[Indigo]<Cedar>XImp1.Mesal3
`
`[Ivy]<Schmidt>Y¥.Mesa!l43
`
`[Indigo]<Cedar>¥.Mesall
`
`[Indigo]<Cedar>YImp1.Mesal2
`
`[ivy]<Schmidt>YImp?.Mesala4
`
`FIG. 25
`
`Page 25 of 58
`
`Page 25 of 58
`
`

`

`U.S. Patent Dec. 10, 1985
`
`Sheet 24 of 24 4,558,413
`
`Release Tool: Phase Build
`
`[ivy]<Schmidt>X.Bed!23
`
`[Indigo]<Cedar>X.Bedl2
`
`[ivy]<Schmidt>XIimp1.Bed!22
`
`[Indigo]<Cedar>XImp1.B8cd!1
`
`[Ivy ]<Schmidt>Y.Bed!16
`
`Cindigo}<Cedar>Y.Bed!1
`
`[Indigo]<Cedar>YImp}.Bed!2
`
`[ivy ]<Schmidt>YImp1].Bed!12
`
`FIG. 26
`
`Version Map After Release
`
`File Location
`
`[Indigo]<Cedar>Y¥Imp1.Bcd!2
`
`X.Mesa of July 26,1982 14:03:02
`
`[Indigo]<Cedar>X.Mesa!2
`
`XImp1.Mesa of July 26,1982 14:06:06}
`
`[Indigo}<Cedar>XImp1.Mesal3
`
`Y.Mesa of July 25,1982 18:05:08
`
`[Indigo]}<Cedar>Y.Mesal1
`
`YImp].Mesa of July 25,1962 16:07:03]
`
`[Indigo]<Cedar>YImp1.Mesa!2
`
`X.Bcd of 1ABCD2346DED
`
`[Indigo]<Cedar>X.Bed!2
`
`XImp1.Bcd of 2ADEF345E0CA
`
`[Indigo]<Cedar>XImp1.Bcd!1
`
`Y.Bed of 3421ABD4235A
`
`[Indigo]<Cedar>Y.Bcd!1
`
`YImp?.Bcd of 23455BBDC63B
`
`FIG. 27
`
`Page 26 of 58
`
`Page 26 of 58
`
`

`

`1
`
`4,558,413
`
`2
`same version of that file. Cedar is too large to store all
`Cedar software onthefile system of each programmer’s
`machine, so each Cedar programmer has to explicitly
`retrieve the versions he needs to run his system from
`remote storagefacilities or file servers.
`Thus, the problem falls in the realm of “Program-
`ming-the-Large” wherein the unit of discourses the
`software module,
`instead of
`‘“Programming-in-the-
`Small’, where units include scalor variables, statements,
`expressions and the like. See the Article of Frank
`DeRemer and H. Kron, “Programming-in-the-Large
`versus Programming in the small”, IEEE Transactions
`on Software 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 managementofversions 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 information 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 information 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
`kindsof 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 as they are created.
`2. Compilation Information: All files needed to com-
`pile the system mustbe identified. It must be possible to
`compute whichfiles 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 whenit is run.
`3. Interface Information: In languages that require
`explicit delineation of interconnections between mod-
`ules (e.g. Mesa, Ada), there must be means to express
`these interconnections.
`There has beenlittle research in version control and
`automatic software management. Of 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 systemsavailable
`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
`
`SOFTWARE VERSION MANAGEMENT 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 uniformily 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 modulein 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 manyplaces 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
`programmerare 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 suffi-
`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 ofa soft-
`ware system can have far-reaching effects. There is
`often confusion about the number of modules affected
`and howto 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 programsthat 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 versionsinstalled 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 converted. 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 numberofrefer-
`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 447,000 lines of Cedar code, and approx-
`imately 2000 source and 2000 object files. Almost all
`binary or object files refer to other binary or objectfiles
`by explicit version stamp. A program will not run until
`all references to an binary or object file refer to the
`
`25
`
`35
`
`40
`
`45
`
`55
`
`Page 27 of 58
`
`Page 27 of 58
`
`

`

`3
`The Make program,discussed in the Article of Stuart
`J. Feldman, “Make-A Program for Maintaining Com-
`puter Programs”, Software Practice & Experience, Vol. 9
`(4), April, 1979, uses a system description called the
`Makefile, which lists an acyclic dependency graph ex-
`plicitly given by the programmer. For each nodein the
`dependency graph, the Makefile contains a Make Rule,
`whichis to be executed to produce a new version of the
`parent node if any of the son nodes change.
`For example the dependency graph illustrated in
`FIG. 1 shows that x1.0 depends on x1.c, and thefile
`a.out depends on x1.0 and 22.0. The Makefile that rep-
`resents this graph is shown in Table I below.
`TABLEI
`xl.o
`ce
`xLe
`ce
`x2.c
`x2.0
`
`—c¢ce x2.c
`
`a.out:
`
`x1.0:
`
`x2.0
`x2.0
`
`xlc
`
`xl.o
`xlo
`
`—¢
`
`
`
`4,558,413
`
`4
`IEEE Transactions on Software Engineering, Vol. 1(4),
`pp. 25-34, April 1981.
`A programmer who wants to change a file under
`SCCScontrol does so by (1) 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 changesare 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 madeas part of “delta 2.3". While the program-
`merhas “checked-out” the file, no other programmers
`may store new deltas. Other programmers may obtain
`copies of thefile for reading, however. SCCS requires
`that there be only one modification ofa file at a time.
`There is much evidence this is a useful restriction in
`multi-person projects. See Glasser, Supra. SCCSstores
`all versions of a file in a special file that has a name
`prefixed by “s.”. This ‘‘s.” 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 (SMF) 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 Software &
`Applications Conference, pp. 527-532, Oct. 29-31, 1980.
`The SMF uses Make and SCCS augmentedbyspecial
`files called slists, which list desired versions offiles by
`their SCCS version number.
`A slist may refer to otherslists as well as files. In the
`SMF,a system consists of a masterslist and references
`to a set of slists that describe subsystems. Each subsys-
`tem may in turn describe other subsystemsorfiles that
`are part of the system. The SMFintroduces the notion
`of a consistent software system: only one version of a
`file can be presentin all slists that are part of the system.
`Part of the process of building a system is checking the
`consistency.
`SMFalso requires that eachslist refer to at least one
`Makefile. Building a system involves (1) obtaining the
`SCCSversions of each file, as described in eachslists,
`(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 ofslists, where ab.sl is the masterslist.
`SMFincludes 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-
`grammeris making changesto the software 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 Corpo-
`ration and set forth in the Articles of Ira P. Goldstein
`and Daniel G. Bobrow, “A Layered Approachto Soft-
`ware Design”, Xerox PARC Technical Report CSL-80-5,
`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,
`Calif., August 1980; Ira P. Goldstein and Daniel G.
`Bobrow,“Representing Design Alternatives”, Proceed-
`
`0
`
`20
`
`35
`
`45
`
`35
`
`65
`
`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
`makerule i.e., compile x1.c,if the file modification time
`of x1.c is newer than that of x1.o.
`The description mechanism shownin Table I is intu-
`itively easy to use and explain. The simple notion of
`dependency,e.g., a file x1.o, that depends on xl.c must
`be recompiled if x1.c is newer, works correctly vitually
`all the time. The Makefile can also be used as a place to
`‘keep useful commands the programmer might want to
`execute, €.g.,
`print:
`pr xl.c x2.c
`defines a name “print” that depends on no otherfiles
`(names). The command “make print” will print the
`source files xi.c and x2.c. There is usually only one
`Makefile per directory, and, by convention, the soft-
`warein that directory is described by the Makefile. This
`makes it easy to examine unfamiliar directories simply
`by reading the Makefile.
`Makeis an extremely fast and versatile tool that has
`become very popular among UNIX users. Unfortu-
`nately, Make uses modification times from thefile sys-
`tem to tell which files need to be re-made. These times
`are easily changed by accident and are a very crude
`way ofestablishing consistency. Often the programmer
`omits some of the dependencies in the dependency
`graph, sometimes by choice. Thus, even if Make em-
`ployed a better algorithm to determine the consistency
`of a system, the Makefile could still omit many impor-
`tant files of a system.
`(2) Source Code Control System (SCCS)
`The Source Code Control System (SCCS) manages
`versions of C source programsenforcing a check-in and
`check-out regimen, controlling access to versions of
`programs being changed. For a description of such
`systems, see the Articles of Alan L. Glasser, ‘The Evo-
`lution of a Source Code Control System”, Proc. Soft-
`ware Quality & Assurance Workshop, Software Engi-
`neering Notes, Vo

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