DE10314832B3 - Verfahren und Anordnung zur kundenseitigen Anpassung von Software - Google Patents

Verfahren und Anordnung zur kundenseitigen Anpassung von Software

Info

Publication number
DE10314832B3
DE10314832B3 DE2003114832 DE10314832A DE10314832B3 DE 10314832 B3 DE10314832 B3 DE 10314832B3 DE 2003114832 DE2003114832 DE 2003114832 DE 10314832 A DE10314832 A DE 10314832A DE 10314832 B3 DE10314832 B3 DE 10314832B3
Authority
DE
Germany
Prior art keywords
code
software
sw
codeml
modification
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
Application number
DE2003114832
Other languages
English (en)
Inventor
Roy Oberhauser
Christian Reichel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE2003114832 priority Critical patent/DE10314832B3/de
Priority claimed from EP20040739074 external-priority patent/EP1609061A2/de
Application granted granted Critical
Publication of DE10314832B3 publication Critical patent/DE10314832B3/de
Application status is Expired - Fee Related legal-status Critical
Anticipated expiration legal-status Critical

Links

Abstract

Die Erfindung besteht im Wesentlichen darin, dass eine erste Software mit Variationspunkten VP ausgestattet werden kann, welche in eine Meta-Auszeichnungssprache formuliert sind, und kundenseitig durch eine Transformation nur in Abhängigkeit von Transformationsregeln TR, die Modifizierungsregeln für die Variationspunkte enthalten, in eine zweite Software umgewandelt werden kann, welche die Variationspunkte VP entweder in modifizierter Form VP* oder in kompilierter Form VPB* enthält. Die zweite umgewandelte Software unterscheidet sich dabei von der ersten in ihrem Programmablauf bzw. Programminhalt.

