-
Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Entwickeln von Software und eine Vorrichtung für dasselbe und insbesondere auf ein softwareproduktlinienbasiertes Softwareentwicklungsverfahren, das einen softwaretypspezifischen automatischen Codegenerator und eine Vorrichtung dafür verwendet.
-
Ein automatischer Codegenerator variiert je nach einem zu entwickelnden Softwaretyp. Hier werden Softwaretypen gemäß der Rolle der Software kategorisiert. Beispielsweise ist Software, die Daten speichert und verwaltet, ein Datenverwaltersoftwaretyp, und Software, die einen von einem Datensender empfangenen Datenwert gemäß einer Datenumwandlungsregel in einen anderen Datenwert umsetzt, ist ein Datenumsetzersoftwaretyp.
-
Außerdem ist eine Software, die von einem Datensender empfangene Daten gemäß einer Datenverteilungsregel an einen Datenempfänger sendet, ein Datenverteilersoftwaretyp, ist eine Software, die einen Zustand eines Systems verwaltet, ein Steuerungssoftwaretyp, und ist eine Software, die als Schnittstelle zwischen einem Nutzer und einem System Daten dem Benutzer ausliest und zeigt, ein Überwachungssoftwaretyp.
-
Wenn softwaretypspezifische automatische Codegeneratoren definiert und entwickelt werden, können mehrere Softwareteile (Softwareposten) verschiedener Softwaretypen unter Verwendung automatischer Codegeneratoren der entsprechenden Softwaretypen entwickelt werden.
-
Ferner kann dann, wenn Software unter Verwendung eines automatischen Codegenerators entwickelt werden muss, in dem Fall, dass ein existierender automatischer Codegenerator desselben Softwaretyps wie die zu entwickelnde Software vorliegt, der existierende automatische Codegenerator modifiziert und wiederverwendet werden.
-
Jedoch gehen existierende einzelne oder produktlinienbasierte Softwareentwicklungsverfahren, die einen automatischen Codegenerator verwenden, allesamt von einem Typ von automatischem Codegenerator aus. Somit ist es bei den existierenden Verfahren schwierig, unter Verwendung eines automatischen Codegenerators mehrere Softwareteile verschiedener Softwaretypen zu entwickeln.
-
Wenn Software unter Verwendung eines automatischen Codegenerators entwickelt werden muss, ist es außerdem in dem Fall, dass ein existierender automatischer Code vorliegt, schwierig, zu bestimmen, ob der existierende automatische Codegenerator zur Entwicklung der zu entwickelnden Software wiederverwendet werden kann.
-
Die vorliegende Erfindung ist darauf ausgerichtet, eine softwareproduktlinienbasierte Softwareentwicklungsvorrichtung bereitzustellen, die einen typspezifischen automatischen Codegenerator verwendet.
-
Die vorliegende Erfindung ist ebenfalls darauf ausgerichtet, ein softwareproduktlinienbasiertes Softwareentwicklungsverfahren bereitzustellen, das einen typspezifischen automatischen Codegenerator verwendet.
-
Ein Aspekt der vorliegenden Erfindung liefert eine Vorrichtung zum Entwickeln von Software, die Folgendes umfasst: einen Merkmalselektor, der dazu konfiguriert ist, ein Merkmal, das einer einer Entwicklung unterworfenen Software entspricht, die von einem Entwickler empfangen wird, aus einem Merkmalsmodell auszuwählen, das erzeugt wird, indem Merkmale mehrerer Softwareprodukte analysiert werden, und eine Merkmalsliste zu erzeugen; einen Automatischer-Codegenerator-Selektor, der dazu konfiguriert ist, einen automatischen Codegenerator zu bestimmen, der einem von dem Entwickler empfangenen, einer Entwicklung unterworfenen Softwaretyp entspricht; einen automatischen Codegenerator, der dazu konfiguriert ist, Architekturkomponenten der einer Entwicklung unterworfenen Software unter Verwendung des einer Entwicklung unterworfenen Softwaretyps auszuwählen und auf der Basis der ausgewählten Architekturkomponenten und Anforderungen des von dem Entwickler empfangenen ermittelten automatischen Codegenerators einen automatisch erzeugten Code zu erzeugen; einen Konfigurator, der dazu konfiguriert ist, den automatisch erzeugten Code und einen Code der Architekturkomponenten auf der Basis der erzeugten Merkmalsliste zu modifizieren und einen konfigurierten Code auszugeben; und einen Linker (Programmverbinder), der dazu konfiguriert ist, einen Teil, der eine Bibliothek einer Domain (eines Bereichs) in dem konfigurierten Code aufruft, mit einem Teil, der eine tatsächliche Domainbibliothek aufruft, zu verbinden und einen abschließenden Erzeugungscode zu erzeugen.
-
Ein weiterer Aspekt der vorliegenden Erfindung liefert ein Verfahren zum Entwickeln von Software, das Verfahren Folgendes umfasst: Auswählen von Merkmalen, die einer einer Entwicklung unterworfenen Software entsprechen, die von einem Entwickler empfangen wird, aus einem Merkmalsmodell, das erzeugt wird, indem Merkmale mehrerer Softwareprodukte analysiert werden, und Erstellen einer Merkmalsliste; Bestimmen eines automatischen Codegenerators, der einem von dem Entwickler empfangenen, einer Entwicklung unterworfenen Softwaretyp entspricht; Auswählen von Architekturkomponenten der einer Entwicklung unterworfenen Software unter Verwendung des einer Entwicklung unterworfenen Softwaretyps, und Erzeugen eines automatisch erzeugten Codes auf der Basis der ausgewählten Architekturkomponenten und Anforderungen des von dem Entwickler empfangenen ermittelten automatischen Codegenerators; Modifizieren des automatisch erzeugten Codes und des Codes der Architekturkomponenten auf der Basis der erstellten Merkmalsliste, und Ausgeben eines konfigurierten Codes; und Verbinden eines Teils, der eine Bibliothek einer Domain in dem konfigurierten Code aufruft, mit einem Teil, der eine tatsächliche Domainbibliothek aufruft, und Erzeugen eines abschließenden Erzeugungscodes.
-
Wenn ein Verfahren und eine Vorrichtung zum Entwickeln von Software, die einen softwaretypspezifischen automatischen Codegenerator auf der Basis einer Softwareproduktlinie gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung, wie sie oben beschrieben wurden, verwendet werden, ist es möglich, unter Verwendung der entsprechenden softwaretypspezifischen automatischen Codegeneratoren mehrere Softwareteile verschiedener Softwaretypen zu entwickeln.
-
Außerdem kann dann, wenn Software desselben Softwaretyps wie ein softwaretypspezifischer automatischer Codegenerator, die bereits entwickelt wurde, unter Verwendung eines automatischen Codegenerators bei einem produktlinienbasierten Softwareentwicklungsverfahren entwickelt wird, der softwaretypspezifische automatische Codegenerator modifiziert und wiederverwendet werden.
-
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
-
1 ein Blockdiagramm, das schematisch eine innere Struktur einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung zeigt;
-
2 ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Datenumsetzersoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird;
-
3 ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Datenverteilersoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird;
-
4 ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Steuerungssoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird;
-
5 ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Datenumsetzer- + Datenverteilersoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird;
-
6 ein beispielhaftes Diagramm eines Codes, den ein Konfigurator gemäß einer Merkmalsliste in einem automatisch erzeugten Code und einem Architekturkomponentencode einer ausgewählten, einer Entwicklung unterworfenen Software modifiziert und anpasst, nachdem ein Softwarerahmencode mit dem Code gefüllt wird, der durch einen automatischen Codegenerator einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung erzeugt wird;
-
7 ein Blockdiagramm, das schematisch eine innere Struktur einer Software zeigt, die unter Verwendung einer softwareproduktlinienbasierten Softwareentwicklungsvorrichtung entwickelt werden soll, die einen softwaretypspezifischen automatischen Codegenerator gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung verwendet; und
-
8 ein Flussdiagramm, das ein Verfahren zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht.
-
Obwohl die Erfindung für verschiedene Modifikationen und alternative Formen zugänglich ist, sind spezifische Ausführungsbeispiele derselben in den Zeichnungen beispielhaft gezeigt und werden hierin ausführlich beschrieben. Jedoch sollte man sich darüber im Klaren sein, dass keine Absicht besteht, die Erfindung auf die bestimmten offenbarten Formen zu beschränken, sondern im Gegenteil, die Erfindung soll alle Modifikationen, Äquivalente und Alternativen, die innerhalb der Wesensart und des Schutzumfangs der Erfindung liegen, abdecken. Gleiche Bezugszeichen werden in der gesamten Beschreibung der Zeichnungen für gleiche Elemente verwendet.
-
Obwohl die Begriffe erste(r, s), zweite(r, s), A, B usw. hierin dazu verwendet werden können, verschiedene Elemente zu beschreiben, wird einleuchten, dass diese Elemente nicht durch diese Begriffe eingeschränkt werden sollten. Diese Begriffe werden lediglich dazu verwendet, ein Element von einem anderen zu unterscheiden. Beispielsweise könnte ein erstes Element als ein zweites Element bezeichnet werden, und analog dazu könnte ein zweites Element als ein erstes Element bezeichnet werden, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Gemäß der Verwendung hierin umfasst der Begriff „und/oder” jegliche und alle Kombinationen eines oder mehrerer der zugeordneten aufgeführten Posten.
-
Man wird verstehen, dass dann, wenn ein Element als mit einem anderen Element „verbunden” oder „gekoppelt” bezeichnet wird, es direkt mit dem anderen Element verbunden oder gekoppelt sein kann oder dass dazwischenliegende Elemente vorhanden sein können. Im Gegensatz dazu sind dann, wenn ein Element als mit einem anderen Element „direkt verbunden” oder „direkt gekoppelt” bezeichnet wird, keine dazwischenliegenden Elemente vorhanden. Andere Worte, die zum Beschreiben der Beziehung zwischen Elementen verwendet werden, sollten auf ähnliche Weise interpretiert werden (d. h. „zwischen” gegenüber „direkt zwischen”, „benachbart” gegenüber „direkt benachbart” usw.).
-
Die hierin verwendete Technologie dient lediglich dem Zweck, bestimmte Ausführungsbeispiele zu beschreiben, und sie soll keine Einschränkung der Erfindung darstellen. Gemäß der Verwendung hierin sollen die Singularformen „ein(e, es, er)” und „der”, „die” und „das” auch die Pluralformen umfassen, wenn der Kontext nicht eindeutig etwas anderes vorgibt. Ferner wird man verstehen, dass die Begriffe „weist auf”, „aufweisen”, „umfasst” und/oder „umfassen”, wenn sie hierin verwendet werden, das Vorliegen angegebener Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, jedoch nicht das Vorliegen oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente, Komponenten und/oder Gruppen derselben von vornherein ausschließen.
-
Wenn nichts anderes definiert ist, weisen alle Begriffe, die technische und wissenschaftliche Begriffe umfassen und hierin verwendet werden, dieselbe Bedeutung auf, wie sie üblicherweise von Fachleuten auf dem Gebiet, zu dem diese Erfindung gehört, verstanden werden. Ferner versteht es sich, dass Begriffe wie beispielsweise diejenigen, die in üblicherweise verwendeten Wörterbüchern definiert sind, in einer Bedeutung interpretiert werden sollten, die sich mit ihrer Bedeutung in dem Zusammenhang der relevanten Technik deckt, und nicht in einem idealisierten oder übermäßig formalen Sinn interpretiert werden, es sei denn, dies ist hierin ausdrücklich so definiert.
-
Hiernach werden exemplarische Ausführungsbeispiele der vorliegenden Erfindung unter Bezugnahme auf die beiliegenden Zeichnungen ausführlich beschrieben.
-
Vor der vorliegenden Erfindung wird ein allgemeines Softwareentwicklungsverfahren beschrieben. Zuerst wird ein auf einer Softwareproduktlinie basierendes Softwareentwicklungsverfahren beschrieben. Bei dem softwareproduktlinienbasierten Softwareentwicklungsverfahren werden Softwareteile nicht einzeln entwickelt, sondern Softwareteile, die ähnliche Dienste bereitstellen, werden zusammen betrachtet und entwickelt.
-
Mit anderen Worten werden, da funktionelle Aspekte und die Qualität mehrerer Softwareteile zu derselben betrachteten Domain gehören, durch eine Analyse gemeinsamer und unterschiedlicher Punkte ausreichende Haupteigenschaften gesichert und kombiniert, um eine gewünschte Software zu entwickeln. Bei dem softwareproduktlinienbasierten Softwareentwicklungsverfahren können gemeinsame Vorzüge wiederverwendet werden, um eine Entwicklungsperiode zu verkürzen und die Produktivität zu verbessern, und es kann eine qualitativ hochwertige Software entwickelt werden.
-
Zweitens wird ein Softwareentwicklungsverfahren, das einen automatischen Codegenerator verwendet, beschrieben. Es gibt mehrere Softwareentwicklungsverfahren, die auf einer Softwareproduktlinie beruhen, und eines derselben ist das softwareproduktlinienbasierte Softwareentwicklungsverfahren, das einen automatischen Codegenerator verwendet.
-
Ein automatischer Codegenerator ist ein System, das einen Software-Quellencode ausgehend von einem Modell automatisch erzeugt und das im Vergleich zu einem Fall, in dem ein Mensch einen Quellencode manuell entwickelt, menschliche Arbeitsleistung, Kosten und Zeit, die für eine Softwareentwicklung erforderlich sind, verringern und die Produktivität von Software erhöhen kann.
-
Drittens wird ein softwareproduktlinienbasiertes Softwareentwicklungsverfahren beschrieben, das einen automatischen Codegenerator verwendet. In verschiedenen Softwaredomains wird bisher ein Einzelsoftwareentwicklungsverfahren untersucht, das einen automatischen Codegenerator verwendet.
-
Jedoch zielt ein Einzelsoftwareentwicklungsverfahren, das einen automatischen Codegenerator verwendet, auf eine Entwicklung einer einzelnen Software ab, und somit ist es schwierig, es auf eine softwareproduktlinienbasierte Softwareentwicklung anzuwenden. Es wird an einer softwareproduktlinienbasierten Softwareentwicklung, die einen automatischen Codegenerator verwendet, geforscht.
-
Jedoch offenbart die existierende Forschung nicht klar und ausführlich, welche Systeme auf welche Weise für eine softwareproduktlinienbasierte Softwareentwicklung unter Verwendung eines automatischen Codegenerators kombiniert werden und anhand welches Prozesses produktlinienbasierte Softwareentwicklung erzielt wird. Eine innere Struktur einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung wird nachstehend unter Bezugnahme auf 1 ausführlich beschrieben.
-
1 ist ein Blockdiagramm, das schematisch eine innere Struktur einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung zeigt.
-
Unter Bezugnahme auf 1 kann die Vorrichtung zum Entwickeln von Software eine Nutzerschnittstelle 100, einen Merkmalselektor 101, einen Automatischer-Codegenerator-Selektor 102, einen automatischen Codegenerator 103, einen Konfigurator 104, einen Linker 105, eine Steuerung 106 und eine Speicherung 107 umfassen. Die Speicherung 107 kann eine Automatischer-Codegenerator-Speicherung (nicht gezeigt), eine Architekturmodellspeicherung (nicht gezeigt) und eine Domainbibliotheksspeicherung (nicht gezeigt) umfassen.
-
Die Nutzerschnittstelle 100 transferiert Eingaben und Ausgaben zwischen einem Entwickler, der eine produktlinienbasierte Softwareentwicklung unter Verwendung eines softwaretypspezifischen automatischen Codegenerators durchführt, und dem Merkmalselektor 101, zwischen dem Entwickler und dem Automatischer-Codegenerator-Selektor 102, zwischen dem Entwickler und dem automatischen Codegenerator 103, zwischen dem Entwickler und dem Konfigurator 104 sowie zwischen dem Entwickler und dem Linker 105.
-
Der Merkmalselektor 101 empfangt Merkmale, die einer zu entwickelnden Software entsprechen, von dem Entwickler durch die Nutzerschnittstelle 100 auf der Basis eines Merkmalsmodells, das erzeugt wird, indem Gemeinsamkeit und Variabilität mehrerer Softwareprodukte, die zu einer Softwareproduktlinie gehören, in Bezug auf Merkmale analysiert werden, und erstellt eine Liste der Merkmale.
-
Hier wird das Merkmalsmodell erzeugt, indem gemeinsame Merkmale, die üblicherweise in den mehreren Softwareprodukten, die zu der Softwareproduktlinie gehören, enthalten sind, und variable Merkmale, die in der zu der Softwareproduktlinie gehörenden mehreren Softwareprodukten enthalten oder nicht enthalten sind, analysiert werden.
-
Der Automatischer-Codegenerator-Selektor 102 empfängt einen zu entwickelnden Softwaretyp aus einer Mehrzahl von Softwaretypen, die in einer Softwaretypliste enthalten sind, von dem Entwickler durch die Nutzerschnittstelle 100 und wählt anhand einer Steuerung der Steuerung 106 aus der Automatischer-Codegenerator-Speicherung einen automatischen Codegenerator aus, der dem zu entwickelnden empfangenen Softwaretyp entspricht.
-
Beispielsweise kann der Automatischer-Codegenerator-Selektor 102 einen Datenverwaltersoftwaretyp, einen Datenumsetzersoftwaretyp, einen Datenverteilersoftwaretyp, einen Steuerungssoftwaretyp und einen Überwachungssoftwaretyp, die zu entwickelnde Softwaretypen sind, aus der Mehrzahl von Softwaretypen, die in der Softwaretypliste enthalten sind, durch die Nutzerschnittstelle 100 von dem Entwickler empfangen, und die Softwaretypen, die von dem Entwickler empfangen werden können, sind nicht auf diese beschränkt.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung bezeichnet der Datenverwaltersoftwaretyp eine Software, die Daten speichert und verwaltet, wobei sie Anforderungen bezüglich eines Lesens, Schreibens, Löschens usw. von Daten von außen empfängt, auf eine Datenbank zugreift, um die empfangenen Anforderungen bezüglich eines Lesens, Schreibens, Löschens usw. von Daten zu verarbeiten, und Prozesse wie beispielsweise ein Lesen, Schreiben und Löschen von Daten durchführt. Der Datenumsetzersoftwaretyp bezeichnet eine Software, die von einem Datensender empfangene Daten gemäß einer Datenumwandlungsregel in andere Datenwerte umsetzt.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung bezeichnet der Datenverteilersoftwaretyp eine Software, die von einem Datensender empfangene Daten gemäß einer Datenverteilungsregel an einen Datenempfänger sendet. Der Steuerungssoftwaretyp bezeichnet eine Software, die einen Zustand eines Systems verwaltet, wobei sie je nach einer aktuellen Situation eine vorbestimmte Handlung ausführt. Der Überwachungssoftwaretyp bezeichnet eine Software, die als Schnittstelle zwischen dem Nutzer und einem System Daten einem Nutzer ausliest und zeigt.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung kann eine Software zumindest zwei Softwaretypen aufweisen. Beispielsweise setzt eine Software, die den Datenumsetzersoftwaretyp und den Datenverteilersoftwaretyp aufweist, von einem Datensender empfangene Daten gemäß einer Datenumwandlungsregel in andere Datenwerte um und sendet die Daten gemäß einer Datenverteilungsregel an einen Datenempfänger.
-
Der automatische Codegenerator 103 wählt Architekturkomponenten der zu entwickelnden Software unter Verwendung des zu entwickelnden Softwaretyps anhand einer Steuerung der Steuerung 106 aus der Architekturmodellspeicherung aus, empfängt Anforderungen des durch den Automatischer-Codegenerator-Selektor 102 ausgewählten automatischen Codegenerators von dem Entwickler durch die Nutzerschnittstelle 100 und erzeugt entsprechend dem zu entwickelnden Softwaretyp einen automatisch erzeugten Code.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung werden die Anforderungen des durch den Automatischer-Codegenerator-Selektor 102 ausgewählten automatischen Codegenerators durch die Nutzerschnittstelle 100 von dem Entwickler empfangen, und die empfangenen Anforderungen des automatischen Codegenerators können einen Teil umfassen, der gemäß der durch den Merkmalselektor 101 ausgewählten Liste der Merkmale modifiziert ist, und einen Teil umfassen, der gemäß besagter Liste konfiguriert ist.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung variieren die Anforderungen des durch den Automatischer-Codegenerator-Selektor 102 ausgewählten automatischen Codegenerators in Abhängigkeit von zumindest einem automatischen Codegenerator, der aus einem automatischen Codegenerator von Datenumsetzersoftwaretyp, einem automatischen Codegenerator vom Datenverteilersoftwaretyp, einem automatischen Codegenerator vom Steuerungssoftwaretyp und einem automatischen Codegenerator vom Datenumsetzers- + Datenverteilersoftwaretyp gemäß einem Softwaretyp ausgewählt ist.
-
Hier ist ein automatischer Codegenerator, der einem Softwaretyp entspricht, nicht auf die Beschreibung der vorliegenden Erfindung beschränkt, und ein softwaretypspezifischer automatischer Codegenerator kann für einen anderen Softwaretyp definiert sein. Die vorliegende Erfindung kann in verschiedenen unterschiedlichen Formen implementiert und ist nicht auf hierin beschriebene Beispiele beschränkt.
-
Der Konfigurator 104 modifiziert den Teil, der gemäß der Merkmalsliste modifiziert ist, und den Teil, der gemäß besagter Liste konfiguriert ist, in dem durch den automatischen Codegenerator 103 erzeugten automatisch erzeugten Code und dem Code der Architekturkomponenten der zu entwickelnden ausgewählten Software gemäß der durch den Merkmalselektor 101 ausgewählten Merkmalsliste, wodurch er einen konfigurierten Code ausgibt.
-
Hier weist der konfigurierte Code nicht die gemäß der durch den Merkmalselektor 101 ausgewählten Merkmalsliste zu modifizierenden und zu konfigurierenden Teile auf, sondern umfasst einen Teil, der eine verfügbare Domainbibliothek aufruft. Der Linker 105 verbindet den Teil, der die Domainbibliothek in dem durch – den Konfigurator 104 konfigurierten Code aufruft, mit einem Teil, der eine tatsächliche Domainbibliothek aufruft, die anhand einer Steuerung der Steuerung 106 aus der Domainbibliotheksspeicherung ausgewählt wird, wodurch er einen abschließenden Erzeugungscode erzeugt.
-
Die Automatischer-Codegenerator-Speicherung speichert automatische Codegeneratoren, die Softwaretypen entsprechen, die bereits entwickelt wurden. Die Architekturmodellspeicherung speichert Softwarearchitekturmodelle, Softwaretypen entsprechen. Die Domainbibliotheksspeicherung speichert Bibliotheken, die in Softwaredomains verwendet werden.
-
Wenn der Automatischer-Codegenerator-Selektor 102 den zu entwickelnden Softwaretyp aus der Mehrzahl von Softwaretypen, die in der Softwaretypliste enthalten sind, durch die Nutzerschnittstelle 100 von dem Entwickler empfängt und einen automatischen Codegenerator auswählt, steuert die Steuerung 106 den automatischen Codegenerator, der dem Softwaretyp entspricht, der zu entwickeln ist und durch die Nutzerschnittstelle 100 von dem Entwickler empfangen wird, und der aus der Automatischer-Codegenerator-Speicherung auszuwählen ist.
-
Wenn der automatische Codegenerator 103 die Architekturkomponenten der zu entwickelnden Software unter Verwendung des zu entwickelnden Softwaretyps auswählt, steuert die Steuerung 106 die Architekturkomponenten der zu entwickelnden Software, die aus der Architekturmodellspeicherung auszuwählen sind. Wenn der Linker 105 den Teil, der die Domainbibliothek in dem konfigurierten Code aufruft, mit einem Teil, der eine tatsächliche Domainbibliothek aufruft, verbindet, steuert die Steuerung 106 außerdem den Teil, der die tatsächliche Domainbibliothek aufruft, die aus der auszuwählenden Domainbibliotheksspeicherung ausgewählt ist.
-
Anforderungen eines automatischen Codegenerators, der durch den Automatischer-Codegenerator-Selektor 102 einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt ist, werden nachstehend unter Bezugnahme auf 2 bis 5 ausführlich beschrieben.
-
2 ist ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Datenumsetzersoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von softwaretypspezifischer Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird.
-
Unter Bezugnahme auf 2 werden dann, wenn eine Software vom Datenumsetzersoftwaretyp Daten-A von einem Datensender 200 empfängt, die empfangenen Daten-A gemäß einer Datenumwandlungsregel 201 für einen Fall, in dem beispielsweise ein Inhalt der empfangenen Daten-A a ist, in Daten-B umgesetzt. Eine derartige Beziehung kann in einer Entscheidungstabelle 203 gezeigt werden, die jeweilige Spalten Datensender * Daten, Umwandlungsbedingung und Handlung aufweist. Der automatische Codegenerator 103 kann einen automatisch erzeugten Code der Software vom Datenumsetzersoftwaretyp unter Verwendung der Entscheidungstabelle 203 automatisch erzeugen.
-
3 ist ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Datenverteilersoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von softwaretypspezifischer Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird.
-
Unter Bezugnahme auf 3 werden dann, wenn eine Software vom Datenverteilersoftwaretyp Daten-A von einem Datensender empfängt, die empfangenen Daten-A gemäß einer Datenumwandlungsregel 301 für einen Fall, in dem beispielsweise ein Inhalt der empfangenen Daten-A a ist, an einen Datenempfänger 302 transferiert. Eine derartige Beziehung kann in einer Entscheidungstabelle 303 gezeigt werden, die jeweilige Spalten Datensender * Daten, Bedingung und Handlung aufweist. Der automatische Codegenerator 103 kann einen automatisch erzeugten Code der Software vom Datenverteilersoftwaretyp aus der Entscheidungstabelle 203 automatisch erzeugen.
-
4 ist ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Steuerungssoftwaretyp zeigt, der durch einen Automatischer-Codegenerator-Selektor einer Vorrichtung zum Entwickeln von softwaretypspezifischer Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird.
-
Unter Bezugnahme auf 4 steuert eine Software vom Steuerungssoftwaretyp mehrere Zustande eines Systems. Wenn beispielsweise Bedingungen vorliegen, die in jedem Zustand eines Systems auftreten können, und eine Bedingung, die auftreten kann, erfüllt ist, ruft die Software vom Steuerungssoftwaretyp eine Funktion auf oder schaltet in einen anderen Zustand um.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung verwaltet die Software vom Steuerungssoftwaretyp einen Zustand 1 401 bis zu einem Zustand 4 404 des Systems. Die Software vom Steuerungssoftwaretyp schaltet von dem Zustand 1 401 in einen Zustand 2 402, wenn sich das System in dem Zustand 1 401 befindet und die Bedingung 1 erfüllt ist, schaltet von dem Zustand 1 401 in den Zustand 3 403, wenn sich das System in dem Zustand 1 401 befindet und die Bedingung 2 erfüllt ist, und schaltet von dem Zustand 3 403 in den Zustand 1 401, wenn sich das System in dem Zustand 3 403 befindet und die Bedingung 3 erfüllt ist.
-
Eine derartige Beziehung kann bei einem Zustandsdiagrammumsetzer 405 gezeigt werden, der jeweilige Spalten Zustand, Bedingung und Handlung aufweist. Der automatische Codegenerator 103 kann unter Verwendung des Zustandsdiagrammumsetzers 405 einen automatisch erzeugten Code der Software vom Steuerungssoftwaretyp automatisch erzeugen.
-
5 ist ein beispielhaftes Diagramm, das Anforderungen eines automatischen Codegenerators vom Datenumsetzer- + Datenverteilersoftwaretyp zeigt, der durch den Automatischer-Codegenerator-Selektor 102 einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung ausgewählt wird.
-
Unter Bezugnahme auf 5 empfängt der automatische Codegenerator vom Datenumsetzer- + Datenverteilersoftwaretyp Daten-A von einem Datensender 500, setzt die empfangenen Daten-A in Daten-B um und transferiert die umgesetzten Daten-B gemäß einer Datenumwandlungsregel und einer Datenverteilungsregel 501 an einen Datenempfänger 502.
-
Eine derartige Beziehung kann in einer Entscheidungstabelle 503 gezeigt werden, die jeweilige Spalten Datensender * Daten, Bedingung und Handlung in Form einer Kombination der Entscheidungstabelle 203 eines Datenumsetzers und der Entscheidungstabelle 303 eines Datenverteilers aufweist.
-
Der automatische Codegenerator 103 kann unter Verwendung der Entscheidungstabelle 503 automatisch einen automatisch erzeugten Code der Software vom Datenumsetzer- + Datenverteilersoftwaretyp erzeugen. Ein Code, den der Konfigurator 104 gemäß einer Merkmalsliste in einem automatisch erzeugten Code und Architekturkomponentencode ausgewählter zu entwickelnder Software modifiziert und anpasst, nachdem ein Softwarerahmencode mit dem Code gefüllt wird, der durch den automatischen Codegenerator 103 einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung erzeugt wird, wird nachstehend unter Bezugnahme auf 6 ausführlich beschrieben.
-
6 ist ein beispielhaftes Diagramm eines Codes, den ein Konfigurator gemäß einer Merkmalsliste in einem automatisch erzeugten Code und einem Architekturkomponentencode einer ausgewählten, zu entwickelnden Software modifiziert und anpasst, nachdem der automatische Codegenerator 103 einer Vorrichtung zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung einen Softwarerahmencode mit dem automatisch erzeugten Code füllt.
-
Unter Bezugnahme auf 6 wählt der automatische Codegenerator 103 Architekturkomponenten einer zu entwickelnden Software unter Verwendung eines zu entwickelnden Softwaretyps anhand einer Steuerung der Steuerung 106 aus der Architekturmodellspeicherung aus, empfängt Anforderungen eines durch den Automatischer-Codegenerator-Selektor 102 ausgewählten automatischen Codegenerators durch die Nutzerschnittstelle 100 von dem Entwickler, erzeugt einen automatisch erzeugten Code 600a und 600b, die dem zu entwickelnden Softwaretyp entsprechen, und füllt nicht-implementierte Teile von Domainkomponenten, die die Softwarearchitekturkomponenten sind, beispielsweise eine Softwaredomainkomponente 602, und einen Softwarerahmencode 601 mit dem erzeugten automatisch erzeugten Code 600a und 600b.
-
Der Konfigurator 104 kann den Softwarerahmencode und den automatisch erzeugten Code gemäß einer durch den Merkmalselektor 101 ausgewählten Merkmalsliste modifizieren, wodurch er einen konfigurierten Code ausgibt.
-
Hier kann der konfigurierte Code einen Teil umfassen, der eine Domainbibliothek aufruft, und die Softwaredomainkomponenten 602 und der automatisch erzeugte Code 600a und 600b können konfigurierte Codeteile 603a und 603b umfassen, die verschiedenen Punkten gemäß der durch den Merkmalselektor 101 ausgewählten Merkmalsliste entsprechen.
-
Bei einem Softwarecode umfasst der Konfigurator 104 eventuell nicht die konfigurierten Codeteile 603a und 603b, die den verschiedenen Punkten entsprechen, die durch ein Vergleichen des Softwarerahmencodes und des automatisch erzeugten Codes mit der durch den Merkmalselektor 101 ausgewählten Merkmalsliste erzeugt werden.
-
Der Linker 105 verbindet den Teil, der die Domainbibliothek in dem durch den Konfigurator 104 konfigurierten Code aufruft, mit einem Teil, der eine Bibliothek der Softwaredomainkomponenten aufruft, wodurch er einen abschließenden Erzeugungscode erzeugt.
-
Eine innere Struktur einer Software, die unter Verwendung einer softwareproduktlinienbasierten Softwareentwicklungsvorrichtung entwickelt werden soll, die einen softwaretypspezifischen automatischen Codegenerator gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung verwendet, wird nachfolgend unter Bezugnahme auf 7 ausführlich beschrieben.
-
7 ist ein Blockdiagramm, das schematisch eine innere Struktur einer Software zeigt, die unter Verwendung einer softwareproduktlinienbasierten Softwareentwicklungsvorrichtung entwickelt werden soll, die einen softwaretypspezifischen automatischen Codegenerator gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung verwendet.
-
Unter Bezugnahme auf 7 speichert eine Datenbank 701 Daten, und die Datenbank 701 und eine Middleware 702 rufen sich gegenseitig auf. Die Middleware 702 und eine Domainkomponente 703 einer zu entwickelnden Software rufen sich gegenseitig auf.
-
Die Softwaredomainkomponente 703 wird erhalten, indem eine Funktion, die in Domains der zu entwickelnden Software gemeinsam als Komponente verwendet wird, implementiert wird, und die Softwaredomainkomponente 703 und ein Softwarerahmencode und ein automatisch erzeugter Code 704 rufen sich gegenseitig auf.
-
Der Softwarerahmencode und der automatisch erzeugte Code 704 speichern einen automatisch erzeugten Code, der erzeugt wird, indem ein nicht-implementierter Teil eines Softwarerahmencodes mit einem automatisch erzeugten Code gefüllt wird.
-
Hier ist der Softwarerahmencode ein Code, der auf Software spezialisiert ist und für den eine Schnittstelle definiert ist. Bei dem Softwarerahmencode ist das Innere einer Funktion nicht implementiert, und ein Algorithmus wird nicht verfeinert. Der automatisch erzeugte Code wird durch den automatischen Codegenerator 103 automatisch erzeugt und auf Software spezialisiert. Ein Verfahren zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung wird nachfolgend unter Bezugnahme auf 8 ausführlich beschrieben.
-
8 ist ein Flussdiagramm, das ein Verfahren zum Entwickeln von Software gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht.
-
Unter Bezugnahme auf 8 empfängt eine Vorrichtung zum Entwickeln von Software Merkmale, die einer zu entwickelnden Software entsprechen, von einem Entwickler auf der Basis eines Merkmalsmodells, das erzeugt wird, indem gemeinsame und unterschiedliche Punkte mehrerer Softwareprodukte, die zu einer Softwareproduktlinie gehören, analysiert werden, und erstellt eine Liste der Merkmale (S801).
-
Hier wird das Merkmalsmodell erzeugt, indem gemeinsame Merkmale, die üblicherweise in den zu der Softwareproduktlinie gehörenden mehreren Softwareprodukten enthalten sind, und variable Merkmale, die in den zu der Softwareproduktlinie gehörenden mehreren Softwareprodukten enthalten oder nicht enthalten sind, analysiert werden.
-
Die Vorrichtung zum Entwickeln von Software empfängt einen zu entwickelnden Softwaretyp aus einer Mehrzahl von Softwaretypen, die in einer Softwaretypliste enthalten sind, von dem Entwickler und wählt einen automatischen Codegenerator, der dem zu entwickelnden empfangenen Softwaretyp entspricht, aus (S802).
-
Die Vorrichtung zum Entwickeln von Software kann einen Datenverwaltersoftwaretyp, einen Datenumsetzersoftwaretyp, einen Datenverteilersoftwaretyp, einen Steuerungssoftwaretyp und einen Überwachungssoftwaretyp, die zu entwickelnde Softwaretypen sind, aus der Mehrzahl von Softwaretypen, die in der Softwaretypliste enthalten sind, von dem Entwickler empfangen, und die Softwaretypen, die von dem Entwickler empfangen werden können, sind nicht auf diese beschränkt.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung bezeichnet der Datenverwaltersoftwaretyp eine Software, die Daten speichert und verwaltet, wobei sie Anforderungen bezüglich eines Lesens, Schreibens, Löschens usw. von Daten von außen empfängt, auf eine Datenbank zugreift, um die empfangenen Anforderungen bezüglich eines Lesens, Schreibens, Löschens usw. von Daten zu verarbeiten, und Prozesse wie beispielsweise ein Lesen, Schreiben und Löschen von Daten durchführt. Der Datenumsetzersoftwaretyp bezeichnet eine Software, die von einem Datensender empfangene Daten gemäß einer Datenumwandlungsregel in andere Datenwerte umsetzt.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung bezeichnet der Datenverteilersoftwaretyp eine Software, die von einem Datensender empfangene Daten gemäß einer Datenverteilungsregel an einen Datenempfänger sendet. Der Steuerungssoftwaretyp bezeichnet eine Software, die einen Zustand eines Systems verwaltet, wobei sie je nach einer aktuellen Situation eine vorbestimmte Handlung ausführt. Der Überwachungssoftwaretyp bezeichnet eine Software, die als Schnittstelle zwischen dem Nutzer und einem System Daten einem Nutzer ausliest und zeigt.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung kann eine Software zumindest zwei Softwaretypen aufweisen. Beispielsweise setzt eine Software, die den Datenumsetzersoftwaretyp und den Datenverteilersoftwaretyp aufweist, von einem Datensender empfangene Daten gemäß einer Datenumwandlungsregel in andere Datenwerte um und sendet die Daten gemäß einer Datenverteilungsregel an einen Datenempfänger.
-
Die Vorrichtung zum Entwickeln von Software empfängt Architekturkomponenten von Software, die dem zu entwickelnden Softwaretyp entspricht, und Anforderungen des automatischen Codegenerators von dem Entwickler, wodurch sie einen automatisch erzeugten Code erzeugt, der dem zu entwickelnden Softwaretyp entspricht (S803).
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung empfängt die Vorrichtung zum Entwickeln von Software die Anforderungen des durch den Automatischer-Codegenerator-Selektor 102 ausgewählten automatischen Codegenerators von dem Entwickler, und die empfangenen Anforderungen des automatischen Codegenerators können einen Teil umfassen, der gemäß der Merkmalsliste modifiziert ist, und einen Teil umfassen, der gemäß besagter Liste konfiguriert ist.
-
Bei einem exemplarischen Ausführungsbeispiel der vorliegenden Erfindung variieren die Anforderungen des vom dem Entwickler empfangenen automatischen Codegenerators in Abhängigkeit von zumindest einem automatischen Codegenerator, der aus einem automatischen Codegenerator von Datenumsetzersoftwaretyp, einem automatischen Codegenerator vom Datenverteilersoftwaretyp, einem automatischen Codegenerator vom Steuerungssoftwaretyp und einem automatischen Codegenerator vom Datenumsetzers- + Datenverteilersoftwaretyp gemäß einem Softwaretyp ausgewählt ist.
-
Hier ist ein automatischer Codegenerator, der einem Softwaretyp entspricht, nicht auf die Beschreibung der vorliegenden Erfindung beschränkt, und ein softwaretypspezifischer automatischer Codegenerator kann für einen anderen Softwaretyp definiert sein. Die vorliegende Erfindung kann in verschiedenen unterschiedlichen Formen implementiert und ist nicht auf hierin beschriebene Beispiele beschränkt.
-
Die Vorrichtung zum Entwickeln von Software modifiziert den Teil, der gemäß der Merkmalsliste modifiziert ist, und den Teil, der gemäß besagter Liste konfiguriert ist, in dem automatisch erzeugten Code und dem Code der Architekturkomponenten der zu entwickelnden Software gemäß der Merkmalsliste, wodurch er einen konfigurierten Code ausgibt (S804).
-
Hier weist der konfigurierte Code nicht die gemäß der Merkmalsliste zu modifizierenden und zu konfigurierenden Teile auf, sondern umfasst einen Teil, der eine verfügbare Domainbibliothek aufruft. Die Vorrichtung zum Entwickeln von Software verbindet den Teil, der die Domainbibliothek in dem konfigurierten und ausgegebenen Code aufruft, mit einem Teil, der eine tatsächliche Domainbibliothek aufruft, wodurch er einen abschließenden Softwarecode erzeugt (S805).
-
Obwohl die Erfindung unter Bezugnahme auf bestimmte exemplarische Ausführungsbeispiele derselben gezeigt und beschrieben wurde, wird Fachleuten einleuchten, dass verschiedene Veränderungen in Form und Einzelheiten daran vorgenommen werden können, ohne von der Wesensart und dem Schutzumfang der Erfindung, wie sie durch die angehängten Patentansprüche definiert sind, abzuweichen.