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

Verfahren und Anordnung zur kundenseitigen Anpassung von Software Download PDF

Info

Publication number
DE10314832B3
DE10314832B3 DE10314832A DE10314832A DE10314832B3 DE 10314832 B3 DE10314832 B3 DE 10314832B3 DE 10314832 A DE10314832 A DE 10314832A DE 10314832 A DE10314832 A DE 10314832A DE 10314832 B3 DE10314832 B3 DE 10314832B3
Authority
DE
Germany
Prior art keywords
code
software
codeml
transformation
variation
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
DE10314832A
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 DE10314832A priority Critical patent/DE10314832B3/de
Priority to EP04739074A priority patent/EP1609061A2/de
Priority to PCT/EP2004/003301 priority patent/WO2004088549A2/de
Priority to US10/551,454 priority patent/US8473937B2/en
Application granted granted Critical
Publication of DE10314832B3 publication Critical patent/DE10314832B3/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

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.
DE10314832A 2003-04-01 2003-04-01 Verfahren und Anordnung zur kundenseitigen Anpassung von Software Expired - Fee Related DE10314832B3 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE10314832A DE10314832B3 (de) 2003-04-01 2003-04-01 Verfahren und Anordnung zur kundenseitigen Anpassung von Software
EP04739074A EP1609061A2 (de) 2003-04-01 2004-03-29 Verfahren und anordnung zur veränderung von software oder quellcode
PCT/EP2004/003301 WO2004088549A2 (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

Applications Claiming Priority (1)

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

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
DE10314832A 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
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
EP1723513B1 (de) Verfahren zur konfiguration eines computerprogramms
EP0432802A2 (de) Verfahren für die automatische Syntaxanalyse (Parsen) des Textes von Computer-Programmen in Kompilierern
EP1176482A1 (de) Verfahren und Computerprogramm zum Herstellen einer Regelung oder Steuerung
WO2015185328A1 (de) Computerimplementiertes verfahren und signalfolge für ein programm zur wiederverwendung von ausführbaren softwarekonfigurationen für softwaresysteme sowie rechneranlage und ein computerprogramm mit programmcode zur durchführung des verfahrens
DE102005042129A1 (de) Verfahren und Vorrichtung zum automatisierten Bewerten der Qualität eines Software-Quellcodes
DE10041072A1 (de) Verfahren zur automatischen Erzeugung von Programmcode
EP1609061A2 (de) Verfahren und anordnung zur veränderung von software oder quellcode
DE10314832B3 (de) Verfahren und Anordnung zur kundenseitigen Anpassung von Software
WO2007068563A1 (de) Verfahren zur verarbeitung und erzeugung von diagnosedaten in einem softwareentwicklungsprozess
DE10008632B4 (de) Verfahren und System zum Erzeugen eines Computerprogramms
EP1622022A1 (de) Automatische Erzeugung von Testfällen
DE60225464T2 (de) Robotersystem und verfahren und software für das robotersystem
EP0708941B1 (de) Verfahren zum test eines objektorientierten programms
EP3800480A1 (de) Konvertierung eines mr-messprotokolls
DE10314835A1 (de) Verfahren und Anordnung zur Erzeugung und Verarbeitung eines Quellcodes mit Spracherweiterungen
DE102004022183B4 (de) Verfahren zum Ändern von Programmobjektcode bei Quelltextänderungen
DE10314831A1 (de) Verfahren und Anordnung zur Transformation von Quellcode
EP0560342B1 (de) Verfahren zum Untersuchen des Ablaufs eines in einer Hardware-Beschreibungssprache geschriebenen Programms
DE112016007465T5 (de) Programmentwicklungsunterstützungsvorrichtung und Verfahren zur Verwaltung von Programmkomponenten
DE10300541A1 (de) Erzeugen einer ausführbaren Datei
DE10314834A1 (de) Verfahren Anordnung zur Modifikation von Quellcode unter Einbeziehung zusätzlicher Informationen
DE10254530A1 (de) Verfahren und System zur wissensbasierten Transformation von textuellen Programmen, die sich auf die Softwarekonfiguration eines verteilten Leitsystems beziehen
DE10105729C1 (de) Verfahren und System zur funktionsmäßigen Erweiterung einer Telekommunikationsanlage
EP0809183A1 (de) Verfahren und Anordnung zur Aktualisierung eines Teils eines Programmcodes während dessen Ausführung

Legal Events

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