Description

  • Die Erfindung betrifft ein Verfahren und eine Anordnung zur Transformation von Software, bei dem/der eine Software, in eine Darstellung in einer Meta-Auszeichnungssprache, beispielsweise XML, übergeführt, dort, beispielsweise mit XSLT, transformiert und dann diese in der Meta-Auszeichnungssprache formulierte transformierte Darstellung in eine modifizierte Software, beispielsweise derselben Ausgangssprache, zurückverwandelt wird.
  • Aus dem Internet ist unter http://beautyj.berlios.de/ ein Java Source Code Transformation Too1 BeautyJ bekannt, bei dem ein Java Quellcode in eine XML-Darstellung umgewandelt wird, mittels Sourclet API, beispielsweise durch Einfügen von Leerzeichen oder geänderten Kommentaren an bestimmten Stellen, „verschönert" und anschließend der modifizierte Quellcode in Java Quellcode zurück konvertiert werden kann. Eine Transformation mittels XSLT wird hier, für diesen Zweck, nur vorgeschlagen, aber nicht umgesetzt.
  • Die der Erfindung zugrunde liegende Aufgabe liegt nun darin, ein Verfahren und eine Anordnung zur Modifikation von Quellcode anzugeben, bei dem/der eine weitergehende noch flexiblere und effizientere Modifikation der Quellcodes erreicht wird.
  • Diese Aufgabe wird hinsichtlich des Verfahrens durch die Merkmale des Patentanspruchs 1 und hinsichtlich der Anordnung durch die Merkmale des Anspruchs 6 erfindungsgemäß gelöst. Die weiteren Ansprüche betreffen bevorzugte Ausgestaltungen der Erfindung.
  • Die Erfindung besteht im Wesentlichen darin, dass ausgewählte Bestandteile einer Software, Klassen und/oder einzelne Fragmente, als Variationspunkte VP dienen können, indem diese in einen in einer Meta-Auszeichnungssprache formulierten ersten Code (CodeML) umgewandelt werden, die Software nun in Mischform, d.h. kompiliertem Code und CodeML, ausgelierfert wird, und der erste Code CodeML kundenseitig durch eine oder mehrere Transformationen T, bspw. XSLT, nur in Abhängigkeit von Transformationsregeln TR, die Modifizierungsregeln für die Variationspunkte VP enthalten, in einen in der Meta-Auszeichnungssprache formulierten zweiten Code CodeML* umgewandelt werden kann und dieser zweite Code wiederum gleich als Variationspunkt oder in kompilierter Form die Abarbeitungsreihenfolge und/oder das Verhalten der Software verändert, woraus folgt, das sich die erste und die zweite Software an den Variationspunkten unterscheiden.
  • Die Erfindung wird im Folgenden anhand des in Zeichnung 1 dargestellten Beispiels näher erläutert. Dabei zeigt
  • Zeichnung 1 ein Gesamtblockdiagramm zur Erläuterung der Erfindung.
  • In Zeichnung 1 ist ein Gesamtblockdiagramm zur Erläuterung der Erfindung dargestellt, bei dem zunächst eine Software SW bestehend aus Quelltext SC1, SC2 und SC in eine auslieferungsfähige Software SW* umgewandelt wird, wobei einige Teile der Software wie bspw. SC1 nun als Binärcode/Byte Code B1 zur Verfügung stehen, und andere Teile wie bspw. SC2 durch einen Konverter CONV in einen in einer Meta-Auszeichnungssprache formulierten ersten Code CodeML umgewandelt werden, so daß sie in der lauffähigen Software SW* fortan Variationspunkte VP bspw. VP1 bilden. Diese Software SW* kann vor/oder zur Laufzeit auf eine Weise modifiziert werden, dass der in der Meta-Auszeichnungssprache dargestellte Code VP, bspw. VP2, mit einer Transformation T und Transformationsregeln TR in einen zweiten in der Meta- Auszeichnungssprache formulierten Code CodeML* umgewandelt wird, welcher nun entweder als geänderter Variationspunkt bspw. VP2* in SW* vorhanden ist oder durch einen Konverter RCONV nach der Transformation T in einen Quellcode SC* und danach mittels COMP in einen ByteCode/Binärcode VP2B* überführt wird. In beiden Fällen unterscheiden sich SW und SW* an den Stellen der Variationspunkte und können auf diese Weise an spezifische Anforderungen (bspw. Tookit-Austausch, Updates, usw.) angepasst werden.
  • Die Codes CodeML und CodeML* bzw. VP und VP* sind beispielsweise in der Meta-Auszeichnungssprache XML formuliert, wobei „XML" für Extended Markup Language steht.
  • Von besonderem Vorteil ist hierbei, dass dies nicht vom Programmentwickler durchgeführt werden muss, sondern vom entsprechend ausgestatteten und informierten Kunden selbst erledigt werden kann. Hierzu braucht ein Operator oder Administrator auf der Kundenseite nur eine entsprechende Transformation T mit den benötigten Ersetzungs-, Modifikations- und Entfernungsregeln TR anzuwenden, um die Software auf seine speziellen Bedürfnisse anzupassen bzw. ein Update oder Patching durchzuführen. Beim Update oder Patching von kundenspezifisch angepasster treten bislang häufig Probleme wegen Inkonsistenzen auf, die durch diese Erfindung und die Möglichkeit der Pipelineanwendung bzw. geordnete Hintereinanderausführung von Anfang an vermieden werden können.
  • Die im Anhang befindlichen Programmauflistungen Listing 1 bis Listing 5 zeigen dies an einem konkreten Beispiel: Typischerweise kann eine Software-Auslieferung an zwei unterschiedliche Kunden unterschiedliche Toolkits verwenden, die sich hinsichtlich Performance, Preis usw. unterscheiden.
  • So soll hier ein Code der ursprünglich eine Registrierungsklasse import electric.registry.Registry aus einem Glue-Toolkit verwendet, beim zweiten Kunden nun zwei neue "Registrierungsklassen" import org.apache.axis.client.Call und import org.apache.axis.client.Service aus einem Axis-Tookit verwenden.
  • In XSL kann dies z.B. mittels
    Figure 00040001
    geschehen. Schablonen bzw. Templates werden in XSL auf das in match definierte Muster angewendet, das import-Template im Listing-Beispiel also auf alle ursprünglichen import-Anweisungen. Im konkreten Beispiel ignoriert es einfach alle ursprünglichen GlUE-Registry-Imports, und fügt stattdessen die zwei Axis-spezifischen imports ein.
  • Durch das erfindungsgemäße Verfahren ergeben sich noch eine Reihe von zusätzlichen Vorteilen, wie beispielsweise:
    • 1. Es ist nur ein System für Problemstellungen wie Patching, Customizing, Updating, etc. erforderlich und nicht eine Reihe verschiedener teilweise proprietärer Werkzeuge.
    • 2. Das Verfahren basiert auf Standards wie XML und XSLT und ist hinsichtlich der Konvertierbarkeit in andere Programmiersprachen geringeren Beschränkungen unterworfen als andere Verfahren zur Modifikation von Quellcode.
    • 3. Selbst für spezielle und komplizierte Quellcode-Modifikationen sind keine proprietären Speziallösungen erforderlich, sondern es können hierfür existierende Standards wie XSLT, XPath und XQuery genutzt werden.
    • 4. Diese Art der Modifikation erlaubt die Erstellung von Hierarchien u.a. durch die Möglichkeit zur geordneten, automatisierten Hintereinanderausführung (Pipelines) mehrerer Transformationen, bspw. von Patches.
    • 5. Die Transformationen können für eine allgemeine Wiederverwendung in XSLT-Dateien gespeichert werden, so daß Bibliotheken z.B. für bestimmte Abläufe entstehen können.
    • 6. Es kann eine XML-Repräsentation des Quellcodes in einer XML-Datenbasis gespeichert und bei Bedarf mit Hilfe einer XSLT in einfacher Weise an die jeweiligen Kundenbedürfnisse angepasst werden (Customization).
    • 7. Durch die Verwendung der Standards XMLSchema oder DTD oder entsprechende XSLTs kann der Code vorab (ohne Kompilierung), auf bestimmte Korrektheitsaspekte hin, überprüft (validiert) werden.
    • 8. Übliche XML-Tools können zur einfachen Bearbeitung bzw. Visualisierung und Bestimmung von Beziehungen im Code verwendet werden.
    • 9. Dauerhafte XML-basierte Programmbibliotheken, die XPath-Anfragen unterstützen, können die Wiederverwendung von Code durch besseres Auffinden eines Codes bzw. von Code-Fragmenten oder Templates verbessert werden.
  • Anhang:
  • Listing 1: TestRegistry.java
    Figure 00060001
  • Listing 2: TestRegistry.xjava
    Figure 00060002
  • Listing 3: VariationPointT1.xsl
    Figure 00060003
  • Listing 4: TestRegistry.xjava (*)
    Figure 00060004
  • Figure 00070001
  • Listing 5: TestRegistry.java (*)
    Figure 00070002

Claims (6)

  1. Verfahren zur kundenseitigen Anpassung von Software, – bei dem vorab herstellerseitig aus einer nur aus Quelltext (SC1, SC2, SC) bestehenden ursprünglichen Software eine Mischform der ursprünglichen Software derart gebildet wird, dass mindestens ein Teil (SC1) des Quelltexts in einen Byte- oder Binärcode (B1,..,B) compiliert und mindestens ein weiterer Teil (SC2) des Quelltexts in einen in einer Meta-Auszeichnungssprache formulierten Code (CodeML) für mindestens einen Variationspunkt (VP2,..VP) konvertiert wird, – bei dem dann kundenseitig nach Bedarf nur mindestens ein Variationspunkt (VP2) der Mischform (SW) der ursprünglichen Software durch eine Transformation (T) in Abhängigkeit von Transformationsregeln (TR) in mindestens einen in der Meta-Auszeichnungssprache formulierten anderen Code (CodeML*) umgewandelt wird und – bei dem der andere Code (CodeML*) direkt einen veränderten Variationspunkt (VP2*) einer angepassten Software (SW*) bildet oder aus dem anderen Code (CodeML*) durch einen Konverter (RCONV) ein Quellcode (SC*) und dann mittels eines Kompilers (COMP) ein Binär- oder ByteCode (B*) des veränderten Variationspunkts (VPB2) einer angepassten Software (SW*) gebildet wird, wobei sich die ursprüngliche (SW) und die angepasste Software (SW*) in ihrem Programmablauf bzw. Programminhalt unterscheiden.
  2. Verfahren nach Anspruch 1, bei dem die Transformationsregeln (TR) mindestens eine Modifikationsregel für einen Variationspunkt aufweisen.
  3. Verfahren nach Anspruch 1 oder 2, bei dem der Modifikationsregel ein Update auf eine neuere Softwareversion bzw. ein Patching anstößt.
  4. Verfahren nach Anspruch 1 oder 2, bei dem die Modifikation mindestens eines Variationspunktes (VP) durch die Transformation zur Laufzeit erfolgt.
  5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Programmiersprache des Quellcodes Java und die Meta-Auszeichnungssprache der Variationspunkte XML ist und bei dem die Transformation und die Regelbeschreibung mittels XSLT und XSL erfolgt.
  6. Anordnung zur kundenseitigen Anpassung von Software, gemäß dem Verfahren nach Anspruch 1 – bei der eine Mischform einer ursprünglichen Software derart vorhanden ist, dass mindestens ein Teil (SC1) eines Quelltexts in einen Byte- oder Binärcode (B1,..,B) compiliert und mindestens ein weiterer Teil (SC2) des Quelltexts in einen in einer Meta-Auszeichnungssprache formulierten Code (CodeML) für mindestens einen Variationspunkt (VP2,..VP) konvertiert ist, – bei der eine Einrichtung zur Transformation (T) derart vorhanden ist, dass nach Bedarf nur mindestens ein Variationspunkt (VP2) der Mischfarm (SW) der ursprünglichen Software durch die Transformation (T) in Abhängigkeit von Transformationsregeln (TR) in mindestens einen in der Meta-Auszeichnungssprache formulierten anderen Code (CodeML*) umwandelbar ist, wobei der andere Code (CodeML*) direkt einen veränderten Variationspunkt (VP2*) einer angepassten Software (SW*) bildet oder aus dem anderen Code (CodeML*) durch einen Konverter (RCONV) ein Quellcode (SC*) und dann mittels eines Compilers (COMP) ein Binär- oder ByteCode (B*) des veränderten Variationspunkts (VPB2) einer angepassten Software (SW*) bildbar ist und wobei sich die ursprüngliche (SW) und die angepasste Software (SW*) in ihrem Programmablauf bzw. Programminhalt unterscheiden.
DE2003114832 2003-04-01 2003-04-01 Verfahren und Anordnung zur kundenseitigen Anpassung von Software Expired - Fee Related DE10314832B3 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2003114832 DE10314832B3 (de) 2003-04-01 2003-04-01 Verfahren und Anordnung zur kundenseitigen Anpassung von Software

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
DE2003114832 DE10314832B3 (de) 2003-04-01 2003-04-01 Verfahren und Anordnung zur kundenseitigen Anpassung von Software
EP20040739074 EP1609061A2 (de) 2003-04-01 2004-03-29 Verfahren und anordnung zur veränderung von software oder quellcode
US10/551,454 US8473937B2 (en) 2003-04-01 2004-03-29 Method and array for changing software or source code
PCT/EP2004/003301 WO2004088549A2 (de) 2003-04-01 2004-03-29 Verfahren und anordnung zur veränderung von software oder quellcode

Publications (1)

Publication Number Publication Date
DE10314832B3 true DE10314832B3 (de) 2004-12-09

Family

ID=33440586

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003114832 Expired - Fee Related DE10314832B3 (de) 2003-04-01 2003-04-01 Verfahren und Anordnung zur kundenseitigen Anpassung von Software

Country Status (1)

Country Link
DE (1) DE10314832B3 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating

Similar Documents

Publication Publication Date Title
US6742175B1 (en) Component-based source code generator
EP0679272B1 (de) Programmiersprachensystem zur erzeugung eines programmsystems eines realzeitsystems auf hochsprachenniveau
Miles AspectJ Cookbook: Aspect Oriented Solutions to Real-World Problems
DE69906488T2 (de) Verfahren zur Synchronisierung eines Datenbankschemas mit seiner Darstellung in einem objekt-orientierten Repository
DE19815865B4 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
DE4235193C2 (de) Netzwerksystem und zugehöriges Softwareverwaltungsverfahren
EP1176482B1 (de) Verfahren und Computerprogramm zum Herstellen einer Regelung oder Steuerung
US6799718B2 (en) Development assistance for mixed-language sources
US5287444A (en) Message processing system
DE69725652T2 (de) Einbettung von Ton in Webseiten
DE19681256C2 (de) Ausführung von Anwendungen am Platz vom Speicher
DE69724877T2 (de) Verfahren und Vorrichtung zum Betrieb einer Aggregation von Serverrechnern mittels eines Doppelzweck-Proxy-Servers
Herrmannsdoerfer et al. COPE-automating coupled evolution of metamodels and models
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE69820027T2 (de) Vorrichtung zur ausführung virtueller maschinenbefehle
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE60002295T2 (de) Aufwandslose ausnahmebehandlung
DE69724360T2 (de) Methode und System zur Erleichterung der Informationsanzeige an einen Rechnerbenutzer
US20040153465A1 (en) Document generation system and user interface for producing a user desired document
EP0207255B1 (de) Anordnung zum Bedienen und Warten einer Fernmelde- insbesondere Fernsprechvermittlungsanlage
EP1156412A2 (de) Effektiver Gebrauch von Bearbeitungsvorrichtungen für Druckmedien in einem Druckauftragsdatenfluss
DE69909945T2 (de) Verfahren und Anordnung zur Korrelation von Profildaten dynamisch erzeugt durch ein optimiertes ausführbares Programm mit Quellcodeanweisungen
CA2400590A1 (en) Method and apparatus for converting legacy programming language data structures to schema definitions
DE69724322T2 (de) Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung
DE60007252T2 (de) Graphischer benutzerschnittstellentreiber für eingebettete systeme

Legal Events

Date Code Title Description
8100 Publication of the examined application without publication of unexamined application
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee