-
Die
vorliegende Erfindung betrifft ein Verfahren zur Wiederverwendung
einzelner Quellcodesegmente, welche in ihrem Zusammenwirken funktionale oder
nichtfunktionale Anforderungen erfüllen. Die Erfindung betrifft
ferner eine Vorrichtung, welche sich zur Durchführung des Verfahrens eignet,
sowie ein Computerprogrammprodukt, welches die Durchführung eines
entsprechenden Verfahrens veranlasst.
-
Bei
der Entwicklung von softwareimplementierten Systemen ist die Wiederverwendbarkeit
von bereits implementierten Quellcodesegmenten nach Möglichkeit
zu gewährleisten.
Hierzu können
Softwaresysteme modular durch wiederverwendbare Softwarekomponenten
aufgebaut sein. Softwarekomponenten umfassen hierbei zum Beispiel
mehrere Quellcodesegmente. Softwarekomponenten eines Softwaresystems
können
auch verteilt auf mehreren Rechnern ausgeführt werden. Die einzelnen Softwarekomponenten
können
ferner auf unterschiedlichen Plattformen implementiert sein. Insbesondere kann
es vorkommen, dass mehrere Softwarekomponenten untereinander in
unterschiedlichen Programmiersprachen implementiert sind.
-
Der
Ansatz Softwarekomponenten nicht zielsystemspezifisch konstruieren
zu müssen,
hat sich mit der Verbreitung der höheren Programmiersprachen durchgesetzt.
Es werden Softwarekomponenten erstellt, welche durch Übersetzer
bzw. Compiler von der Hochsprache in die Maschinensprache des jeweiligen
Zielsystems übersetzt
werden. Zuvor wurden Softwarekomponenten direkt in der Maschinensprache
für das
jeweilige Zielsystem implementiert. Da Maschinensprachen im Gegensatz
zu Hochsprachen für
den Menschen weniger intuitiv verständlich sind, war dieses Vorgehen
mit einem höheren
Aufwand und höherer
Fehleranfälligkeit
verbunden. Insbesondere konnte der Softwarecode zumeist nicht wiederverwendet
werden. Die stets Neu implementierung der Softwarekomponenten führte ebenfalls
zu einer erhöhten
Fehleranfälligkeit.
Aufgrund von Kosteneffizienz und des Wiederverwendungsaspekts sollen
Softwarekomponenten nicht genau auf ein Zielsystem und dessen genauen
technischen Details konstruiert werden. Man geht bewusst eine Abstraktion
ein, um schneller, effizienter und fehlerfreier eine Softwarekomponente
zu entwickeln.
-
Bei
der Wiederverwendung von Quellcodesegmenten werden Anforderungen
gestellt, welche durch einzelne Quellcodesegmente erfüllt werden müssen, oder
die das Zusammenwirken mehrerer wiederverwendeter Quellcodesegmente
erfüllen muss.
So obliegt die Beurteilung der Qualität der wiederzuverwendenden
Quellcodesegmente einem Projektverantwortlichen, welcher die Quellcodesegmente
in einem Projekt wiederverwendet. Die Qualität der Quellcodesegmente, welche
wiederverwendet werden sollen, definiert sich zum Beispiel durch
deren Erweiterbarkeit, deren Fehlertoleranz, deren Skalierbarkeit
und deren Performanz. Die Evaluation dieser Kriterien ist aufwendig,
kompliziert und fehleranfällig. Liegen
Quellcodesegmente in verschiedenen Programmiersprachen vor, so sind
diese aus technischen Gründen
nicht notwendigerweise kompatibel zueinander.
-
Technische
Anforderungen an Quellcodesegmente, wie zum Beispiel Performanz,
sowie Laufzeit- und Speicherkomplexität werden in herkömmlichen
Verfahren empirisch ermittelt. Dies bedeutet einen erheblichen Aufwand
und ist fehleranfällig.
Bei einer Integration von Quellcodesegmenten in einen bestehenden
Quellcode, kann es bei herkömmlichen Verfahren
zu Inkonsistenzen kommen, die meist erst bei einem Systemtest erkannt
werden. Ein Systemtest prüft
hierbei das Zusammenwirken mehrerer Softwarekomponenten unter Verwendung
eines hardwarebasierten Systems.
-
Herkömmliche
Verfahren zur Wiederverwendung von Quellcodesegmenten berücksichtigen
typischerweise keine nichtfunktionalen Anforderungen, wie zum Beispiel
Lizenzrechte, Autoreninformationen oder in den Quellcode eingebettete
Freitextkommentare.
-
Herkömmliche
Verfahren können
auf sogenannten Programmbibliotheken basieren, um Quellcodesegmente
anforderungskonform wiederzuverwenden.
-
Nachteilig
bei herkömmlichen
Verfahren ist, dass die Anforderungen, welche an wiederzuverwendende
Quellcodesegmente gestellt werden, typischerweise nicht vollständig erfüllt werden.
Insbesondere ist es für
einen Quellcodeentwickler nicht möglich, einen anforderungskonformen
Quellcode aus bereits bestehenden Quellcodesegmenten zu erzeugen,
welcher einer Kombination aller Anforderungen entspricht.
-
Folglich
ist der durch herkömmliche
Verfahren erstellte Quellcode typischerweise nicht vollständig anforderungskonform,
was sich erheblich nachteilig zum Beispiel auf Speicher- und Laufzeitkomplexität des Quellcodes
auswirkt.
-
Der
Erfindung liegt die Aufgabe zugrunde eine verbesserte Vorrichtung
zum Erstellen von einem anforderungskonformen Quellcode bereitzustellen.
-
Diese
Aufgabe wird durch eine Vorrichtung zum Erstellen von einem anforderungskonformen Quellcode
gemäß Patentanspruch
1 gelöst.
-
Demgemäß ist eine
Vorrichtung zum Erstellen von einem anforderungskonformen Quellcode vorgesehen.
Die Vorrichtung weist eine Anforderungsanalyseeinheit zum Analysieren
einer spezifizierten funktionalen oder nichtfunktionalen Gesamtanforderung
an den Quellcode und zum Ableiten von mindestens einer Teilanforderung
auf. Die mindestens eine abgeleitete Teilanforderung entspricht
hierbei der Gesamtanforderung. Ferner weist die Vorrichtung eine
Quellcodeanalyseeinheit zum Auswählen
von mindestens einem Quellcodesegment aus einem Datenspeicher auf.
Das mindestens eine ausgewählte
Quellcodesegment erfüllt
hierbei mindestens eine abgeleitete Teilanforderung. Ferner weist
die Vorrichtung eine Quellcodeintegrationseinheit zum Zusammenfügen der
ausgewählten
Quellcodeseg mente auf. Die zusammengefügten Quellcodesegmente erfüllen hierbei
die Gesamtanforderung.
-
Ein
Quellcode weist mindestens ein Quellcodesegment auf. Das Quellcodesegment
kann eine Programmbibliothek, eine Programmkomponente, ein Programmmodul,
ein Programmpackage, eine Programmklasse, eine Programmroutine,
eine Programmfunktion, eine Programmmethode, eine Parameterzuweisung,
eine Programmschleife, eine Programmschnittstelle, einen Methodenaufruf,
einen Konstruktor und/oder Programmzeilen aufweisen. Vorteilhaft
ist hierbei, dass der durch die vorgeschlagene Vorrichtung erstellte
anforderungskonforme Quellcode in bereits bestehenden Quellcode
eingebettet werden kann.
-
Bei
dem anforderungskonformen Quellcode kann es sich um eine funktionale
Einheit handeln, wobei die Funktionalität durch ein Zusammenwirkender
einzelnen Quellcodesegmente bereitgestellt wird.
-
Gesamtanforderungen
an den Quellcode können
sich zum Beispiel auf die Wiederverwendbarkeit, die Erweiterbarkeit,
die Fehlertoleranz, die Skalierbarkeit, die Performanz, die Korrektheit,
die Kompatibilität,
die Konsistenz und/oder auf Lizenzbedingungen beziehen. Das Spezifizieren
von Gesamtanforderungen kann durch einen menschlichen Nutzer und/oder
durch ein computerimplementiertes System erfolgen. Der menschliche
Nutzer spezifiziert zum Beispiel eine benötigte Funktionalität und spezifiziert ferner
eine Performanzanforderung. Der menschliche Nutzer kann zum Beispiel
spezifizieren, dass er eine Datenbankanfrage mit einer bestimmten
Funktionalität
benötigt.
Bezüglich
der Performanzanforderung spezifiziert der menschliche Nutzer ferner,
dass die Antwortzeit eines bestimmten Datenbanksystems nicht länger als
fünf Sekunden
betragen darf.
-
Die
Anforderungsanalyseeinheit leitet von der spezifizierten funktionalen
Gesamtanforderung, nämlich
die benötigte
Datenbankabfrage, einzelne Teilanforderungen ab. Eine Teilanforderung
ist beispielsweise, dass aus der Datenbank bestimmte Da tensätze selektiert
werden müssen,
und eine weitere Teilanforderung ist es, dass bestimmte selektierte Datensätze mit
weiteren Datensätzen
verknüpft
werden müssen.
Weiterhin leitet die Anforderungsanalyseeinheit aus der nichtfunktionalen
Gesamtanforderung, nämlich
der Performanzanforderung, weitere Teilanforderungen ab. Zum Beispiel
leitet die Anforderungsanalyseeinheit ab, dass ein Selektieren bestimmter
Datensätze
nicht länger
als zwei Sekunden dauern darf, und ein Verknüpfen bestimmter Datensätze nicht
länger
als drei Sekunden dauern darf.
-
Die
Quellcodeanalyseeinheit wählt
einzelne Quellcodesegmente aus, welche den Teilanforderungen entsprechen.
Folglich erfüllt
mindestens ein ausgewähltes
Quellcodesegment mindestens eine abgeleitete Teilanforderung. Es
ist möglich,
dass mehrere Quellcodesegmente in ihrem funktionalen Zusammenwirken
eine abgeleitete Teilanforderung erfüllen. Alternativ ist es möglich, dass
ein ausgewähltes Quellcodesegment
mehrere abgeleitete Teilanforderungen erfüllt. Alternativ kann ein ausgewähltes Quellcodesegment
eine abgeleitete Teilanforderung erfüllen.
-
Zum
Auswählen
des mindestens einen Quellcodesegments kommuniziert die Quellcodeanalyseeinheit
mit dem Datenspeicher. Der Datenspeicher weist bereits implementierte
Quellcodesegmente auf. Außerdem
kann in dem Datenspeicher Metainformation bezüglich der einzelnen Quellcodesegmente
hinterlegt sein. Bei dem Datenspeicher kann es sich zum Beispiel
um ein Quellcoderepository handeln. Das Quellcoderepository speichert
somit mehrere Quellcodesegmente und zusätzliche Metainformationen wie
zum Beispiel eine Lizenzinformation, eine Autoreninformation, eine
Versionsinformation und/oder einen Zeitstempel. Hierbei beschreibt eine
Lizenzinformation welche lizenzrechtlichen Rahmenbedingungen mit
der Wiederverwendung des Quellcodesegments verbunden sind. Die Autoreninformation
beschreibt mindestens einen Autor des Quellcodesegments. Die Versionsinformation
beschreibt in welcher Version das Quellcodesegment in dem Quellcoderepository
gespeichert wird. Der Zeitstempel gibt einen Hinweis auf den Zeitpunkt
einer Akti on, welche auf dem Quellcodesegment durchgeführt wurde.
Der Zeitstempel zeigt zum Beispiel den Zeitpunkt eines Änderns,
einer Hinzufüge-
oder Löschaktion
an.
-
Bei
dem Datenspeicher kann es sich um einen lokalen, entfernten und/oder
einen verteilten Speicher handeln. Zum Beispiel kann der Datenspeicher
als Festplatte, Flashdisk, USB-Stick, Floppy-Disk, Diskette, CD,
DVD, Blu-Ray-Disk, Magnetband, Band und/oder als Wechseldatenträger vorliegen.
Vorzugsweise ist der Datenspeicher als Datenbankserver implementiert.
Vorteilhaft ist hierbei, dass die vorgeschlagene Vorrichtung in
bereits bestehende Systeme eingebettet werden kann.
-
Die
Quellcodeanalyseeinheit prüft,
ob mindestens ein in dem Datenspeicher gespeichertes Quellcodesegment
mindestens eine Teilanforderung erfüllt. Hierzu liest die Quellcodeanalyseeinheit
Metainformationen aus dem Datenspeicher bezüglich der gespeicherten Quellcodesegmente
aus. Alternativ ermittelt die Quellcodeanalyseeinheit die Metainformation
der gespeicherten Quellcodesegmente empirisch. Zum Beispiel ist
in dem Datenspeicher ein Quellcodesegment gespeichert, welche eine
spezifizierte Teilanforderung erfüllt. Hierbei handelt es sich zum
Beispiel um eine Select-Anweisung, welche die abgeleitete Teilanforderung
implementiert und zusätzlich
eine Ausführungszeit
von einer Sekunde aufweist. Somit erfüllt das gespeicherte Quellcodesegment
sowohl die funktionale Teilanforderung, nämlich das Selektieren bestimmter
Datensätze,
wie auch die nichtfunktionale Teilanforderung, nämlich die Performanzanforderung
von einer Antwortzeit von maximal zwei Sekunden. Folglich hat die
Quellcodeanalyseeinheit ein Quellcodesegment, welches zwei abgeleiteten
Teilanforderungen entspricht.
-
Ferner
wählt die
Quellcodeanalyseeinheit ein Quellcodesegment aus, welches eine Join-Operation
mit der benötigten
Funktionalität,
welche als funktionale Teilanforderung spezifiziert wurde aus. Die
Join-Anweisung erfüllt
die Performanzanforderung von einer Antwortzeit von maximal drei
Sekunden. Die beiden ausgewählten
Quellcodesegmente erfüllen
in ihrem Zusammenwirken die spezifizierte Gesamtanforderung.
-
Die
Quellcodeintegrationseinheit fügt
die ausgewählten
Quellcodesegmente derart zusammen, dass durch deren Zusammenwirken
die Gesamtanforderung erfüllt
ist. Hierzu kann es notwendig sein, ein Quellcodesegment in ein
weiteres Quellcodesegment einzubetten, Methodenaufrufe der Quellcodesegmente
iterativ und/oder rekursiv zu gestalten, die Quellcodesegmente derart
zu kombinieren, dass der Rückgabewert
eines ersten Quellcodesegments als Eingabe eines zweiten Quellcodesegments
dient und/oder das erste Quellcodesegment und das zweite Quellcodesegment
zu kombinieren.
-
Die
ausgewählten
Quellcodesegmente können
in unterschiedlichen Programmier- und/oder Skriptsprachen implementiert
sein. Zum Beispiel handelt es sich bei dem ersten Quellcodesegment um
eine Java-Klasse und bei dem zweiten Quellcodesegment um ein PHP-Skript.
Die Quellcodeintegrationseinheit fügt das erste Quellcodesegment
und das zweite Quellcodesegment derart zusammen, dass das erste
Quellcodesegment und das zweite Quellcodesegment auf einer Zielplattform
ausführbar,
sind. Dies geschieht zum Beispiel durch ein Übersetzen des ersten Quellcodesegments
und des zweiten Quellcodesegments in eine Zielprogrammier- oder
Zielskriptsprache. Vorteilhaft ist hierbei, dass der erstellte anforderungskonforme
Quellcode auf genau einer Zielplattform ausgeführt werden kann.
-
Alternativ
können
das erste Quellcodesegment und das zweite Quellcodesegment durch
eine Virtualisierung auf einem physischen Rechnersystem lauffähig gemacht
werden. Hierbei wird das erste Quellcodesegment auf einer ersten
virtualisierten Umgebung ausgeführt
und das zweite Quellcodesegment auf einer zweiten virtualisierten
Umgebung ausgeführt.
Um das erste Quellcodesegment und das zweite Quellcodesegment auf
einer Zielplattform ausführbar
zu machen, wird zum Beispiel ein Virtualisierer, ein Emulator und/oder
eine Virtual-Machine verwendet.
-
Die
ausgewählten
Quellcodesegmente erfüllen
somit in ihrem Zusammenwirken die Gesamtanforderung. Folglich wird
ein anforderungskonformer Quellcode bereitgestellt.
-
Der
anforderungskonforme Quellcode kann in einen bereits bestehenden
Quellcode eingebettet werden. Hierbei werden die Gesamtanforderungen
in Abhängigkeit
des bereits bestehenden Quellcodes definiert. Ein Beispiel für eine Teilanforderung
ist hierbei eine bestimmte Methodensignatur, sowie bestimmte Eingabe-
und/oder Rückgabewerte.
Der erstellte anforderungskonforme Quellcode wird durch die Quellcodeintegrationseinheit
in den bereits bestehenden Quellcode eingebettet.
-
Zum
Spezifizieren der Gesamtanforderung oder der Teilanforderung kann
es notwendig sein, ein formales Modell der Gesamtanforderung und/oder der
Teilanforderung zu erstellen. Dies erfolgt zum Beispiel unter Verwendung
einer Anforderungsspezifikationssprache, einer booleschen Algebra,
einer Logik, einer Ontologie und/oder einer grafischen Notation.
Außerdem
können
die Quellcodesegmente als ein formales Modell beschrieben werden.
Das Auswählen
von dem mindestens einen Quellcodesegment kann in Abhängigkeit
eines Vergleichens eines formalen Modells einer abgeleiteten Teilanforderung und
eines formalen Modells eines Quellcodesegments erfolgen. Dies ist
vorteilig, da formale Modelle, im Gegensatz zu natürlichsprachlichen
Aussagen, bezüglich
ihrer Konsistenz und Korrektheit überprüft werden können.
-
Die
Erfindung betrifft ferner ein Verfahren zum Erstellen von einem
anforderungskonformen Quellcode. Hierzu wird eine spezifizierte
funktionale oder nichtfunktionale Gesamtanforderung analysiert und
daraus Teilanforderungen abgeleitet. Die Teilanforderungen werden
von der Gesamtanforderung derart abgeleitet, dass die abgeleiteten
Teilanforderungen der Gesamtanforderung entsprechen. Es wird mindestens
ein Quellcodesegment aus einem Datenspeicher ausgewählt, welches
mindestens eine abgeleitete Teilanforderung erfüllt. Die ausgewählten Quellcodesegmente
werden derart zusammengefügt,
dass die zu sammengefügten
Quellcodesegmente die Gesamtanforderung erfüllen.
-
Um
das Verfahren durchzuführen,
kann es vorteilig sein, die Schritte Analysieren einer Gesamtanforderung,
Auswählen
von mindestens einem Quellcodesegment und/oder Zusammenfügen der ausgewählten Quellcodesegmente
iterativ und/oder in anderer Reihenfolge auszuführen.
-
Die
Erfindung betrifft darüber
hinaus ein Computerprogrammprodukt, welches zum Betreiben einer
Vorrichtung zum Erstellen von einem anforderungskonformen Quellcode
geeignet ist.
-
Somit
werden ein Verfahren und eine Vorrichtung zum Erstellen von einem
anforderungskonformen Quellcode bereitgestellt. Erfindungsgemäß ist es
möglich,
einen anforderungskonformen Quellcode zu erstellen, wobei der anforderungskonforme Quellcode
zum Beispiel bezüglich
Speicher- und Laufzeitkomplexität
optimiert ist. Besonders vorteilhaft ist hierbei zum Beispiel, dass
ein hardwarebasiertes Computersystem weniger Resourcen zum Ausführen des
anforderungskonformen Quellcodes bereitstellen muss, als zum Ausführen eines
Quellcodes, welcher nach herkömmlichem
Verfahren implementiert wurde.
-
Weitere
vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche sowie der
im Folgenden beschriebenen Ausführungsbeispiele.
Im Weiteren wird die Erfindung anhand beispielhafter Implementierungen
unter Bezugnahme auf die schematischen Figuren näher erläutert.
-
Es
zeigt dabei:
-
1 eine
schematische Darstellung einer Rechneranlage zum Erstellen von einem
anforderungskonformen Quellcode gemäß der vorliegenden Erfindung;
-
2 eine
weitere schematische Darstellung einer Rechneranlage zum Erstellen
von einem anforderungskonformen Quellcode gemäß der vorliegenden Erfindung;
-
3 eine
weitere schematische Darstellung einer Rechneranlage zum Erstellen
von einem anforderungskonformen Quellcode gemäß der vorliegenden Erfindung;
-
4 ein
Ablaufdiagramm einer Variante eines Verfahrens zum Erstellen von
einem anforderungskonformen Quellcode gemäß der vorliegenden Erfindung;
-
5 ein
detailliertes Ablaufdiagramm einer Variante eines Verfahrens zum
Erstellen von einem anforderungskonformen Quellcode gemäß der vorliegenden
Erfindung; und
-
6 eine
weitere schematische Darstellung einer Rechneranlage zum Erstellen
von einem anforderungskonformen Quellcode gemäß der vorliegenden Erfindung.
-
In
den Figuren sind gleiche bzw. funktionsgleiche Elemente mit den
gleichen Bezugszeichen versehen worden, sofern nichts anderes angegeben ist.
-
1 zeigt
eine schematische Darstellung einer Rechneranlage 1 zum
Erstellen von einem anforderungskonformen Quellcode 4a gemäß der vorliegenden
Erfindung. Die Rechneranlage 1 umfasst eine Anforderungsanalyseeinheit 2,
eine Quellcodeanalyseeinheit 3 und eine Quellcodeintegrationseinheit 4.
-
Im
vorliegenden Ausführungsbeispiel
spezifiziert ein menschlicher Nutzer eine Gesamtanforderung 1a.
Die spezifizierte Gesamtanforderung 1a dient als Eingabe
für die
Anforderungsanalyseeinheit 2. Die Anforderungsanalyseeinheit 2 analysiert
die spezifizierte Gesamtanforderung 1a und leitet mindestens
eine Teilanforderung 2a ab. Die mindestens eine abgeleitete
Teilanforderung 2a entspricht der Gesamtanforderung 1a.
Die abgeleitete Teilanforderung 2a dient als Eingabe für die Quellcodeanalyseeinheit 3.
-
Die
Quellcodeanalyseeinheit 3 vergleicht die eingegebene Teilanforderung 2a mit
Quellcodesegmenten, die durch einen Datenspeicher bereitgestellt werden.
Die Quellcodeanalyseeinheit 3 wählt diejenigen bereitgestellten
Quellcodesegmente aus, welche mindestens eine durch die Anforderungsanalyseeinheit 2 abgeleitete
Teilanforderung erfüllen.
Das mindestens eine ausgewählte
Quellcodesegment dient als Eingabe für die Quellcodeintegrationseinheit 4.
-
Die
Quellcodeintegrationseinheit 4 fügt die durch die Quellcodeanalyseeinheit 3 ausgewählten Quellcodesegmente
zu einem Quellcode 4a zusammen. Hierbei erfüllen die
zusammengefügten
Quellcodesegmente in ihrem Zusammenwirken die spezifizierte Gesamtanforderung 1a.
-
2 zeigt
eine weitere schematische Darstellung einer Rechneranlage 1 zum
Erstellen von einem anforderungskonformen Quellcode 4a gemäß der vorliegenden
Erfindung. Die in 2 gezeigte Rechneranlage 1 unterscheidet
sich von der in 2 gezeigten Rechneranlage 1 wie
folgt:
Die Anforderungsanalyseeinheit 2 weist eine
Anforderungsschnittstelle 5 auf. Die Quellcodeanalyseeinheit 3 weist
eine Quellcodesegmentanfrageeinheit 6, sowie eine Quellcodesegmentanalyseeinheit 7 auf. Die
Quellcodeanalyseeinheit 3 kommuniziert mit einem Quellcodesegmentrepository 11 mittels
einem Netzwerk 10. Die Quellcodeintegrationseinheit 4 weist
eine Quellcodesegmentübersetzungseinheit 8, sowie
eine Quellcodesegementkonsolidierungseinheit 9 auf.
-
Im
vorliegenden Ausführungsbeispiel
spezifiziert ein menschlicher Nutzer eine Gesamtanforderung 1a.
Diese gibt er anhand einer natürlichsprachlichen
Beschreibung mittels der Anforderungsschnittstelle 5 in
die Anforderungsanalyseeinheit 2 ein. Die Anforderungsanalyseeinheit 2 ist
geeignet aus der natürlichsprachlichen
Eingabe, nämlich
der Gesamtanforderung 1a, ein formales Modell zu erstellen.
Der menschliche Nutzer spezifiziert zum Beispiel, dass er eine Steuerungseinheit
einer technischen Vorrichtung benötigt. Die spezifizierte Gesamtan forderung 1a ist
somit eine Funktionalität, welche
durch eine Steuerungseinheit einer technischen Vorrichtung implementiert
wird.
-
Die
Anforderungsanalyseeinheit ist geeignet aus dem formalen Modell,
welches die Gesamtanforderung 1a beschreibt, mindestens
eine Teilanforderung 2a abzuleiten. Die Anforderungsanalyseeinheit 2 kann
aus der Gesamtforderung 1a ableiten, dass die Steuereinheit
der technischen Vorrichtung einen bestimmten Präzisionswert erfüllen muss.
Diese Teilanforderung wird an die Quellcodesegmentanfrageeinheit 6 übermittelt.
Die Quellcodesegmentanfrageeinheit 6 generiert Anfragen
an ein Quellcodesegmentrepository 11. Das Quellcodesegmentrepository 11 übergibt
daraufhin eine Auswahl an Quelltexten an die Quellcodesegmentanalyseeinheit 7.
-
Die
Quellcodesegmentanalyseeinheit 7 überprüft ob die zurückgegebenen
Quelltexte Quellcodesegmente enthalten, welche mindestens eine Teilanforderung 2a erfüllen. Weiterhin
kann die Quellcodesegmentanalyseeinheit 7 die zurückgegebenen Quelltexte
auf Konsistenz und/oder Programmiersprache überprüfen. Ein Überprüfen der zurückgegebenen Quelltexte kann
direkt anhand der zurückgegebenen
Quelltexte geschehen, die Quellcodesegmentanalyseeinheit 7 kann
aber auch zusätzliche Quellcodesegmentinformationen
aus dem Quellcodesegmentrepository 11 mittels des Netzwerkes 10 auslesen.
-
Das
Quellcodesegmentrepository 11 weist Quellcode, Quellcodesegmente
und/oder Quelltexte auf. Im vorliegenden Ausführungsbeispiel ist das Quellcodesegmentrepository 11 als
Datenbankserver implementiert. Die Quellcodeanalyseeinheit 3 übermittelt
dem Quellcodesegmentrepository 11 Anfragen und erhält als Rückgabewert
Quellcodetexte und/oder einen Hinweis, darauf, wo Quellcodetexte abgerufen
werden können.
Dieser Hinweis kann mittels einer URL und/oder einer URI bereitgestellt
werden. Die Quellcodeanalyseeinheit 4 kann aufgrund des
Hinweises Quellcodetexte von einem weiteren Datenspeicher abrufen.
Alternativ erhält
die Quellcodeanalyseeinheit 3 ei nen Hinweis auf einen Web-Service,
welcher die Quelltexte bereitstellt.
-
Aus
den bereitgestellten Quelltexten wählt die Quellcodesegmentanalyseeinheit 7 diejenigen Quellcodesegmente
aus, welche mindestens eine Teilanforderung 2a erfüllen.
-
Das
Auswählen
des mindestens einen Quellcodesegments kann durch ein Vergleichen
eines ersten formalen Modells, welches eine Teilanforderung beschreibt,
und eines zweiten formalen Modells, welches ein Quellcodesegment
beschreibt, geschehen. Hierzu ist die Quellcodesegmentanalyseeinheit 7 geeignet,
aus mindestens einem Quellcodesegment ein formales Modell zu erstellen.
Alternativ kann die Quellcodeanalyseeinheit 3 geeignet
sein, ein Quellcodesegment direkt mit einem ersten formalen Modell
zu vergleichen, wobei das erste formale Modell die Teilanforderung 2a beschreibt.
-
Die
ausgewählten
Quellcodesegmente 3a werden an die Quellcodeintegrationseinheit 4 übermittelt.
Die Quellcodeintegrationseinheit 4 ist geeignet, zu erkennen,
ob die übermittelten
Quellcodesegmente 3a in einer bestimmten Zielprogrammier- oder Zielskriptsprache
implementiert sind. Liegen die übermittelten
Quellcodesegmente 3a in unterschiedlichen Programmier-
oder Skriptsprachen vor, bzw. stimmt die verwendete Programmier-
oder Skriptsprache nicht mit einer bestimmten Programmier- oder
Skriptsprache überein,
so übersetzt
die Quellcodesegmentübersetzungseinheit 8 die übermittelten Quellcodesegmente 3a in
eine bestimmte Zielsprache. Die Quellcodesegmentkonsolidierungseinheit 9 fügt die übermittelten
Quellcodesegmente 3a derart zusammen, dass die zusammengefügten Quellcodesegmente
in ihrem Zusammenwirken die Gesamtanforderung 1a erfüllen. Die
zusammengefügten
Quellcodesegmente bilden den anforderungskonformen Quellcode 4a.
-
Die
Rechneranlage 1 übergibt
den anforderungskonformen Quellcode in dem vorliegenden Ausführungsbeispiel
mittels eines Monitors an den menschlichen Nutzer.
-
3 beschreibt
eine weitere schematische Darstellung einer Rechneranlage 1 zum
Erstellen von einem anforderungskonformen Quellcode 4a gemäß der vorliegenden
Erfindung.
-
Im
vorliegenden Ausführungsbeispiel
ist die Rechneranlage 1 zum Erstellen von einem anforderungskonformen
Quellcode 4a softwarebasiert nachgebildet. Das Nachbilden
der Rechneranlage 1 kann zum Beispiel durch Virtualisierung
ausgeführt
werden. Hierbei wird die physische Rechneranlage 1 zum
Erstellen von einem anforderungskonformen Quellcode 4a durch
eine Softwarekomponente 1 simuliert. Im vorliegenden Ausführungsbeispiel
wird somit zum Erstellen von einem anforderungskonformen Quellcode 4a eine
nachgebildete Rechneranlage 1 verwendet. Die nachgebildete
Rechneranlage 1 ist mittels einer Plug-In-Schnittstelle 21 in
eine Quellcodeentwicklungsumgebung 20 eingebunden. Bei der
Quellcodeentwicklungsumgebung 20 handelt es sich zum Beispiel
um die Quellcodeentwicklungsumgebung Eclipse.
-
Im
vorliegenden Ausführungsbeispiel
spezifiziert ein menschlicher Nutzer eine Gesamtanforderung 1a mittels
der Quellcodeentwicklungsumgebung 20. Die spezifizierte
Gesamtanforderung 1a wird mittels der Plug-In-Schnittstelle
an die nachgebildete Rechneranlage 1 übermittelt. Die nachgebildete Rechneranlage 1 leitet
aus der Gesamtanforderung 1a im vorliegenden Ausführungsbeispiel
drei Teilanforderungen 2a, 2b, 2c ab.
Die abgeleiteten Teilanforderungen 2a, 2b, 2c entsprechen
der spezifizierten Gesamtanforderung 1a.
-
Die
Teilanforderungen 2a, 2b, 2c werden an einen
Datenspeicher übermittelt.
Der Datenspeicher weist eine Datenbank 22, Quellcodedokumente 23 und
einen Web-Service 24 auf. Die Datenbank 22 speichert
Quellcodesegmente mit jeweils zugehöriger Quellcodesegmentinformation.
Die Quellcodesegmentinformation weist hierbei eine Lizenzinformation,
eine Autoreninformation, eine Versionsinformation und/oder einen
Zeitstempel auf. Die Quellcodedokumente 23 weisen ebenso
Quellcodesegmente auf, und weisen außerdem Quellcodesegmentinformationen
auf, welche zum Beispiel in einem Header umfasst sind und/oder mittels
Kommentare in die Quellcodesegmente eingestreut sind. Der Web-Service 24 ist
geeignet, Quellcodesegmente, welche mindestens eine der Teilanforderungen 2a, 2b, 2c erfüllen, der
nachgebildeten Rechneranlage 1 bereitzustellen.
-
Die
nachgebildete Rechneranlage 1 fügt mittels der Quellcodeintegrationseinheit 4 die
ausgewählten
Quellcodesegmente derart zusammen, dass die zusammengefügten Quellcodesegmente
die Gesamtanforderung 1a erfüllen. Die zusammengefügten Quellcodesegmente
entsprechen somit dem anforderungskonformen Quellcode 4a.
Der anforderungskonforme Quellcode 4a kann zum Beispiel durch
die Quellcodeentwicklungsumgebung 20 in einen bereits vorhandenen
Quellcode eingebettet werden.
-
In
einem weiteren Ausführungsbeispiel
erstellt die Quellcodeentwicklungsumgebung 20 die Gesamtanforderung 1a.
Im vorliegenden Ausführungsbeispiel
liegt bereits ein erster Quellcode vor, in den ein weiterer anforderungskonformer
Quellcode 4a eingebettet werden soll. Dies geschieht mittels
der nachgebildeten Rechneranlage zum Erstellen von einem anforderungskonformen
Quellcode 1, mittels der Plug-In-Schnittstelle 21.
-
4 zeigt
ein Ablaufdiagramm einer Variante eines Verfahrens zum Erstellen
von einem anforderungskonformen Quellcode 4a gemäß der vorliegenden
Erfindung.
-
In
einem ersten Schritt 100 wird eine spezifizierte funktionale
oder nichtfunktionale Gesamtanforderung an einen Quellcode analysiert.
Es wird in Schritt 100 mindestens eine Teilanforderung
aus der spezifizierten Gesamtanforderung abgeleitet, wobei die mindestens
eine abgeleitete Teilanforderung der Gesamtanforderung entspricht.
-
In
einem zweiten Schritt 101 wird mindestens ein Quellcodesegment
aus einem Datenspeicher ausgewählt.
Das mindestens eine ausgewählte Quellcodesegment
erfüllt
hierbei mindestens eine in Schritt 100 abgeleitete Teilanforderung.
-
In
einem weiteren Schritt 102 werden die ausgewählten Quellcodesegmente
derart zusammengefügt,
dass sie die Gesamtanforderung erfüllen.
-
5 zeigt
ein detailliertes Ablaufdiagramm einer Variante eines Verfahrens
zum Erstellen von einem anforderungskonformen Quellcode. In einem ersten
Verfahrensschritt 200 spezifiziert ein menschlicher Nutzer
eine Gesamtanforderung. In einem weiteren Schritt 201 wird
die spezifizierte Gesamtanforderung in ein formales Modell übersetzt.
Das formale Modell weist beispielsweise Aussagen auf, welche durch
logische Operatoren verknüpft
sind. In einem optionalen Schritt 202 wird das formale
Modell auf Konsistenz geprüft.
In einem weiteren Schritt 203 wird die spezifizierte Gesamtanforderung
in einzelne Teilanforderungen unterteilt. Das heißt es werden aus
der Gesamtanforderung mehrere Teilanforderungen abgeleitet, welche
der Gesamtanforderung entsprechen. In einem weiteren Schritt 204 wird
mindestens eine Anfrage an einen Datenspeicher übermittelt. Die Anfragen können zum
Beispiel die abgeleiteten Teilanforderungen enthalten. In einem
weiteren Schritt 205 übermittelt
der Datenspeicher einen Übergabewert.
Der übermittelte Übergabewert
enthält
Quellcodesegmente oder einen Hinweis auf Quellcodesegmente, zum
Beispiel mittels einer URL und/oder einer URI.
-
In
einem weiteren optionalen Schritt 206 werden die Quellcodesegmente
unter der im vorherigen Schritt übermittelten
URL abgerufen. In einem weiteren Schritt 207 werden diejenigen
Quellcodesegmente ausgewählt,
die mindestens eine Teilanforderung erfüllen. Hierbei ist es möglich, dass
mehrere Quellcodesegmente genau eine Teilanforderung erfüllen, ein
Quellcodesegment mehrere Teilanforderungen erfüllt oder, dass genau ein Quellcodesegment
genau eine Teilanforderung erfüllt.
-
Für den Fall,
dass die ausgewählten
Quellcodesegmente nicht in einer gemeinsamen Programmier- oder Skriptsprache
verfasst sind, oder die verwendete Programmier- oder Skriptsprache
nicht einer bestimmten Zielsprache entspricht, werden die ausgewählten Quellcodesegmente
in einem optionalen Schritt 208 eine gemeinsame Zielsprache übersetzt.
In einem weiteren Verfahrensschritt 209 werden die ausgewählten Quellcodesegmente
derart zusammengefügt,
dass sie in ihrem Zusammenwirken die spezifizierte Gesamtanforderung
erfüllen.
-
6 zeigt
eine weitere schematische Darstellung einer Rechneranlage 1 zum
Erstellen von einem anforderungskonformen Quellcode 4a.
Die in 6 gezeigte Rechneranlage 1 unterscheidet
sich von der in 2 gezeigten Rechneranlage wie
folgt:
Im vorliegenden Ausführungsbeispiel
dient die Anforderungsspezifikationsschnittstelle 5 sowohl
der Spezifikation der Gesamtanforderung 1a, als auch der
Ausgabe des anforderungskonformen Quellcodes 4a. Somit
ist in der Rechneranlage 1 zum Erstellen von einem anforderungskonformen
Quellcode 4a eine einheitliche Schnittstelle vorgesehen,
welche eine Einbettung der Rechneranlage 1 in ein bereits bestehendes
Rechnersystem ermöglicht.
Bei der Anforderungsanalyseeinheit 2, der Quellcodeanalyseeinheit 3,
der Quellcodeintegrationseinheit 4, sowie der Quellcodesegmentanfrageeinheit 6,
der Quellcodesegmentanalyseeinheit 7, der Quellcodesegmentübersetzungseinheit 8 und/oder
der Quellcodesegmentkonsolidierungseinheit 9 kann es sich
zum Beispiel jeweils um einen Mikroprozessor, einen Computer, eine
elektronische Datenverarbeitungsanlage und/oder eine Workstation
handeln.