DE69230452T2 - Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen - Google Patents
Verfahren und Vorrichtung zur Änderungskontrolle in mehreren EntwicklungsumgebungenInfo
- Publication number
- DE69230452T2 DE69230452T2 DE69230452T DE69230452T DE69230452T2 DE 69230452 T2 DE69230452 T2 DE 69230452T2 DE 69230452 T DE69230452 T DE 69230452T DE 69230452 T DE69230452 T DE 69230452T DE 69230452 T2 DE69230452 T2 DE 69230452T2
- Authority
- DE
- Germany
- Prior art keywords
- delta
- descriptive
- entry
- work
- retrieved
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 126
- 230000008859 change Effects 0.000 title claims description 32
- 238000011161 development Methods 0.000 title claims description 16
- 230000018109 developmental process Effects 0.000 claims description 37
- 238000003491 array Methods 0.000 claims description 18
- 238000012986 modification Methods 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 7
- 230000008131 children development Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims 2
- 238000011084 recovery Methods 0.000 claims 1
- 230000001960 triggered effect Effects 0.000 claims 1
- 238000012423 maintenance Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000010076 replication Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Diese Erfindung bezieht auf das Gebiet der Quellcodekontrolle bei der Computersoftwareentwickiung. Insbesondere bezieht sich die vorliegende Erfindung auf die Quellcodekontrolle für die Softwareentwicklung in wenigstens zwei zueinander in Beziehung stehenden Softwareentwicklungsumgebungen.
- Bei einem großen Softwareentwicklungsprojekt 10 (Fig. 1a) arbeiten typischerweise verschiedene Programmierer oder Programmiergruppen 12a-12d miteinander, um eine einzige Software 14 zu entwickeln. Wie es in Fig. 1a veranschaulicht ist, ist die Software logisch in Abschnitte 16a-16d und 18a-18d unterteilt, welche jeweils verschiedene Personen oder Gruppen 12a-12d schreiben, in ihr die Fehler beseitigen und sie aktualisieren.
- Es wurden unterschiedliche Quellcodemanagement-Softwareprogramme entwickelt, um ein effizientes Mittel zum Koordinieren und Dokumentieren der Programmieraktivitäten einer Entwicklungsgruppe bereitzustellen, beispielsweise das Source Code Control System (SCCS) und das Revision Control System (RCS). Typischerweise kontrolliert ein Quellcodemanagementsystem 20 (Fig. 1b) die Änderungen an einem Quellmodul 22, indem es zum Wächter des Quellmoduls wird. Um Speicherraum einzusparen, werden typischerweise nur die ursprüngliche Basis 24a und eine Beschreibung jeder nachfolgenden Änderungen (Delta) 24b-24d gespeichert. Darüber hinaus weist das Quellcodemanagementsystem 20 eine Sammlung von (nicht gezeigten) Werkzeugen zum Verwalten der Wiedergewinnung 26b und der Sicherung 26c jeder Edition eines Quellmoduls 28a und 28b auf. Sobald ein Quellmodul 22 in das Managementsystem 20 aufgenommen wurde 26a, kann eine Edition des Quellmoduls 24a-24c wiedergewonnen bzw. gelesen 26b und gesichert 26c werden, indem nur die geeigneten Werkzeuge des Managementsystems verwendet werden.
- Wenn beispielsweise unter SCCS ein Quellmodul "program.c" 32 (Fig. 1c) unter dessen Kontrolle gebracht wird 36a, bringt SCCS das Quellmodul 34a in eine Kontrolldatei "s.program.c" 34 und weist eine SCCS-Identifikationsnummer (SID) "1.1,' zu, die sein Editionsniveau anzeigt. Von diesem Punkt an muß ein Entwickler das geeignete SCCS-Werkzeug (nicht gezeigt) verwenden, um die Edition "1.1" des "program.c" 38a zu "holen" 36b, um daran Änderungen vorzunehmen. Nachdem die Änderungen vorgenommen sind, hat der Entwickler in ähnlicher Weise die richtigen SCCS-Werkzeuge zu verwenden, um die Änderungen zu "speichern" 36c. SCCS hält dann die Änderungen als inkremeritales Delta 34b gegenüber dem ursprünglichen Quellmodul 34a fest, ordnet das Delta 34b innerhalb der Kontrolldatei "s.program.c" 34 an und weist dem Delta 34b ein neues SID "1.2" zu, was sein neues Editionsniveau anzeigt. Um eine nachfolgende Anforderung des Editionsniveaus "1.2" des "program.c" zu befriedigen, baut SCCS das Editionsniveau "1.2" auf, indem das ursprüngliche Quellmodul 34a und das inkrementale Delta 34b kombiniert werden.
- Für eine nähere Beschreibung von SCCS und RCS siehe Rochkind, M. J., The Source Code Control System, National Conference on Software Engineering, ist Proceeding, Washington D. C., 11.-12. September 1975; Seiten 37-43 (IEEE Computer Society 1975); Thomas, R., "The Source Code Control System, Unixworld, Band 1, Nr. 3, Seiten 69-71 (1984); Tichy, W. F., Design, Implementation and Evaluation of a Revisions Control System, IEEE 6th Conference on Software Engineering, 13.-16. September 1982, Tokyo, Japan, Seiten 58- 67.
- In der Praxis gibt es zu jedem Zeitpunkt zusätzlich zu der in der Entwicklung befindlichen Version 42a, 42b oder 42c (Fig. 2a), welche ständig aktualisiert wird, um Fehler zu beseitigen, neue Merkmale hinzuzufügen und vorhandene Möglichkeiten zu optimieren, andere im Test 44a oder 44b befindliche oder in der Praxis 46 unterstützte Versionen, welche ebenfalls aktualisiert werden, um Fehler zu beseitigen und neue Merkmale hinzuzufügen. Somit bieten viele Computersysteme eine Unterstützung für Hierarchien von zueinander in Beziehung stehenden Umgebungen zur Softwareentwicklung, beispielsweise das Network Software Environment (NSE), das auf von Sun Microsystems, Inc. aus Mountain View, Kalifornien, hergestellten Sun-Workstations unterstützt wird (Sun ist eine registrierte Handelsmarke der Sun Microsystems, Inc.).
- Eine Umgebung 60 oder 61 ist eine benannte Hülle einer Sammlung von Objekten 64, 66 oder 65, 67 (Fig. 2b). Typischerweise sind die Objekte unter einem Verzeichnis 62, 63 organisiert. Eine Umgebung 60 oder 61 kann auf einer beliebigen Maschine 52, 54, 56 oder 58 in einem Netzwerk von Computern 60 erzeugt werden. Ein Objekt 64, 65, 66, oder 67 ist ein benannter Datenbehälter. Ein Objekt 64, 65, 66 oder 67 kann ein einfaches Objekt 66 oder 67 oder ein Verbundobjekt 64 oder 65 sein. Ein einfaches Objekt 66 oder 67 ist ein Objekt, das keine anderen Objekte enthält, beispielsweise eine Quelldatei. Ein Verbundobjekt 64 oder 65 ist eine Liste anderer Objekte, einschließlich anderer Verbundobjekte, beispielsweise eine Komponente, die eine Liste ihrer Quelldateien enthält. Die Objekte 64, 65, 66 und 67 eines Objekts 60, 61 können physisch auf irgendeiner Maschine 52, 54, 56 oder 58 in dem Netzwerk 50 angeordnet sein.
- Typischerweise sind die Umgebungen 71-76 in einer Hierarchie 70 (Fig. 2c) organisiert. Beispielsweise kann ein Software-Entwicklungsprojekt eine Großeltern-Freigabe (Release)-Umgebung 71 zum Halten der letzten Revision des Projekts 80 und früherer Revisionen, die an die Kunden (nicht gezeigt) freigegeben worden sind, eine Mehrzahl von Elternintegrationsumgebungen 72, 73, die jeweils die letzte Revision einer Komponente 81 oder 82 des Projekts und früherer sich im Test befindlicher Revisionen halten, und eine Mehrzahl von Kindentwicklungsumgebungen 74, 75 und 76, die jeweils die letzten Editionen verschiedener Unterkomponenten 83-86, die durch einzelne Entwickler modifiziert worden sind, und (nicht gezeigte) frühere Editionen halten, umfassen. Die logische Beziehung zwischen den Umgebungen kann zu einem beliebigen Zeitpunkt neu definiert werden.
- Ein Entwickler, der ein Objekt zu modifizieren wünscht, erwirbt eine neue Edition des Objekts 92 oder 93 in einer der Kindumgebungen aus der letzten Revision des Objekts 91 in der Elternumgebung des Kinds (Fig. 2d). Nach dem Modifizieren der neuen Edition des Objekts 92 oder 93 in der Kindumgebung bringt der Entwickler die Modifikationen in die letzte Revision des Objekts 91 oder 96 in der Elternumgebung ein, indem er die letzte Revision des Objekts 91 oder 96 mit der modifizierten Edition des Objekts 94 oder 95 in der Kindumgebung wieder in Einklang bringt. Sofern die letzte Revision des Objekts 91 in der Elternumgebung die gleiche Revision des Objekts 91 in der Elternumgebung ist, die zuvor für die modifizierte Edition des Objekts 94 in der Kindumgebung erlangt wurde, ist der Wiederabstimmprozeß erfolgreich, was zu einer in der Elternumgebung hergestellten neuen letzten Revision des Objekts 96 führt.
- Wenn die letzte Revision des Objekts 96 in der Elternumgebung nicht dieselbe Revision des Objekts 91 in der Elternumgebung ist, die zuvor für die modifizierte Edition des Objekts 95 in der Kindumgebung erworben wurde, so ist der Wiederabstimmprozeß nicht erfolgreich, was zu der Initiierung des Resynchronisationsprozesses führt, um die Modifikationen der letzten Revision des Objekts 96 in die letzte Edition des Objekts 95 in der Kindumgebung einzubringen. Der Resynchronisationsprozeß erwirbt eine neue Edition des Objekts 97 in die Kindumgebung aus der neuen letzten Revision des Objekts 96 in der Elternumgebung. Nach dem Auflösen der Differenzen zwischen der modifizierten Edition des Objekts 95 und der erworbenen Edition des Objekts 97 wird die letzte Revision des Objekts 96 in der Elternumgebung wiederum mit der konsolidierten Edition des Objekts 98 in der Kindumgebung abgestimmt. Da die letzte Revision des Objekts 96 in der Elternumgebung ungeändert blieb, ist der Wiederabstimmprozeß erfolgreich, was dazu führt, daß eine weitere neue letzte Revision des Objekts 99 in der Elternumgebung hergestellt wird.
- Für eine nähere Beschreibung der Network Software Environment siehe Network Software Environment, Reprint des Sun Technical Report, FE 197-0 (Copyright 1989, Sun Microsystems, Inc.).
- Die herkömmlichen Quellcodemanagementsysteme haben, wenn sie im Kontext einer Hierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen verwendet werden, wenigstens einen signifikanten Nachteil, nämlich, daß sie nicht in der Lage sind, die gesamte Vorgeschichte der Änderungen an dem Quellmodul einfangen zu können. Dies ist unter Bezugnahme auf Fig. 2e veranschaulicht. Es sei angenommen, daß eine erste und eine zweite Kindumgebung (C1 und C2) 134, 136 jeweils eine Revision 1.1 eines Quellmoduls 102c und 102d von ihrer Großelternumgebung (GP) 130 über ihre Elternumgebung (P) 132 erworben haben. C1 erzeugt die Editionen 1.2, 1.3 und 1.4, welche als drei Deltas (d. h. Änderungen) 104, 106 und 108 in dieser Umgebung 134 gehalten werden. In ähnlicher Weise erzeugt C2 Editionen 1.2, 1.3, welche ebenfalls als zwei Deltas 110 und 112 in dieser Umgebung 136 gehalten werden.
- Wenn C1 die letzte Revision 1.1 in P mit seiner letzten Edition 1.4 in Einklang bringt, wird nur eine einzige Revision 1.2, die als ein einziges Delta 114b gehalten wird, für die Deltastruktur 114a in P erzeugt. Die Details der Deltastruktur 104, 106 und 108 (d. h. die Vorgeschichte, die die ausgeführten Änderungen beschreibt) gehen verloren. Wenn jetzt C2 versucht, die letzte Revision 1.2 in P mit seiner letzten Revision 1.3 wieder in Einklang zu bringen, wird seine letzte Edition 1.3 automatisch mit der letzten Revision 1.2 in P resynchronisiert, was zu einer Kopie der letzten Revision 1.2 in P (nicht gezeigt) führt, die in C2 hergestellt wurde. C2 löst die Differenz auf, indem sie eine neue Edition 1.4 erzeugt, die als Delta 116 in seiner Umgebung 136 gehalten wird. Wenn C2 die letzte Edition 1.2 in P mit seiner letzten Edition 1.4 wieder in Einklang bringt, wird wiederum nur eine einzige Revision 173, die als einziges Delta 118b gehalten wird, für die gesamte Deltastruktur 118a in P erzeugt. Die Details der Deltastruktur 110, 112 und 116 (d. h. die Vorgeschichte, die die in C2 durchgeführten Änderungen beschreibt) gehen verlören.
- In ähnlicher Weise wird dann, wenn die letzte Revision 1.1 in GP mit der letzten Edition 1.3 in P wieder in Einklang gebracht wird, eine einzige Edition 1.2, die als ein einziges Delta 120b gehalten wird, für die Deltastruktur 120a in GP erzeugt. Wenn somit eine Onkelumgebung (U) 138 die letzte Revision 1.2 in GP erwirbt, sieht sie nur eine einzige Änderung, die als ein einziges Delta 120c in U gehalten wird. Sie hat keinen Zugriff auf irgendwelche Details, die das einzige Delta 120c bilden (d. h. auf die Vorgeschichte, die die in C1 und C2 durchgeführten Änderungen beschreibt).
- Es ist folglich eine Aufgabe der vorliegenden Erfindung, ein verbessertes Änderungskontrollsystem für Quellmodule, insbesondere Quellmodule in wenigstens zwei zueinander in Beziehung stehenden Entwicklungsumgebungen, zur Verfügung zu stellen.
- Es ist eine Aufgabe der vorliegenden Erfindung, ein verbessertes Änderungskontrollsystem für Quellmodule, insbesondere für Quellmodule in einer Hierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen, zur Verfügung zu stellen.
- Das Verfahren, die Einrichtung und das System gemäß der vorliegenden Erfindung lösen diese Aufgaben, indem ein Quellmodul und Änderungen an dem Quellmodul in zwei zueinander in Beziehung stehenden Softwareumgebungen als zwei Hierarchien von inkrementalen Deltas dargestellt und die Hierarchien ohne Anhäufung irgendwelcher der inkrementalen Deltas in einer der beiden Hierarchien verschmolzen werden, wenn die letzte Revision (Edition) des Quellmoduls in einer der Umgebungen mit der letzten Edition (Revision) des Quellmoduls in der anderen Umgebung wieder in Einklang gebracht (resynchronisiert) wird.
- Das Verfahren, die Einrichtung und das System gemäß der vorliegenden Erfindung führen die Verschmelzung der Hierarchien inkrementaler Deltas aus, indem sie eine Ersetzungs- Struktur kombinierter Deltas aufbaut. Das Verfahren, die Einrichtung und das System gemäß der vorliegenden Erfindung bauen die unterschiedlichen Abschnitte der Ersetzungsstruktur kombinierter Deltas separat auf, einschließlich der detaillierten Liste von Deltas und einer Beziehungstabelle. Verschiedene Schritte und Mittel werden benutzt, um Zwei- Wege-Querbezüge zwischen den Deltas in den alten Hierarchien und den Deltas in der kombinierten Hierarchie zur Verfügung zu stellen, um zu bestimmen, ob ein neuer Zweig für die Ersetzungsstruktur kombinierter Deltas erforderlich ist, um Deltaidentifikationen zuzuweisen, um Vorgänger- und Nachfolgerdeltas zu verknüpfen und um Revision/Edition-Niveauidentifikationen zuzuweisen.
- Fig. 1a-1c veranschaulichen ein typisches bekanntes Quellcodemanagementsystem in einer einzigen Softwareentwicklungsumgebung.
- Fig. 2a-2e veranschaulichen typische bekannte Quellcodemanagementsysteme in einer Hierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen.
- Fig. 3 veranschaulicht eine anhand der Hardwareelemente organisierte physische Ansicht eines Netzwerks von Computersystemen, das durch die vorliegende Erfindung benutzt werden kann.
- Fig. 4 veranschaulicht eine anhand der Systemsoftware organisierte logische Ansicht eines typischen Computersystems, wie es durch die vorliegende Erfindung benutzt wird.
- Fig. 5 veranschaulicht eine logische Ansicht des bevorzugten Ausführungsbeispiels der Einrichtung gemäß der vorliegenden Erfindung im Kontext einer beispielhaften Hierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen.
- Fig. 6 veranschaulicht eine logische Teilansicht der Deltastrukturdatei, die durch das Verfahren und die Einrichtung gemäß der vorliegenden Erfindung verwendet wird.
- Fig. 7a-7d veranschaulichen den Betriebsablauf des Verfahrens und der Einrichtung gemäß der vorliegenden Erfindung in dem Kontext einer beispielhaften Hierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen.
- Fig. 8 veranschaulicht die Anwendung des Verfahrens und der Einrichtung gemäß der vorliegenden Erfindung auf ein beispielhaftes Szenarium.
- Die folgende detaillierte Beschreibung wird weitgehend anhand von Programmprozeduren präsentiert, die auf einem Netzwerk von Computern ausgeführt werden. Diese prozeduralen Beschreibungen und Darstellungen sind diejenigen Mittel, die von Fachleuten verwendet, werden, um auf effektivste Weise das Wesen ihrer Arbeit anderen Fachleuten zu übermitteln.
- Unter einer Prozedur wird hier und im allgemeinen eine in sich konsistente Sequenz von Schritten verstanden, die zu einem gewünschten Ergebnis führen. Diese Schritte sind solche, die physikalische Bearbeitungen physikalischer Grö ßen erfordern. Üblicherweise, jedoch nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und auf andere Weise bearbeitet werden können. Hauptsächlich aus Gründen der allgemeinen Verwendung hat es sich gelegentlich als geeignet erwiesen, auf diese Signale als Bits, Werte, Elemente, Symbole, Objekte, Zeichen, Terma, Nummern oder dergleichen Bezug zu nehmen. Es sei jedoch daran erinnert, daß all diese und ähnliche Begriffe den richtigen physikalischen Größen zugeordnet sein sollen und bloß geeignete Bezeichnungen sind, die auf diese Größen angewendet werden.
- Darüber hinaus werden die ausgeführten Bearbeitungen oftmals mit Begriffen wie Addieren oder Vergleichen bezeichnet, welche üblicherweise den durch einen menschlichen Bediener ausgeführten geistigen Operationen zugeordnet sind. Keine derartige Fähigkeit eines menschlichen Bedieners ist bei irgendeiner der hier beschriebenen Operationen, welche Teil der vorliegenden Erfindung bilden, erforderlich und in den meisten Fällen auch nicht erwünscht; die Operationen sind Maschinenoperationen. Nützliche Maschinen zum Durchführen der Operationen gemäß der vorliegenden Erfindung umfassen digitale Mehrzweckcomputer oder andere ähnliche Einrichtungen. In sämtlichen Fällen sei an den Unterschied zwischen den Verfahrensoperationen beim Betreiben eines Computers und dem Verfahren der Berechnung selbst erinnert. Die vorliegende Erfindung bezieht sich auf Verfahrensschritte zum Betreiben eines Computers bei der Verarbeitung elektrischer oder anderer physikalischer Signale, um weitere gewünschte physikalische Signale zu erzeugen. Die vorliegende Erfindung bezieht sich darüber hinaus auf Einrichtungen zum Durchführen dieser Operationen. Diese Einrichtungen können speziell für die erforderlichen Zwecke konstruiert sein oder können einen Mehrzweckcomputer umfassen, der selektiv durch ein in dem Computer gespeichertes Computerprogramm aktiviert oder umkonfiguriert wird. Die hier angegebenen Prozeduren beziehen sich nicht vollständig auf einen speziellen Computer oder eine andere spezielle Einrichtung. Insbesondere können zahlreiche Mehrzweckmaschinen mit den gemäß den hier angegebenen Lehren geschriebenen Prozeduren verwendet werden, oder es kann sich als geeigneter erweisen, spezialisiertere Einrichtungen zum Ausführen der erforderlichen Verfahrensschritte zu konstruieren. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird aus der unten angegebenen Beschreibung klar.
- Es werden ein Verfahren und Einrichtungen zum Kontrollieren von Änderungen eines Quellmoduls offenbart, welche insbesondere Anwendung auf eine Softwareentwicklung in wenigstens zwei zueinander in Beziehung stehenden Entwicklungsumgebungen finden. In der folgenden Beschreibung werden aus Gründen der Erläuterung spezielle Anzahlen, Materialien und Konfigurationen angegeben, um ein besseres Verständnis der vorliegenden Erfindung zu erreichen. Für einen Fachmann ist es jedoch klar, daß die vorliegende Erfindung auch ohne die speziellen Details ausgeführt werden kann. An anderen Stellen werden gut bekannte Systeme in schematischer oder Blockdarstellungsform gezeigt, um die vorliegende Erfindung nicht unnötigerweise zu verdunkeln.
- Es wird jetzt auf Fig. 3 Bezug genommen, in der eine Blockdarstellung gezeigt ist, die eine nach der Hardware organisierte physische Ansicht eines Netzwerks von Computersystemen veranschaulicht, die von der vorliegenden Erfindung verwendet werden. Das Netzwerk von Computersystemen 140 umfaßt wenigstens ein Computersystem 141a. Wenn mehr als ein Computersystem 141a und 141b benutzt werden, sind die Computersysteme 141a und 141b miteinander über ein Netzwerk 142 gekoppelt. Jedes Computersystem 141a oder 141b weist eine zentrale Verarbeitungseinheit (CPU) 143a oder 143b, eine Speichereinheit 145a oder 145b, eine Massenspeichereinheit 147a oder 147b und eine Eingabe/Ausgabe(I/O)- Einrichtung 149a oder 149b auf. Die Eigenschaften dieser Hardwareelemente jedes der Computersysteme 141a oder 141b, wie beispielsweise die Geschwindigkeit oder Größe, können voneinander abweichen. Diese Hardwareelemente sind diejenigen, die typischerweise in den meisten Mehrzweckcomputersystemen und in nahezu allen speziellen Computersystemen zu finden sind. Tatsächlich sind die verschiedenen Hardwareelemente, die in jedem der Computersysteme 141a und 141b enthalten sind, vorgesehen, diese breite Kategorie von Datenverarbeitungssystemen zu repräsentieren. Spezielle Beispiele geeigneter Datenverarbeitungssysteme, die die Rolle dieser Computersysteme 141a und 141b ausfüllen können, umfassen die von Sun Microsystems, Inc., Mountain View, Kalifornien, hergestellten Computersysteme. Andere Computersysteme, die ähnliche Fähigkeiten aufweisen, können selbstverständlich auf einfache Weise angepaßt werden, um die unten beschriebenen Funktionen durchzuführen.
- Es wird auf Fig. 4 Bezug genommen, in der eine Blockdarstellung gezeigt ist, die eine durch ihre Systemsoftware organisierte logische Ansicht eines typischen Computersystems veranschaulicht, das von der vorliegenden Erfindung verwendet wird. Die Systemsoftware 150 umfaßt ein Betriebssystem 151, ein Dateisystem 152 und wenigstens einen Sprachcompiler 153. Die Anwendungen 154, die auf den Computersystemen 150 ausgeführt werden, verwenden die darunter liegenden Systemdienste 151-153, die von der Systemsoftware angeboten werden. Die auf jedem der Computersysteme verwendete Systemsoftware kann unterschiedlich sein, vorausgesetzt, sie bietet äquivalente Funktionen und ist in der Lage, mit den anderen zu kommunizieren. Diese Softwareelemente sind diejenigen, die üblicherweise bei den meisten Mehrzweckcomputersystemen und nahezu sämtlichen speziellen Computersystemen zu finden sind. Tatsächlich stehen die verschiedenen Softwareelemente, die in jedem der Computersysteme enthalten sind, stellvertretend für diese breite Kategorie von Systemsoftware. Spezielle Beispiele einer ge eigneten Systemsoftware, die die Rolle dieser Systemsoftware 150 der von der vorliegenden Erfindung verwendeten Computersysteme ausfüllen können, umfassen das UNIX-Betriebssystem, sein Dateisystem und seine Shell-Kommandosprache (UNIX ist ein registriertes Warenzeichen von AT & T). Andere Systemsoftware, die ähnliche Fähigkeiten aufweist, kann selbstverständlich auf einfache Weise angepaßt werden, um die unten beschriebenen Funktionen durchzuführen.
- Es wird jetzt auf Fig. 5 Bezug genommen, in der eine Blockdarstellung gezeigt ist, die eine logische Ansicht des bevorzugten Ausführungsbeispiels der Einrichtung gemäß der vorliegenden Erfindung im Kontext einer beispielhaften Hierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen veranschaulicht. Das bevorzugte Ausführungsbeispiel der Einrichtung gemäß der vorliegenden Erfindung umfaßt auf dem Netzwerk von Computersystemen, die die oben beschriebene Systemsoftware aufweisen, eine Mehrzahl von ausgeführten Prozeduren 181-186 und eine Mehrzahl von Deltastrukturdateien 164, 194, 204 und 214 und eine Mehrzahl von Arbeitsdateien (working files) 170-177, die gespeichert werden. Die Prozeduren 181-186 gestatten in Verbindung mit den Deltastrukturdateien 164, 194 und 204, 214 und den Arbeitsdateien 170-177, daß die Änderungen an einem Quellmodul in der Beispielhierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebunden 160 ohne Verlust irgendwelcher Details der Änderungsvorgeschichte kontrolliert werden. Obwohl das Verfahren und die Einrichtungen gemäß der vorliegenden Erfindung im Kontext der Kontrolle von Änderungen eines Quellmoduls in einer Beispielhierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen beschrieben werden, sei angemerkt, daß die vorliegende Erfindung nicht auf ein einziges Quellmodul und auch nicht auf hierarchische Softwareentwicklungsumgebungen beschränkt ist. Die vorliegende Erfindung ist anwendbar auf die Kontrolle von Änderungen einer beliebigen Anzahl von Quellmodulen in zwei beliebigen zueinander in Beziehung stehenden Softwareentwicklungsumgebungen. Die zueinander in Beziehung stehenden Softwareentwicklungsumgebungen können in einer beliebigen Topologie organisiert sein.
- Die Prozeduren umfassen eine Aufrechterhaltungsprozedur 181, eine Replikationsprozedur 182, eine Verschmelzungsprozedur 183, eine Tabellenaufbauprozedur 184, eine Listenaufbauprozedur 185 und eine Ebenenidentifikationszuweisungsprozedur 186. Die (als in der Großeltern(GP)-Umgebung 161 ausgeführt gezeigten) Prozeduren 181-186 können in irgendeiner der Entwicklungsumgebungen 161, 191, 201 oder 211 oder in einer beliebigen Kombination der Entwicklungsumgebungen 161, 191, 201 und 211 ausgeführt werden. Darüber hinaus können die gleichen Kopien dieser Prozeduren 181-186 zwischen den Entwicklungsumgebungen 161, 291, 201 und 211 auf vielfältige Weise unter Verwendung der von der obenbeschriebenen Systemsoftware zur Verfügung gestellten Systemdienste geteilt und zugegriffen werden.
- Die Deltastrukturdateien weisen wenigstens eine Deltastrukturdatei 164, 194, 204 oder 214, jeweils eine für jede Umgebung 161, 191, 201 oder 211, auf. Wie oben beschrieben, kann auf die Deltastrukturdateien 164, 194, 104 und 214 durch die Prozedur 181-186 auf vielfältige Weise unter Verwendung der Systemdienste der oben beschriebenen Systemsoftware zugegriffen werden. Die Arbeitsdateien 170-177 umfassen Eingabetabellen A und B, 170 und 171, eine Ausgabetabelle 172, Zwei-Wege-Assoziativ-Arrays A und B, 173 und 174, Arbeitslisten A und B, 175 und 176, und eine kombinierte Deltastruktur 177. In ähnlicher Weise können die (als in der Großeltern(GP)-Umgebung 161 gespeichert gezeigten) Arbeitsdateien 170-177 in irgendeiner der Entwicklungsumgebungen 161, 191, 201 oder 211 oder in einer beliebigen Kombination der Entwicklungsumgebungen 161, 191, 201 und 211 gespeichert werden. In gleicher Weise können dieselben Kopien dieser Arbeitsdateien 170-177 unter den Entwicklungsumgebungen 161, 191, 201 und 211 auf vielfältige Weise unter Verwendung der von der oben beschriebenen Systemsoftware zur Verfügung gestellten Systemdienste geteilt und zugegriffen werden.
- Es wird jetzt auf Fig. 6 Bezug genommen, in der eine Blockdarstellung gezeigt ist, die eine partielle logische Ansicht der von der vorliegenden Erfindung verwendeten Deltastrukturdatei veranschaulicht. Jede Deltastrukturdatei dient dem Speichern eines Quellmoduls und seiner nachfolgenden Änderungen als Hierarchie von inkrementalen Deltas. Die ursprüngliche Form des Quellmoduls ist als Wurzeldelta (root delta) gespeichert. Änderungen an dem Quellmodul und seine Revisionen/Editionen werden als inkrementale Deltas gespeichert. Die Deltastrukturdatei kann mit einer Vielzahl logischer Organisationen implementiert werden. Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung benutzt eine logische Organisation, die durch SCCS unterstützt wird. Eine SCCS-kompatible Deltastrukturdatei 220 weist eine Tabelle von Deltabeziehungen 224 und eine Liste von Änderungsdeltas 234 auf.
- Die Tabelle von Deltabeziehungen 224 umfaßt wenigstens einen zeitlich geordneten Quelleneintrag 226, der eine bestimmte Deltabeziehung zwischen zwei Deltas beschreibt. Jeder zeitlich geordnete Tabelleneintrag 226 umfaßt eine Eintragsstartsteuerzeile 228, der eine Deltabeziehungszeile 230 und null oder mehr Kommentarzeilen 231 folgen, und endet mit einer Eintragsendesteuerzeile 232. Jede Deltabeziehungszeile 230 umfaßt einen Eintragsbeziehungszeilencode, der das Wesen der Zeile bezeichnet, einen Änderungsidentifizierer, der die Revisions/Editionsebene des dem Eintrag entsprechenden Delta anzeigt, eine Deltaseriennummer, die das zugehörige Delta des Eintrags identifiziert, und eine Vorgängerseriennummer, die den Vorgänger des zugehörigen Deltas des Eintrags identifiziert. Jede Eintragsstartsteuerzeile 228 umfaßt einen Eintragssteuerzeilencode, der den Beginn eines Tabelleneintrags anzeigt, und die Anzahl der Zeilen, die in dem zugehörigen Delta des Eintrags einge fügt, gelöscht und ungeändert sind. Die Anzahl der eingefügten oder gelöschten Zeilen kann gleich Null sein. Jede Kommentarzeile 231 umfaßt einen Eintragskommentarzeilencode, der das Wesen der Zeile bezeichnet, gefolgt von einer Zeile beschreibender Kommentare. Jede Eintragsendesteuerzeile 232 umfaßt einen Eintragssteuerzeilencode, der das Ende eines Tabelleneintrags anzeigt.
- Die Liste von Änderungsdeltas 234 umfaßt wenigstens ein Delta 236, das bei wenigstens einer Änderung eingefangen wurde. Jedes Delta 236 umfaßt eine Deltastartsteuerzeile 238, die von null oder mehr Deltatextzeilen 240 gefolgt wird, und endet mit einer Deltaendesteuerzeile 244. Jede Gruppe von Deltatextzeilen 240 reflektiert eine spezielle Änderung. Jede Deltastartsteuerzeile 238 umfaßt einen Deltasteuerzeilencode, der den Beginn eines Deltas anzeigt, einen Deltaaktionscode, der anzeigt, ob die Deltatextzeilen eingefügt oder gelöscht werden sollen, und eine Deltaseriennummer, die das Delta eindeutig identifiziert. Jede Deltaendesteuerzeile 244 umfaßt einen Deltasteuerzeilencode, der das Ende eines Deltas anzeigt.
- Es wird jetzt wieder auf Fig. 5 Bezug genommen; die Eingabetabellen A und B, 170 und 171, die Ausgabetabelle 172, die Zwei-Wege-Arrays A und B, 173 und 174, die Arbeitslisten A und B, 175 und 176, die Ausgabeliste 177 und die kombinierte Deltastruktur 178 dienen dem Aufbau einer kombinierten Deltastrukturdatei auf der Grundlage einer Eltern- und einer Kinddeltastrukturdatei. Die Eingabetabellen A und B, 170 und 171, dienen dem Speichern der Eltern- und Kind-Deltabeziehungstabellen. Die Ausgabetabelle 172 dient dem Speichern der kombinierten Deltabeziehungstabelle. Folglich weisen die Eingabetabellen A und B, 170 und 171, und die Ausgabetabelle 172 das gleiche Format wie die früher beschriebenen Eltern- und Kind-Deltabeziehungstabellen auf. Die Zwei-Wege-Arrays A und B, 173 und 174, dienen zur Herstellung von Querbezügen der Deltas in den Eingabetabellen A und B, 170 und 171, und der kombinierten Deltas in der Ausgabetabelle 1'72 zueinander. Jedes der Zwei-Wege-Arrays A oder B umfaßt eine Mehrzahl von Zwei-Wege-Querbezügen (die nicht gezeigt sind). Jeder Zwei-Wege-Querbezug stellt einen Querbezug zwischen einem Delta in der Eingabetabelle A oder B zu einem Delta in der Ausgabetabelle oder umgekehrt her. Die Querbezüge werden unter Verwendung der zugehörigen Deltaseriennummern in jeder Tabelle aufrechterhalten. Die Arbeitslisten A und B, 125 und 176, dienen dem Speichern der Eltern- und Kindlisten der Deltas. Die Ausgabeliste 177 dient dem Speichern der kombinierten Liste von Deltas. Die kombinierte Deltastruktur 178 dient dem Speichern der kombinierten Deltastruktur. Das Aufbauen einer kombinierten Deltastruktur auf der Grundlage einer Eltern- und einer Kind-Deltastrukturdatei wird unten detaillierter erörtert.
- Es wird weiterhin auf Fig. 5 Bezug genommen; die Aufrechterhaltungsprozedur 181 dient dem Aufrechterhalten des Quellmoduls als Wurzeldelta (root delta) und seiner nachfolgenden Änderungen als Zweigdeltas in einer Deltastrukturdatei in jeder der Entwicklungsumgebungen. Die Aufrechterhaltungsprozedur 181 wird durch die Benutzer der Entwicklungsumgebungen aufgerufen. Die Aufrechterhaltungsprozedur kann mit Hilfe von Werkzeugen einer Vielzahl von Standardquellcodemanagementsystemen implementiert werden, vorausgesetzt, daß diese mit der für die Deltastrukturdateien verwendeten logischen Organisation kompatibel sind. Die Aufrechterhaltungsprozedur 181 des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung umfaßt eine Mehrzahl von SCCS-Werkzeugen zum Wiedergewinnen einer bestimmten Revision/Edition des Quellmoduls und zum Speichern von Änderungen einer bestimmten Revision/Edition des Quellmoduls zurück als Änderungsdelta in das Basisquellmodul.
- Die Replikationsprozedur 182 dient zum Replizieren der Deltastrukturdatei einer Elternumgebung in eine ihrer Kindumgebungen, wenn die letzte Revision des Quellmoduls in der Elternumgebung in einer der Kindumgebungen erworben wird.
- Die Replikationsprozedur 182 wird indirekt durch den Benutzer der erwerbenden Kindumgebung aufgerufen, wenn er die Erwerbung anfordert. Die Replikationsprozedur 182 kann mit irgendeinem gut bekannten Dateikopierwerkzeug implementiert werden. Die Replikationsprozedur 182 des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung ist das Standardbetriebssystem-Dateikopierwerkzeug.
- Die Verschmelzungsprozedur 183 dient dem Verschmelzen einer Elterndeltastrukturdatei mit einer Kinddeltastrukturdatei, wenn die letzte Edition des Quellmoduls in der Kindumgebung mit der letzten Revision des Quellmoduls in der Elternumgebung resynchronisiert wird, und umgekehrt, wenn die letzte Revision des Quellmoduls in der Elternumgebung wieder mit der letzten Edition des Quellmoduls in der Kindumgebung in Einklang gebracht wird. Die Verschmelzungsprozedur 183 wird indirekt durch die Benutzer in den Kindumgebungen aufgerufen, wenn sie eine Resynchronisation oder Wiederabstimmung anfordern. Die Verschmelzungsprozedur 183 kann in einer beliebigen Programmiersprache implementiert sein. Der Betriebsablauf der Verschmelzungsprozedur 183 wird unten im Detail erörtert.
- Die Tabellenaufbauprozedur 184 und die Listenaufbauprozedur 185 dienen dem Aufbauen einer kombinierten Deltabeziehungstabelle und einer kombinierten Liste von Deltas auf der Grundlage der Eltern- und Kindtabellen der Deltabeziehungen und der Eltern- und Kindlisten der Deltas einer Eltern- und einer Kinddeltastrukturdatei. Diese Aufbauprozeduren, 184 und 185, werden von der Verschmelzungsprozedur 183 aufgerufen. Diese Aufbauprozeduren, 184 und 185, können in einer beliebigen Programmiersprache implementiert sein. Der Operationsablauf dieser Aufbauprozeduren, 184 und 185, wird unten detaillierter erörtert.
- Die Ebenenidentifikations(ID)-Zuweisungsprozedur 186 dient dem Zuweisen einer Änderungsidentifikation zu einem Delta. Die Ebenen-ID-Zuweisungsprozedur 185 muß in der Lage sein, in Betracht zu ziehen, ob ein neuer Zweig zu einer Deltastruktur hinzugefügt wird, wenn sie die Änderungsidentifikation zuweist. Die Ebenen-ID-Zuweisungsprozedur 186 wird durch die Aufrechterhaltungsprozedur 181 und die Verschmelzungsprozedur 183 aufgerufen. Die Ebenen-ID-Zuweisungsprozedur 186 kann mit den Werkzeugen einer Vielzahl von Standardquellcodekontrollsystemen implementiert werden, vorausgesetzt, daß diese mit der für die Deltastrukturdateien verwendeten logischen Organisation kompatibel sind. Die Ebenen-ID-Zuweisungsprozedur 186 des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung umfaßt eine Mehrzahl von SCCS-Prozeduren zum Zuweisen von Änderungsidentifikationen zu Änderungsdeltas, die zu vorhandenen Zweigen oder neuen Zweigen hinzugefügt werden.
- Es wird jetzt auf die Fig. 7a und 7b Bezug genommen, in denen Blockdarstellungen gezeigt sind, die den Betriebsablauf des Verfahrens und der Einrichtungen gemäß der vorliegenden Erfindung im Kontext einer Beispielhierarchie von zueinander in Beziehung stehenden Softwareentwicklungsumgebungen veranschaulichen. Es wird zunächst auf Fig. 7a Bezug genommen. Anfänglich wird das Quellmodul als Wurzeldelta in einer Wurzelhierarchie inkrementaler Deltas in einer Wurzelumgebung gehalten, Block 255, wobei die Aufrechterhaltungsprozedur in Verbindung mit der Ebenen-ID-Zuweisungsprozedur verwendet wird. Nachfolgende Änderungen an dem Quellmodul und an seinen Revisionen in der Wurzelumgebung werden als inkrementale Deltas in der Wurzelhierarchie inkrementaler Deltas gehalten, Block 254, wobei die Aufrechterhaltungsprozedur in Verbindung mit der Ebenen-ID-Zuweisungsprozedur verwendet wird. Die gesamte Wurzelhierarchie inkrementaler Deltas wird repliziert, um eine erste Generation einer Nachkommenshierarchie der Wurzelhierarchie inkrementaler Deltas in einer ersten Generation einer Nachkommensumgebung zu reproduzieren, wenn die letzte Revision des Quellmoduls in der Wurzelumgebung durch eine erste Generation einer Nachkommensumgebung unter Verwendung der Replikationsprozedur erworben wird, Block 256. Dann werden nachfolgende Änderungen an dem Quellmodul und seiner Editionen in der ersten Generation einer Nachkommensumgebung als Zweigdeltas in der ersten Generation einer Nachkommenshierarchie der Wurzelhierarchie inkrementaler Deltas gehalten, Block 258, wobei die Aufrechterhaltungsprozedur in Verbindung mit der Ebenen-ID-Zuweisungsprozedur verwendet wird.
- Die Wurzelhierarchie inkrementaler Deltas wird mit der ersten Generation der Nachkommenshierarchie der Wurzelhierarchie inkrementaler Deltas verschmolzen, um die letzte Edition des Quellmoduls in der Nachkommensumgebung der ersten Generation mit der letzten Revision des Quellmoduls in der Wurzelumgebung zu resynchronisieren, Block 260, wobei die Verschmelzungsprozedur in Verbindung mit den Aufbauprozeduren und der Ebenen-ID-Zuweisungsprozedur verwendet wird. In ähnlicher Weise wird die Nachkommenshierarchie der ersten Generation der Wurzelhierarchie inkrementaler Deltas mit der Wurzelhierarchie inkrementaler Deltas verschmolzen, um wieder die letzte Revision des Quellmoduls in der Wurzelumgebung mit der letzten Edition des Quellmoduls in der Nachkommensumgebung der ersten Generation in Einklang zu bringen, Block 262, wobei die Verschmelzungsprozedur in Verbindung mit den Aufbauprozeduren und der Ebenen-ID-Zuweisungsprozedur verwendet wird.
- Zusätzlich wird dann, wenn die Hierarchie von Softwareentwicklungsumgebungen mehr als eine Nachkommensgeneration von Umgebungen aufweist, eine Nachkommenshierarchie der nten Generation der Wurzelhierarchie inkrementaler Deltas in einer Nachkommensumgebung der n-ten Generation repliziert, um eine Nachkommenshierarchie der n + 1-ten Generation der Wurzelhierarchie inkrementaler Deltas in einer Nachkommensumgebung der n - i-1--ten Generation, einer direkten Nachkommensumgebung der n-ten Generation von Nachkommensumgebungen, zu reproduzieren, um die letzte Revision des Quellmoduls in der Nachkommensumgebung der n-ten Generation für die Nachkommensumgebung der n + 1-ten Generation unter Ver wendung der Replikationsprozedur zu erwerben, Block 266. In ähnlicher Weise werden nachfolgende Änderungen des Quellmoduls und seiner Editionen in der Nachkommensumgebung der n + 1-ten Generation als Zweigdeltas der Nachkommenshierarchie der n + 1-ten Generation der Wurzelhierarchie inkrementaler Deltas unter Verwendung der Aufrechterhaltungsprozedur in Verbindung mit der Ebenen-ID-Zuweisungsprozedur aufrechterhalten, Block 268.
- In gleicher Weise wird die Nachkommenshierarchie der nten Generation der Wurzelhierarchie inkrementaler Deltas mit der Nachkommenshierarchie der n + 1-ten Generation der Wurzelhierarchie inkrementaler Deltas verschmolzen, um die letzte Edition des Quellmoduls in der Nachkommensumgebung der n + 1-ten Generation mit der letzten Revision des Quellmoduls in der Nachkommensumgebung der n-ten Generation unter Verwendung der Verschmelzungsprozedur in Verbindung mit den Aufbauprozeduren und der Ebenen-ID-Zuweisungsprozedur zu resynchronisieren, Block 270. Die Nachkommenshierarchie der n + 1-ten Generation der Wurzelhierarchie inkrementaler Deltas wird mit der Nachkommenshierarchie der n-ten Generation der Wurzelhierarchie inkrementaler Deltas verschmolzen, um wieder die letzte Revision des Quellmoduls in der Nachkommensumgebung der n-ten Generation mit der letzten Edition des Quellmoduls in der Nachkommensumgebung der n + 1- ten Generation unter Verwendung der Aufrechterhaltungsprozedur in Verbindung mit den Aufbauprozeduren und der Ebenen-ID-Zuweisungsprozedur in Einklang zu bringen.
- Es wird jetzt auf Fig. 7 Bezug genommen. Die Verschmelzungsprozedur verschmilzt eine Hierarchie inkrementaler Deltas mit einer anderen Hierarchie inkrementaler Deltas, Blöcke 260, 262, 270 oder 272, indem sie die Tabellenaufbauprozedur und die Listenaufbauprozedur aufruft, um eine kombinierte Tabelle von Deltabeziehungen und eine kombinierte Liste von Deltas auf der Grundlage der zwei Tabellen von Deltabeziehungen und der zwei Listen von Deltas der Deltastrukturdateien der zwei Hierarchien inkrementaler Deltas aufzubauen, Blöcke 280-294. In ihrer gegenwärtig bevorzugten Form bauen die Tabellenaufbau- und Listenaufbauprozeduren die kombinierte Tabelle von Deltabeziehungen und die kombinierte Liste von Deltas gleichzeitig auf. Dann baut die Verschmelzungsprozedur eine Ersetzungsdeltastrukturdatei auf der Grundlage der kombinierten Tabelle von Deltabeziehungen und kombinierten Listen von Deltas auf und ersetzt die Deltastrukturdatei der Zielhierarchie inkrementaler Deltas durch die Ersetzungsdeltastruktur, Block 296. Wenn die Eingabetabellen in absteigender chronologischer Reihenfolge gehalten werden, kehrt die Verschmelzungsprozedur die Reihenfolge der Tabelleneinträge in der kombinierten Tabelle von Deltabeziehungen um, wenn sie die Ersetzungsdeltastruktur aufbaut.
- Es wird weiterhin auf Fig. 7b Bezug genommen. Anfänglich initialisiert die Tabellenaufbauprozedur die Eingabetabellen A und B derart, daß sie jeweils gleich den beiden Tabellen der Deltabeziehungen sind, Block 280, sowie die Ausgabetabelle derart, daß sie leer ist, Block 282. Die Tabellenaufbauprozedur initialisiert darüber hinaus die Zwei- Wege-Assoziativarrays A und B derart, daß sie leer sind, Block 284. In ähnlicher Weise initialisiert die Listenaufbauprozedur die Arbeitslisten A und B derart, daß sie jeweils gleich den beiden Listen von Deltas sind, Block 280, und die Ausgabeliste derart, daß sie leer ist, Block 282. Dann entfernt die Aufbauprozedur einen Tabelleneintrag aus einer der beiden Eingabetabellen A und B selektiv, Block 286. Nach dem Entfernen eines Tabelleneintrags aktualisiert die Aufbauprozedur eines der Arrays auf der Grundlage des entfernten Tabelleneintrags, Block 288. Dann modifiziert die Tabellenaufbauprozedur den entfernten Tabelleneintrag in bedingter Weise und gibt den modifizierten Tabelleneintrag in die Ausgabetabelle aus, Blöcke 290 und 299. In ähnlicher Weise entfernt die Listenaufbauprozedur das zugehörige Delta aus einer der beiden Arbeitslisten A und B, Block 286, nachdem die Tabellenaufbauprozedur das Aktuali sieren eines der beiden Arrays beendet, den entfernten Tabelleneintrag bedingt modifiziert und den entfernten Tabelleneintrag in die Ausgabetabelle ausgegeben hat. Die Listenaufbauprozedur ersetzt in bedingter Weise die Deltaseriennummer des zugehörigen Deltas. Die Tabellenaufbau- und Listenaufbauprozeduren wiederholen das selektive Entfernen, Block 286, das Aktualisieren des Arrays, Block 288, das bedingte Modifizieren, Block 290, und das bedingte Ausgeben, Block 292, bis beide Eingabetabellen A und B leer geworden sind, Zweig 294a.
- Die Tabellenaufbauprozedur entfernt Tabelleneinträge aus den Eingabetabellen A und B, Black 286, auf folgende Weise. Wenn die Eingabetabelle A leer ist, entfernt die Tabellenaufbauprozedur den ältesten Eintrag der Eingabetabelle B. Wenn die Eingabetabelle B leer ist, entfernt die Tabellenaufbauprozedur den ältesten Eintrag der Eingabetabelle A. Wenn beide Eingabetabellen A und B nicht leer sind und die ältesten Einträge der Eingabetabellen A und B Duplikate voneinander sind, entfernt die Tabellenaufbauprozedur den ältesten Eintrag aus der Eingabetabelle B. Wenn beide Eingabetabellen A und B nicht leer sind und die ältesten Einträge der Eingabetabellen A und B keine Duplikate voneinander sind, entfernt die Tabellenaufbauprozedur den ältesten Eintrag der Eingabetabellen A und B.
- Die Tabellenaufbauprozedur aktualisiert die Arrays A und B, Block 288, auf folgende Weise. Sofern der entfernte Tabelleneintrag der älteste Eintrag der Eingabetabelle A ist, aktualisiert die Tabellenaufbauprozedur das Array A derart, daß es einen Querverweis zwischen dem aus der Eingabetabelle A entfernten Tabelleneintrag und dem nächsten Tabelleneintrag der Ausgabetabelle gibt. Sofern der entfernte Tabelleneintrag der älteste Eintrag der Eingabetabelle B ist, aktualisiert die Tabellenaufbauprozedur das Array B derart, daß es einen Querverweis zwischen dem aus der Eingabetabelle B entfernten Tabelleneintrag und dem nächsten Tabelleneintrag der Ausgabetabelle aufweist.
- Die Tabellenaufbauprozedur modifiziert bedingungsabhängig den entfernten Tabelleneintrag, Block 290, auf folgende Weise. Der entfernte Tabelleneintrag wird modifiziert, wenn er kein Duplikat des Tabelleneintrags ist, der aus der Eingabetabelle B entfernt wurde, anderenfalls wird er verworfen. Für einen entfernten Tabelleneintrag, der modifiziert werden soll, bestimmt die Tabellenaufbauprozedur zunächst, ob ein neuer Zweig erforderlich ist. Ein neuer Zweig ist erforderlich, wenn der entfernte Tabelleneintrag aus der Eingabetabelle B entfernt wurde, der entfernte Tabelleneintrag kein Duplikat irgendeines Tabelleneintrags in der Eingabetabelle A ist und der Vorgängertabelleneintrag des entfernten Tabelleneintrags keinen Querverweis zu einem Tabelleneintrag in der Ausgabetabelle enthält, welcher wiederum einen Querverweis zu einem Tabelleneintrag in der Eingabetabelle A enthält, wobei darüber hinaus der Tabelleneintrag in der Eingabetabelle A, auf den querverwiesen wird, ein Vorgängertabelleneintrag eines weiteren Tabelleneintrags der Eingabetabelle A ist, welcher sich auf dem gleichen Zweig wie der entfernte Tabelleneintrag befindet.
- Dann ruft die Tabellenaufbauprozedur die Ebenen-ID-Zuweisungsprozedur auf, um einen neuen Änderungsidentifizierer für das Delta auf der Grundlage des Ergebnisses der Bestimmung des neuen Zweiges zu erzeugen. Die Tabellenaufbauprozedur ersetzt den Änderungsidentifizierer in dem entfernten Tabelleneintrag durch den erzeugten Änderungsidentifizierer. Darüber hinaus ersetzt die Tabellenaufbauprozedur die Deltaseriennummer des dem entfernten Tabelleneintrag entsprechenden Deltas durch eine neue Deltaseriennummer. Die neue Deltaseriennummer wird gleich der um 1 erhöhten Anzahl der Tabelleneinträge gesetzt, die bis dahin in die Ausgabetabelle ausgegeben wurden. Die Tabellenaufbauprozedur ersetzt ferner die Vorgängerdeltaseriennummer des dem entfernten Tabelleneintrag entsprechenden Deltas durch eine neue Vorgängerdeltaseriennummer, die aus einem der beiden Arrays gewonnen wird. Die gewonnene Vorgängerdelta seriennummer ist gleich der Deltaseriennummer in der Ausgabetabelle, auf die durch eine Deltaseriennummer in ihrer Eingabetabelle querverwiesen wird, die gleich der Deltaseriennummer des Vorgängers ist.
- Die Listenaufbauprozedur entfernt bedingungsabhängig das zugehörige Delta, Block 290, auf folgende Weise. Das zugehörige Delta wird modifiziert, wenn es kein Duplikatdelta ist, das aus der Arbeitsliste B entfernt wurde, anderenfalls wird es verworfen. Wenn das zugehörige Delta nicht verworfen wird, ersetzt die Listenaufbauprozedur die Deltaseriennummer durch eine neue Deltaseriennummer, die aus den Arrays A oder B gewonnen wird. Die gewonnene neue Deltaseriennummer ist gleich der Deltaseriennummer in der Ausgabetabelle, auf die querverwiesen wird.
- Schließlich geben nach dem Modifizieren des entfernten Tabelleneintrags und des zugehörigen Deltas in der oben beschriebenen Weise die Tabellenaufbau- und Listenaufbauprozeduren den modifizierten Tabelleneintrag und das modifizierte Delta aus, Block 292, wobei dieser an das Ende der Ausgabetabelle bzw. an das Ende der Ausgabenliste angehängt werden.
- Es wird jetzt auf Fig. 8 Bezug genommen, in der eine Blockdarstellung gezeigt ist, die die Anwendung der vorliegenden Erfindung auf ein Beispielszenarium veranschaulicht. Es sei angenommen, daß eine erste und eine zweite Kindumgebung (C1 und C2), 324 und 326, jeweils eine Revision 1.1 eines Quellmoduls, 302c und 302d, aus ihrer Großelternumgebung (GP) 320 über ihre Elternumgebung (P) 322 erlangt haben. C1 erzeugt Editionen 1.2, 1.3 und 1.4, welche als drei inkrementale Deltas (d. h. Änderungen) 304a, 306a und 308a in ihrer Umgebung 324 gehalten werden. In ähnlicher Weise erzeugt C2 Editionen 1.2, 1.3, welche ebenfalls als zwei inkrementale Deltas 310a und 312a in ihrer Umgebung 326 gehalten werden.
- Wenn C1 die letzte Revision 1.1 in P mit seiner letzten Edition 1.4 unter Verwendung der vorliegenden Erfindung in Einklang bringt, werden drei Revisionen, 1.2, 1.3 und 1.4, die als drei separate inkrementale Deltas 304b, 306b und 308b gehalten werden, für die Deltastruktur 309a in P erzeugt. Im Unterschied zum Stand der Technik gehen die Details der Deltastruktur 304a, 306a und 308a (d. h. die Vorgeschichte, die die in C1 ausgeführten Änderungen beschreibt) nicht verloren. Wenn jetzt. C2 versucht, die letzte Revision 1.4 in P mit seiner letzten Revision 1.3 unter Verwendung der vorliegenden Erfindung in Einklang zu bringen, wird seine letzte Edition 1.3 automatisch mit der letzten Revision 1.4 in P resynchronisiert, was zu drei neuen Editionen 1.2, 1.3 und 1.4 führt, die als drei inkrementale Deltas 304c, 306c und 308c gehalten werden, und zu zwei umnumerierten Editionen 1.1.1 und 1.1.2, die als Zweigdeltas 310a und 312a in ihrer Umgebung 326 gehalten werden. C2 löst die Differenz auf, wobei sie eine neue Edition 1.5 erzeugt, die als inkrementales Delta 314a in ihrer Umgebung 326 gehalten wird. Wenn C2 die letzte Revision 1.4 in P mit ihrer letzten Edition 1.5 unter Verwendung der vorliegenden Erfindung wieder in Einklang bringt, werden drei weitere Revisionen I.1.I., 1.1.2 und 1.5, die als zwei separate Zweigdeltas 310b, 312b und ein inkrementales Delta 314b gehalten werden, für die Gesamtdeltastruktur 315a in P erzeugt. Im Unterschied zum Stand der Technik gehen die zusätzlichen Details der Deltastruktur 310a und 312a (d. h. die Vorgeschichte, die die in C2 ausgeführten Änderungen beschreibt) nicht verloren.
- In ähnlicher Weise werden dann, wenn die letzte Revision 1.1 in GP mit der letzten Edition 1.5 in P wieder in Einklang gebracht wird, sechs neue Editionen 1.2, 1.3, 1.4, 1.5, 1.1.1 und 1.1.2, die als vier separate inkrementale Deltas 304d, 306d, 308d und 314c und zwei Zweigdeltas 310c und 312c gehalten werden, für die Deltastruktur 315b in GP erzeugt. Wenn somit eine Onkelumgebung (U) 328 nachfolgend die letzte Revision 1.5 in GP erwirbt, sieht sie sämtliche der Änderungen, die als separate inkrementale oder Zweig deltas 315d gehalten werden, in U. Sie hat Zugriff auf die gesamte Änderungsvorgeschichte, die die in C1 und C2 ausgeführten Änderungen beschreibt.
- Während die Erfindung im wesentlichen anhand eines bevorzugten Ausführungsbeispiels im Kontext der Kontrolle von Änderungen an einem Quellmodul bei der Softwareentwicklung beschrieben wurde, werden Fachleute erkennen, daß die Erfindung nicht auf den hier beschriebenen Kontext oder die beschriebenen Ausführungsbeispiele beschränkt ist. Insbesondere kann die vorliegende Erfindung auf eine beliebige Anzahl von Quellmodulen und auf zueinander in Beziehung stehende Softwareumgebungen anderer Topologien angewendet werden. Die vorliegende Erfindung kann auf eine Dokument- oder Objektänderungskontrolle angewendet werden, vorausgesetzt, daß die Änderungen an einem Dokument oder an einem Objekt in Deltastrukturen gehalten und bearbeitet werden können, wie bei dem hier beschriebenen Quellmodul. Das Verfahren, die Einrichtungen und das System gemäß der vorliegenden Erfindung können mit Modifikationen und Änderungen innerhalb des Umfangs der anhängigen Ansprüche ausgeführt werden.
Claims (17)
1. In einem Computersystem mit einer Eltern- und einer Kind-
Entwicklungsumgebung,
wobei die Eltern- und die Kind-Entwicklungsumgebung eine
erste und eine zweite Delta-Hierarchie aufweisen, die ein
Quellmodul bzw. der Eltern- bzw. der Kind-Umgebung im
einzelnen bekannte Änderungen an dem Quellmodul repräsentieren,
ein Verfahren zum Verschmelzen der ersten und zweiten Delta-
Hierarchien miteinander, wobei das Verfahren sämtliche
Delta-Beziehungen der der Eltern- bzw. der Kind-Umgebung im
einzelnen bekannten Änderungen ohne das Erfordernis einer
computerunterstützten Verfolgung bewahrt, wobei das
Verfahren gekennzeichnet ist durch die Schritte:
(a) Speichern der Deltas in einer ersten und einer
zweiten Liste von Deltas und Speichern von den Deltas
entsprechenden deskriptiven Einträgen in einer ersten
und zweiten Tabelle von deskriptiven Einträgen der
ersten und zweiten Delta-Hierarchien (252);
(b) Initialisieren einer ersten und einer zweiten
Arbeitsliste und einer ersten und einer zweiten
Arbeitstabelle derart, daß sie der ersten und zweiten Liste
von Deltas und der ersten und der zweiten Tabelle
deskriptiver Einträge der ersten bzw. zweiten
Delta-Hierarchien gleichen, wobei die erste und zweite Liste von
Deltas in einer ersten und zweiten Entwicklungsumgebung
in identischer Weise chronologisch identifiziert sind,
und wobei die erste und zweite Tabelle deskriptiver
Einträge zeitlich geordnet sind und die erste bzw.
zweite Liste von Deltas entsprechend beschreiben (280);
(c) Initalisieren einer Ausgabetabelle, einer
Ausgabeliste (282), eines ersten und eines zweiten der ersten
bzw. zweiten Arbeitstabelle entsprechenden Zwei-Wege-
Assoziativ-Arrays derart, daß sie leer sind, zum
sequentiellen Empfangen modifizierter nicht-duplizierter
deskriptiver Einträge der ersten und zweiten
Arbeitstabelle, modifizierter nicht-duplizierter Deltas der
ersten und zweiten Liste von Deltas, und wobei das Zwei-
Wege-Assoziativ-Array Querverweis-Einträge speichert,
die Querverweise zwischen den deskriptiven Einträgen
der ersten und zweiten Arbeitstabelle und der
Ausgabetabelle darstellen (284);
(d) Wiedergewinnen von deskriptiven Einträgen und ihrer
zugehörigen Deltas aus der ersten und der zweiten
Arbeitstabelle und der ersten und der zweiten
Arbeitsliste, Ausgeben eines Zwei-Wege-Querverweis-Eintrags zu
dem zugehörigen Array des ersten und des zweiten Zwei-
Wege-Assoziativ-Arrays für jeden wiedergewonnenen
deskriptiven Eintrag, sobald der deskriptive Eintrag und
sein zugehöriges Delta wiedergewonnen sind, Herstellen
eines Querverweises des wiedergewonnenen deskriptiven
Eintrags auf den nächsten deskriptiven Eintrag der
Ausgabetabelle, wobei der Schritt des Wiedergewinnens
jeweils an einem deskriptiven Eintrag und seinem
zugehörigen Delta auf eine vorgegebene Ältester-Eintrag-Weise
durchgeführt wird, bis sämtliche deskriptiven Einträge
und ihre zugehörigen Deltas aus der ersten und zweiten
Arbeitstabelle und den ersten und zweiten
Arbeits-Deltas wiedergewonnen sind (288);
(e) Verwerfen jedes wiedergewonnenen deskriptiven
Eintrags und seines zugehörigen Deltas, sobald sein Zwei-
Wege-Querverweis-Eintrag ausgegeben worden ist, sofern
der wiedergewonnene deskriptive Eintrag ein Duplikat
eines zweiten deskriptiven Eintrags ist, welcher aus
der anderen Arbeitstabelle wiedergewonnen worden ist
(290);
(f) bedingtes Modifizieren jedes wiedergewonnenen
deskriptiven Eintrags und seines zugehörigen Deltas,
sofern sie nicht verworfen wurden, nachdem die
Entscheidung über das Verwerfen getroffen wurde, Ausgeben jedes
der wiedergewonnenen und modifizierten deskriptiven
Einträge und seines zugehörigen modifizierten Deltas in
die Ausgabetabelle bzw. die Ausgabeliste, sobald die
Modifikationen durchgeführt sind, wobei der Schritt des
Modifizierens in Abhängigkeit davon durchgeführt wird,
ob ein neuer Zweig in der verschmolzenen Hierarchie für
das zugehörige Delta des wiedergewonnenen und nicht
verworfenen dekriptiven Eintrags erzeugt werden soll,
und in Abhängigkeit von der Anzahl der wiedergewonnenen
deskriptiven Einträge, die bis dahin zu der
Ausgabetabelle ausgegeben wurden, und darüber hinaus unter
Verwendung der Querverweis-Einträge (290).
2. Das Verfahren nach Anspruch 1, wobei der Schritt (d) die
Schritte umfaßt:
(d.1) Wiedergewinnen des ältesten deskriptiven Eintrags
der zweiten Arbeitstabelle und seines zugehörigen
Deltas aus der zweiten Arbeitstabelle und der zweiten
Arbeitsliste, sofern die erste Arbeitstabelle leer ist;
(d.2) Wiedergewinnen des ältesten deskriptiven Eintrags
der ersten Arbeitstabelle und seines zugehörigen Deltas
aus der ersten Arbeitstabelle und der ersten
Arbeitsliste, sofern die zweite Arbeitstabelle leer ist;
(d.3) Wiedergewinnen des ältesten deskriptiven Eintrags
der zweiten Arbeitstabelle und seines zugehörigen
Deltas aus der zweiten Arbeitstabelle und der zweiten
Arbeitsliste, wenn sowohl die erste als auch die zweite
Arbeitstabelle nicht leer sind und die ältesten
des
kriptiven Einträge der ersten und der zweiten
Arbeitstabelle Duplikate sind; und
(d.4) Wiedergewinnen des ältesten deskriptiven Eintrags
der ersten oder der zweiten Arbeitstabelle und des
zugehörigen Deltas aus der ersten Arbeitstabelle und der
ersten Arbeitsliste, wenn sowohl die erste als auch die
zweite Arbeitstabelle nicht leer sind und die ältesten
deskriptiven Einträge der ersten und der zweiten
Arbeitstabelle keine Duplikate sind.
3. Das Verfahren nach Anspruch 2, wobei der Schritt (f)
ferner den Schritt des Erzeugens eines neuen Zweiges für das
zugehörige Delta des entfernten und nicht im Schritt (e)
verworfenen deskriptiven Eintrags umfaßt, sofern der
wiedergewonnene und nicht verworfene deskriptive Eintrag aus der
zweiten Arbeitstabelle wiedergewonnen wurde, und sofern der
wiedergewonnene und nicht verworfene deskriptive Eintrag
einen deskriptiven Vorgänger-Eintrag in der zweiten
Arbeitstabelle aufweist, der auf einen deskriptiven Eintrag in der
Ausgabetabelle querverweist, welcher wiederum auf einen
deskriptiven Eintrag in der ersten Arbeitstabelle querverweist,
und sofern der querverwiesene deskriptive Eintrag in der
ersten Arbeitstabelle ein deskriptiver Vorgänger-Eintrag für
einen weiteren deskriptiven Eintrag in der ersten
Arbeitstabelle ist, welcher sich auf dem gleichen Zweig wie der
entfernte und nicht verworfene deskriptive Eintrag befindet.
4. Das Verfähren nach Anspruch 3, wobei der Schritt (f) die
Schritte umfaßt:
((f).1) Ersetzen eines vorhandenen
Änderungs-Identifizierers in dem nicht verworfenen deskriptiven Eintrag
durch einen neuen Änderungs-Identifizierer, wobei der
vorhandene und der neue Änderungs-Identifizierer
Revisions-/Editions-Stufen des Quellmoduls in der
vor-ver
schmolzenen bzw. verschmolzenen Hierarchie anzeigen,
wobei der neue Änderungs-Identifizierer in Abhängigkeit
davon erzeugt wird, ob ein neuer Zweig für das
zugehörige Delta des deskriptiven Eintrags in der
verschmolzenen Hierarchie erzeugt werden soll;
((f).2) Ersetzen einer ersten vorhandenen
Delta-Seriennummer in dem nicht verworfenen deskriptiven Eintrag
durch eine erste neue einzigartige Delta-Seriennummer,
wobei die erste vorhandene und die erste neue
Delta-Seriennummer das zugehörige Delta in der
vor-verschmolzenen bzw. der verschmolzenen Hierarchie identifizieren,
wobei die erste neue einzigartige Delta-Seriennummer in
Abhängigkeit von der Anzahl der deskriptiven Einträge,
die bis dahin an die Ausgabetabelle ausgegeben worden
sind, erzeugt wird;
((f).3) Ersetzen einer zweiten vorhandenen
Delta-Seriennummer in dem nicht verworfenen deskriptiven Eintrag
durch eine zweite neue einzigartige Delta-Seriennummer,
wobei die zweite vorhandene und die zweite neue Delta-
Seriennummer das zugehörige Vorgänger-Delta des Deltas
in der vor-verschmolzenen bzw. der verschmolzenen
Hierarchie identifizieren, wobei die zweite einzigartige
Delta-Seriennummer aus dem jeweils zugehörigen Array
des ersten und des zweiten Zwei-Wege-Querverweis-Arrays
wiedergewonnen worden ist, wobei die zweite neue
einzigartige Delta-Seriennummer gleich der ersten neuen
einzigartigen Delta-Nummer des durch Querverweis
angezeigten deskriptiven Eintrags der Ausgabetabelle ist,
dessen erste vorhandene Delta-Seriennummer des
querverweisenden deskriptiven Eintrags der ersten und zweiten
Arbeitstabelle gleich der zweiten vorhandenen
Delta-Seriennummer ist.
5. Das Verfahren nach Anspruch 4, ferner umfassend die
Schritte:
Verschmelzen der zweiten Delta-Hierarchie mit der
ersten Delta-Hierarchie, um die letzte Revision des
Quellmoduls in der Eltern-Umgebung mit der letzten
Edition des Quellmoduls in der Kind-Umgebung in Einklang
zu bringen (292); und
Ersetzen der ersten Delta-Hierarchie in der
Eltern-Umgebung durch die Ausgabetabelle (296).
6. Das Verfahren nach Anspruch 5, ferner umfassend die
Schritte:
Verschmelzen der ersten Delta-Hierarchie mit der
zweiten Delta-Hierarchie, um die letzte Edition des
Quellmoduls in der Kind-Umgebung mit der letzten Revision
des Quellmoduls in der Eltern-Umgebung zu
resynchronisieren (292); und
Ersetzen der zweiten Delta-Hierarchie in der
Kind-Umgebung durch die Ausgabetabelle (296).
7. Das Verfahren nach Anspruch 6, ferner umfassend den
Schritt des automatischen Auslösens der Durchführung der
Schritte (a) bis (f) zum Verschmelzen der ersten
Delta-Hierarchie mit der zweiten Delta-Hierarchie zum
Resynchronisieren der letzten Edition des Quellmoduls in der Kind-Umgebung
mit der letzten Revision des Quellmoduls in der
Eltern-Umgebung in Erwiderung eines Versuchs zum Durchführen der
Schritte (a) bis (f) zum Verschmelzen der zweiten Delta-
Hierarchie mit der ersten Delta-Hierarchie, um die letzte
Revision des Quellmoduls in der Eltern-Umgebung mit der
letzten Edition des Quellmoduls in der Kind-Umgebung in
Einklang zu bringen, wobei die zweite Delta-Hierarchie
ursprünglich unter Verwendung der ersten Delta-Hierarchie,
welche sich nachfolgend geändert hat, erzeugt wurde.
8. In einem Computersystem mit einer Eltern- und einer Kind-
Entwicklungsumgebung, wobei die Eltern- und
Kind-Entwicklungsumgebung eine erste und eine zweite Delta-Hierarchie
aufweisen, die ein Quellmodul und der Eltern- bzw. der Kind-
Umgebung im einzelnen bekannte Änderungen an dem Quellmodul
repräsentieren, eine Einrichtung zum Verschmelzen der ersten
und der zweiten Delta-Hierarchie miteinander, die sämtliche
Delta-Beziehungen der der Eltern- und der Kind-Umgebung im
einzelnen bekannten Änderungen ohne das Erfordernis einer
computerunterstützten Verfolgung bewahrt, wobei die
Einrichtung gekennzeichnet ist durch:
(a) Speichermittel (170, 171) zum Speichern von Deltas
in einer ersten und einer zweiten Liste von Deltas und
zum Speichern von den Deltas entsprechenden
deskriptiven Einträgen in einer ersten und einer zweiten Tabelle
von deskriptiven Einträgen der ersten und zweiten
Delta-Hierarchie;
(b) mit der Eltern- und der Kind-Umgebung gekoppelte
erste Initialisierungsmittel (184) zum Initialisieren
einer ersten und einer zweiten Arbeitsliste und einer
ersten und einer zweiten Arbeitstabelle derart, daß sie
gleich einer ersten und einer zweiten Liste von Deltas
bzw. einer ersten und einer zweiten Tabelle von
deskriptiven Einträgen der ersten und zweiten
Delta-Hierarchien sind, wobei die erste und zweite Liste von
Deltas in einer ersten und einer zweiten
Entwickungsumgebung in identischer Weise chronologisch identifiziert
sind, und wobei die erste und die zweite Tabelle
deskriptiver Einträge zeitlich geordnet sind und
entsprechend die erste bzw. die zweite Liste von Deltas
beschreiben;
(c) zweite Initialisierungsmittel (185) zum
Initialisieren einer Ausgabetabelle, einer Ausgabeliste, eines
ersten und eines zweiten der ersten und zweiten
Arbeitstabelle entsprechenden Zwei-Wege-Assoziativ-Arrays
derart, daß sie leer sind, zum sequentiellen Empfangen
modifizierter nicht-duplizierter deskriptiver Einträge
der ersten und der zweiten Arbeitstabelle,
modifizierter nicht-duplizierter Deltas der ersten und der
zweiten Liste von Deltas, und wobei das
Zwei-Wege-Assoziativ-Array Querverweis-Einträge speichert, die
Querverweise zwischen den deskriptiven Einträgen der ersten
und der zweiten Arbeitstabelle und der Ausgabetabelle
darstellen;
(d) mit den ersten Initialisierungsmitteln gekoppelte
Wiedergewinnungsmittel (184) zum Wiedergewinnen
deskriptiver Einträge und ihrer zugehörigen Deltas aus der
ersten und der zweiten Arbeitstabelle und der ersten
und der zweiten Arbeitsliste und mit den
Entfernungsmitteln und den zweiten Initialisierungsmitteln
gekoppelte erste Ausgabemittel zum Ausgeben eines Zwei-Wege-
Querverweis-Eintrags auf das zugehörige Array des
ersten und des zweiten Zwei-Wege-Assoziativ-Arrays für
jeden wiedergewonnenen deskriptiven Eintrag, wenn der
deskriptive Eintrag und sein zugehöriges Delta
wiedergewonnen werden, wobei der deskriptive Eintrag, welcher
wiedergewonnen worden ist, auf den nächsten
deskriptiven Eintrag der Ausgabetabelle querverweist, wobei der
Schritt des Wiedergewinnens jeweils an einem
deskriptiven Eintrag und seinem zugehörigen Delta auf eine
vorgegebene Ältester-Eintrag-Weise durchgeführt wird, bis
sämtliche deskriptiven Einträge und ihre zugehörigen
Deltas aus der ersten und der zweiten Arbeitstabelle
und den ersten und den zweiten Arbeits-Deltas
wiedergewonnen worden sind;
(e) mit den ersten Ausgabemitteln gekoppelte
Verwerfungsmittel (185) zum Verwerfen jedes wiedergewonnenen
deskriptiven Eintrags und seines zugehörigen Deltas,
wenn ein Zwei-Wege-Querverweis-Eintrag ausgegeben ist,
sofern der wiedergewonnene deskriptive Eintrag ein
Duplikat eines zweiten wiedergewonnenen deskriptiven
Eintrags in der anderen Arbeitstabelle ist;
(f) mit den Verwerfungsmitteln gekoppelte
Modizifierungsmittel (185) zum bedingten Modifizieren jedes
wiedergewonnenen deskriptiven Eintrags und seines
zugehörigen Deltas, die nicht verworfen wurden, nachdem die
Entscheidung über das Verwerfen getroffen worden ist,
zum Ausgeben jedes der wiedergewonnenen und
modifizierten deskriptiven Einträge und seines zugehörigen
modifizierten Deltas in die Ausgabetabelle bzw. die
Ausgabeliste, wenn die Modifikationen durchgeführt sind,
wobei der Schritt des Modifizierens in Abhängigkeit davon
durchgeführt wird, ob ein neuer Zweig in der
verschmolzenen Hierarchie für das zugehörige Delta des
wiedergewonnenen und nicht verworfenen deskriptiven Eintrags
erzeugt werden soll, und in Abhängigkeit von der Anzahl
von wiedergewonnenen deskriptiven Einträgen, die bis
dahin zu der Ausgabetabelle ausgegeben worden sind, und
darüber hinaus unter Verwendung der
Querverweis-Einträge.
9. Die Einrichtung nach Anspruch 8, wobei die
Wiedergewinnungsmittel (184) wiedergewinnen:
(d.1) den ältesten deskriptiven Eintrag der zweiten
Arbeitstabelle und sein zugehöriges Delta aus der zweiten
Arbeitstabelle und der zweiten Arbeitsliste, wenn die
erste Arbeitstabelle leer ist;
(d.2) den ältesten deskriptiven Eintrag der ersten
Arbeitstabelle und sein zugehöriges Delta aus der ersten
Arbeitstabelle und der ersten Arbeitsliste, wenn die
zweite Arbeitstabelle leer ist;
(d.3) den ältesten deskriptiven Eintrag der zweiten
Arbeitstabelle und sein zugehöriges Delta aus der zweiten
Arbeitstabelle und der zweiten Arbeitsliste, wenn
sowohl die erste als auch die zweite Arbeitstabelle nicht
leer sind und die ältesten deskriptiven Einträge der
ersten und der zweiten Arbeitstabelle Duplikate sind;
und
(d.4) des ältesten deskriptiven Eintrags der ersten
oder der zweiten Arbeitstabelle und sein zugehöriges
Delta aus der ersten Arbeitstabelle und der ersten
Arbeitsliste, wenn sowohl die erste als auch die zweite
Arbeitstabelle nicht leer sind und die ältesten
deskriptiven Einträge der ersten und zweiten
Arbeitstabelle keine Duplikate sind.
10. Die Einrichtung nach Anspruch 9, wobei die
Modifikationsmittel (185) ferner Mittel aufweisen zum Bestimmen, daß
ein neuer Zweig erzeugt werden soll für das zugehörige Delta
des deskriptiven Eintrags, welcher wiedergewonnen und nicht
verworfen worden ist, sofern der wiedergewonnene und nicht
verworfene deskriptive Eintrag aus der zweiten
Arbeitstabelle entfernt wurde, und sofern der wiedergewonnene und nicht
verworfene deskriptive Eintrag einen deskriptiven Vorgänger-
Eintrag in der zweiten Arbeitstabelle aufweist, der auf
einen deskriptiven Eintrag in der Ausgabetabelle querverweist,
welcher wiederum auf einen deskriptiven Eintrag in der
ersten Arbeitstabelle querverweist, wobei darüber hinaus der
querverwiesene deskriptive Eintrag in der ersten
Arbeitstabelle ein deskriptiver Vorgänger-Eintrag für einen weiteren
deskriptiven Eintrag in der ersten Arbeitstabelle ist,
wel
cher sich auf dem gleichen Zweig wie der nicht verworfene
deskriptive Eintrag befindet.
11. Die Einrichtung nach Anspruch 10, wobei die
Modifikationsmittel (185) ersetzen:
(h.1) einen vorhandenen Änderungsidentifizierer in dem
nicht verworfenen deskriptiven Eintrag durch einen
neuen Änderungsidentifizierer, wobei der vorhandene und
der neue Änderungsidentifizierer Revisions/Editions-
Stufen des Quellmoduls in der vor-verschmolzenen bzw.
der verschmolzenen Hierarchie anzeigen, wobei der neue
Änderungsidentifizierer in Abhängigkeit davon erzeugt
wird, ob ein neuer Zweig für das zugehörige Delta des
nicht verworfenen deskriptiven Eintrags in der
verschmolzenen Hierarchie erzeugt werden soll;
(h.2) eine erste vorhandene Delta-Seriennummer in dem
deskriptiven Eintrag durch eine erste neue einzigartige
Delta-Seriennummer, wobei die erste vorhandene und die
neue Delta-Seriennummer die zugehörigen Deltas in der
vor-verschmolzenen bzw. der verschmolzenen Hierarchie
identifizieren, wobei die erste einzigartige
Delta-Seriennummer in Abhängigkeit von der Anzahl der
deskriptiven Einträge erzeugt wird, die bis dahin an die
Ausgabetabelle ausgegeben worden sind;
(h.3) eine zweite vorhandene Delta-Seriennummer in dem
deskriptiven Eintrag durch eine zweite neue
einzigartige Delta-Seriennummer, wobei die zweite vorhandene
und die neue Delta-Seriennummer die zugehörigen
Vorgänger-Deltas des Deltas in der vor-verschmolzenen bzw.
der verschmolzenen Hierarchie identifizieren, wobei die
zweite neue einzigartige Delta-Seriennummer aus dem
zugehörigen Array des ersten und des zweiten Zwei-Wege-
Querverweis-Arräys wiedergewonnen werden, wobei die
zweite neue einzigartige Delta-Seriennummer gleich der
ersten neuen einzigartigen Delta-Seriennummer des durch
Querverweis angezeigten deskriptiven Eintrags der
Ausgabetabelle ist, dessen, erste vorhandene
Delta-Seriennummer des querverweisenden deskriptiven Eintrags der
ersten und der zweiten Arbeitstabelle gleich der
zweiten vorhandenen Delta-Seriennummer ist.
12. Die Einrichtung nach Anspruch 11, ferner aufweisend:
Verschmelzungsmittel (183) zum Verschmelzen der zweiten
Delta-Hierarchie in die erste Delta-Hierarchie, um die
letzte Revision des Quellmoduls in der Eltern-Umgebung mit der
letzten Edition des Quellmoduls in der Kind-Umgebung in
Einklang zu bringen; und
mit der Eltern-Umgebung und den zweiten Ausgabemitteln
gekoppelte Ersetzungsmittel (185) zum Ersetze oder ersten
Delta-Hierarchie in der Eltern-Umgebung durch die
Ausgabetabelle.
13. Die Einrichtung nach Anspruch 12, ferner aufweisend:
Verschmelzungsmittel (183) zum Verschmelzen der ersten
Delta-Hierarchie in die zweite Delta-Hierarchie zum
Resynchronisieren der letzten Edition des Quellmoduls in der
Kind-Umgebung mit der letzten Revision des Quellmoduls in
der Eltern-Umgebung, und
wobei die ferner mit der Kind-Umgebung gekoppelten
Ersetzungsmittel (185) die zweite Hierarchie in der Kind-Umgebung
durch die Ausgabetabelle ersetzen, wobei die Verwendung der
Einrichtung zum Verschmelzen der ersten Delta-Hierarchie in
die zweite Delta-Hierarchie zum Resynchronisieren der
letzten Edition des Quellmoduls in der Kind-Umgebung mit der
letzten Revision des Quellmoduls in der Eltern-Umgebung
automatisch ausgelöst wird in Erwiderung eines Versuchs zum
Benutzen der Einrichtung zum Verschmelzen der zweiten Delta-
Hierarchie in die erste Delta-Hierarchie, um die letzte
Revision des Quellmoduls in der Eltern-Umgebung mit der
letz
ten Edition des Quell-Moduls in der Kind-Umgebung iri
Einklang zubringen, wobei die zweite Delta-Hierarchie
ursprünglich unter Verwendung der ersten Delta-Hierarchie,
welche nachfolgend geändert worden ist, erzeugt wurde.
14. Ein Computersystem, gekennzeichnet durch:
(a) eine Eltern-Entwicklungsumgebung mit einem ersten
Ausführungsmittel (143a) zum Ausführen von Mitteln und
mit einer ersten Delta-Hierarchie, die ein Quellmodul
und der Eltern-Umgebung bekannte Änderungen des
Quellmoduls repräsentiert;
(b) eine Kind-Entwicklungsumgebung mit einem zweiten
Ausführungsmittel (143b) zum Ausführen von Mitteln und
mit einer zweiten Delta-Hierarchie, die das Quellmodul
und der Kind-Umgebung bekannte Änderungen an dem
Quellmodul repräsentiert;
(c) durch entweder das erste oder das zweite
Ausführungsmittel auszuführende Verschmelzungsmittel (183)
zum Verschmelzen der ersten und der zweiten
Delta-Hierarchie miteinander derart, daß sämtliche
Delta-Beziehungen der Änderungen, die der Eltern- und der
Kind-Umgebung einzeln bekannt sind, bewahrt werden, wobei die
Verschmelzungsmittel enthalten:
(c.1) durch entweder das erste oder das zweite
Ausführungsmittel auszuführende erste
Initialisierungsmittel (184) zum Initialisieren einer ersten
und einer zweiten Arbeitsliste und einer ersten und
einer zweiten Arbeitstabelle derart, daß sie gleich
einer ersten und einer zweiten Liste von Deltas
bzw. einer ersten und einer zweiten Tabelle von
deskriptiven Einträgen der ersten und zweiten
Delta-Hierarchien sind, wobei die erste und die
zweite Liste von Deltas chronologisch innerhalb
einer ersten und einer zweiten Entwicklungsumgebung
in identischer Weise identifiziert sind, und wobei
die erste und die zweite Tabelle von deskriptiven
Einträgen zeitlich geordnet sind und entsprechend
die erste bzw. zweite Liste von Deltas beschreiben;
(c.2) durch entweder das erste oder das zweite
Ausführungsmittel auszuführende zweite
Initialisierungsmittel (185) zum Initialisieren einer
Ausgabetabelle, einer Ausgabeliste und eines ersten und
eines zweiten der ersten und zweiten Arbeitstabelle
entsprechenden Zwei-Wege-Assoziativ-Arrays derart,
daß sie leer sind, zum sequentiellen Empfangen
modifizierter nicht-duplizierter deskriptiver
Einträge der ersten und zweiten Arbeitstabelle,
modifizierter nicht-duplizierter Deltas der ersten und
zweiten Liste von Deltas und wobei das Zwei-Wege-
Assoziativ-Array Querverweis-Einträge speichert,
die Querverweise zwischen den deskriptiven
Einträgen der ersten und der zweiten Arbeitstabelle und
der Ausgabetabelle darstellen;
(c.3) durch entweder das erste oder das zweite
Ausführungsmittel auszuführende
Wiedergewinnungsmittel (184) zum Wiedergewinnen deskriptiver
Einträge und ihrer zugehörigen Deltas aus der ersten
und der zweiten Arbeitstabelle und der ersten und
der zweiten Arbeitsliste, und zum Ausgeben eines
Zwei-Wege-Querverweis-Eintrags an das zugehörige
Array des ersten und zweiten Zwei-Wege-Assoziativ-
Arrays für jeden wiedergewonnenen deskriptiven
Eintrag, wenn der deskriptive Eintrag und sein
zugehöriges Delta wiedergewonnen sind, und zum Herstellen
eines Querverweises des deskriptiven Eintrags,
welcher wiedergewonnen worden ist, auf den nächsten
deskriptiven Eintrag der Ausgabetabelle, wobei der
Schritt des Wiedergewinnens an jeweils einem
deskriptiven Eintrag und seinem zugehörigen Delta auf
eine vorgegebene Ältester-Eintrag-Weise
durchgeführt wird, bis sämtliche deskriptiven Einträge und
ihre zugehörigen Deltas aus der ersten und der
zweiten Arbeitstabelle und den ersten und den
zweiten Arbeitsdeltas wiedergewonnen worden sind;
(c.4) von entweder den ersten oder den zweiten
Ausführungsmitteln auszuführende Verwerfungsmittel
(185) zum Verwerfen jedes wiedergewonnenen
deskriptiven Eintrags und seines zugehörigen Deltas,
sobald sein Zwei-Wege-Querverweis-Eintrag ausgegeben
ist, sofern der wiedergewonnene deskriptive Eintrag
ein Duplikat eines zweiten wiedergewonnenen
deskriptiven Eintrags in der anderen Arbeitstabelle
ist;
(c.5) durch entweder das erste oder das zweite
Ausführungsmittel auszuführende Modifikationsmittel
(185) zum bedingten Modifizieren jedes
nichtverworfenen wiedergewonnenen deskriptiven Eintrags und
seines zugehörigen Deltas, nachdem die Entscheidung
über das Verwerfen getroffen worden ist, und zum
Ausgeben jedes wiedergewonnenen und modifizierten
deskriptiven Eintrags und seines zugehörigen
modifizierten Deltas in die Ausgabetabelle bzw. die
Ausgabeliste, sobald die Modifikationen vorgenommen
sind, wobei der Schritt des Modifizierens in
Abhängigkeit davon durchgeführt wird, ob ein neuer Zweig
in der verschmolzenen Hierarchie für das zugehörige
Delta des wiedergewonnenen und nicht verworfenen
deskriptiven Eintrags erzeugt werden soll, und in
Abhängigkeit von der Anzahl der wiedergewonnenen
deskriptiven Einträge, welche bis dahin zu der
Aus
gabetabelle ausgegeben worden sind, und
darüberhinaus unter Verwendung der Querverweis-Einträge, und
ein mit dem Speicher gekoppelter Prozessor, wobei der
Prozessor dem Abarbeiten der Verschmelzungsmittel (183)
dient.
15. Das Computersystem nach Anspruch 14, wobei die
Wiedergewinnungsmittel (184) wiedergewinnen:
(c.3.1) den ältesten deskriptiven Eintrag der zweiten
Arbeitstabelle und sein zugehöriges Delta aus der
zweiten Arbeitstabelle und der zweiten Arbeitsliste, sofern
die erste Arbeitstabelle leer ist;
(c.3.2) den ältesten deskriptiven Eintrag der ersten
Arbeitstabelle und sein zugehöriges Delta aus der
ersten Arbeitstabelle und der ersten Arbeitsliste, sofern
die zweite Arbeitstabelle leer ist;
(c. 3.3) den ältesten deskriptiven Eintrag der zweiten
Arbeitstabelle und sein zugehöriges Delta aus der
zweiten Arbeitstabelle und der zweiten Arbeitsliste, wenn
sowohl die erste als auch die zweite Arbeitstabelle
nicht leer sind und die ältesten deskriptiven Einträge
der ersten und der zweiten Arbeitstabelle Duplikate
sind; und
(c.3.4) den ältesten deskriptiven Eintrag der ersten
oder der zweiten Arbeitstabelle und sein zugehöriges
Delta aus der ersten Arbeitstabelle und der ersten
Arbeitsliste, wenn sowohl die erste als auch die zweite
Arbeitstabelle nicht leer sind und die ältesten
deskriptiven Einträge der ersten und der zweiten
Arbeitstabelle keine Duplikate sind.
16. Das Computersystem nach Anspruch 15, wobei die
Modifikationsmittel (185) ferner Mittel aufweisen zum Bestimmen, daß
ein neuer Zweig für das zugehörige Delta des
wiedergewonnenen und nicht verworfenen deskriptiven Eintrags erzeugt
werden soll, sofern der wiedergewonnene und nicht verworfene
deskriptive Eintrag aus der zweiten Arbeitstabelle entfernt
wurde, und sofern der wiedergewonnene und nicht verworfene
deskriptive Eintrag einen deskriptiven Vorgänger-Eintrag in
der zweiten Arbeitstabelle aufweist, der auf einen
deskriptiven Eintrag in der Ausgabetabelle querverweist, welcher
wiederum auf einen deskriptiven Eintrag in der ersten
Arbeitstabelle querverweist, wobei darüber hinaus der
querverwiesene deskriptive Eintrag in der ersten Arbeitstabelle ein
deskriptiver Vorgänger-Eintrag für einen weiteren
deskriptiven Eintrag in der ersten Arbeitstabelle ist, welcher sich
auf dem gleichen Zweig wie der deskriptive Eintrag befindet,
welcher wiedergewonnen und nicht verworfen wurde.
17. Das Computersystem nach Anspruch 16, wobei die
Modifikationsmittel (185) ersetzen:
(c.5.1) einen vorhandenen Änderungsidentifizierer in
dem nicht verworfenen deskriptiven Eintrag durch einen
neuen Änderungsidentifizierer, wobei der vorhandene und
der neue Identifizierer Revisions/Editions-Stufen des
Quellmoduls in der vor-verschmolzenen bzw. der
verschmolzenen Hierarchie anzeigen, wobei der neue
Änderungsidentifizierer in Abhängigkeit davon erzeugt wird,
ob ein neuer Zweig für das zugehörige Delta des nicht
verworfenen deskriptiven Eintrags in der verschmolzenen
Hierarchie erzeugt werden soll;
(c.5.2) eine erste vorhandene Delta-Seriennummer in
dem nicht verworfenen deskriptiven Eintrag durch eine
erste neue einzigartige Delta-Seriennummer, wobei die
erste vorhandene und die neue Delta-Seriennummer das
zugehörige Delta in der vor-verschmolzenen bzw. der
verschmolzenen Hierarchie identifizieren, wobei die
erste neue einzigartige Delta-Seriennummer in
Abhängigkeit von der Anzahl der deskriptiven Einträge erzeugt
wird, die bis dahin zu der Ausgabetabelle ausgegeben
worden sind;
(c.5.3) eine zweite vorhandene Delta-Seriennummer in
dem deskriptiven Eintrag durch eine zweite neue
einzigartige Delta-Seriennummer, wobei die zweite vorhandene
und die neue Delta-Seriennummer das zugehörige
Vorgänger-Delta des Deltas in der vor-verschmolzenen bzw. der
verschmolzenen Hierarchie identifizieren, wobei die
zweite neue einzigartige Delta-Seriennummer aus dem
zugehörigen Array des ersten und des zweiten Zwei-Wege-
Querverweis-Arrays wiedergewonnen werden, wobei die
zweite neue einzigartige Delta-Seriennummer gleich der
ersten neuen einzigartigen Delta-Nummer des
querverwiesenen deskriptiven Eintrags der Ausgabetabelle ist,
dessen erste vorhandene Delta-Seriennummer des
querverweisenden deskriptiven Eintrags der ersten und zweiten
Arbeitstabelle gleich der zweiten vorhandenen
Delta-Seriennummer ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74695791A | 1991-08-19 | 1991-08-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69230452D1 DE69230452D1 (de) | 2000-01-27 |
DE69230452T2 true DE69230452T2 (de) | 2000-08-24 |
Family
ID=25003057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69230452T Expired - Fee Related DE69230452T2 (de) | 1991-08-19 | 1992-08-10 | Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen |
Country Status (5)
Country | Link |
---|---|
US (1) | US5481722A (de) |
EP (1) | EP0528617B1 (de) |
JP (1) | JPH0744373A (de) |
KR (1) | KR0169327B1 (de) |
DE (1) | DE69230452T2 (de) |
Families Citing this family (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100287045B1 (ko) * | 1992-07-06 | 2001-04-16 | 존 비. 메이슨 | 객체의 명명 및 결합들 위한 방법 및 시스템 |
JPH07104983A (ja) * | 1993-10-05 | 1995-04-21 | Fujitsu Ltd | 世代管理装置および世代管理方法 |
US6760840B1 (en) * | 1994-03-15 | 2004-07-06 | Kabushiki Kaisha Toshiba | File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing |
US5737600A (en) * | 1994-09-12 | 1998-04-07 | International Business Machines Corporation | Method and system for log management in a coupled data processing system |
US5574906A (en) * | 1994-10-24 | 1996-11-12 | International Business Machines Corporation | System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing |
US5634052A (en) * | 1994-10-24 | 1997-05-27 | International Business Machines Corporation | System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server |
US6349407B1 (en) * | 1995-12-29 | 2002-02-19 | Sun Microsystems, Incorporated | Method and apparatus for re-introducing version control |
US6401099B1 (en) | 1996-12-06 | 2002-06-04 | Microsoft Corporation | Asynchronous binding of named objects |
US6460058B2 (en) | 1996-12-06 | 2002-10-01 | Microsoft Corporation | Object-oriented framework for hyperlink navigation |
AU6183798A (en) * | 1997-02-27 | 1998-09-29 | Siebel Systems, Inc. | Method of migrating to a successive level of a software distribution incorporating local modifications |
US6226652B1 (en) * | 1997-09-05 | 2001-05-01 | International Business Machines Corp. | Method and system for automatically detecting collision and selecting updated versions of a set of files |
US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
FR2773242A1 (fr) * | 1997-12-30 | 1999-07-02 | Bull Sa | Procede d'identification et de suivi des evolutions d'un ensemble de composants logiciels |
GB2334596B (en) * | 1998-02-23 | 2002-02-20 | Denno Co Ltd | Control system |
US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
US7013305B2 (en) | 2001-10-01 | 2006-03-14 | International Business Machines Corporation | Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange |
US6243860B1 (en) * | 1998-10-30 | 2001-06-05 | Westinghouse Electric Company Llc | Mechanism employing a memory area for exchanging information between a parent process and a child process compiled during execution of the parent process or between a run time compiler process and an application process |
US6401239B1 (en) * | 1999-03-22 | 2002-06-04 | B.I.S. Advanced Software Systems Ltd. | System and method for quick downloading of electronic files |
US7146608B1 (en) | 1999-09-28 | 2006-12-05 | Cisco Technology, Inc. | Method and system for a software release process |
AU2051901A (en) * | 1999-11-29 | 2001-07-03 | Interwoven, Inc. | Method and apparatus for deploying data among data destinations for website development and maintenance |
US7346848B1 (en) * | 2000-06-21 | 2008-03-18 | Microsoft Corporation | Single window navigation methods and systems |
US7624356B1 (en) | 2000-06-21 | 2009-11-24 | Microsoft Corporation | Task-sensitive methods and systems for displaying command sets |
EP1325427A2 (de) | 2000-06-21 | 2003-07-09 | Microsoft Corporation | System und verfahren zur integration von kalkulationsblättern und textverarbeitungstabellen |
US7000230B1 (en) | 2000-06-21 | 2006-02-14 | Microsoft Corporation | Network-based software extensions |
US7191394B1 (en) | 2000-06-21 | 2007-03-13 | Microsoft Corporation | Authoring arbitrary XML documents using DHTML and XSLT |
US6883168B1 (en) | 2000-06-21 | 2005-04-19 | Microsoft Corporation | Methods, systems, architectures and data structures for delivering software via a network |
US6948135B1 (en) | 2000-06-21 | 2005-09-20 | Microsoft Corporation | Method and systems of providing information to computer users |
US7155667B1 (en) | 2000-06-21 | 2006-12-26 | Microsoft Corporation | User interface for integrated spreadsheets and word processing tables |
US6874143B1 (en) * | 2000-06-21 | 2005-03-29 | Microsoft Corporation | Architectures for and methods of providing network-based software extensions |
US7117435B1 (en) | 2000-06-21 | 2006-10-03 | Microsoft Corporation | Spreadsheet fields in text |
EP1179793A1 (de) * | 2000-08-09 | 2002-02-13 | Indatex GmbH | Portal für Finanzdienstleister |
US7058941B1 (en) * | 2000-11-14 | 2006-06-06 | Microsoft Corporation | Minimum delta generator for program binaries |
US7131112B1 (en) * | 2000-11-21 | 2006-10-31 | Microsoft Corporation | Managing code changes for software development |
US20030009481A1 (en) * | 2001-06-20 | 2003-01-09 | Victor Greenberg | Method and apparatus to merge information |
US7660886B2 (en) * | 2001-09-27 | 2010-02-09 | International Business Machines Corporation | Apparatus and method of representing real-time distributed command execution status across distributed systems |
US6990655B2 (en) * | 2001-09-27 | 2006-01-24 | International Business Machines Corporation | Apparatus and method of providing a pluggable user interface |
US7032033B1 (en) * | 2001-11-30 | 2006-04-18 | Microsoft Corporation | Handling collisions during synchronization of data between client and server computers |
US20040073581A1 (en) * | 2002-06-27 | 2004-04-15 | Mcvoy Lawrence W. | Version controlled associative array |
EP1408410A1 (de) * | 2002-09-30 | 2004-04-14 | Sap Ag | Fernfehlerbeseitigung von Computerprogrammen |
US20040177343A1 (en) * | 2002-11-04 | 2004-09-09 | Mcvoy Lawrence W. | Method and apparatus for understanding and resolving conflicts in a merge |
US7275216B2 (en) * | 2003-03-24 | 2007-09-25 | Microsoft Corporation | System and method for designing electronic forms and hierarchical schemas |
US7415672B1 (en) | 2003-03-24 | 2008-08-19 | Microsoft Corporation | System and method for designing electronic forms |
US7370066B1 (en) * | 2003-03-24 | 2008-05-06 | Microsoft Corporation | System and method for offline editing of data files |
US7296017B2 (en) * | 2003-03-28 | 2007-11-13 | Microsoft Corporation | Validation of XML data files |
US7913159B2 (en) | 2003-03-28 | 2011-03-22 | Microsoft Corporation | System and method for real-time validation of structured data files |
US7516145B2 (en) | 2003-03-31 | 2009-04-07 | Microsoft Corporation | System and method for incrementally transforming and rendering hierarchical data files |
US7168035B1 (en) | 2003-06-11 | 2007-01-23 | Microsoft Corporation | Building a view on markup language data through a set of components |
US7451392B1 (en) | 2003-06-30 | 2008-11-11 | Microsoft Corporation | Rendering an HTML electronic form by applying XSLT to XML using a solution |
US7197515B2 (en) * | 2003-06-30 | 2007-03-27 | Microsoft Corporation | Declarative solution definition |
US7406660B1 (en) | 2003-08-01 | 2008-07-29 | Microsoft Corporation | Mapping between structured data and a visual surface |
US7581177B1 (en) | 2003-08-01 | 2009-08-25 | Microsoft Corporation | Conversion of structured documents |
US7334187B1 (en) * | 2003-08-06 | 2008-02-19 | Microsoft Corporation | Electronic form aggregation |
US7546594B2 (en) * | 2003-12-15 | 2009-06-09 | Microsoft Corporation | System and method for updating installation components using an installation component delta patch in a networked environment |
CA2651461A1 (en) * | 2003-12-17 | 2005-06-17 | Ibm Canada Limited - Ibm Canada Limitee | Relationship management for data modeling in an integrated development environment |
US8136094B2 (en) * | 2004-01-07 | 2012-03-13 | International Business Machines Corporation | Relationship management for data modeling in an integrated development environment |
US8819072B1 (en) | 2004-02-02 | 2014-08-26 | Microsoft Corporation | Promoting data from structured data files |
US7430711B2 (en) * | 2004-02-17 | 2008-09-30 | Microsoft Corporation | Systems and methods for editing XML documents |
US7318063B2 (en) | 2004-02-19 | 2008-01-08 | Microsoft Corporation | Managing XML documents containing hierarchical database information |
US7676448B2 (en) | 2004-03-12 | 2010-03-09 | Microsoft Corporation | Controlling installation update behaviors on a client computer |
US7853609B2 (en) * | 2004-03-12 | 2010-12-14 | Microsoft Corporation | Update distribution system architecture and method for distributing software |
US7496837B1 (en) | 2004-04-29 | 2009-02-24 | Microsoft Corporation | Structural editing with schema awareness |
US7568101B1 (en) | 2004-05-13 | 2009-07-28 | Microsoft Corporation | Digital signatures with an embedded view |
US7281018B1 (en) | 2004-05-26 | 2007-10-09 | Microsoft Corporation | Form template data source change |
US7774620B1 (en) | 2004-05-27 | 2010-08-10 | Microsoft Corporation | Executing applications at appropriate trust levels |
US20060026567A1 (en) * | 2004-07-27 | 2006-02-02 | Mcvoy Lawrence W | Distribution of data/metadata in a version control system |
US7692636B2 (en) * | 2004-09-30 | 2010-04-06 | Microsoft Corporation | Systems and methods for handwriting to a screen |
US20060074933A1 (en) * | 2004-09-30 | 2006-04-06 | Microsoft Corporation | Workflow interaction |
US7516399B2 (en) | 2004-09-30 | 2009-04-07 | Microsoft Corporation | Structured-document path-language expression methods and systems |
US8487879B2 (en) * | 2004-10-29 | 2013-07-16 | Microsoft Corporation | Systems and methods for interacting with a computer through handwriting to a screen |
US20060107224A1 (en) * | 2004-11-15 | 2006-05-18 | Microsoft Corporation | Building a dynamic action for an electronic form |
US7712022B2 (en) | 2004-11-15 | 2010-05-04 | Microsoft Corporation | Mutually exclusive options in electronic forms |
US7584417B2 (en) * | 2004-11-15 | 2009-09-01 | Microsoft Corporation | Role-dependent action for an electronic form |
US7721190B2 (en) | 2004-11-16 | 2010-05-18 | Microsoft Corporation | Methods and systems for server side form processing |
US7509353B2 (en) | 2004-11-16 | 2009-03-24 | Microsoft Corporation | Methods and systems for exchanging and rendering forms |
US20060117075A1 (en) * | 2004-12-01 | 2006-06-01 | International Business Machines Corporation | Prerequisite, dependent and atomic deltas |
US7904801B2 (en) * | 2004-12-15 | 2011-03-08 | Microsoft Corporation | Recursive sections in electronic forms |
US7437376B2 (en) | 2004-12-20 | 2008-10-14 | Microsoft Corporation | Scalable object model |
US7937651B2 (en) * | 2005-01-14 | 2011-05-03 | Microsoft Corporation | Structural editing operations for network forms |
US7725834B2 (en) * | 2005-03-04 | 2010-05-25 | Microsoft Corporation | Designer-created aspect for an electronic form template |
US7673228B2 (en) * | 2005-03-30 | 2010-03-02 | Microsoft Corporation | Data-driven actions for network forms |
US8010515B2 (en) | 2005-04-15 | 2011-08-30 | Microsoft Corporation | Query to an electronic form |
US20070006130A1 (en) * | 2005-06-02 | 2007-01-04 | Arnold Stamler | Model oriented method of automatically detecting alterations in the design of a software system |
US20070011665A1 (en) * | 2005-06-21 | 2007-01-11 | Microsoft Corporation | Content syndication platform |
US7543228B2 (en) | 2005-06-27 | 2009-06-02 | Microsoft Corporation | Template for rendering an electronic form |
US8200975B2 (en) | 2005-06-29 | 2012-06-12 | Microsoft Corporation | Digital signatures for network forms |
US20070036433A1 (en) * | 2005-08-15 | 2007-02-15 | Microsoft Corporation | Recognizing data conforming to a rule |
US7613996B2 (en) * | 2005-08-15 | 2009-11-03 | Microsoft Corporation | Enabling selection of an inferred schema part |
US20070061706A1 (en) * | 2005-09-14 | 2007-03-15 | Microsoft Corporation | Mapping property hierarchies to schemas |
US20070061467A1 (en) * | 2005-09-15 | 2007-03-15 | Microsoft Corporation | Sessions and session states |
US8001459B2 (en) * | 2005-12-05 | 2011-08-16 | Microsoft Corporation | Enabling electronic documents for limited-capability computing devices |
US7769719B2 (en) * | 2006-01-05 | 2010-08-03 | International Business Machines Corporation | File system dump/restore by node numbering |
US7779343B2 (en) | 2006-01-30 | 2010-08-17 | Microsoft Corporation | Opening network-enabled electronic documents |
US7739660B2 (en) * | 2006-03-31 | 2010-06-15 | Sap Ag | Code management in a distributed software development environment |
US8549492B2 (en) * | 2006-04-21 | 2013-10-01 | Microsoft Corporation | Machine declarative language for formatted data processing |
ES2685250T3 (es) | 2006-05-11 | 2018-10-08 | Abb Schweiz Ag | Sincronización de un programa gráfico y un programa de robot |
US7849456B2 (en) * | 2006-06-01 | 2010-12-07 | International Business Machines Corporation | Method, system and computer program product for synchronizing source code repositories |
US20090119300A1 (en) * | 2007-11-01 | 2009-05-07 | Sun Microsystems, Inc. | Technique for editing centralized digitally encoded information |
US20090210852A1 (en) | 2008-02-19 | 2009-08-20 | International Business Machines Corporation | Automated merging in a software development environment |
US8495564B2 (en) * | 2008-02-19 | 2013-07-23 | International Business Machines Corporation | Automated merging in a software development environment |
US8191036B2 (en) * | 2008-05-19 | 2012-05-29 | Apple Inc. | Mechanism to support orphaned and partially configured objects |
US9933914B2 (en) * | 2009-07-06 | 2018-04-03 | Nokia Technologies Oy | Method and apparatus of associating application state information with content and actions |
US8990249B1 (en) * | 2009-07-20 | 2015-03-24 | Hrl Laboratories, Llc | Revision control server with self-hosting multi-level access controls and user notifications |
US9619373B2 (en) * | 2009-12-14 | 2017-04-11 | International Business Machines Corporation | Method and apparatus to semantically connect independent build and test processes |
US8914780B2 (en) | 2011-03-04 | 2014-12-16 | Microsoft Corporation | Incremental generation of managed assemblies |
US8533676B2 (en) * | 2011-12-29 | 2013-09-10 | Unisys Corporation | Single development test environment |
US8719783B2 (en) * | 2011-05-05 | 2014-05-06 | International Business Machines Corporation | Determining release differences |
JP6066031B2 (ja) * | 2011-11-30 | 2017-01-25 | 日本電気株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
DE102011120733B3 (de) * | 2011-12-12 | 2013-02-28 | Matthias Zenkel | Vorrichtung zur Regulierung der relativen Luftfeuchte in Flügeln und Klaviere |
US10095672B2 (en) | 2012-06-18 | 2018-10-09 | Novaworks, LLC | Method and apparatus for synchronizing financial reporting data |
US8938424B2 (en) * | 2012-10-31 | 2015-01-20 | Ca, Inc. | System and method of assessing the state of a database product for installation consistency |
US9448792B2 (en) * | 2013-03-14 | 2016-09-20 | Microsoft Technology Licensing, Llc | Automatic risk analysis of software |
US10146530B1 (en) | 2017-07-12 | 2018-12-04 | International Business Machines Corporation | Simulating and evaluating code branch merge |
US11360955B2 (en) * | 2018-03-23 | 2022-06-14 | Ebay Inc. | Providing custom read consistency of a data object in a distributed storage system |
GB201807877D0 (en) | 2018-05-15 | 2018-06-27 | Palantir Technologies Inc | Data storage system and method |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
US5084815A (en) * | 1986-05-14 | 1992-01-28 | At&T Bell Laboratories | Sorting and merging of files in a multiprocessor |
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
US4875159A (en) * | 1987-12-22 | 1989-10-17 | Amdahl Corporation | Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system |
US4912637A (en) * | 1988-04-26 | 1990-03-27 | Tandem Computers Incorporated | Version management tool |
US5274803A (en) * | 1991-04-26 | 1993-12-28 | Sun Microsystems, Inc. | Method and apparatus for aligning a restored parent environment to its child environments with minimal data loss |
-
1992
- 1992-08-10 DE DE69230452T patent/DE69230452T2/de not_active Expired - Fee Related
- 1992-08-10 EP EP92307304A patent/EP0528617B1/de not_active Expired - Lifetime
- 1992-08-19 KR KR1019920014904A patent/KR0169327B1/ko not_active IP Right Cessation
- 1992-08-19 JP JP4241438A patent/JPH0744373A/ja active Pending
-
1994
- 1994-11-14 US US08/338,883 patent/US5481722A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR930004854A (ko) | 1993-03-23 |
EP0528617A2 (de) | 1993-02-24 |
EP0528617A3 (en) | 1993-09-15 |
JPH0744373A (ja) | 1995-02-14 |
KR0169327B1 (ko) | 1999-01-15 |
DE69230452D1 (de) | 2000-01-27 |
US5481722A (en) | 1996-01-02 |
EP0528617B1 (de) | 1999-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69230452T2 (de) | Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen | |
DE68925746T2 (de) | Versionen-Verwaltungswerkzeug | |
DE69413977T2 (de) | Anordnung und verfahren zur verteilten datenverwaltung in vernetzten rechnersystemen | |
DE69510823T2 (de) | Verfahren zur binär orientierten gruppenanreihung | |
DE3784190T2 (de) | Eintragung eines datenbasisindex in das journal zur verbesserten rueckstellung. | |
DE69309704T2 (de) | Datenverarbeitungssystem und betriebssystem | |
DE60224030T2 (de) | Verwaltungs- und synchronisierungsapplikation für netzwerkdateisystem | |
DE69112694T2 (de) | Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen. | |
DE69322549T2 (de) | Verteilte Transaktionsverarbeitung mit einem Zwei-Phasen-Bindungsprotokoll mit erwarteter Bindung ohne Aufzeichnungspflicht | |
DE69205690T2 (de) | Verfahren und system zur herstellung und zum erhalt mehrerer dokumentversionen in einer datenverarbeitungsystembibliothek. | |
DE60013658T2 (de) | Fehlertolerante virtuelle Javamaschine | |
DE69130814T2 (de) | Verfahren und Gerät zur Umwandlung von Maschinensprachprogrammstrukturen in Strukturen höherer Sprachen durch Manipulierung graphischer Programmdarstellungen | |
EP1194865B1 (de) | Verfahren zur datenpflege in einem netzwerk teilweise replizierter datenbanksysteme | |
DE69617171T2 (de) | Rechneranordnung und Verfahren, um Systemdeltas zusammenzufügen | |
DE69522854T2 (de) | Verfahren und Gerät zum Editieren von Multimediadaten | |
DE3752196T2 (de) | Vorrichtung für Datenverarbeitungsverteilung über eine Mehrzahl von Steuerungsorten | |
DE69128958T2 (de) | Schneide- und Klebefilterung von unbegrenzten, dynamischen, unmodifizierbaren Datenströmen | |
DE69031758T2 (de) | Verfahren zur Organisation von und zum Zugriff auf Produkt beschreibenden Daten in Zusammenhang mit einem technischen Prozess | |
DE69214828T2 (de) | Kodeserver. | |
DE69530595T2 (de) | System und verfahren für die x.500-datenbanknorm | |
DE60318477T2 (de) | Vorrichtung zur dateiaktualisierung | |
DE19844013A1 (de) | Strukturierter Arbeitsordner | |
DE19926116A1 (de) | Mehr-Teilprozeß-Protokollierung in einer Konfigurationsdatenbank | |
DE3485999T2 (de) | Hochgeschwindigkeitverarbeitungssystem fuer rechneranlage. | |
EP0525432A2 (de) | Verfahren zur Änderung von Systemkonfigurationsdatensätzen in einem Fernmeldevermittlungssystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |