DE102019008598A1 - Identification and visualization of associations between code generated by a model and sources that influence code generation - Google Patents

Identification and visualization of associations between code generated by a model and sources that influence code generation Download PDF

Info

Publication number
DE102019008598A1
DE102019008598A1 DE102019008598.1A DE102019008598A DE102019008598A1 DE 102019008598 A1 DE102019008598 A1 DE 102019008598A1 DE 102019008598 A DE102019008598 A DE 102019008598A DE 102019008598 A1 DE102019008598 A1 DE 102019008598A1
Authority
DE
Germany
Prior art keywords
code
model
program code
generated
sources
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.)
Pending
Application number
DE102019008598.1A
Other languages
German (de)
Inventor
Xiaocang Lin
Sherman BRAGANZA
Wuwei LIANG
Wei Wang
Yong Huang
Michael IANNICELLI
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.)
MathWorks Inc
Original Assignee
MathWorks Inc
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
Priority claimed from US16/383,132 external-priority patent/US10915302B2/en
Application filed by MathWorks Inc filed Critical MathWorks Inc
Publication of DE102019008598A1 publication Critical patent/DE102019008598A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

Ein System bestimmt, welche Aspekte von Eingangsquellen zur Codegeneration beitragen und stellt Assoziationen zwischen den Eingangsquellen und Komponenten von Merkmalen des generierten Codes bereit. Diese Assoziationen können visualisiert werden, indem visuelle Hinweise der Assoziationen angezeigt werden. Die Eingangsquellen können von unterschiedlichem Typ sein, einschließlich, ohne hierauf begrenzt zu sein, ein Modell, ein Codegenerator und Werte für atomare Konfigurationseinstellungen zur Codegeneration. Der angezeigte visuelle Hinweis kann die Form einer sichtbaren Verbindung zwischen den Eingangsquellen und dem relative Teil oder den relative Teilen des generierten Programmcodes annehmen. Es können Empfehlungen generierte werden in Antwort auf Editierungen in dem generierte Programmcode hinsichtlich wie die Quellen modifiziert werden können, um gewünschte Änderungen in dem generierten Programmcode zu bewirken. Es kann eine Analyse ausgeführt werden, um Artefakte in dem generierten Programmcode zu identifizieren, und es können Assoziationen zu den Quellen identifiziert werden, um zu spezifizieren, welche Quelle zu Teilen des generierten Programmcodes beigetragen hat.A system determines which aspects of input sources contribute to code generation and provides associations between the input sources and components of features of the generated code. These associations can be visualized by displaying visual references to the associations. The input sources can be of different types, including, but not limited to, a model, a code generator, and values for atomic configuration settings for code generation. The visual indication displayed can take the form of a visible connection between the input sources and the relative part or parts of the generated program code. Recommendations can be generated in response to edits in the generated program code regarding how the sources can be modified to effect desired changes in the generated program code. Analysis can be performed to identify artifacts in the generated program code, and associations to the sources can be identified to specify which source contributed to parts of the generated program code.

Description

Verwandte AnmeldungenRelated registrations

Diese Anmeldung beansprucht die Priorität der US Patentanmeldung Nr. 62/778,101 , eingereicht am 11. Dezember 2018, mit dem Titel „Identification And Visualization Of Associations Among Code Generated From A Model And Sources That Affect Code Generation“. Die Inhalte der vorgenannten Anmeldungen sind hiermit durch Bezugnahme mit aufgenommen.This application claims priority from U.S. Patent Application No. 62 / 778,101 , filed on December 11, 2018, entitled "Identification And Visualization Of Associations Among Code Generated From A Model And Sources That Affect Code Generation". The contents of the aforementioned applications are hereby incorporated by reference.

ZusammenfassungSummary

Gemäß einer beispielhaften Ausführungsform wird ein Verfahren von einem Prozessor einer Rechenvorrichtung ausgeführt. Für das Verfahren wird Programmcode für ein Modell und/oder einem oder mehreren Konfigurationswerten, die für das Modell eingestellt sind, generiert. Das Modell wird ausgeführt, oder der Programmcode, welcher das Verhalten eines Systems der echten Welt simuliert, wie etwa zum Beispiel ein physikalisches System, ein Rechnersystem, ein von Ingenieuren entworfenes System, ein eingebettetes System, ein biologisches System, ein chemisches System, etc., wird ausgeführt. Information bezüglich Verhaltenseffekten des Modells auf den Programmcode wird aufgezeichnet. Ein oder mehrere Konfigurationseffekte von einem oder von mehreren Konfigurationswerten, welche den Programmcode beeinflussen, werden ebenfalls aufgezeichnet. Zumindest einige der Verhaltenseffekte und der eine oder die mehreren Konfigurationseffekte sind voneinander abhängig. Für einen Teil des Programmcodes wird einer des einen oder der mehreren Konfigurationseffekte und/oder Verhaltenseffekte bestimmt, zu einem Merkmal des Teils des Programmcodes beizutragen. Diese Bestimmung beinhaltet Analysieren der aufgezeichneten Information und Ableiten, von den Verhaltenseffekten und dem einen oder den mehreren Konfigurationseffekten, einer Identität des einen oder der mehreren Konfigurationseffekte und/oder Verhaltenseffekten, die zu dem Merkmal des Teils des Programmcodes beigetragen haben. Eine Assoziation zwischen dem identifizierten von dem einen oder den mehreren Konfigurationseffekten und/oder Verhaltenseffekten, die zu dem Merkmal des Teils des Programmcodes beigetragen haben, wird gespeichert. Dementsprechend erlaubt das Verfahren eine verbesserte Mensch-Maschine-Interaktion, da spezifisch die Konfigurationseffekte computerunterstützt erhalten werden können, spezifischer automatisch erhalten werden können. Weiter vorteilshaft wird bzw. werden zumindest für einen Teil des Programmcodes ein oder mehrere Konfigurationseffekte und/oder Verhaltenseffekte auf computerunterstützte Weise bestimmt, was es ermöglicht, eine Assoziation zwischen dem identifizierten von dem einen oder den mehreren Konfigurationseffekten und/oder Verhaltenseffekten, die zu dem Merkmal des Teils des Programmcodes beigetragen haben, bereitzustellen, so dass Effekte und/oder der Einfluss individueller Merkmale auf das Verhalten des Codes und/oder das Modell identifiziert werden könne. Dementsprechend ermöglicht das Verfahren eine verbesserte computerunterstützte Generation von Code. Weiter vorteilshaft kann das Verfahren das Ausrollen von Code und/oder Anpassung und/oder Optimierungen und/oder kundenspezifische Anpassungen für unterschiedliche Systeme, auf die der generierte Code ausgerollt werden soll, ermöglichen.According to an exemplary embodiment, a method is carried out by a processor of a computing device. Program code for a model and / or one or more configuration values that are set for the model is generated for the method. The model is executed, or the program code that simulates the behavior of a real world system such as a physical system, a computer system, an engineered system, an embedded system, a biological system, a chemical system, etc. , is running. Information regarding behavioral effects of the model on the program code is recorded. One or more configuration effects from one or more configuration values that affect the program code are also recorded. At least some of the behavior effects and the one or more configuration effects are interdependent. For part of the program code, one of the one or more configuration effects and / or behavioral effects is determined to contribute to a feature of the part of the program code. This determination includes analyzing the recorded information and deriving the behavior effects and the one or more configuration effects, an identity of the one or more configuration effects and / or behavior effects that have contributed to the feature of the part of the program code. An association between the identified one or more configuration effects and / or behavioral effects that have contributed to the feature of the part of the program code is stored. Accordingly, the method permits improved human-machine interaction, since specifically the configuration effects can be obtained with computer assistance, and more specifically can be obtained automatically. It is also advantageous for at least part of the program code to determine one or more configuration effects and / or behavioral effects in a computer-assisted manner, which makes it possible to establish an association between the identified one or more configuration effects and / or behavioral effects that lead to the feature of the part of the program code have contributed, so that effects and / or the influence of individual features on the behavior of the code and / or the model can be identified. Accordingly, the method enables an improved computer-assisted generation of code. The method can also advantageously roll out the code and / or adaptation and / or optimizations and / or customer-specific adaptations for different systems to which the generated code is to be rolled out.

Die Analyse, welche von dem Verfahren ausgeführt wird, kann in einigen Fällen den einen oder die mehreren Konfigurationseffekte als zu dem Merkmal beitragen identifizieren. In anderen Fällen kann die Analyse den einen oder die mehreren Verhaltenseffekte als zu dem Merkmal beitragend identifizieren. Die Konfigurationseffekte können von einem oder von mehreren der folgende Konfigurationswerte herrühren: Wahl von Namensgebungsregeln für Identifikatoren, Wahl einer Speicherklasse, Wahl eines Lösertyps, Wahl eines Lösers, Wahl von zu importierenden Daten, Wahl von zu exportierenden Daten, Zielhardwaredetails, Codierstilparameter oder Wahl der Programmiersprache des generierten Programmcodes. Vorteilhafter Weise, gemäß einer oder beider der vorgenannten Ausführungsformen, können Assoziationen zwischen mehreren Typen von Quellen identifiziert werden und/oder Programmcode durch einen Codegenerator von den Quellen generiert werden.The analysis performed by the method may identify the one or more configuration effects as contributing to the feature in some cases. In other cases, the analysis can identify the one or more behavioral effects as contributing to the characteristic. The configuration effects can result from one or more of the following configuration values: choice of naming rules for identifiers, choice of a storage class, choice of a solver type, choice of a solver, choice of data to be imported, choice of data to be exported, target hardware details, coding style parameters or choice of programming language of the generated program code. Advantageously, according to one or both of the aforementioned embodiments, associations between a plurality of types of sources can be identified and / or program code can be generated by the sources by a code generator.

Der identifiziert von dem einen oder den mehreren Verhaltenseffekten kann das Ergebnis von zumindest einem der folgenden sein: eine Wahl einer Optimierung bei der Codegeneration, ein hinzugefügtes Merkmal des Codegenerators, ein Patch, der auf den Codegenerator angewandt wurde, ein Algorithmus des Modells, eine Änderung an dem Modell, um einen Fehler zu beheben, oder eine Änderung an dem Modell, um den generierten Programmcode kompatibel mit einem Codierstandard zu machen.The identified one or more behavioral effects may be the result of at least one of the following: a choice of optimization in the code generation, an added feature of the code generator, a patch applied to the code generator, an algorithm of the model, a change on the model to fix an error or a change to the model to make the generated program code compatible with a coding standard.

In einigen Ausführungsformen wird die gespeicherte Assoziation verwendet, um zu identifizieren, welcher von dem einen oder den mehreren Konfigurationswerten, Aspekten des Modells und/oder Aspekten des Codegenerators zu dem Merkmal des Teils des Programmcodes beigetragen hat. Ein visueller Hinweis kann auf einer Anzeige angezeigt werden. Der visuelle Hinweis macht die identifizierten Konfigurationswerte, Aspekte des Modells und/oder Aspekte des Codegenerators, welche zu dem Merkmal des Teils des Programmcodes beigetragen haben, visuell unterscheidbar. Die Anzeige kann durch einen programmtechnischen Mechanismus automatisch getriggert werden. Alternativ kann die Anzeige in Antwort auf ein Benutzerschnittstellenereignis erfolgen.In some embodiments, the saved association is used to identify which of the one or more configuration values, aspects of the model, and / or aspects of the code generator contributed to the feature of the portion of the program code. A visual indication can be shown on a display. The visual hint makes the identified configuration values, Aspects of the model and / or aspects of the code generator that have contributed to the feature of the part of the program code are visually distinguishable. The display can be triggered automatically by a programming mechanism. Alternatively, the display may be in response to a user interface event.

Das Modell kann zum Beispiel ein graphisches Modell oder ein textliches Modell sein. Die Konfigurationswerte können atomare Konfigurationswerte (wie nachfolgend beschrieben) sein. Vorteilhafter Weise kann auszurollender Code und/oder eine Anpassung und/oder Optimierungen und/oder kundenspezifische Anpassungen für unterschiedliche Systeme ermöglicht werden, auf welchen der generierte Code ausgerollt werden soll. Das atomare Nachverfolgen bzw. Tracing, spezifischer die Identifikation von Aspekten von Quellen auf einer atomaren Ebene, kann es Benutzern ermöglichen, geeignete Änderungen an dem Modell oder an Modellkonfigurationen vorzunehmen, um gewünschten Code zu erhalten.The model can be, for example, a graphic model or a textual model. The configuration values can be atomic configuration values (as described below). The code to be rolled out and / or an adaptation and / or optimizations and / or customer-specific adaptations can advantageously be made possible for different systems on which the generated code is to be rolled out. Atomic tracing, more specifically the identification of aspects of sources at an atomic level, can allow users to make appropriate changes to the model or model configurations to obtain desired code.

Es kann unterschiedliche Beziehungen zwischen Konfigurationswerten geben. Zum Beispiel mag zumindest einer der Konfigurationswerte zumindest eine der folgenden Beziehungen relativ zum Verursachen des einen oder der mehreren Konfigurationseffekte aufweisen: eine logische und Beziehung, eine logische oder Beziehung, eine überschreibende bzw. überstimmende Beziehung, wobei einer der zwei Konfigurationswerte den anderen überschreibt bzw. überstimmt, oder eine Kombinationsbeziehung, wobei die zumindest zwei Konfigurationswerte jeweils zu dem einen oder den mehreren Konfigurationseffekten beitragen.There can be different relationships between configuration values. For example, at least one of the configuration values may have at least one of the following relationships relative to causing the one or more configuration effects: a logical and relationship, a logical or relationship, an overriding or overriding relationship, one of the two configuration values overwriting the other overrides, or a combination relationship, the at least two configuration values each contributing to the one or more configuration effects.

Das oben beschriebene Verfahren kann ausgeführt werden, indem von einem Computer ausführbare Anweisungen ausgeführt werden, die auf einem nichttransitorischen computerlesbaren Speichermedium gespeichert sind.The method described above can be carried out by executing computer-executable instructions stored on a non-transitory computer readable storage medium.

In beispielhaften Ausführungsformen kann ein Verfahren von einer Rechenvorrichtung ausgeführt werden. Das Verfahren kann beinhalten Identifizieren, dass generierter Code modifiziert wurde, so dass er eine Modifikation aufweist, wobei der generierte Code erzeugt wurde von einem Codegenerator für mehrere Quellen, die ein Modell beinhalten, wie etwa ein graphisches Modell oder ein Textmodell, und zumindest einem anderen Quellentyp, welche die Codeerzeugung durch den Codegenerator beeinflusst. Es wird eine Bestimmung gemacht, wie die Quellen modifiziert werden können, um die Modifikation mittels Codegeneration durch den Codegenerator zu bewirken. Auf der Anzeigevorrichtung wird Information angezeigt, die sich darauf bezieht, wie die Quellen modifiziert werden können, um die Modifikation mittels Codegeneration durch den Codegenerator zu bewirken. Es kann Information erfasst werden, die sich auf Beziehungen zwischen Quellen bezieht, und verwendet werden beim Bestimmen, wie die Quellen modifiziert werden können. Wie die Quellen modifiziert werden können kann in einer priorisierten Reihenfolge basierend auf einem vorbestimmten Priorisierungssystem angezeigt werden. Das vorbestimmte Priorisierungssystem kann auf zumindest einem basieren von vergangenem Verhalten, einer empfangenen Präferenz oder einer Regel. Dieses Verfahren kann ausgeführt werden, indem von einem Computer ausführbare Anweisungen ausgeführt werden, die auf einem nichttransitorischen computerlesbaren Speichermedium gespeichert sind.In example embodiments, a method may be performed by a computing device. The method may include identifying that generated code has been modified to have a modification, the generated code being generated by a code generator for multiple sources that include a model, such as a graphical model or a text model, and at least one other Source type that influences the code generation by the code generator. A determination is made of how the sources can be modified to effect the code generation modification by the code generator. Information is displayed on the display device relating to how the sources can be modified in order to effect the modification by means of code generation by the code generator. Information relating to relationships between sources can be collected and used in determining how the sources can be modified. How the sources can be modified can be displayed in a prioritized order based on a predetermined prioritization system. The predetermined prioritization system may be based on at least one of past behavior, a received preference, or a rule. This method can be carried out by executing computer-executable instructions stored on a non-transitory computer readable storage medium.

Gemäß einer anderen beispielhaften Ausführungsform wird ein Verfahren von einem Prozessor einer Rechenvorrichtung ausgeführt. Das Verfahren beinhaltet das Ausführen einer Analyse eines Teils von generiertem Code, welcher von einem Codegenerator führ mehrere Eingabequellen erzeugt wird. Die mehreren Eingabequellen können ein graphisches Modell und eine andere Eingabequelle von einem Typ, der kein graphisches Modell ist, und der die Erzeugung des generierten Codes durch den Codegenerator beeinflusst, beinhalten. Die Analyse liefert Ergebnisse. Es wird eine Bestimmung gemacht, welche der Eingabequellen zu den Ergebnissen der Analyse beigetragen hat. Eine Nachverfolgung bzw. Trace der Ergebnisse der Analyse zu den bestimmten Eingangsquellen, welche zu den Ergebnissen beigetragen haben, wird auf einer Anzeigevorrichtung angezeigt. Die Analyse kann eines der folgenden identifizieren: Verstöße gegen einen Codierstandard, Kompilationsfehler, Fehler im Programmcode, dass ein Teil des generierten Codes nicht von einem Code Prover bzw. einem Codebeweiser bewiesen werden kann, oder Änderungen in dem generierten Code relativ zu zuvor generiertem Code, der durch den Codegenerator von dem graphischen Modell generiert wurde. Die Analyse kann eine statische Analyse oder eine dynamische Analyse sein.According to another exemplary embodiment, a method is carried out by a processor of a computing device. The method includes performing an analysis of a portion of generated code that is generated by a code generator for multiple input sources. The multiple input sources may include a graphical model and another input source of a type that is not a graphical model and that affects the generation of the generated code by the code generator. The analysis delivers results. A determination is made as to which of the input sources contributed to the results of the analysis. A trace of the results of the analysis of the particular input sources that have contributed to the results is displayed on a display device. The analysis can identify one of the following: violations of a coding standard, compilation errors, errors in the program code that part of the generated code cannot be proven by a code prover or a code verifier, or changes in the generated code relative to previously generated code, generated by the code generator from the graphic model. The analysis can be a static analysis or a dynamic analysis.

Figurenliste Figure list

  • 1A zeigt Komponenten in einer beispielhaften Ausführungsform. 1A shows components in an exemplary embodiment.
  • 1B zeigt eine beispielhafte Liste von Quelltypen. 1B shows an exemplary list of source types.
  • 1C zeigt eine beispielhafte Liste von Aspekte eines Codegenerators, die sich ändern können und die Codegeneration beeinflussen können. 1C shows an exemplary list of aspects of a code generator that can change and affect the code generation.
  • 1D zeigt eine beispielhafte Liste von Typen von Konfigurationseinstellungen. 1D shows an exemplary list of types of configuration settings.
  • 1E zeigt ein Beispiel von Quellenaspekten, die als verhaltensbetreffend oder nicht-verhaltensbetreffend kategorisiert sind. 1E shows an example of source aspects that are categorized as behavioral or non-behavioral.
  • 2A ist ein Flussdiagramm, welches eine grobe Übersicht von Schritten angibt, die in einer beispielhaften Ausführungsform ausgeführt werden. 2A FIG. 10 is a flowchart that provides a high level overview of steps performed in an exemplary embodiment.
  • 2B zeigt Quellen, einen Codegenerator und erzeugten Programmcode. 2 B shows sources, a code generator and generated program code.
  • 2C zeigt ein Beispiel eines Baums von Information, die während der Codeerzeugung für Quellen gespeichert werden können. 2C Figure 3 shows an example of a tree of information that can be stored during source code generation.
  • 2D ist ein Flussdiagramm von Schritten, die in einer beispielhaften Ausführungsform ausgeführt werden, um eine umgekehrte Assoziation zwischen Quellaspekt(en) und Komponente(n) von erzeugtem Programmcode zu erstellen. 2D FIG. 14 is a flow diagram of steps performed in an exemplary embodiment to create an inverse association between source aspect (s) and component (s) of generated program code.
  • 2E ist ein Flussdiagramm von Schritten, die in einer beispielhaften Ausführungsform ausgeführt werden, um eine Vorwärts-Assoziation zwischen Komponente(n) generierten Programmcodes und Quellenaspekt(en). 2E FIG. 4 is a flow diagram of steps performed in an exemplary embodiment to forward association between component (s) generated program code and source aspect (s).
  • 3A illustriert ein Beispiel einer Anzeige einer Assoziation unter eine Komponente in generiertem Programmcode und Quellenaspekten. 3A illustrates an example of displaying an association among a component in generated program code and source aspects.
  • 3B illustriert ein Beispiel einer Anzeige einer Assoziation zu Quellenaspekten und Komponenten von generiertem Programmcode. 3B illustrates an example of a display of an association to source aspects and components of generated program code.
  • 4A ist ein Flussdiagramm, das die Schritte illustriert, die bei der Analyse ausgeführt werden, in einer beispielhaften Ausführungsform. 4A 10 is a flowchart illustrating the steps performed in the analysis in an exemplary embodiment.
  • 4B illustriert beispielhafte Analysetypen. 4B illustrates exemplary types of analysis.
  • 5A und 5B illustrieren eine beispielhafte Benutzerschnittstelle, welche eine Assoziationen zwischen Quellenkomponenten und einem Artefakten der Analyse zeigt. 5A and 5B illustrate an exemplary user interface that shows associations between source components and an artifact of analysis.
  • 6A ist ein Flussdiagramm, das Schritte illustriert, die ausgeführt werden, um Unterschiede in generiertem Programmcode mit Quellenaspekten zu assoziieren. 6A Fig. 4 is a flowchart illustrating steps that are performed to associate differences in generated code with source aspects.
  • 6B zeigt ein Beispiel einer Benutzerschnittstelle welche Assoziationen unter einem Quellenaspekt, einer Codeänderung und einem Kompilierfehler zeigt. 6B shows an example of a user interface showing associations under a source aspect, a code change and a compile error.
  • 7 illustriert beispielhafte unterschiedliche Typen von Codedifferenzen. 7 illustrates exemplary different types of code differences.
  • 8A illustriert eine beispielhafte Benutzerschnittstelle, in welcher Parameter für einen Löser ausgewählt werden können. 8A illustrates an exemplary user interface in which parameters for a solver can be selected.
  • 8B illustriert eine beispielhafte Benutzerschnittstelle, in welcher Import/Export Einstellungen ausgewählt werden können. 8B illustrates an example user interface in which import / export settings can be selected.
  • 8C ist eine beispielhafte Benutzerschnittstelle, die ein Beispiel illustriert, in welchem Hardwareimplementierungsparameter ausgewählt werden können. 8C FIG. 14 is an example user interface illustrating an example in which hardware implementation parameters can be selected.
  • 8D illustriert eine beispielhafte Benutzerschnittstelle, in welcher Namensgebungsregeln ausgewählt werden können und eine Erläuterung der Namensgebungsregelsyntax bereitgestellt werden kann. 8D illustrates an example user interface in which naming rules can be selected and an explanation of the naming rules syntax can be provided.
  • 8E illustriert eine beispielhafte Benutzerschnittstelle, in welcher Codierstilparameter ausgewählt werden können. 8E illustrates an exemplary user interface in which coding style parameters can be selected.
  • 9A illustriert ein Beispiel einer beispielhaften Benutzerschnittstelle, in welcher Codegenerierungsparameter ausgewählt werden können. 9A illustrates an example of an example user interface in which code generation parameters can be selected.
  • 9B illustriert eine beispielhafte Benutzerschnittstelle, in welcher Optimierungsgrade und -prioritäten ausgewählt werden können. 9B illustrates an example user interface in which levels and priorities of optimization can be selected.
  • 9C illustriert eine beispielhafte Benutzerschnittstelle, in welcher die Priorität maximaler Ausführungsgeschwindigkeit ausgewählt wurde. 9C illustrates an exemplary user interface in which the priority of maximum execution speed was selected.
  • 9D illustriert eine beispielhafte Benutzerschnittstelle, in welcher die Priorität minimaler Nutzung von Speicher mit wahlfreiem Zugriff (RAM) ausgewählt wurde. 9D illustrates an exemplary user interface in which the priority of minimal use of random access memory (RAM) has been selected.
  • 10A zeigt ein Beispiel einer logischen und Beziehung unter Quellenaspekten. 10A shows an example of a logical and relationship from source aspects.
  • 10B zeigt ein illustratives Merkmal in generiertem Programmcode, wenn Pufferwiederverwendung nicht ausgewählt ist, im Kontrast zum Merkmal, das in 10A gezeigt ist. 10B shows an illustrative feature in generated program code when buffer reuse is not selected, in contrast to the feature described in 10A is shown.
  • 10C zeigt ein Beispiel für eine überschreibende bzw. überstimmende Beziehung, wobei eine Speicherklasse ausgewählt wird, welche eine Default Speicherklasse überschreibt. 10C shows an example of an overwriting or overriding relationship, whereby a storage class is selected which overwrites a default storage class.
  • 10D zeigt ein Beispiel von generiertem Programmcode, wobei eine Default Speicherklasse ausgewählt ist für Inports in einem Modell. 10D shows an example of generated program code, with a default storage class selected for imports in a model.
  • 10E zeigt ein Beispiel von generiertem Programmcode, wenn eine Speicherklasse ausgewählt ist für einen Inport, um die Default Speicherklasse zu überschreiben. 10E shows an example of generated program code when a storage class is selected for an inport to overwrite the default storage class.
  • 11A ist ein Flussdiagramm von Schritten, die ausgeführt werden, um Empfehlungen zu generieren und zu akzeptieren, in einer beispielhaften Ausführungsform. 11A FIG. 4 is a flowchart of steps performed to generate and accept recommendations in an exemplary embodiment.
  • 11B zeigt ein Beispiel von Empfehlungen, die Ergebnisse des Akzeptierens der Empfehlungen und mögliche Nebenwirkungen. 11B shows an example of recommendations, the results of accepting the recommendations and possible side effects.
  • 11C zeigt ein Beispiel, in welchem die Empfehlungen in Tooltips angezeigt werden. 11C shows an example in which the recommendations are displayed in tooltips.
  • 12A illustriert eine Rechenvorrichtung, die geeignet ist, eine beispielhafte Ausführungsform zu verwirklichen. 12A illustrates a computing device suitable for implementing an exemplary embodiment.
  • 12B illustriert eine verteilte Umgebung, die geeignet ist, eine beispielhafte Ausführungsform zu verwirklichen. 12B illustrates a distributed environment suitable for implementing an exemplary embodiment.

Detaillierte BeschreibungDetailed description

Herkömmliche Systeme bieten nicht die Möglichkeit, Assoziationen zwischen mehreren Arten von Quellen und generiertem Programmcode, der von einem Codegenerator aus den Quellen generiert wird, zu identifizieren. In diesem Kontext bezieht sich eine Quelle auf etwas, das modifiziert werden kann und das Einfluss hat auf den Programmcode, der von dem Codegenerator von einem Modell generiert wird. Darüber hinaus ist es mit herkömmlichen Systemen schwierig zu wissen, wie eine Quelle oder wie Quellen zu modifizieren sind, um eine gewünschte Änderung in dem generierten Programmcode zu bewirken. Die hierin beschriebenen beispielhaften Ausführungsformen können diese Unzulänglichkeiten herkömmlicher Systeme überwinden.Conventional systems do not offer the possibility of identifying associations between several types of sources and generated program code, which is generated by a code generator from the sources. In this context, a source refers to something that can be modified and that affects the program code generated by the code generator from a model. In addition, with conventional systems, it is difficult to know how to modify a source or sources to effect a desired change in the generated program code. The exemplary embodiments described herein can overcome these shortcomings of conventional systems.

Die hierin beschriebenen beispielhaften Ausführungsformen können auch in der Lage sein, Aspekte der Quellen zu analysieren, welche zu einem Merkmal des generierten Programmcodes beitragen. Die beispielhaften Ausführungsformen sind daher nicht auf ein einfaches Abbilden bzw. Mappen zwischen einem Modell und generiertem Programmcode beschränkt. Die beispielhaften Ausführungsformen können vielmehr in der Lage sein, Assoziationen nicht nur zu dem Modell, sondern auch zu anderen Arten von Quellen zu identifizieren, welche zu den resultierenden Merkmalen des generierten Programmcodes beitragen, wie etwa Konfigurationseinstellungen für die Codegeneration und Versionen oder Modifikationen an dem graphischen Modell und/oder Codegenerator. Die beispielhaften Ausführungsformen können daher Assoziationen zwischen mehreren Quellen unterschiedlichen Typs und den resultierenden Merkmal(en) identifizieren. Die beispielhaften Ausführungsformen stellen daher insbesondere eine verbesserte Mensch-Maschine Interaktion und eine verbesserte und effiziente Simulation des Verhaltens eines Systeme der realen Welt bereit, indem Assoziationen zwischen mehreren Quellen unterschiedlichen Typs und der resultierenden Merkmal(e) bereitgestellt werden.The exemplary embodiments described herein may also be able to analyze aspects of the sources that contribute to a feature of the generated program code. The exemplary embodiments are therefore not limited to simple mapping or mapping between a model and generated program code. Rather, the exemplary embodiments may be able to identify associations not only to the model but also to other types of sources that contribute to the resulting features of the generated program code, such as configuration settings for the code generation and versions or modifications to the graphic Model and / or code generator. The exemplary embodiments can therefore identify associations between multiple sources of different types and the resulting feature (s). The exemplary embodiments therefore particularly provide improved human-machine interaction and improved and efficient simulation of the behavior of a real world system by providing associations between multiple sources of different types and the resulting feature (s).

Quellen können nach den Effekten kategorisiert werden, die sie auf den generierten Programmcode haben. Dies repräsentiert eine Art, die Quellen nach Typ zu kategorisieren. Eine Quelle kann der Typ sein, der das beobachtbare Verhalten/Ergebnisse des generierten Programmcodes beeinflusst. Dieser Typ von Quelle wird hierin als „verhaltensbetreffend“ bezeichnet, da dieser Typ von Quelle einen „verhaltensbetreffenden“ Effekt hat. Umgekehrt kann eine Quelle von dem Typ sein, der das beobachtbare Verhalten/Ergebnisse des generierten Programmcodes nicht beeinflusst, aber nicht-verhaltensbetreffende Effekte auf den generierten Programmcode hat (beispielsweise Speicherverbrauch des generierten Programmcodes). Dieser Typ von Quelle wird hierin al seine „nicht-verhaltensbetreffende“ Quelle bezeichnet. Es sei verstanden, dass einige Quellen sowohl verhaltensbetreffende Effekte als auch nicht-verhaltensbetreffende Effekte haben. In solchen Fällen können Aspekte der Quellen wie angebracht als verhaltensbetreffend oder nicht-verhaltensbetreffend kategorisiert werden.Sources can be categorized according to the effects they have on the generated program code. This represents a way of categorizing sources by type. A source can be the type that affects the observable behavior / results of the generated program code. This type of source is referred to herein as "behavioral" because this type of source has a "behavioral" effect. Conversely, a source can be of the type that does not influence the observable behavior / results of the generated program code, but has non-behavioral effects on the generated program code (for example memory consumption of the generated program code). This type of source is referred to herein as its "non-behavioral" source. It is understood that some sources have both behavioral and non-behavioral effects. In such cases Aspects of the sources may be categorized as behavioral or non-behavioral as appropriate.

Der Typ einer Quelle kann die Varietät der Quelle identifizieren. Zum Beispiel können unterschiedliche Typen von Quellen ein Modell und einen Codegenerator beinhalten. Darüber hinaus bilden Konfigurationseinstellungen und/oder Konfigurationswerte, wie etwa Wahl von Namensgebungsregeln, Wahl einer Speicherklasse einen weiteren Typ von Quelle, welcher den generierten Programmcode beeinflusst. Weiter bildet die Wahl von Optimierungen, die von einem Codegenerator angewandt werden, einen Typ von Quelle dahingehend, dass sie Konfigurationseinstellungen für den Codegenerator sind.The type of a source can identify the variety of the source. For example, different types of sources can include a model and a code generator. In addition, configuration settings and / or configuration values, such as the choice of naming rules and the choice of a storage class, form a further type of source, which influences the generated program code. Furthermore, the choice of optimizations applied by a code generator forms a type of source in that they are configuration settings for the code generator.

Systeme und/oder Verfahren wie hierin beschrieben können eine Rechenumgebung verwenden, wie etwa eine Umgebung zum technischen Rechnen („technical computing environment“, TCE), um Rechenoperationen auszuführen. Eine TCE kann eine hardwarebasierte Logik oder eine Kombination von hardware- und Softwarebasierter Logik beinhalten, welche eine Rechenumgebung bereitstellt, die es ermöglicht, dass Aufgaben bzw. Tasks ausgeführt werden (beispielsweise von Benutzern), die sich auf Disziplinen wie etwa, ohne hierauf beschränkt zu sein, Mathematik Wissenschaft, Ingenieurswesen, Medizin und Wirtschaft. Die TCE kann textbasierte Umgebungen (beispielsweise MATLAB® Software), eine graphisch basierte Umgebung (beispielsweise Simulink® Software, Stateflow® Software, SimEvents® Software, Simscape™ Software, etc., von The MathWorks, Incorporated; VisSim von Visual Solutions; LabView® von National Instruments, etc.), oder eine andere Art von Umgebung, wie etwa eine hybride Umgebung, die beispielsweise eine oder mehrere von den vorgenannten textbasierten Umgebungen und eine oder mehrere der vorgenannten graphisch basierten Umgebungen beinhalten kann, beinhalten.Systems and / or methods as described herein may use a computing environment, such as a technical computing environment (TCE), to perform computing operations. A TCE may include hardware-based logic or a combination of hardware and software-based logic that provides a computing environment that enables tasks (for example, users) to be performed that are limited to, but not limited to, disciplines such as be math science, engineering, medicine and business. The TCE can use text-based environments (e.g. MATLAB® software), a graphically based environment (e.g. Simulink® software, Stateflow® software, SimEvents® software, Simscape ™ software, etc.) from The MathWorks, Incorporated; VisSim from Visual Solutions; LabView® from National Instruments, etc.), or another type of environment, such as a hybrid environment, which may include, for example, one or more of the aforementioned text-based environments and one or more of the aforementioned graphically-based environments.

Die TCE kann integriert sein in, oder kann zusammenarbeiten mit einer graphischen Modellierungsumgebung, die graphische Werkzeuge zum Erstellen von Modellen von Systemen und/oder Prozessen bereitstellen kann. Die TCE kann weitere Werkzeuge beinhalten, wie etwa Werkzeuge, die dazu entworfen sind, ein Modell in eine alternative Repräsentation umzuwandeln, wie etwa Computerquellcode, kompilierten Computercode oder eine Hardwarebeschreibung (beispielsweise eine Beschreibung eines Schaltungslayouts). Diese alternative Repräsentation kann auch einen Link auf einen Bezeichner bzw. Bezeichner beinhalten, der mit einem Modellelement eines graphischen Modells assoziiert ist. Der Bezeichner kann es daher der TCE ermöglichen, zu dem Modellelement und/oder zu einer oder mehreren hierarchische Ebenen eines Modells, in welchen das Modellelement existiert, zu navigieren. Zusätzlich oder alternativ kann der Bezeichner es der TCE ermöglichen, zu einem Element in der alternativen Repräsentation zu navigieren, welches den Link zu dem Bezeichner enthält. Zusätzlich oder alternativ kann der Bezeichner es der TCE ermöglichen, zu einer oder zu mehreren hierarchische Ebenen der alternativen Repräsentation zu navigieren, in welchen das Element existiert. In einigen Implementierungen kann die TCE diese Fähigkeit unter Verwendung graphischer Werkzeugkisten bzw. Toolboxen (beispielsweise Werkzeugkisten für Signalverarbeitung, Bildverarbeitung, Farbmanipulation, Datenplotting, Parallelverarbeitung, etc.) bereitstellen. In einigen Implementierungen kann die TCE diese Funktionen als Blocksätze bereitstellen. In einigen Implementierungen kann die TCE diese Funktionen auf andere Weise bereitstellen.The TCE can be integrated into, or can cooperate with, a graphical modeling environment that can provide graphical tools for creating models of systems and / or processes. The TCE may include other tools, such as tools that are designed to convert a model to an alternate representation, such as computer source code, compiled computer code, or a hardware description (e.g., a description of a circuit layout). This alternative representation can also include a link to an identifier or identifier that is associated with a model element of a graphic model. The identifier can therefore enable the TCE to navigate to the model element and / or to one or more hierarchical levels of a model in which the model element exists. Additionally or alternatively, the identifier may allow the TCE to navigate to an element in the alternate representation that contains the link to the identifier. Additionally or alternatively, the identifier may allow the TCE to navigate to one or more hierarchical levels of the alternate representation in which the element exists. In some implementations, the TCE can provide this capability using graphical tool boxes (e.g. tool boxes for signal processing, image processing, color manipulation, data plotting, parallel processing, etc.). In some implementations, the TCE can provide these functions as justified blocks. In some implementations, the TCE can provide these functions in other ways.

Modelle, welche mit der TCE generiert werden, können beispielsweise Modelle eines physikalischen Systems, eines Rechnersystems, eines von Ingenieuren entworfenen Systems, eines eingebetteten Systems, eines biologischen Systems, eines chemischen Systems, etc. sein. Die Modelle können basieren auf Differentialgleichungen, partiellen Differentialgleichungen, Differenzengleichungen, Differential- und algebraischen Gleichungen, diskrete Ereignissysteme, Zustandsübergangssysteme, Zustandsdiagramme, Datenflusssysteme, etc. In einigen Implementierungen können Modelle hierarchisch sein und eine Anzahl von hierarchischen Ebenen beinhalten. Eine Hierarchieebene eines hierarchischen Modells kann durch eine Entität, wie etwa ein Untersystem oder ein Unterdiagramm, repräsentiert sein. Das Untersystem oder das Unterdiagramm kann mit einem lokalen Namensraum assoziiert sein, wobei Daten innerhalb des Namensraums global verfügbar sein können, aber nicht außerhalb des Namensraums.Models that are generated with the TCE can be, for example, models of a physical system, a computer system, a system designed by engineers, an embedded system, a biological system, a chemical system, etc. The models can be based on differential equations, partial differential equations, differential equations, differential and algebraic equations, discrete event systems, state transition systems, state diagrams, data flow systems, etc. In some implementations, models can be hierarchical and include a number of hierarchical levels. A hierarchical level of a hierarchical model can be represented by an entity, such as a subsystem or a sub-diagram. The subsystem or subchart may be associated with a local namespace, with data within the namespace being globally available, but not outside the namespace.

Ein Modell, das mit der TCE generiert wird, kann beispielsweise Gleichungen, Aktionssprache, Zuweisungen, Bedingungen, Berechnungen, Algorithmen, Funktionen, Verfahren und/oder Prozessabläufe beinhalten. Das Modell kann beispielsweise implementiert sein als zeitbasierte Blockdiagramme (beispielsweise mittels dem Simulink® Produkt, erhältlich von The MathWorks, Incorporated), diskrete Ereignis-basierte Diagramme (beispielsweise mittels dem SimEvents® Produkt, erhältlich von The MathWorks, Incorporated), Datenflussdiagramme, Zustandsübergamsdiagramme (beispielsweise mittels dem Stateflow® Produkt, erhältlich von The MathWorks, Incorporated), Softwarediagramme, eine textfeldbasierte und/oder dynamisch typisierte Sprache (beispielsweise mittels dem MATLAB® Produkt, erhältlich von The MathWorks, Incorporated), akausale Blockdiagramme (beispielsweise mittels dem Simscape™ Produkt, erhältlich von The MathWorks, Incorporated) und/oder als ein anderer Typ von Modell.A model that is generated with the TCE can include, for example, equations, action language, assignments, conditions, calculations, algorithms, functions, procedures and / or process flows. The model can be implemented, for example, as time-based block diagrams (for example using the Simulink® product, available from The MathWorks, Incorporated), discrete event-based diagrams (for example, using the SimEvents® product, available from The MathWorks, Incorporated), data flow diagrams, state transfer diagrams ( for example using the Stateflow® product available from The MathWorks, Incorporated), software diagrams, a text field based and / or dynamically typed language (e.g. using the MATLAB® product available from The MathWorks, Incorporated), Acausal block diagrams (for example, using the Simscape ™ product available from The MathWorks, Incorporated) and / or as another type of model.

Die TCE kann ein oder mehrere textbasierte Produkte verwenden, wie etwa textuelle Modellierungsumgebungen. Eine textbasierte Umgebung kann beispielsweise implementiert sein unter Verwendung von Produkten wie beispielsweise, ohne hierauf beschränkt zu sein, MATLAB von The MathWorks, Incorporated; Octave von der Free Software Foundation; MATRIXx von National Instruments; Python von der Python Software Foundation; Comsol Script von Comsol Inc.; Mathematica von Wolfram Research, Inc.; Mathcad von Mathsoft Engineering & Education Inc.; Maple von Maplesoft; Extend von Imagine That Inc.; Scilab von dem französischen Nationalen Forschungsinstitut für Informatik und Automatisierung (INRIA), Virtuoso von Cadence Design Systeme, Inc.; oder Modelica von der Modelica Assoziation oder Dymola von Dassault Systemes. In einigen Ausführungsformen kann die textbasierte Modellierungsumgebung Hardware und/oder Software beinhalten, die auf Logik basiert, welche eine Rechenumgebung bereitstellt, welche es Benutzern erlaubt, Aufgaben, die sich auf Disziplinen bezieht, wie beispielsweise, ohne hierauf beschränkt zu sein, Mathematik, Wissenschaft, Ingenieurswesen, Medizin, Wirtschaft, etc., effizienter auszuführen als wenn die Aufgaben in einer anderen Rechenumgebung würden, wie etwa einer Umgebung, welche es erfordern würde, dass der Benutzer Code in einer herkömmlichen Programmiersprache wie etwa C++, C, Fortran, Pascal, etc. entwickelt.The TCE can use one or more text-based products, such as textual modeling environments. For example, a text based environment may be implemented using products such as, but not limited to, MATLAB from The MathWorks, Incorporated; Octave from the Free Software Foundation; National Instruments MATRIXx; Python from the Python Software Foundation; Comsol Script by Comsol Inc .; Mathematica by Wolfram Research, Inc .; Mathcad from Mathsoft Engineering & Education Inc .; Maple by Maplesoft; Extend by Imagine That Inc .; Scilab by the French National Research Institute for Computer Science and Automation (INRIA), Virtuoso by Cadence Design Systems, Inc .; or Modelica from the Modelica Association or Dymola from Dassault Systemes. In some embodiments, the text-based modeling environment may include hardware and / or software based on logic that provides a computing environment that allows users to perform tasks related to disciplines such as, but not limited to, math, science, Engineering, medicine, economics, etc. to perform more efficiently than if the tasks were in a different computing environment, such as an environment that would require the user to code in a conventional programming language such as C ++, C, Fortran, Pascal, etc developed.

In einigen Implementierungen kann die textbasierte Modellierungsumgebung eine dynamisch typisierte Sprache beinhalten, die verwendet werden kann, um Probleme und/oder Lösungen in mathematischen Notationen auszudrücken, die den Fachleuten in den relevanten Gebieten bekannt sind. Die Modellierungsumgebung kann beispielsweise ein Feld bzw. Array al sein Basiselement verwenden, wobei das Feld keine Dimensionierung erfordert. Diese Felder können verwendet werden, um Feldprogrammierung zu ermöglichen, indem Operationen anwendbar sind auf einen ganzen Satz von Werten, wie etwa Werten in einem Feld. Feldprogrammierung kann es erlauben, dass feldbasierte Operationen als Hochsprachenprogrammierungstechniken oder -modell behandelt werden, welche es einem Programmierer erlauben, in gesamten Aggregationen von Daten zu denken und auf diesen zu arbeiten, ohne auf explizite Schleifen von einzelnen, nicht feldbasierten, das heißt, skalaren Operationen zurückgreifen zu müssen.In some implementations, the text-based modeling environment can include a dynamically typed language that can be used to express problems and / or solutions in mathematical notations that are known to those skilled in the relevant fields. The modeling environment can, for example, use a field or array as its basic element, the field not requiring dimensioning. These fields can be used to enable field programming by making operations applicable to an entire set of values, such as values in a field. Field programming can allow field-based operations to be treated as high-level language programming techniques or models that allow a programmer to think and work on entire aggregations of data without explicit loops of individual, non-field-based, i.e., scalar operations to have to fall back.

Die Modellierungsumgebung kann weiter angepasst sein, Matrix- und/oder Vektorformulierungen auszuführen, die verwendet werden können zur Datenanalyse, Datenvisualisierung, Anwendungsentwicklung, Simulation, Modellierung, Algorithmusentwicklung, etc. Diese Matrix- und/oder Vektorformulierungen können in vielen Gebieten verwendet werden, wie etwa Statistik, Finanzwesen, Bildverarbeitung, Signalverarbeitung, Steuerungs- und/oder Regelungsentwurf, computerunterstütztes Design (CAD), Produktlebenszyklusmanagement (PLM), Biowissenschaften, Bildung, diskrete Ereignisanalyse und/oder Design, zustandsbasierte Analyse und/oder Design, etc.The modeling environment may be further adapted to execute matrix and / or vector formulations that can be used for data analysis, data visualization, application development, simulation, modeling, algorithm development, etc. These matrix and / or vector formulations can be used in many areas, such as Statistics, finance, image processing, signal processing, control and / or regulation design, computer-aided design (CAD), product life cycle management (PLM), life sciences, education, discrete event analysis and / or design, condition-based analysis and / or design, etc.

In einer anderen beispielhaften Ausführungsform kann die TCE in einer graphisch basierten Modellierungsumgebung implementiert sein unter Verwendung von Produkten wie beispielsweise, ohne hierauf beschränkt zu sein, Simulink®, Stateflow®, SimEvents®, Simscape™, etc. von The MathWorks, Incorporated; VisSim von Visual Solutions; LabView® von National Instruments; Dymola von Dassault Systemes; SoftWIRE von Measurement Computing; WiT von DALSA Coreco; VEE Pro oder SystemVue von Agilent; Vision Program Manager von PPT Vision; Khoros von Khoral Research; Gedae von Gedae, Inc.; Scicos von INRIA; Virtuoso von Cadence; Rational Rose von IBM; Rhapsody oder Tau von IBM; Ptolemy von der University of California at Berkeley; oder Aspekten einer Unified Modeling Language (UML) oder SysML Umgebung.In another exemplary embodiment, the TCE can be implemented in a graphically based modeling environment using products such as, but not limited to, Simulink®, Stateflow®, SimEvents®, Simscape ™, etc. from The MathWorks, Incorporated; VisSim from Visual Solutions; National Instruments LabView®; Dymola from Dassault Systemes; SoftWIRE from Measurement Computing; WiT from DALSA Coreco; VEE Pro or SystemVue from Agilent; Vision Program Manager from PPT Vision; Khoros from Khoral Research; Gedae by Gedae, Inc .; Scicos from INRIA; Virtuoso by Cadence; Rational Rose from IBM; Rhapsody or Tau from IBM; Ptolemy from the University of California at Berkeley; or aspects of a Unified Modeling Language (UML) or SysML environment.

Die beispielhaften Ausführungsformen ermöglichen die Identifikation von Aspekten von Quellen auf einer atomaren Ebene sowie auch auf nicht atomaren Ebenen. Ein atomarer Quellenaspekt bezieht sich auf einen Aspekt der Quellen, der einen beobachtbaren und nachverfolgbaren bzw. tracebaren Effekt in dem generierten Code hervorruft. Die Identifikation von Aspekten von Quellen auf einer atomaren Ebene, was auch als atomares Nachverfolgen bzw. Tracing bezeichnet werden kann, erlaubt es Benutzern, geeignete Änderungen an einem Modell oder an Modellkonfigurationen vorzunehmen, um erwünschten Code zu erzielen.The exemplary embodiments enable aspects of sources to be identified at an atomic level as well as at non-atomic levels. An atomic source aspect refers to an aspect of the sources that produces an observable and traceable effect in the generated code. Identifying aspects of sources at an atomic level, which can also be referred to as atomic tracing, allows users to make appropriate changes to a model or model configurations to achieve desired code.

Der Begriff „atomar“ kann hierin verwendet werden, um sich auf Quellenaspekte zu beziehen, wie zum Beispiel etwa Konfigurationseinstellungen, Modellelemente, Optimierungsauswahlen, etc. „Atomar“ kann hierin auch verwendet werden, um sich auf Effekte zu beziehen, die von den atomaren Quellenaspekten während der Codegenerierung bewirkt werden. Einstellungen auf höherer Ebene, wie etwa die Auswahl eines Optimierungsgrads, sind beispielsweise nichtatomare Quellenaspekte. Konfigurationseinstellungen auf niedrigerer Ebene, die eingestellt werden in Antwort auf die Einstellungen auf höherer Ebene können atomare Quellenaspekte sein.The term "atomic" can be used herein to refer to source aspects, such as configuration settings, model elements, optimization selections, etc. "Atomic" can also be used herein to refer to effects derived from the atomic source aspects during code generation. Higher-level settings, such as choosing a level of optimization, are non-atomic source aspects, for example. Lower level configuration settings that are set in response to the higher level settings may be atomic source aspects.

Die beispielhaften Ausführungsformen können es einem erlauben, Assoziationen zwischen atomaren Quellenaspekten und Merkmalen in dem generierten Programmcode zu sehen. Es ist daher insbesondere möglich, Assoziationen zwischen einem Aspekt einer Quelle, wie etwa einem oder mehreren Konfigurationseffekten und/oder einem oder mehreren verhaltensbetreffenden Effekten von zum Beispiel dem Modell und/oder dem Codegenerator, und Merkmalen des generierten Codes zu sehen. Genauer ist es daher möglich, Aspekte einer Quelle zu identifizieren, die dann modifiziert werden können, um eine gewünschte Änderung in dem generierten Code zu bewirken, und umgekehrt. Jedes Merkmal kann eine oder mehrere Komponenten haben. Atomare Quellenaspekte können mit atomaren Komponenten in dem generierten Programmcode assoziiert sein. Die Visualisierung jeder derartigen Assoziation kann alle derartige Komponenten und assoziierten Quellenaspekte zeigen. Die atomare Natur von Quellenaspekten und resultierenden atomaren Konfigurationseffekt(en), die in den Komponenten wahrgenommen werden, ermöglichen es einem, auf einer fundamentalen Ebene zu identifizieren, was in den Quellen sich mittels der Codegeneration in den relevanten Merkmalen in dem generierten Programmcode manifestiert und umgekehrt. Atomare Ebene in einem Code wie in dieser Anmeldung verwendet kann sich beispielsweise auf granulare Komponenten von Programmcode beziehen. The exemplary embodiments may allow one to see associations between atomic source aspects and features in the generated program code. It is therefore particularly possible to see associations between an aspect of a source, such as one or more configuration effects and / or one or more behavioral effects of, for example, the model and / or the code generator, and features of the generated code. More specifically, it is therefore possible to identify aspects of a source that can then be modified to effect a desired change in the generated code, and vice versa. Each characteristic can have one or more components. Atomic source aspects can be associated with atomic components in the generated program code. The visualization of each such association can show all such components and associated source aspects. The atomic nature of source aspects and resulting atomic configuration effect (s) perceived in the components enable one to identify at a fundamental level what is manifested in the sources by means of code generation in the relevant features in the generated program code and vice versa . For example, the atomic level in a code as used in this application may refer to granular components of program code.

Die beispielhaften Ausführungsformen können eine Visualisierung von Assoziationen zwischen Ergebnissen der Analyse des generierten Programmcodes und der Quellenaspekte identifizieren und erzeugen. Zum Beispiel kann eine statische Analyse ausgeführt werden, wie etwa Identifizieren von Artefakten, wie Kompilationsfehlern, Logikfehlern, Codestandardverletzungen und Codebeweisfehlern. Die statische Analyse kann eine Analyse der Codesyntax beinhalten, wie etwa eine strukturelle Analyse, oder eine Analyse des Verhaltens des Codes, ohne den Code auszuführen. In den beispielhaften Ausführungsformen können die Quellenaspekte, welche in den Artefakten resultieren, identifiziert werden und die Assoziation der Quellenaspekte und der Artefakte kann visualisiert werden. Ähnlich kann eine dynamische Analyse (das heißt eine Analyse, die auf dem generierten Programmcode ausgeführt wird, wenn der generierte Programmcode ausgeführt wird), wie etwa Code Profiling und Codeabdeckungsanalyse, ausgeführt werden, um Artefakte zu erzeugen. Die Ergebnisse der statischen Analyse und/oder der dynamischen Analyse können ein oder mehrere identifizierte Artefakte sein. Beispielhafte Ausführungsformen können Assoziationen zwischen den Artefakte und Quellenaspekten der Quellen identifizieren und eine Visualisierung der Assoziationen bereitstellen. Dies ermöglicht insbesondere eine verbesserte Mensch-Maschine-Interaktion, zum Beispiel wenn spezifische Änderungen an dem Code gewünscht sind.The exemplary embodiments can identify and generate a visualization of associations between results of the analysis of the generated program code and the source aspects. For example, static analysis can be performed, such as identifying artifacts such as compilation errors, logic errors, code standard violations, and code evidence errors. The static analysis can include an analysis of the code syntax, such as a structural analysis, or an analysis of the behavior of the code without executing the code. In the exemplary embodiments, the source aspects that result in the artifacts can be identified and the association of the source aspects and the artifacts can be visualized. Similarly, dynamic analysis (that is, analysis that is performed on the generated program code when the generated program code is executed), such as code profiling and code coverage analysis, can be performed to generate artifacts. The results of the static analysis and / or the dynamic analysis can be one or more identified artifacts. Exemplary embodiments can identify associations between the artifacts and source aspects of the sources and provide a visualization of the associations. In particular, this enables improved human-machine interaction, for example when specific changes to the code are desired.

Die beispielhaften Ausführungsformen können auch nützliche Information bezüglich generiertem Programmcode bereitstellen, welcher generiert ist von einem ersten Satz Quellen, mit generiertem Programmcode, der aus einem zweiten Satz von Quellen generiert ist. In beispielhaften Ausführungsformen kann ein Codedifferenzierwerk die Unterschiede zwischen den Sätzen von generiertem Programmcode identifizieren, und kann identifizieren, welche atomaren Quellenaspekt(en) in den jeweiligen Sätzen von Quellen für die Unterschiede in den Sätzen von generiertem Programmcode verantwortlich ist/sing. Zum Beispiel sei angenommen, dass eine erste Version eines Codegenerators subsequent genutzt wurde, um Programmcode für ein graphisches Modell zu generieren. Es sei weiter angenommen, dass eine zweite Version des Codegenerators verwendet wurde, um Code für das graphische Quellenmodell zu generieren, um einen zweiten Satz von generiertem Programmcode zu generieren. Ein Codedifferenzierwerk kann auf die erste Version des Programmcodes und die zweite Version des Programmcodes angewandt werden, um Unterschiede zwischen dem generierten Programmcode zu identifizieren. Ein bestimmter der Unterschiede kann identifiziert werden, als von einem bestimmten Unterschied in den Versionen des Codegenerators herzurühren. Die Assoziation zwischen den Unterschieden in den Codegeneratoren und der Unterschied in dem generierten Programmcode kann in beispielhaften Ausführungsformen identifiziert und visualisiert werden. Es ist daher insbesondere möglich, schnell und effizient Unterschiede in Code zu identifizieren, welche durch die Verwendung unterschiedlicher Codegeneratoren und/oder unterschiedlicher Versionen eines Codegenerators verursacht werden. Dies stellt zum Beispiel ein signifikant verbessertes Simulationsergebnis bereit, da unerwünschte Verhaltens- und/oder Konfigurationseffekte, die durch die Verwendung der Codegeneratoren hervorgerufen werden, rasch und effizient identifiziert werden können, und unterschieden werden können von tatsächlichen Ergebnissen der Simulation. Weiter ist es auch möglich, eine verbesserte Mensch-Maschine-Interaktion bereitzustellen, zum Beispiel während dem Debuggen des generierten Codes und/oder während dem Debuggen und/oder dem Entwurf von Codegeneratoren.The exemplary embodiments may also provide useful information regarding generated program code generated from a first set of sources, with generated program code generated from a second set of sources. In exemplary embodiments, a code differentiator can identify the differences between the sets of generated program code, and can identify which atomic source aspect (s) in the respective sets of sources are responsible for the differences in the sets of generated program code. For example, assume that a first version of a code generator was subsequently used to generate program code for a graphic model. It is further assumed that a second version of the code generator was used to generate code for the graphical source model to generate a second set of generated program code. A code differentiator can be applied to the first version of the program code and the second version of the program code to identify differences between the generated program code. A particular one of the differences can be identified as being due to a particular difference in the versions of the code generator. The association between the differences in the code generators and the difference in the generated program code can be identified and visualized in exemplary embodiments. It is therefore possible in particular to quickly and efficiently identify differences in code that are caused by the use of different code generators and / or different versions of a code generator. For example, this provides a significantly improved simulation result, since undesirable behavior and / or configuration effects caused by the use of the code generators can be identified quickly and efficiently and can be distinguished from actual results of the simulation. Furthermore, it is also possible to provide an improved human-machine interaction, for example during the debugging of the generated code and / or during the debugging and / or the design of code generators.

Andere Unterschiede im Code, wie etwa Verbesserungen im generierten Programmcode und Codeänderungen, die gemacht wurden, um Bugs oder Regressionen (beispielsweise Verschlechterungen in der Performanz des Programmcodes, die von Änderungen resultieren) zu beheben, können identifiziert und zurück mit den Änderungen in atomaren Quellenaspekt(en) assoziiert werden, die die Verbesserungen, Bugs oder Regressionen verursacht haben. Weiterhin ist es, indem die Assoziationen zum Beispiel zwischen Verbesserungen im generierten Programmcode und Änderungen in atomaren Quellenaspekten des Codegenerators identifiziert und bereitgestellt werden, möglich, die Effizienz und Performanz des Codegenerators signifikant zu verbessern.Other differences in code, such as improvements in generated program code and code changes made to fix bugs or regressions (e.g. deterioration in program code performance resulting from changes) can be identified and back with the changes in the atomic source aspect ( en) associated that caused the improvements, bugs or regressions. Furthermore, it is by the associations for example between Improvements in the generated program code and changes in atomic source aspects of the code generator are identified and provided, possible to significantly improve the efficiency and performance of the code generator.

Das Identifizieren der Assoziationen zwischen Quellenaspekten und den resultierenden Merkmalen in dem generierten Programmcode oder Artefakten kann auf dem Speichern von Informationen in Konstrukten, wie etwa Datenstrukturen, während des Codegenerationsprozesses basieren. In einigen beispielhaften Ausführungsformen kann ein Codegenerator Effekte von Quellenaspekten in Datenstrukturen kennzeichnen, wenn der generierte Programmcode generiert wird. In beispielhaften Ausführungsformen, in welchen die Quellen ein Modell beinhalten, von welchem der generierte Programmcode generiert wird, können einige beispielhafte Ausführungsformen intermediäre Repräsentationen verwenden, die bei der Codegeneration verwendet werden. Die gespeicherte Information (wie oben erwähnt) kann zusammen mit derartigen intermediäre Repräsentationen gespeichert werden, um die atomaren Quellenaspekte zu identifizieren und die Assoziationen der Quellenaspekte zu den resultierenden Effekten in dem generierten Code zu ermöglichen. In alternativen beispielhaften Ausführungsformen kann andere Information gespeichert werden, wie eine Identifikation der Assoziation oder Änderungsinformation, welche anzeigt, wenn ein Aspekt einer Quelle sich geändert hat. Insbesondere verbessert das Speichern der Information die Mensch-Maschine-Interaktion weiter, indem es ein effizientes späteres Abrufen der Information wenn benötigt ermöglicht.Identifying the associations between source aspects and the resulting features in the generated program code or artifacts can be based on storing information in constructs, such as data structures, during the code generation process. In some example embodiments, a code generator may identify effects of source aspects in data structures when the generated program code is generated. In example embodiments in which the sources include a model from which the generated program code is generated, some example embodiments may use intermediate representations used in code generation. The stored information (as mentioned above) can be stored along with such intermediate representations to identify the atomic source aspects and to allow associations of the source aspects with the resulting effects in the generated code. In alternative exemplary embodiments, other information may be stored, such as an identification of the association or change information, which indicates when an aspect of a source has changed. In particular, storing the information further improves human-machine interaction by allowing the information to be retrieved efficiently later when needed.

Beispielhafte Ausführungsformen können auch Empfehlungen bereitstellen, wie die Quellen zu modifizieren sind, wie etwa die Quellenaspekte, um einen assoziierten Effekt in dem generierten Programmcode zu bewirken. Die Empfehlungen können über eine Benutzerschnittstelle oder einen anderen Mechanismus angezeigt werden. Jede Empfehlung kann einen Mechanismus beinhalten, der aktiviert werden kann, um die Empfehlung zu implementieren. Beispielhafte Ausführungsformen können weiter für jede angezeigte Empfehlung eine verursachte Änderung in dem generierten Programmcode anzeigen, die in Verbindung mit dem assoziierten Effekt steht, durch Implementieren der jeweiligen angezeigten Empfehlung. Mit anderen Worten können beispielhafte Ausführungsformen weiter für jede angezeigte Empfehlung anzeigen, wie der generierte Programmcode geändert würde, um den assoziierten Effekt in dem generierten Programmcode zu bewirken. Beispielhafte Ausführungsformen können weiter für jede angezeigte Empfehlung eine verursachte Änderung in dem generierten Programmcode anzeigen, die nicht mit dem assoziierten Effekt in Verbindung steht, durch Implementieren der jeweiligen angezeigten Empfehlung. Mit anderen Worten können beispielhafte Ausführungsformen weiter für jede angezeigte Empfehlung potentielle Änderungen als Seiteneffekt an dem generierten Code anzeigen, die verursacht werden durch Implementieren der jeweiligen Empfehlung. Die Empfehlung kann beispielsweise getriggert werden, indem der Benutzer den generierten Programmcode modifiziert. Insbesondere wird, indem die Empfehlungen auf eine derartige Weise präsentiert werden, die Mensch-Maschine-Interaktion während beispielsweise dem Modifizieren von generiertem Code und/oder Modifizieren von Quellen signifikant vereinfacht und verbessert.Exemplary embodiments may also provide recommendations on how to modify the sources, such as the source aspects, to have an associated effect in the generated program code. The recommendations can be viewed through a user interface or other mechanism. Each recommendation can include a mechanism that can be activated to implement the recommendation. Exemplary embodiments may further indicate, for each recommendation displayed, a change in the generated program code that is related to the associated effect by implementing the respective recommendation displayed. In other words, for each recommendation displayed, exemplary embodiments may further indicate how the generated program code would be changed to effect the associated effect in the generated program code. Exemplary embodiments may further display a caused change in the generated program code for each displayed recommendation that is not related to the associated effect by implementing the respective displayed recommendation. In other words, exemplary embodiments can further display, for each recommendation displayed, potential changes as a side effect to the generated code that are caused by implementing the respective recommendation. The recommendation can be triggered, for example, by the user modifying the generated program code. In particular, by presenting the recommendations in such a manner, the human-machine interaction during, for example, modifying generated code and / or modifying sources is significantly simplified and improved.

1A zeigt eine Darstellung 100 einer Anzahl von Komponenten, die in einer beispielhaften Ausführungsform bereitgestellt sein können. Wie in 1A gezeigt, kann eine Anzahl von unterschiedliche Typen von Quellen 102 als Eingaben in einen Codegenerator 104 fungieren, um generierten Programmcode 106 zu erzeugen. Wie in 1B gezeigt, können die Quellen 102 ein Modell 122 beinhalten, wie zum Beispiel etwa ein textuelles Modell oder ein graphisches Modell. Die Quellen können auch den Codegenerator 104 beinhalten. Algorithmen in dem Codegenerator 104 und Änderungen, die an dem Codegenerator 104 vorgenommen werden, können Auswirkungen auf den generierten Programmcode haben. Die Quellen können auch Konfigurationseinstellungen 126 beinhalten. Wie in größerem Detail nachstehend beschreiben, können Werte einer Anzahl von atomaren Konfigurationseinstellungen, welche sich auf das Modell 122 und die Codegeneration beziehen, Auswirkungen auf den generierten Programmcode 106 haben. Die Quellen 102 können auch Optimierungen 128 beinhalten, welche von dem Codegenerator 104 ausgeführt werden. Der Codegenerator 104 kann die Option bereitstellen, den generierten Programmcode 106 auf verschiedene Weisen zu optimieren. Der generierte Code kann zum Beispiel optimiert werden, um den Speicherbedarf zu minimieren oder um auf einem Prozessor mit begrenzter Rechenleistung schneller ausgeführt zu werden. Diese Liste von Quellen 102 ist nicht als abschließend gedacht, sondern ist allein als illustrativ gedacht. 1A shows an illustration 100 a number of components that may be provided in an exemplary embodiment. As in 1A shown can be a number of different types of sources 102 as inputs to a code generator 104 act to generated program code 106 to create. As in 1B shown the sources 102 a model 122 include, such as a textual model or a graphical model. The sources can also use the code generator 104 include. Algorithms in the code generator 104 and changes made to the code generator 104 can affect the generated program code. The sources can also use configuration settings 126 include. As described in more detail below, values can be a number of atomic configuration settings that affect the model 122 and relate the code generation, effects on the generated program code 106 to have. The sources 102 can also do optimizations 128 include which of the code generator 104 be carried out. The code generator 104 can provide the option of the generated program code 106 optimize in different ways. The generated code can be optimized, for example, to minimize memory requirements or to run faster on a processor with limited computing power. This list of sources 102 is not intended to be conclusive, but is intended to be illustrative only.

Wie oben erwähnt kann der Codegenerator 104 als eine Quelle 102 fungieren, die einen Effekt auf den generierten Programmcode 106 hat. 1C zeigt ein Beispiel einiger illustrativer Aspekte des Codegenerators 104, welche Auswirkungen auf den generierten Programmcode 106 haben können. Auf den Codegenerator 104 können Bugfixes 132 angewandt werden, um Fehler zu beheben, die zuvor in dem Codegenerator 104 existiert haben. Diese Bugfixes 132 können einen resultierenden Effekt auf den generierten Programmcode 106 haben. Neue Merkmale 134, die dem Codegenerator 104 hinzugefügt werden, können ebenfalls den generierten Programmcode 106 beeinflussen. Oftmals beinhalten neue Release eines Codegenerators 104 solche neuen Merkmale 134. Andere Aspekte 136 des Codegenerators 104 können den generierten Programmcode 106 beeinflussen, wie etwa die Auswahl von Codegenerierungsalgorithmen und dergleichen.As mentioned above, the code generator can 104 as a source 102 act that have an effect on the generated program code 106 Has. 1C shows an example of some illustrative aspects of the code generator 104 what impact on generated program code 106 can have. On the code generator 104 can bug fixes 132 applied to fix errors previously in the code generator 104 have existed. These bug fixes 132 can have a resulting effect on the generated program code 106 to have. New features 134 that the code generator 104 can also be added generated program code 106 influence. Often, new releases include a code generator 104 such new features 134 . Other aspects 136 of the code generator 104 can use the generated program code 106 affect such as the selection of code generation algorithms and the like.

Wie oben erwähnt, können Werte der Konfigurationseinstellungen 126 den generierten Programmcode 106 beeinflussen. Diese Konfigurationseinstellungen können atomar oder nichtatomar sein. 1D zeigt eine illustrative Liste beispielhafter Kategorien von Konfigurationseinstellungen 126, welche den generierten Programmcode 106 beeinflussen können. Unter diesen Kategorien von Konfigurationseinstellungen 126 kann eine Speicherklassenspezifikation 142 sein. Jede Speicherklasse kann Merkmale einer Variablen und/oder Funktion spezifizieren. Die Merkmale können zum Beispiel den Scope bzw. Gültigkeitsbereich, Sichtbarkeit, Lebensdauer, Datentyp und Speicherabschnitt beinhalten. Beispielsweise spezifiziert eine „ConstVolatile“ Speicherklasse einen Speicherabschnitt für Datenelemente, indem die Typqualifikatoren „const“ und „volatile“ hinzugefügt werden vor Datendeklarationen: Deklaration: exportiert über Datei: INSTANZEN_SPEZIFISCHEN_HEADER /* ConstVolatile Speicherabschnitt */ /* CSC Deklarationskommentar standardmäßig erzeugt */ extern const volatile DATENTYP DATENNAME[DIMENSION], Definition: /* ConstVolatile Speicherabschnitt */ /* CSC Deklarationskommentar standardmäßig erzeugt */ const volatile DATENTYP DATENNAME[DIMENSION] [= {...}]; As mentioned above, configuration values can be changed 126 the generated program code 106 influence. These configuration settings can be atomic or non-atomic. 1D shows an illustrative list of exemplary categories of configuration settings 126 which the generated program code 106 can influence. Under these categories of configuration settings 126 can be a storage class specification 142 be. Each storage class can specify characteristics of a variable and / or function. The features can include, for example, the scope or scope, visibility, lifespan, data type and storage section. For example, a "ConstVolatile" storage class specifies a storage section for data elements by adding the type qualifiers "const" and "volatile" before data declarations: Declaration: exported via file: INSTANCE_SPECIFIC_HEADER / * ConstVolatile memory section * / / * CSC declaration comment generated by default * / extern const volatile DATA TYPE DATA NAME [DIMENSION], Definition: / * ConstVolatile memory section * / / * CSC declaration comment generated by default * / const volatile DATA TYPE DATA NAME [DIMENSION] [= {...}];

Als ein weiteres Beispiel teilt eine „BitField“ Speicherklasse dem Codegenerator mit, einen Typ struct mit Bitfeldinformation zu generieren, so dass der Compiler speichereffizienten Code generieren kann. typedef struct INSTANZEN SPEZIFISCHER STRUKTURNAME bezeichner { unsigned int x : 2; unsigned int y : 2; unsigned int z : 2; } INSTANZEN_SPEZIFISCHER_STRUKTURNAME_typ; As another example, a "BitField" memory class tells the code generator to generate a type struct with bit field information so that the compiler can generate memory efficient code. typedef struct INSTANCE SPECIFIC STRUCTURAL NAME identifier { unsigned int x: 2; unsigned int y: 2; unsigned int z: 2; } INSTANZEN_SPEZIFISCHER_STRUKTURNAME_typ;

Die folgende Tabelle zeigt weitere beispielhafte Speicherklassen. Speicherklassenname Beschreibung ExportedGlobal Generiere eine globale Variablendefinition und -deklaration. Der Name der Variable ist der Name des Datenelements. ImportedExtern Generiere Code, der eine globale Variable, die von Deinem externen Code definiert ist, ausliest und in diese schreibt. ImportedExternPointer Generiere Code, der eine globale Zeigervariable, die von Deinem externen Code definiert ist, ausliest und in diese schreibt. Verwende diese Speicherklasse, wenn externer Code ein Datenelement definiert und einen Zeiger bereitstellt, um auf diese Daten zuzugreifen. CompilerFlag Unterstützt Präprozessorkonditionale, die über Compilerflag oder -option definiert sind. Const Generiere eine globale Variablendefinition und -deklaration mit dem Typqualifikator const. ConstVolatile Generiere eine globale Variablendefinition und -deklaration mit den Typqualifikatoren const und volatile . Define Generiere ein Makro (#define Direktive) wie etwa #define myParam 5. ExportToFile Generiere eine globale Variablendefinition und -deklaration. Es können die Namen der Dateien, welche die Variable definieren und deklarieren, spezifiziert werden. FileScope Generiere eine globale Variablendefinition und -deklaration mit dem Typqualifikator static. In dem generierten Code ist der Scope bzw. Gültigkeitsbereich der Variablen auf die aktuelle Datei beschränkt. GetSet Generiere Code, welcher mit Daten interagiert, indem er deine benutzerdefinierten Zugriffsfunktionen aufruft. Externer Code definiert die Daten und stellt die Funktionsdefinitionen bereit. ImportedDefine Generiere Code, welcher ein Makro (#define Direktive) verwendet, welches in einer Headerdatei in externem Code definiert ist. ImportFromFile Generiere Code, welcher eine globale Variable ausliest und in diese schreibt, die von Deinem externen Code definiert ist. Ähnlich wie ExportToFile, aber der generierte Code definiert die Variable nicht. Reusable Generiere effizienteren Code, welcher Zwischenberechnungen eines Datenpfads in einer einzelnen, wiederverwendeten globalen Variablen speichert. Struct Generiere eine globale Struktur, deren Name Du spezifizieren kannst. Volatile Generiere eine globale Variablendefinition und -deklaration mit dem volatile Typqualifikator. Localizable Für Signale, generiere wenn möglich Variablen, die lokal zu Funktionen sind, anstatt im globalen Speicher. Das Generieren lokaler Variablen hindert den Codegenerator daran, Optimierungen zu implementieren, welche die Variablen aus dem generierten Code entfernen. The following table shows other exemplary storage classes. Storage class name description ExportedGlobal Generate a global variable definition and declaration. The name of the variable is the name of the data element. ImportedExtern Generate code that reads and writes a global variable defined by your external code. ImportedExternPointer Generate code that reads and writes a global pointer variable defined by your external code. Use this storage class when external code defines a data element and provides a pointer to access that data. Compiler flag Supports preprocessor conditional defined by compiler flag or option. Const Generate a global variable definition and declaration with the type qualifier const. ConstVolatile Generate a global variable definition and declaration with the type qualifiers const and volatile. Define Generate a macro (#define directive) such as #define myParam 5. ExportToFile Generate a global variable definition and declaration. The names of the files that define and declare the variable can be specified. FileScope Generate a global variable definition and declaration with the type qualifier static. In the generated code, the scope or scope of the variables is limited to the current file. GetSet Generate code that interacts with data by calling your custom access functions. External code defines the data and provides the function definitions. ImportedDefine Generate code that uses a macro (#define directive) that is defined in a header file in external code. ImportFromFile Generate code that reads and writes a global variable that is defined by your external code. Similar to ExportToFile, but the generated code doesn't define the variable. Reusable Generate more efficient code that stores intermediate calculations of a data path in a single, reused global variable. Struct Generate a global structure whose name you can specify. Volatile Generate a global variable definition and declaration with the volatile type qualifier. Localizable For signals, if possible, generate variables that are local to functions rather than in global memory. Generating local variables prevents the code generator from implementing optimizations that remove the variables from the generated code.

Die Konfigurationseinstellungen 126 können auch die Spezifikation von Namensgebungsregeln 144 für Identifikatoren in dem generierten Programmcode 106 beinhalten. Die Namensgebungsregeln 144 spezifizieren die Konventionen, die auf Namen von Identifikatoren, die in dem generierten Programmcode 106 auftreten, angewandt werden. Die Konfigurationseinstellungen 126 können Einstellungen beinhalten, die sich auf Löser und Parameter der Löser 146 beziehen, welche den generierten Programmcode 106 beeinflussen können. Die Konfigurationseinstellungen 124 können Datenimport-/-export Einstellungen 148 beinhalten, welche den generierten Programmcode 106 beeinflussen. Derartige Einstellungen zum Datenimport-/-export können spezifizieren, ob Daten importiert werden, von wo Daten importiert werden, ob Daten exportiert werden und wohin Daten exportiert werden. Die Konfigurationseinstellungen 126 können Einstellungen beinhalten, die sich auf Hardwaredetails 150 beziehen. Derartige Hardwaredetails können Einzelheiten der Zielvorrichtung definieren, in welcher der generierte Programmcode 106 ausgeführt werden soll. Die Konfigurationseinstellungen 126 können Einstellungen beinhalten, die sich auf Codierstil 152 beziehen. Die Codierstileinstellungen 152 können die Syntax und/oder Struktur des generierten Programmcodes beeinflussen. Beispielsweise können cast Konfigurationseinstellungen ausgewählt werden, um zu bestimmen, ob in dem generierten Programmcode 106 alle Typen für Identifikatoren explizit gemacht werden, implizit gemacht werden, oder ob nur einige der Typen explizit gemacht werden. Die atomaren Konfigurationseinstellungen 126 können Einstellungen 154 beinhalten, die sich auf die Codegenerierung beziehen. Die Codegenerierungseinstellungen 154 können beispielsweise die Programmiersprache spezifizieren, in welcher der generierte Programmcode generiert wird.The configuration settings 126 can also specify naming rules 144 for identifiers in the generated program code 106 include. The naming rules 144 specify the conventions based on names of identifiers used in the generated program code 106 occur. The configuration settings 126 can include settings that relate to solvers and parameters of the solvers 146 refer to the generated program code 106 can influence. The configuration settings 124 can import / export data settings 148 which contain the generated program code 106 influence. Such data import / export settings can specify whether data is imported, where data is imported from, whether data is exported, and where data is exported to. The configuration settings 126 may include settings that relate to hardware details 150 Respectively. Such hardware details can define details of the target device in which the generated program code 106 to be executed. The configuration settings 126 may include settings that relate to coding style 152 Respectively. The coding style settings 152 can influence the syntax and / or structure of the generated program code. For example, cast configuration settings can be selected to determine whether in the generated program code 106 all types for identifiers are made explicit, are made implicitly, or whether only some of the types are made explicit. The atomic configuration settings 126 can settings 154 include that relate to code generation. The code generation settings 154 can, for example, specify the programming language in which the generated program code is generated.

1E zeigt, dass die Quellenaspekte 102 in eine Kategorie von verhaltensbetreffenden Quellen 103 und nicht-verhaltensbetreffenden Quellen 105 kategorisiert werden können, wie oben beschrieben. In der Darstellung in 1E können einige Quellenaspekten des Modells 160 und des Codegenerators 162 als verhaltensbetreffende Quellen 103 gruppiert werden. Auch können sich in den verhaltensbetreffenden Quellen 103 Optimierungen 164 befinden. Die Quellen können auch Quellenaspekte beinhalten, die als nicht-verhaltensbetreffend 105 kategorisiert werden können. In dem in 1E gezeigten Beispiel kann ein bzw. können nicht-verhaltensbetreffende(r) Quellenaspekt(en) verschiedene Konfigurationseinstellungen 166, Aspekte des Codegenerators 168 und Aspekte des Modells 170 beinhalten. 1E shows that the source aspects 102 into a category of behavioral sources 103 and non-behavioral sources 105 can be categorized as described above. In the representation in 1E may include some source aspects of the model 160 and the code generator 162 as sources of behavior 103 be grouped. Also can be found in the behavioral sources 103 Optimizations 164 are located. The sources can also include source aspects that can be categorized as non-behavioral 105. In the in 1E The example shown can or can non-behavioral source aspect (s) various configuration settings 166 , Aspects of the code generator 168 and aspects of the model 170 include.

Es sei verstanden, dass die in 1E gezeigte Kategorisierung nicht als beschränkend gedacht ist, sondern vielmehr als lediglich veranschaulichend gedacht ist. Es kann zum Beispiel andere Aspekte von Optimierungen geben, die nicht-verhaltensbetreffende Effekte haben, und es kann Aspekte der Konfigurationseinstellungen 150 geben, die verhaltensbetreffende Effekte haben.It is understood that the in 1E The categorization shown is not intended to be restrictive, but rather is intended to be merely illustrative. For example, there may be other aspects of optimizations that have non-behavioral effects, and there may be aspects of the configuration settings 150 give that have behavioral effects.

Mit Bezug zurück auf 1A können die beispielhaften Ausführungsformen Programmierfunktionalität aufweisen, um die Analyse 108 auszuführen. Wie oben erwähnt, kann die Analyse eine statische Analyse 110 oder eine dynamische Analyse 112 sein. Beispiele einer statischen Analyse 110 beinhalten die Identifikation von Kompilationsfehlern, die Identifikation von Logikfehlern, die Identifikation von Bugs und die Identifikation von Codierstandardverletzungen. Es kann daher eine statische Analyse der Codestruktur und eine statische Analyse des Laufzeitverhaltens geben. Beispiele der dynamischen Analyse 112 beinhalten Codeprofiling und Codeabdeckungsanalyse.Referring back to 1A The exemplary embodiments may have programming functionality to perform the analysis 108 to execute. As mentioned above, the analysis can be a static analysis 110 or a dynamic analysis 112 be. Examples of a static analysis 110 include the identification of compilation errors, the identification of logic errors, the identification of bugs and the identification of coding standard violations. There can therefore be a static analysis of the code structure and a static analysis of the runtime behavior. Examples of dynamic analysis 112 include code profiling and code coverage analysis.

Die Ergebnisse der Anwendung der Analyse 108 sind Artefakte 114. Beispielsweise kann das Anwenden der Codierstandardverletzungsanalyse eine Liste von Codierstandardverletzungen erzeugen. Jede dieser Verletzungen kann ein Artefakt konstituieren. Eine Codierverletzung kann sich beispielsweise auf einen verbotenen Operator beziehen, der in generiertem Programmcode verwendet wird. Die beispielhaften Ausführungsformen stellen die Fähigkeit bereit, derartige Artefakte zu identifizieren und mit Quellenaspekten zu assoziieren. Dies ermöglicht es, die Ursache der Artefakte genau zu lokalisieren. Daher kann die Ursache der Artefakte modifiziert werden, so dass das Artefakt nicht länger existiert, wodurch beispielsweise eine Mensch-Maschine-Interaktion verbessert wird.The results of applying the analysis 108 are artifacts 114 . For example, applying coding standard violation analysis can generate a list of coding standard violations. Each of these injuries can constitute an artifact. A coding violation can relate, for example, to a prohibited operator that is used in generated program code. The exemplary embodiments provide the ability to identify such artifacts and associate them with source aspects. This makes it possible to pinpoint the cause of the artifacts. Therefore, the cause of the artifacts can be modified so that the artifact no longer exists, which improves, for example, human-machine interaction.

Wie in 1A gezeigt, können beispielhafte Ausführungsformen ein Codedifferenzierwerk 116 beinhalten. Das Codedifferenzierwerk 116 kann Unterschiede 118 in Sätzen von generiertem Programmcode 106 identifizieren. In beispielhaften Ausführungsformen können diese Codedifferenzen 118 identifiziert werden, und die Ursachen (das heißt die Quellenaspekte) in den Quellen 102 der Codedifferenzen 118 können identifiziert werden, um die Quellenaspekte mit jeweiligen Codedifferenzen 118 zu assoziieren. Die Assoziation kann auf einer Anzeige visualisiert werden, indem visuelle Hinweise der Assoziationen gegeben werden. Beispiele von Codedifferenzen 118, die nützlich zu kennen und nützlich mit den Aspekten der Quellen 102 zu assoziierten sein mögen können beispielsweise Codedifferenzen beinhalten, die resultieren aus unterschiedlichen Versionen von Modulen oder unterschiedlichen Versionen des Codegenerators 104 in den Quellen 102, Codeverbesserungen, Codefehlern, Code Bugs oder Coderegressionen.As in 1A As shown, exemplary embodiments may include a code differentiator 116 include. The code differentiator 116 can make differences 118 in sets of generated program code 106 identify. In exemplary embodiments, these code differences 118 be identified and the causes (i.e. the source aspects) in the sources 102 the code differences 118 can be identified to the source aspects with respective code differences 118 to associate. The association can be visualized on a display by giving visual indications of the associations. Examples of code differences 118 that are useful to know and useful with the aspects of the sources 102 For example, may be associated with code differences that result from different versions of modules or different versions of the code generator 104 in the sources 102 , Code improvements, code errors, code bugs or code regressions.

Indem die Codedifferenzen identifiziert und die Assoziationen zwischen Aspekten der Quellen und korrespondierenden Komponenten in dem generierten Programmcode, die von den geänderten Quellen generiert wurden, identifiziert werden, können die beispielhaften Ausführungsformen das Identifizieren von Ursachen der Codedifferenzen in dem generierten Programmcode für die ursprünglichen Quellen und die modifizierten Quellen ermöglichen. Die Identifikation der Ursachen kann wiederum die Behebung etwaiger Fehler oder verschlechterter Performanz ermöglichen.By identifying the code differences and identifying the associations between aspects of the sources and corresponding components in the generated program code generated by the changed sources, the exemplary embodiments can identify causes of the code differences in the generated program code for the original sources and the allow modified sources. Identifying the causes can in turn make it possible to correct any errors or deteriorate performance.

Es sei verstanden, dass es nicht allein eine Ursache für Codedifferenzen oder die Artefakte der Analyse geben mag. Stattdessen mögen mehrere Ursachen vorliegen, und diese Ursachen können voneinander abhängig sein, so dass die mehreren Ursachen zusammen in der Codedifferenz oder dem Artefakt der Analyse resultieren. Wie in größerem Detail nachstehend beschrieben, verfügen die beispielhaften Ausführungsformen über die Fähigkeit, die Ursachen (beispielsweise atomare Quellenaspekt(en)) aufzuzeichnen und die Interdependenz der Ursachen zu bestimmen. Weiter verfügen die beispielhaften Ausführungsformen über die Fähigkeit, diese Ursachen zu visualisieren.It should be understood that there may not be a single reason for code differences or the artifacts of the analysis. Instead, there may be multiple causes, and these causes may be interdependent, so that the multiple causes together result in the code difference or artifact of the analysis. As described in greater detail below, the exemplary embodiments have the ability to record the causes (e.g., atomic source aspect (s)) and determine the interdependency of the causes. Furthermore, the exemplary embodiments have the ability to visualize these causes.

2A stellt ein Flussdiagramm 200 von Schritten bereit, die in einer beispielhaften Ausführungsform ausgeführt werden. Dieses Flussdiagramm 200 wird in Verbindung mit dem Diagramm 220 von Komponenten, das in 2B gezeigt ist, beschrieben. Zunächst kann in Schritt 202 das Generieren von Code aus Quellen 222 beginnen. Wie oben erwähnt, können die Quellen 222 zum Beispiel ein Modell, einen Codegenerator, Konfigurationseinstellungen für die Codegeneration und Auswahlen von Optimierungen beinhalten. In Schritt 204 wird Quellenaspektinformation in intermediären Repräsentationen 228 und/oder Datenstrukturen 230, wie etwa Einträge, Tabellen oder andere Typen von Datenstrukturen gespeichert. 2A presents a flow chart 200 of steps that are performed in an exemplary embodiment. This flowchart 200 is used in conjunction with the diagram 220 of components that in 2 B is shown. First, in step 202 generating code from sources 222 kick off. As mentioned above, the sources 222 for example include a model, a code generator, configuration settings for code generation and selection of optimizations. In step 204 becomes source aspect information in intermediate representations 228 and / or data structures 230 , such as entries, tables or other types of data structures.

In Schritt 206 der 2A wird der Codegenerationsprozess abgeschlossen, was in dem generierten Programmcode 226 resultiert. Nachdem der Codegenerationsprozess abgeschlossen ist (Schritt 206), wird die gespeicherte Information verarbeitet, um Assoziationen zu identifizieren (Schritt 208). Die Assoziationen sind zwischen Quellenaspekten und den Komponenten von Merkmalen in dem generierten Programmcode 226, welche von den Quellenaspekten der Quellen 222 beeinflusst werden. Die Verarbeitung kann On Demand ausgeführt werden, wenn eine Anforderung gemacht wird, derartige Assoziationen zu identifizieren. In alternativen Ausführungsformen können einige oder alle der Assoziationen verarbeitet werden, bevor eine Anforderung gestellt wird, und die Assoziationsinformation gespeichert werden, zur Verwendung wenn benötigt. In step 206 of the 2A the code generation process is completed, which is in the generated program code 226 results. After the code generation process is complete (step 206 ), the stored information is processed to identify associations (step 208 ). The associations are between source aspects and the components of features in the generated program code 226 which of the source aspects of the sources 222 to be influenced. Processing can be performed on demand when a request is made to identify such associations. In alternative embodiments, some or all of the associations can be processed before a request is made and the association information stored for use when needed.

Ein visueller Hinweis der Assoziationen kann auf einer Anzeigevorrichtung angezeigt werden in Schritt 210 von 2A. Die Form der visuellen Hinweise kann variieren. Einige Beispiele sind unten beschrieben. Die Anzeige der visuellen Hinweise kann durch Aktionen getriggert werden, wie etwa der Auswahl eines Teils des generierten Programmcodes, Schweben über generiertem Programmcode oder ähnliches.A visual indication of the associations can be displayed on a display device in step 210 from 2A . The shape of the visual cues can vary. Some examples are described below. The display of the visual information can be triggered by actions, such as the selection of a part of the generated program code, hovering over generated program code or the like.

2C zeigt ein Beispiel der Information, die in einer beispielhaften Ausführungsform für ein Modellelement und eine Variable, die mit dem Modellelement assoziiert ist, die in dem generierten Programmcode enthalten ist, gespeichert werden kann. In diesem Fall ist die Information in einem Baumdiagramm 240 enthalten. Das in Rede stehende Modellelement ist ein Inport (beispielsweise ein Eingangsport), der als „Inport1“ bezeichnet ist. 2C FIG. 5 shows an example of the information that may be stored in an exemplary embodiment for a model element and a variable associated with the model element that is contained in the generated program code. In this case the information is in a tree diagram 240 contain. The model element in question is an inport (for example an input port), which is referred to as “Inport1”.

Das Baumdiagramm 240 in 2C zeichnet Information auf, die mit Entscheidungen in Beziehung steht, die während dem Codegenerationsprozess gemacht wurden. Das Baumdiagramm zeichnet insbesondere für die in 2C gezeigten Beispiele Information auf, die an unterschiedlichen Entscheidungspunkten während des Codegenerationsprozesses getroffen werden, um den Namen einer Blockausgangssignalvariablen in dem generierten Programmcode von dem Inport zu bestimmen. Der in 2 gezeigte Teilbaum 240 beginnt an dem Entscheidungspunkt, um den Namen der Ausgangssignalvariablen für den Modellblock Inport1 zu bestimmen. Für das Modellelement wird ein Knoten 242 gespeichert und erzeugt. Am nächsten Entscheidungspunkt überprüft der Codegenerator, ob ein Signalname spezifiziert ist für das Ausgangssignal wie beim Knoten 244 angegeben. In einem ersten Fall ist der Signalname als „In1“ spezifiziert, wie beim Zweig 245 in 2C angegeben. Der spezifizierte Signalname „In1“ wird als die Basis für den Variablennamen verwendet. In einem anderen Fall ist der Signalname nicht spezifiziert, wie beim Zweig 243 zu sehen.The tree diagram 240 in 2C records information related to decisions made during the code generation process. The tree diagram draws especially for the in 2C shown examples of information taken at different decision points during the code generation process to determine the name of a block output signal variable in the generated program code from the inport. The in 2nd shown subtree 240 begins at the decision point to determine the name of the output signal variable for the model block Inport1. A node is created for the model element 242 saved and generated. At the next decision point, the code generator checks whether a signal name is specified for the output signal as for the node 244 specified. In a first case, the signal name is specified as "In1", as with the branch 245 in 2C specified. The specified signal name "In1" is used as the basis for the variable name. In another case, the signal name is not specified, as with the branch 243 to see.

Der Codegenerator prüft dann beim nächsten Entscheidungspunkt (reflektiert im Knoten 246), ob für das In1 Signal eine Speicherklasse spezifiziert ist. Wenn die Speicherklasse als „Exportiert Global“ spezifiziert ist, wie in dem linken Zweig 247 gezeigt, bestimmt der Codegenerator dann, dass die Variable eine alleinstehende globale Variable sein soll. Als solches verwendet das System die Namensgebungsregeln, die im Knoten 248 spezifiziert sind, was in dem finale Variablennamen resultiert, der im Knoten 250 reflektiert ist.The code generator then checks at the next decision point (reflected in the node 246 ) whether a storage class is specified for the In1 signal. If the storage class is specified as "Exported Global" as in the left branch 247 shown, the code generator then determines that the variable should be a stand-alone global variable. As such, the system uses the naming rules in the node 248 are specified, which results in the final variable name in the node 250 is reflected.

Wenn beim Entscheidungspunkt, der mit dem Schritt 246 assoziiert ist, bestimmt wird, dass die Speicherklasse „Default“ ist, wie durch den Zweig 249 angezeigt, bestimmt der Codegenerator, dass die Variable ein Feld einer globalen Variable eines Strukturtyps sein sollte, und für die Namensgebungsregel für derartige Felder globaler Variablen gilt, wie durch den Knoten 252 angezeigt. Dies resultiert in dem Variablen-Finalstrukturfeldnamen „In1“ innerhalb einer globalen Variablen vom Strukturtyp.If at the decision point, the step 246 is associated, it is determined that the storage class is "default", as by the branch 249 displayed, the code generator determines that the variable should be a field of a global variable of a structure type, and the naming rule for such fields of global variables applies, as by the node 252 displayed. This results in the variable final structure field name "In1" within a global variable of the structure type.

Diese aufgezeichnete Information kann während und nach den Codegenerationen verarbeitet werden. Der Codegenerator kann bestimmen, welche Quellenaspekte für welche Komponente(n) des generierten Programmcodes verantwortlich sind. Für das Beispiel, das mit der 2C assoziiert ist, kann der gespeicherte Baum an Information verwendet werden, um folgendes zu bestimmen:

  1. 1. Die Speicherklasse ist „Exportiert Global“ für das Eingangssignal und daher wird es als alleinstehend global generiert.
  2. 2. Der Variablenname wird durch die Namensgebungsregel für alleinstehende globale Variablen bestimmt:
    1. a. Der „rt“ Teil kommt von den Zeichenliteralen in der Namensgebungsregel „rt$R_$N$M.“
    2. b. Der „Modell“ Teil in dem Variablenname ist wegen dem „$R“, der in der Namensgebungsregel spezifiziert ist.
    3. c. Es existiert ein Signalname „In1“ und bildet den letzten Teil des Variablennamens, weil „$N“ in der Namensgebungsregel spezifiziert ist.
This recorded information can be processed during and after the code generations. The code generator can determine which source aspects are responsible for which component (s) of the generated program code. For the example with the 2C associated, the stored tree of information can be used to determine:
  1. 1. The storage class is "Exported Global" for the input signal and therefore it is generated as a single global.
  2. 2. The variable name is determined by the naming rule for single global variables:
    1. a. The "rt" part comes from the character literals in the naming rule "rt $ R_ $ N $ M."
    2. b. The "model" part in the variable name is because of the "$ R" specified in the naming rule.
    3. c. There is a signal name "In1" and forms the last part of the variable name because "$ N" is specified in the naming rule.

Mit derartiger Information kann der Codegenerator bestimmen, welche Quellenaspekte mit den Komponenten eines Merkmals des generierten Programmcodes assoziiert ist, und auch Empfehlungen darüber geben, welche Änderungen gemacht werden können, um die gewünschten Effekte zu erzielen, wenn ein Benutzer den Variablennamen in dem generierten Code modifiziert. With such information, the code generator can determine which source aspects are associated with the components of a feature of the generated program code, and can also make recommendations about what changes can be made to achieve the desired effects if a user modifies the variable name in the generated code .

Es sei verstanden, dass die Darstellung in 2C nur für einen sehr kleinen Teil des zugrundeliegenden Modells ist. Information kann für das gesamte Modell gespeichert werden während der Codegeneration. Weiter kann Information, wie etwa die Konfigurationseinstellungen und dergleichen, gespeichert werden, um die Konfigurationseffekte zu identifizieren, welche Auswahlen in den Quellen auf den generierten Programmcode haben. Information bezüglich Optimierungen und Aspekt des Codegenerators können ebenfalls in einer derartigen Weise gespeichert werden.It is understood that the representation in 2C only for a very small part of the underlying model. Information can be saved for the entire model during code generation. Furthermore, information such as configuration settings and the like can be stored to identify the configuration effects which selections in the sources have on the generated program code. Information regarding optimizations and aspects of the code generator can also be stored in such a manner.

Die beispielhaften Ausführungsformen identifizieren und visualisieren Assoziationen von der bzw. den Komponente(n) des generierten Programmcodes zu den Quellenaspekten. 2D zeigt ein Flussdiagramm 260, welches ein Beispiel von Schritten zeigt, die ausgeführt werden können, um die „reversen“ bzw. „umgekehrten“ Operationen des Identifizierens von Komponente(n) eines Merkmals in dem generierten Programmcode und den Quellenaspekten zu verwirklichen. In Schritt 262 wird eine bzw. werden Komponente(n) eines Merkmals in dem generierten Programmcode, die von Interesse ist bzw. sind, identifiziert. Dies kann von einem Benutzer oder einer anderen Partei verwirklicht werden, der bzw. die den Cursor so positioniert, dass er über der bzw. den Komponente(n) schwebt, durch Auswahl der Komponente(n) mittels einer Eingabevorrichtung oder mittels anderer Mechanismen. Auf die gespeicherte Information, wie etwa die in 2C gezeigt, wird dann in Schritt 264 zugegriffen. Auf die Information wird zugegriffen, um den bzw. die Quellenaspekt(en) zu identifizieren, der bzw. die mit der bzw. den identifiziert Komponente(n) des Merkmals assoziiert ist bzw. sind (Schritt 266). Wenn man beispielsweise daran interessiert ist, zu wissen, wo der Code 250, der in 2C gezeigt ist, ursprünglich herkommt aus den Quellen, kann der Prozess den Baum, der in 2C gezeigt ist, durchlaufen, beginnend an den Blattebenen, um zu bemerken, dass der Code von der Auswahl der Speicherklasse, den Namensgebungsregeln und daher, dass das Modell den Signalnamen sowie das Modellelement des Inports spezifiziert, herrührt.The exemplary embodiments identify and visualize associations of the component (s) of the generated program code with the source aspects. 2D shows a flow chart 260 , which shows an example of steps that can be performed to accomplish the "reverse" operations of identifying component (s) of a feature in the generated program code and source aspects. In step 262 a component (s) of a feature in the generated program code that is of interest are identified. This can be accomplished by a user or other party who positions the cursor to hover over the component (s) by selecting the component (s) using an input device or other mechanisms. On the stored information, such as that in 2C is then shown in step 264 accessed. The information is accessed to identify the source aspect (s) associated with the identified component (s) of the feature (step 266 ). For example, if you're interested in knowing where the code is 250 who in 2C is shown, originally comes from the sources, the process can be the tree that is in 2C is traversed, starting at the leaf levels, to notice that the code stems from the selection of the storage class, the naming rules, and therefore that the model specifies the signal name and the model element of the import.

Basierend darauf, dass in Schritt 266 der bzw. die Quellenaspekt(en) identifiziert wird bzw. werden, können in Schritt 268 Assoziationen identifiziert werden. Diese Assoziationen können sich in den visuellen Hinweisen wiederspiegeln, die angezeigt werden können, wie in Schritt 210 von 2A erwähnt.Based on that in step 266 the source aspect (s) can be identified in step 268 Associations are identified. These associations can be reflected in the visual cues that can be displayed, as in step 210 from 2A mentioned.

2E zeigt ein Flussdiagramm 270 des Vorwärtsprozesses, der ausgeführt werden kann, um Quellenaspekt(e) zu identifizieren und mit Komponente(n) in dem generierten Programmcode zu assoziieren, in beispielhaften Ausführungsformen. Dieser Prozess ist weitgehend eine Umkehrung des Rückwärtsprozesses von 2D. Insbesondere beginnt der Prozess mit Schritt 272 in welchem ein oder mehrere Quellenaspekte identifiziert werden, wie das Modellelement 242, der Signalname In1 245, die Speicherklasse exportiert global 246 und die Namensgebungsregel 248 (2C). Dies kann beinhalten, dass sein Benutzer verschiedene Quellenaspekte auswählt oder über diesen schwebt, die auf einer Benutzerschnittstelle angezeigt werden. In Schritt 274 wird auf die gespeicherte Information zugegriffen, wie diejenige, die in 2C gezeigt ist. Basierend auf der gespeicherten Information wird eine bzw. werden Komponente(n) in dem generierten Programmcode in Schritt 276 identifiziert, wie der Variablenname bei der Deklaration 302 (3A). Assoziationen zwischen dem bzw. den Quellenaspekt(en) und der bzw. den identifizierten Komponente(n) werden in Schritt 278 identifiziert. Beim Identifizieren einer bzw. von Komponente(n) kann das System die Information in 2C nutzen, um den Baum entlang von dem bzw. den identifizierten Quellenaspekt(en) nach unten zu schreiten, bis das angemessene Blatt erreicht wird, das den betreffenden Code widerspiegelt. Diese Assoziationen können visualisiert werden, indem visuelle Hinweise der Assoziationen angezeigt werden, wie oben diskutiert. 2E shows a flow chart 270 the forward process that can be performed to identify and associate source aspect (s) with component (s) in the generated program code, in exemplary embodiments. This process is largely a reversal of the backward process of 2D . In particular, the process begins with step 272 in which one or more source aspects are identified, such as the model element 242 , the signal name In1 245 , the storage class exports globally 246 and the naming rule 248 ( 2C ). This may include that the user select or hover over various source aspects that are displayed on a user interface. In step 274 the stored information is accessed, such as that in 2C is shown. Based on the stored information, one or more components are created in the generated program code in step 276 identifies how the variable name in the declaration 302 ( 3A) . Associations between the source aspect (s) and the identified component (s) are in step 278 identified. When identifying a component or components, the system can read the information in 2C Use to step down the tree from the identified source aspect (s) until the appropriate leaf is reached that reflects the code in question. These associations can be visualized by displaying visual cues of the associations, as discussed above.

Die Benutzerschnittstellenkomponenten zum Anzeigen der Assoziationen können unterschiedliche Formen annehmen. 3A zeigt ein Beispiel, das der Information entspricht, die in 2C gespeichert ist. Wie zu sehen ist, beinhaltet der generierte Programmcode eine Codezeile 79, welche den Typ von In1 302 definiert. Ein Benutzerschnittstellenelement 304, wie etwa eine Popup Tooltip, kann in Antwort auf ein Ereignis angezeigt werden, wie etwa wenn der Benutzer zum Beispiel die Zeile 79 anwählt oder über der Zeile 79 schwebt. Das Popup 304 kann einen Definitionsabschnitt 306 beinhalten, welcher identifiziert, wo die Variable definiert wird in dem zugrundeliegenden Code für das Modell (das heißt, einer der Quellenaspekte). Der Popup 304 kann auch einen Modellelementabschnitt 308 beinhalten, welcher die Modellelemente 310 (für den Inport1) und 312 (für das Signal, das vom Inport1 ausgegeben wird) identifiziert. Diese Elemente 310 und 312 sind weitere Quellenaspekte, die mit der Zeile 79 in dem generierten Programmcode assoziiert sind. Das Popup 304 beinhaltet einen Anpassungsabschnitt 314. Der Anpassungsabschnitt 314 identifiziert im Feld 318, wie das Signal In1 angepasst wurde durch Deklarieren von In1 als von der Speicherklasse Exportiert Global zu sein, anstatt von einer Default Speicherklasse. Dieser Abschnitt 318 identifiziert diesen zusätzlichen assoziierten Quellenaspekt.The user interface components for displaying the associations can take various forms. 3A shows an example corresponding to the information given in 2C is saved. As can be seen, the generated program code contains a line of code 79 which is the type of In1 302 Are defined. A user interface element 304 , such as a popup tooltip, can be displayed in response to an event, such as when the user entered the line 79 dials or above the line 79 hovers. The popup 304 can have a definition section 306 which identifies where the variable is defined in the underlying code for the model (i.e. one of the source aspects). The popup 304 can also have a model element section 308 which include the model elements 310 (for the Inport1) and 312 (for the signal that is output by Inport1). These elements 310 and 312 are other source aspects related to the line 79 are associated in the generated program code. The popup 304 includes an adjustment section 314 . The adjustment section 314 identified in the field 318 , How the In1 signal was adjusted by declaring In1 to be global from the storage class, rather than from a default storage class. this section 318 identifies this additional associated source aspect.

3B zeigt ein anderes Beispiel einer Menge von Benutzerschnittstellenkomponenten, um Assoziationen zu veranschaulichen, wie die oben diskutierten. In dem in 3B gezeigten Beispiel zeigt ein Fenster 332 ein Modell in einer Simulationsumgebung an. Das Modell beinhaltet den Inport 340. Der Inport 340 gibt das Signal In1 341 aus. Ein Modelldateneditierfenster 336 zeigt eine Spezifikation an, dass der Signalname von der Speicherklasse Exportiert Global ist (siehe 344). Dieses Modelldateneditierfenster 336 kann verwendet werden, um diese Speicherklasse des Signals In1 festzulegen oder zu editieren. Es ist ein drittes Fenster 334 gezeigt, das den generierten Programmcode anzeigt. Der generierte Programmcode beinhaltet hervorgehobene Codezeilen 342. Die hervorgehobenen Codezeilen 342 sind die Komponenten, die mit den hervorgehobenen Quellenaspekten in den Fenstern 332 und 336 assoziiert sind. Wie im Fenster 332 gesehen werden kann, sind der Inport 340 sowie der Signalname 341 In1 hervorgehoben. Weiterhin ist die Zeile 344 in Fenster 336 hervorgehoben, um einen visuellen Hinweis des atomaren Quellenaspekts zu geben, dass In1 der Speicherklasse Exportiert Global zugeordnet ist. Insbesondere ist es durch Hervorheben von einer oder von mehreren Komponenten oder Merkmalen eines Teils von generiertem Programmcode, die mit einem spezifischen Quellenaspekt assoziiert sind, wie etwa einem Aspekt eines Modells oder Codegenerators, in Antwort auf das Hervorheben oder Auswählen (zum Beispiel durch einen Benutzer) des spezifischen Quellenaspekts, und/oder durch Hervorheben von einem oder von mehreren Quellenaspekten, die mit einer spezifischen Komponente oder Merkmal eines Teils von generiertem Programmcode assoziiert sind, in Antwort auf Hervorheben oder Auswählen (zum Beispiel durch einen Benutzer) der spezifischen Komponente oder des spezifischen Merkmals eines Teils von generiertem Programmcode, möglich, sowohl die Präsentation des einen oder der mehreren Quellenaspekte und dem generierten Programmcode beizubehalten, und weiter einen visuellen Hinweis der Assoziation zwischen jeweiligen Komponenten oder Merkmalen eines Teils von generiertem Programmcode und jeweiligen Quellenaspekten zu präsentieren. Daher werden diese zwei in Widerspruch stehenden Anforderungen gelöst. 3B Figure 11 shows another example of a set of user interface components to illustrate associations such as those discussed above. In the in 3B The example shown shows a window 332 a model in a simulation environment. The model includes the inport 340 . The Inport 340 gives the signal In1 341 out. A model data editing window 336 indicates a specification that the signal name of the exported storage class is global (see 344 ). This model data editing window 336 can be used to define or edit this storage class of the signal In1. It is a third window 334 shown that shows the generated program code. The generated program code contains highlighted lines of code 342 . The highlighted lines of code 342 are the components with the highlighted source aspects in the windows 332 and 336 are associated. Like in the window 332 can be seen are the inport 340 as well as the signal name 341 Highlighted in1. The line is still 344 in window 336 highlighted to provide a visual indication of the atomic source aspect that In1 is associated with the Exported Global storage class. In particular, it is by highlighting one or more components or features of a portion of generated program code associated with a specific source aspect, such as an aspect of a model or code generator, in response to the highlighting or selection (for example, by a user). the specific source aspect, and / or by highlighting one or more source aspects associated with a specific component or feature of a portion of generated program code in response to highlighting or selecting (for example, by a user) the specific component or specific Features of a part of generated program code, possible to maintain both the presentation of the one or more source aspects and the generated program code, and further a visual indication of the association between respective components or features of a part of generated program code and in each case to present en source aspects. Therefore, these two conflicting requirements are resolved.

Wie oben erwähnt kann eine Analyse auf dem generierten Programmcode ausgeführt werden, um verschiedene Artefakte der Analyse, die von Interesse sind, zu identifizieren. Wie oben ebenfalls erwähnt können die beispielhaften Ausführungsformen die Artefakte identifizieren und diese mit den Quellenaspekten assoziieren, welche die Artefakte verursacht haben.As mentioned above, an analysis can be performed on the generated program code to identify various artifacts of the analysis that are of interest. As also mentioned above, the exemplary embodiments can identify the artifacts and associate them with the source aspects that caused the artifacts.

4A zeigt ein Flussdiagramm 400 der Schritte, die mit Bezug auf eine solche Analyse ausgeführt werden können. Zunächst wird in Schritt 402 eine Analyse des generierten Programmcodes ausgeführt. Diese Analyse kann viele unterschiedliche Formen annehmen, wie etwa die Identifikation von Kompilationsfehlern, Codierstandardverstößen, Logikfehlern oder Bugs. Die Analyse kann von Programmen, Bibliotheken oder anderen Werkzeugen ausgeführt werden, welche die gewünschten analytischen Funktionalitäten aufweisen. Basierend auf der Analyse werden Artefakte identifiziert (Schritt 404). Insbesondere kann diese Analyse Ergebnisse liefern, welche die identifizierten Artefakte sein können. Es wird eine Bestimmung gemacht, welche Quellenaspekte zu den Artefakten beigetragen haben (Schritte 406). Basierend auf der gespeicherten Information, die oben mit Bezug auf 2C diskutiert ist, kennt das System die Assoziation zwischen Komponenten des generierten Programmcodes und Quellenaspekten. Das System kennt die Assoziation zwischen den Artefakten und den Komponenten des generierten Programmcodes. Daher kann das System die Assoziationen zwischen Quellenaspekten und den Artefakten bestimmen. Die resultierenden Assoziationen, die auf der Bestimmung basieren, werden zwischen den Quellenaspekten und den Artefakten hergestellt (Schritt 408). Wenn dazu aufgefordert oder basierend auf ausgewählten Befehlen, kann der visuelle Hinweis deren Assoziationen auf der Benutzerschnittstelle (Schritt 410) angezeigt werden. Insbesondere ist es daher möglich, die Mensch-Maschine-Interaktion signifikant zu verbessern, wenn es zum Beispiel gewünscht wird, gewünschte Änderungen in einem generierten Programmcode zu bewirken. 4A shows a flow chart 400 of the steps that can be performed with respect to such analysis. First in step 402 an analysis of the generated program code is carried out. This analysis can take many different forms, such as identifying compilation errors, coding standard violations, logic errors or bugs. The analysis can be carried out by programs, libraries or other tools that have the desired analytical functionalities. Based on the analysis, artifacts are identified (step 404 ). In particular, this analysis can provide results which can be the identified artifacts. A determination is made of which source aspects have contributed to the artifacts (steps 406 ). Based on the information stored above with respect to 2C is discussed, the system knows the association between components of the generated program code and source aspects. The system knows the association between the artifacts and the components of the generated program code. Therefore, the system can determine the associations between source aspects and the artifacts. The resulting associations based on the determination are made between the source aspects and the artifacts (step 408 ). When prompted or based on selected commands, the visual cue can show their associations on the user interface (step 410 ) are displayed. In particular, it is therefore possible to significantly improve the human-machine interaction if, for example, it is desired to bring about desired changes in a generated program code.

Die Arten der Analyse können variieren. 4B zeigt ein Beispiel von einigen der Arten von Analyse, die auf den generierten Programmcode angewandt werden können, und die in Artefakten resultieren können. In der Darstellung in 4B hat das Analysediagramm 420 die Analyse 422 an der Wurzel. Unter der Wurzel 422 befinden sich zwei Varianten von Analyse: statische Analyse 424 und dynamische Analyse 426. Beispiele statischer Analyse 424 beinhalten strukturelle Analyse 430 zum Analysieren der Struktur des generierten Programmcodes und Analysieren des Laufzeitverhaltens 432 des generierten Programmcodes. Ein Beispiel der Strukturanalyse 430 ist eine Codierstandardanalyse 440 zum Bestimmen, ob der generierte Programmcode mit Codierstandards konform ist, wie etwa Misra C. Eine andere Art von struktureller Analyse 430 ist eine Analyse 442, welche Logikfehler in dem generierten Programmcodes identifizier, oder welche Bugs identifiziert, die in dem generierten Programmcode vorhanden sind. Ein Beispiel einer solchen Analyse ist die Analyse, welche von Programmen wie etwa Debuggern und Logikanalysewerkzeugen ausgeführt werden. Eine weitere Art von Analyse des Laufzeitverhaltens 432, die angewandt werden kann, ist diejenige, die von einem Code Prover bzw. Codebeweiser 444 ausgeführt wird. Der Codebeweiser 444 kann Logikfehler und Bugs identifizieren, mag aber auch identifizieren, ob ein Teil des generierten Programmcodes beweisbar korrekt ist.The types of analysis can vary. 4B shows an example of some of the types of analysis that can be applied to the generated program code and that can result in artifacts. In the representation in 4B has the analysis chart 420 the analysis 422 at the root. Under the root 422 there are two types of analysis: static analysis 424 and dynamic analysis 426 . Examples of static analysis 424 involve structural analysis 430 for analyzing the structure of the generated program code and analyzing the runtime behavior 432 of the generated program code. An example of structural analysis 430 is a coding standard analysis 440 to determine whether the generated program code conforms to coding standards such as Misra C. . Another type of structural analysis 430 is an analysis 442 which identifies logic errors in the generated program code, or which bugs identifies the are present in the generated program code. An example of such an analysis is the analysis performed by programs such as debuggers and logic analysis tools. Another type of runtime behavior analysis 432 that can be applied is that of a code prover 444 is performed. The code verifier 444 can identify logic errors and bugs, but may also identify whether part of the generated program code is provably correct.

Die Analyse 422 kann auch eine dynamische Analyse 426 sein. Beispiele einer dynamischen Analyse 426 beinhalten die Analyse, die von einem Codeprofiler 436 ausgeführt wird. Der Codeprofiler profiliert die Performanz des generierten Programmcodes, wenn dieser ausgeführt wird. Der Codeprofiler 436 kann Information wie etwa Speichernutzung, CPU Nutzung und dergleichen bereitstellen. Eine andere Art dynamischer Analyse 426 ist eine Codeabdeckungsanalyse 438. Es können verschiedene Programme und Werkzeuge angewandt werden, um zu bestimmen, ob e seine vollständige Codeabdeckung gibt oder nicht. Dabei kann die dynamische Analyse 426 unterschiedliche Typen der Abdeckung analysieren. Die dynamische Analyse 426 kann zum Beispiel die Entscheidungsabdeckung, Bedingungsabdeckung, Bedingungs-/Entscheidungsabdeckung, modifizierte Bedingungs-/Entscheidungsabdeckung, Ausdrucksabdeckung, etc. analysieren.The analysis 422 can also do a dynamic analysis 426 be. Examples of dynamic analysis 426 involve analysis by a code profiler 436 is performed. The code profiler profiles the performance of the generated program code when it is executed. The code profiler 436 can provide information such as memory usage, CPU usage and the like. Another kind of dynamic analysis 426 is a code coverage analysis 438 . Various programs and tools can be used to determine whether or not there is full code coverage. Doing the dynamic analysis 426 analyze different types of coverage. The dynamic analysis 426 For example, can analyze decision coverage, condition coverage, condition / decision coverage, modified condition / decision coverage, expression coverage, etc.

Diese Analysewerkzeuge können, wie oben erwähnt, Artefakte generieren. Die Typen von Artefakten hängen von der Natur des Werkzeugs ab. Ein Codierstandardanalysewerkzeug 440 zum Beispiel kann eine Identifikation dahingehend erzeugen, welche Komponenten in dem generierten Programmcode nicht mit dem Codierstandard übereinstimmen, der angewandt wird. Im Gegensatz dazu kann ein Logikfehler und Bugs Analysewerkzeug 442 Artefakte in der Form einer Identifikation erzeugen, wo es Logikfehler in dem generierten Programmcode gibt und wo es Bugs in diesem generierten Programmcode gibt. Zum Beispiel kann ein Codebeweiser Werkzeug 444 eine Division-durch-null Operation identifizieren, wohingegen andere Arten von Werkzeugen eine solche Operation nicht identifizieren mögen. Ein Codeprofiler 436 erzeugt Artefakte wie etwa wie viel Speicher eine Funktion in dem generierten Programmcode verwendet und wieviel CPU Zeit eine Funktion in dem generierten Programmcode verwendet, wenn sie ausgeführt wird.As mentioned above, these analysis tools can generate artifacts. The types of artifacts depend on the nature of the tool. A coding standard analysis tool 440 for example, identification can generate which components in the generated program code do not conform to the coding standard that is applied. In contrast, a logic error and bug analysis tool 442 Generate artifacts in the form of an identification of where there are logic errors in the generated program code and where there are bugs in this generated program code. For example, a code proof tool 444 identify a division-by-zero operation, whereas other types of tools may not identify such an operation. A code profiler 436 generates artifacts such as how much memory a function uses in the generated program code and how much CPU time a function uses in the generated program code when it is executed.

5A zeigt ein Beispiel einer Benutzerschnittstelle, wo ein visueller Hinweis bereitgestellt wird, um die Assoziation von Quellenaspekten mit einem Artefakt zu identifizieren. In dem in 5A gezeigten Fall wird ein Codebeweiser auf den generierten Programmcode, der im Fenster 536 gezeigt ist, angezeigt. Wie durch den Tooltip 542 gesehen werden kann, erkennt der Codebeweiser, dass die Multiplikationsoperation des Codes in der Zeile 364 potentiell zu einem Überlauf führen kann, und generiert den Tooltip 542. Diese Multiplikationsoperation ist aus dem Produktblock 538 (siehe Modell 532) generiert, der zwei Eingangssignale aufweist, wovon eines die Ausgabe von einer Look-Up Tabelle ist, und eines von einem Inport ausgegeben wird. The Tooltip 542 zeigt an, dass es Optionen gibt, um das Artefakt zu beheben. Man kann das Artefakt beheben, indem die Signalattribute von „Sättigung bei Integer Überlauf“ des Produktblocks gewählt werden, oder man kann Begrenzungen der Eingangssignale spezifizieren. Dieses Spezifizieren von Begrenzungen kann erzielt werden, indem „Tabellendaten“ Attribute des Look-Up Tabellenblocks geändert werden und das Signalattribut so spezifiziert wird, einen „Maximum“ Wert auf dem Inport Block zu haben. 5A Figure 10 shows an example of a user interface where a visual cue is provided to identify the association of source aspects with an artifact. In the in 5A Case shown is a code proofer on the generated program code that is in the window 536 is shown. As with the tooltip 542 can be seen, the code proofer recognizes that the multiplication operation of the code in the line 364 potentially lead to an overflow and generates the tooltip 542 . This multiplication operation is from the product block 538 (see model 532 ), which has two input signals, one of which is the output from a look-up table and one from an inport. The Tooltip 542 indicates that there are options to fix the artifact. The artifact can be eliminated by selecting the signal attributes of "Saturation at integer overflow" of the product block, or you can specify limits for the input signals. This specification of limits can be achieved by changing "table data" attributes of the look-up table block and specifying the signal attribute so that it has a "maximum" value on the inport block.

5A zeigt auch eine Darstellung des Modells 532, wobei der Multiplikationsblock 538 hervorgehoben ist, um einen atomaren Quellenaspekt anzuzeigen, der das Artefakt produziert. In 5A ist auch ein Fenster 534 für den Codebeweiser gezeigt, das den Fehler in der Zeile 540 als einen Überlauffehler identifiziert. 5A also shows a representation of the model 532 , where the multiplication block 538 is highlighted to indicate an atomic source aspect that produces the artifact. In 5A is also a window 534 shown for the code verifier that the error in the line 540 identified as an overflow error.

5B zeigt ein Beispiel 550, in welchem der Codebeweiser angewandt wird, um einen Codierstandardverstoß in dem generierten Programmcode zu identifizieren. Wie in 5B gezeigt, enthält das Codebeweiser Fenster 552 einen hervorgehoben Eintrag 554, der identifiziert, dass es dort einen Codierstandardfehler gibt. Es wird ein Fenster 555 angezeigt, das Details 556 des Codierstandardverstoßes zeigt. Das Fenster 557 wird angezeigt und enthält ein Listing des generierten Programmcodes mit dem Tooltip 558. The Tooltip 558 bemerkt, dass es mehrere Quellenaspekte gibt, die mit diesem Codierstandardverstoß assoziiert sind. The Tooltip 558 identifiziert das Subsystem des Modells, von welchem der Fehler herrührt („Werk“) und spezifiziert die angebrachten Konfigurationsparameter, die in dem Codierstandardverstoß resultieren. Siehe ‚Löser‘: ode5 (Dormand-Prince) und Klammerebene: Minimum (sich auf C/C++ Operatorpräzedenz verlassen). Indem die Konfigurationsparameter spezifiziert werden, kann man die Parameter ändern, um den Codierstandardverstoß zu beheben. Der Hyperlink 559 kann ausgewählt werden, um ein Benutzerschnittstellenelement zum Vornehmen der Änderung bezüglich der Klammerebene aufrufen. In diesem Fall zum Beispiel wird ein Ändern der Klammerebene von minimal zu maximal den Codierstandardverstoß beheben. 5B FIG. 5 shows an example 550 in which the code provider is used to identify a coding standard violation in the generated program code. As in 5B shown, the code verifier contains windows 552 a highlighted entry 554 , which identifies that there is a coding standard error. It will be a window 555 displayed that details 556 of the coding standard violation shows. The window 557 is displayed and contains a listing of the generated program code with the tooltip 558 . The Tooltip 558 notes that there are several source aspects associated with this coding standard violation. The Tooltip 558 identifies the subsystem of the model from which the error originated ("factory") and specifies the configuration parameters attached, which result in the coding standard violation. See 'solver': ode5 (Dormand-Prince) and bracket level: minimum (rely on C / C ++ operator precedence). By specifying the configuration parameters, you can change the parameters to correct the coding standard violation. The hyperlink 559 can be selected to invoke a UI element to make the change in parenthesis level. In this case, for example, changing the bracket level from minimum to maximum will fix the coding standard violation.

Wie oben erwähnt können die beispielhaften Ausführungsformen Codedifferenzierung ausführen und eine Visualisierung von Assoziationen zwischen Codedifferenzen und den Ursachen (Quellenaspekte) der Codedifferenzen bereitstellen. Dies kann auf unterschiedliche Versions von generiertem Programmcode angewandt werden. 6A stellt ein Flussdiagramm 600 der Schritte bereit, die mit Bezug auf Codedifferenzen ausgeführt werden. Zunächst werden in Schritt 602 Codedifferenzen identifiziert. Dies kann durch das Codedifferenzierwerk ausgeführt werden, welches den fraglichen generierten Programmcode vergleicht und etwaige Unterschiede identifiziert. In Schritt 604 wird die Ursache der Codedifferenzen identifiziert. Die Codedifferenzen werden angezeigt und deren Ursachen können angezeigt werden in Schritt 606. Das System kann daher die Codedifferenzen identifizieren, und was in den Quellen die Codedifferenzen verursacht hat.As mentioned above, the exemplary embodiments can perform code differentiation and visualize associations between code differences and the causes (source aspects) of the Provide code differences. This can be applied to different versions of generated program code. 6A presents a flow chart 600 of the steps that are performed with respect to code differences. First in step 602 Code differences identified. This can be carried out by the code differentiator, which compares the generated program code in question and identifies any differences. In step 604 the cause of the code differences is identified. The code differences are displayed and their causes can be displayed in step 606 . The system can therefore identify the code differences and what caused the code differences in the sources.

6B zeigt ein Beispiel einer Benutzerschnittstelle, das hilft, die Identifikationsvisualisierung von Assoziationen, die in Beziehung zur Codedifferenzierung stehen, und Artefakte zu illustrieren. In dem Diagramm 620 von 6B zeigt ein erstes Fenster 622 ein Modell. Es ist auch ein Fenster 624 gezeigt, das Speicherklasseninformation identifiziert. Ein drittes Fenster 630 zeigt generierten Programmcode. In dem in 6B dargestellten Beispiel ist der Inport 631, der in Fenster 622 gezeigt ist, welches das Modell darstellt, mit dem illustrativen Teil des generierten Programmcodes assoziiert, der in Fenster 630 gezeigt ist, wie durch den gerichteten Pfeil 623 angezeigt. Insbesondere enthält der hervorgehobene Abschnitt 634 die Zeile 78, die mit dem Inport 631 assoziiert sein kann. Das Popup Fenster 637 identifiziert, dass diese Zeile 78 in dem generierten Programmcode mit dem Inport 631 assoziiert ist, wie durch den Eintrag 640 belegt. Das Popup Fenster 637 bemerkt auch, dass der Signalwert, der von dem Inport 631 ausgegeben wird, sich von einer Default Speicherklasse zu einer importiert extern Speicherklasse geändert hat, wie durch den Eintrag 638 angegeben. Das Fenster 624 zeigt, dass die Inports als importiert extern Speicherklasse spezifiziert wurden, wie durch den hervorgehobenen Eintrag 626 angegeben. Die Assoziation zwischen dem Element 626 und dem Eintrag 638 in dem Popup Fenster 637 wird durch den gerichteten Pfeil 636 erfasst. Diese Assoziation erfasst die Ursache für die Änderung in dem generierten Programmcode. Diese Änderungen können durch ein Codedifferenzierwerk produziert und hervorgehoben werden, wie in dem Codelisting des generierten Programmcodes angezeigt. 6B Figure 10 shows an example of a user interface that helps to illustrate the identification visualization of associations related to code differentiation and artifacts. In the diagram 620 from 6B shows a first window 622 a model. It is also a window 624 shown that identifies storage class information. A third window 630 shows generated program code. In the in 6B The example shown is the inport 631 that in window 622 is shown, which represents the model associated with the illustrative part of the generated program code, which is in window 630 is shown as directed by the arrow 623 displayed. In particular, the highlighted section contains 634 the line 78 that with the Inport 631 may be associated. The popup window 637 identified that line 78 in the generated program code with the Inport 631 is associated as through the entry 640 occupied. The popup window 637 also notices that the signal value from the Inport 631 output, has changed from a default storage class to an imported external storage class, as indicated by the entry 638 specified. The window 624 shows that the imports were specified as imported external storage class, as indicated by the highlighted entry 626 specified. The association between the element 626 and the entry 638 in the popup window 637 is indicated by the arrow 636 detected. This association captures the cause of the change in the generated program code. These changes can be produced and highlighted by a code differentiator, as indicated in the code listing of the generated program code.

6B zeigt auch ein Beispiel eines Artefakts, das mit der Codeänderung assoziiert ist. In diesem Beispiel hat die Änderung der Speicherklasse in einem Kompilationsfehler resultiert, wie durch den Eintrag 652 in Fenster 650 angezeigt. Der Kompilationsfehler ist eine undefinierte Referenz zu rtln1. Diese Assoziation wird durch den gerichteten Pfeil 654 in 6B erfasst. Die Assoziation zwischen dem, was den Kompilationsfehler verursacht hat, und dem, was die Codeänderung verursacht hat, kann daher in einer derartigen Benutzerschnittstelle für eine beispielhafte Ausführungsform repräsentiert werden. 6B also shows an example of an artifact associated with the code change. In this example, changing the storage class resulted in a compilation error, as with the entry 652 in window 650 displayed. The compilation error is an undefined reference to rtln1. This association is indicated by the directional arrow 654 in 6B detected. The association between what caused the compilation error and what caused the code change can therefore be represented in such a user interface for an exemplary embodiment.

7 zeigt ein Beispiel gewisser illustrativer Codedifferenzen, die von dem Codedifferenzierwerk identifiziert werden können, die von Interesse sein mögen. Wie in dem Diagramm 700 gezeigt, kann die Codedifferenz 702 Codeverbesserungen 704 beinhalten. Man kann daran Interesse haben, zu wissen, warum der Code verbessert ist und welche atomaren Quellenaspekte die Verbesserung in dem generierten Programmcode bewirken. Das Codedifferenzierwerk 702 kann in Verbindung mit anderen Werkzeugen (wie etwa Debuggern) auch Bugs und/oder Regressionen identifizieren, die zwischen Versionen von generiertem Programmcode gefunden werden. Andere Arten von Unterschieden können ebenso identifiziert werden al sein Ergebnis der Codedifferenzierung 708. Codedifferenzen sind nicht auf Codeverbesserungen 704 oder Codefehler und Regressionen 706 beschränkt. Insbesondere durch Bestimmen von Assoziationen zwischen Merkmalen oder Teilen von generiertem Programmcode und Quellenaspekten, welche zu den Merkmalen oder Teilen von generiertem Programmcode beitragen, erlauben es Ausführungsformen der vorliegenden Offenbarung daher, effizient zu bestimmen, warum ein Merkmal oder Teil von generiertem Programmcode sich geändert hat, zum Beispiel verbessert ist, und welche® Quellenaspekt(e) diese Änderung in dem generierten Programmcode verursacht haben. Dadurch wird zum Beispiel eine Mensch-Maschine-Interaktion signifikant verbessert. 7 shows an example of certain illustrative code differences that may be identified by the code differentiator that may be of interest. As in the diagram 700 shown, the code difference 702 Code improvements 704 include. It may be of interest to know why the code is improved and which atomic source aspects bring about the improvement in the generated program code. The code differentiator 702 in conjunction with other tools (such as debuggers), can also identify bugs and / or regressions found between versions of generated code. Other types of differences can also be identified as its result of code differentiation 708 . Code differences are not due to code improvements 704 or code errors and regressions 706 limited. In particular, by determining associations between features or parts of generated program code and source aspects that contribute to the features or parts of generated program code, embodiments of the present disclosure therefore make it possible to efficiently determine why a feature or part of generated program code has changed, For example, is improved and which® source aspect (s) caused this change in the generated program code. For example, this significantly improves human-machine interaction.

Wie oben diskutiert können Konfigurationseinstellungen den Programmcode, der generiert wird, beeinflussen. 8A zeigt ein Beispiel des Typs von atomaren Konfigurationseinstellungen, welcher generierten Programmcode beeinflussen kann. Insbesondere beinhaltet, wie in 8A gezeigt, die Benutzerschnittstelle 800 eine Option 804 im linken Fensterbereich 802, welche, wenn sie ausgewählt wird, in der Anzeige von Einstellungen, die sich auf die Auswahl des Lösers beziehen, resultiert. Wie im rechten Fensterbereich 806 gesehen werden kann, kann ein Benutzer Simulationszeitparameter 808 spezifizieren. Der Benutzer kann auch einen Typ von Löser 812 und einen bestimmten Löser 814 spezifizieren in der Löserauswahl des Abschnitts 810. Die Auswahl des Lösertyps und eines bestimmten Lösers kann den Programmcode, der generiert wird, beeinflussen. In dem in 8A gezeigten Beispiel wird der Typ von Löser 812 als ein Löser mit fester Schrittweite ausgewählt. Der bestimmte Löser wird durch den Eintrag 814 als ein diskreter Löser ohne kontinuierliche Zustände spezifiziert. Andere Löserkonfigurationswerte 816 können angezeigt und spezifiziert werden mittels dem rechten Fensterbereich 806. 8A zeigt ein Beispiel, in welchem bestimmte erweiterte Parameter 818 ausgewählt oder abgewählt werden können.As discussed above, configuration settings can affect the program code that is generated. 8A shows an example of the type of atomic configuration settings that can affect generated program code. In particular, as in 8A shown the user interface 800 an option 804 in the left pane 802 which, when selected, results in the display of settings related to the selection of the solver. As in the right pane 806 can be seen, a user can simulation time parameters 808 specify. The user can also use a type of solver 812 and a certain solver 814 specify in the section's solver selection 810 . Choosing the type of solver and a particular solver can affect the program code that is generated. In the in 8A The example shown is the type of solver 812 selected as a fixed step solver. The particular solver is through the entry 814 specified as a discrete solver with no continuous states. Other solver configuration values 816 can be displayed and specified using the right window area 806 . 8A shows an example in which certain advanced parameters 818 can be selected or deselected.

8B zeigt eine Benutzerschnittstelle 800, in welcher Datenimport/-export Parameterwerte eingestellt werden. Der Benutzer hat den Eintrag 820 im linken Fensterbereich 802 so ausgewählt, um den rechten Fensterbereich 807 anzuzeigen. Der rechte Fensterbereich 807 stellt im Abschnitt 822 verschiedene Optionen zum Laden von Eingaben oder eines initialen Zustands von einem Arbeitsbereich bereit. MATLAB, zum Beispiel, beinhaltet einen Arbeitsbereich zum Halten von Variablen mit Werten, wie etwa Arbeitswerten, die während der Ausführung von MATLAB Code und/oder Simulink Modellen geändert werden können. Der rechte Fensterbereich 807 beinhaltet auch einen Abschnitt 824, um verschiedene Parameter zu spezifizieren, die sich auf das Speichern von Werten in dem Arbeitsbereich oder in einer Datei beziehen. Das Spezifizieren dieser Parameter kann den Programmcode modifizieren, der aus dem Modell generiert wird. 8B shows a user interface 800 in which data import / export parameter values are set. The user has the entry 820 in the left pane 802 so selected the right pane 807 display. The right pane 807 poses in section 822 various options for loading inputs or an initial state from a work area. MATLAB, for example, includes a work area for holding variables with values, such as work values, that can be changed while running MATLAB code and / or Simulink models. The right pane 807 also includes a section 824 to specify various parameters related to storing values in the work area or in a file. Specifying these parameters can modify the program code generated from the model.

8C zeigt ein Beispiel eines Fensters 800, in welchem ein Benutzer eine Hardwareimplementierungsoption 826 aus dem linken Fensterbereich 802 ausgewählt hat. Die Hardwareimplementierung bezieht sich auf die Hardwareimplementierung, für welche der Code generiert wird. Man kann dann ein Hardwareboard 828, einen Vorrichtungshersteller 830 und einen Vorrichtungstyp 832 spezifizieren. Es können auch verschiedene andere Parameter 834 spezifizieren, die sich auf die Hardwareimplementierung beziehen. Zum Beispiel können die Bitgrößen für Datentypen spezifiziert werden, wie etwa char, short und long. In 8C ist die Bitgröße für char als 8 Bit spezifiziert, für short als 16 Bit und für long als 32 Bit. 8C shows an example of a window 800 in which a user has a hardware implementation option 826 from the left pane 802 selected. The hardware implementation refers to the hardware implementation for which the code is generated. You can then use a hardware board 828 , a device manufacturer 830 and a device type 832 specify. Various other parameters can also be used 834 specify that relate to the hardware implementation. For example, the bit sizes can be specified for data types, such as char, short and long. In 8C the bit size for char is specified as 8 bits, for short as 16 bits and for long as 32 bits.

Die Konfigurationseinstellungen können sich auch auf Namensgebungsregeln beziehen, wie etwa in 8D gezeigt. 8D zeigt zwei Versionen eines Fensters 800 und 801, in welchem ein Benutzer eine Symboloption 836 im linken Fensterbereich 802 auswählt. Wie in 8D gesehen werden kann, enthält der rechte Fensterbereich 811 eine Anzahl von unterschiedlichen Namensgebungsregeln für Dinge wie etwa globale Variablen und globale Typen. Das Fenster 801 beinhaltet ein Popup 838, welches einen Teil der Syntax der Namensgebungsregeln erläutert. Das Popup identifiziert, welche Makros angewandt werden können, um spezifische Teile des Identifikatornamens für eine globale Variable abzuleiten. Insbesondere bezieht sich $M auf das Makro mangle, $R bezieht sich auf das Wurzelmodellnamensmakro, $G bezieht sich auf das Speicherklassennamensmakro, $N bezieht sich auf das Marko des Namens des Objekts, das identifiziert wird, und $V bezieht sich auf das Benutzertokentext-Makro. Die Makronamen spiegeln ihre Funktionalität wieder. Beispielsweise erhält $G, das Speicherklassenmakro, Zeichen, welche die Speicherklasse der Variablen wiederspiegeln. Die Auswahl der Namensgebungsregeln kann den Programmcode beeinflussen, der von dem Modell generiert wird.The configuration settings can also refer to naming rules, such as in 8D shown. 8D shows two versions of a window 800 and 801 in which a user has an icon option 836 in the left pane 802 selects. As in 8D can be seen, contains the right pane 811 a number of different naming rules for things like global variables and global types. The window 801 includes a popup 838 , which explains part of the syntax of the naming rules. The pop-up identifies which macros can be used to derive specific parts of the identifier name for a global variable. In particular, $ M refers to the mangle macro, $ R refers to the root model name macro, $ G refers to the storage class name macro, $ N refers to the mark of the name of the object being identified, and $ V refers to the user token text -Macro. The macro names reflect their functionality. For example, $ G, the storage class macro, is given characters that reflect the storage class of the variables. The choice of naming rules can affect the program code generated by the model.

Eine andere Konfigurationseinstellung, welche den Programmcode beeinflussen kann, der von dem Modell generiert wird, ist eine Codierstileinstellung. In dem in 8E gezeigten Beispiel hat der Benutzer die „Codierstil“ Option 840 aus dem linken Fensterbereich 802 ausgewählt, um die Codierstilparameter zu etablieren, die in dem rechten Fensterbereich 842 aufgelistet sind. Der Benutzer kann dann eine Anzahl von unterschiedlichen Optionen auswählen unter Verwendung von Checkboxen und Ausklapplisten, welche den Programmcode beeinflussen können, der von dem Modell generiert wird. Zum Beispiel kann die Klammerebene gesetzt werden, wie etwa die nominelle Ebenenoption, die in 8E gezeigt ist. Parameter, wie etwa umwandeln von if-then-else Pattern in switch case Ausdrücke, oder das Beibehalten von static Schlüsselwörtern in Funktionsdeklarationen können gesetzt werden. Was die Codeeinrückung betrifft, kann ein Einrückstil gesetzt und eine Einrückgröße ausgewählt werden.Another configuration setting that can affect the program code generated by the model is a coding style setting. In the in 8E In the example shown, the user has the "Coding Style" option 840 from the left pane 802 selected to establish the coding style parameters in the right pane 842 are listed. The user can then select a number of different options using check boxes and drop-down lists that can affect the program code generated by the model. For example, the parenthesis level can be set, such as the nominal level option specified in 8E is shown. Parameters such as converting if-then-else patterns into switch case expressions, or keeping static keywords in function declarations can be set. As for code indentation, an indentation style can be set and an indentation size can be selected.

Wie oben diskutiert können bestimmte Einstellungen für die Codegenerierung ausgewählt werden, die den Programmcode beeinflussen, der aus dem Modell generiert wird. Wie in 9A gezeigt, zeigt das Fenster 900 eine Codegenerationsoption 902 an, die ausgewählt werden kann, um den rechten Fensterbereich 904 anzuzeigen. Unter den Werten, die eingestellt werden können, ist ein Name einer Systemzieldatei 906 und die Programmiersprache 908, in welcher der Code generiert werden soll. Die Systemzieldatei ist eine Datei, die verwendet wird, um ein Modell in generierten Programmcode umzusetzen. Die Systemzieldatei beschreibt, wie Code für ein gegebenes Ziel bzw. Target zu generieren ist. Der rechte Fensterbereich 904 zeigt auch eine Anzahl von Optionen an, die den Bau- bzw. Buildprozess 910 betreffen, wie etwa ob lediglich Code generiert werden soll (beispielsweise ob weiter fortgefahren und der generierte Code kompiliert werden soll oder nicht) und/oder den Code und Artefakte zu packen.As discussed above, certain settings for code generation that affect the program code generated from the model can be selected. As in 9A shown, shows the window 900 a code generation option 902 that can be selected to the right pane 904 display. Among the values that can be set is a name of a system target file 906 and the programming language 908 in which the code is to be generated. The system target file is a file that is used to convert a model into generated program code. The system target file describes how to generate code for a given target. The right pane 904 also displays a number of options related to the build process 910 concern, such as whether only code should be generated (for example whether to continue and the generated code should be compiled or not) and / or to pack the code and artifacts.

Wie oben diskutiert kann die Auswahl von Optimierungen für die Codegenerierung den Programmcode beeinflussen, der generiert wird.As discussed above, the selection of optimizations for code generation can affect the program code that is generated.

9B zeigt ein Beispiel, in welchem eine Optimierungsoption 910 so ausgewählt ist, dass der rechte Fensterbereich 911 eine Anzahl von Optimierungsgradeinstellungen 912 anzeigt. In dem in 9B gezeigten Beispiel spezifiziert eine Ausklappliste 914 den Optimierungsgrad. Diese Ebene kann minimal, maximal oder ein Zwischenwert sein. In dem in 9B gezeigten Beispiel ist der Optimierungsgrad auf maximal eingestellt, was dazu führt, dass die Ausklappliste 916 die drei Optionen von Ausbalancieren von RAM und Geschwindigkeit, Maximieren der Ausführungsgeschwindigkeit oder minimieren von RAM enthält. Abhängig davon, welche Option ausgewählt wird, kann eine Anzahl von Auswahlboxen unter dem Detailabschnitt 913 verfügbar sein. Zum Beispiel werden Optionen angezeigt, um lokale Blockausgaben zu aktivieren, lokale Blockausgaben wiederzuverwenden, Ausdrucksfaltung zu verwenden, globale Blockausgaben wiederzuverwenden, Feldindizierung zu vereinfachen, Puffer unterschiedlicher Größen und Dimensionen wiederzuverwenden, etc. Weiterhin werden Optionen dazu angezeigt, wie globaler Datenzugriff optimiert werden soll und/oder wie Blockausführungsreihenfolge in dem generierten Code optimiert werden soll. Die Auswahl der Option „Ausgleich zwischen RAM und Geschwindigkeit“ als Priorität (siehe 916) stellt die Werte für viele dieser anderen Parameter ein. Man kann sehen, dass nach dieser Wahl viele der Auswahlboxen gesetzt oder nicht gesetzt sind. Weiterhin werden Werte für „Globalen Datenzugriff optimieren“ auf „Verwende global, um Zwischenergebnisse zu speichern“ und für „Optimiere Blockausführungsreihenfolge in dem generierten Code“ auf „Verbesserte Codeausführungsgeschwindigkeit“ gesetzt werden. 9B shows an example in which an optimization option 910 is selected so that the right pane 911 a number of optimization level settings 912 displays. In the in 9B The example shown specifies a drop-down list 914 the degree of optimization. This level can be minimal, maximal or to be an intermediate value. In the in 9B The example shown is the maximum degree of optimization, which leads to the drop-down list 916 contains the three options of balancing RAM and speed, maximizing execution speed or minimizing RAM. Depending on which option is selected, there may be a number of selection boxes under the detail section 913 be available. For example, options are displayed to activate local block outputs, reuse local block outputs, use expression folding, reuse global block outputs, simplify field indexing, reuse buffers of different sizes and dimensions, etc. Furthermore, options are displayed for how global data access should be optimized and / or how block execution order should be optimized in the generated code. Selecting the option “Balance between RAM and speed” as a priority (see 916) sets the values for many of these other parameters. You can see that after this selection, many of the selection boxes are set or not. Furthermore, values for "Optimize global data access" will be set to "Use globally to store intermediate results" and for "Optimize block execution order in the generated code" to "Improved code execution speed".

9C das Erscheinungsbild des rechten Fensterbereichs 911, wenn die maximale Ebene 914 ausgewählt und die Priorität auf Maximieren der Ausführungsgeschwindigkeit 920 ausgewählt wird. Es ist dabei zu bemerken, dass einige der Auswahlen der Auswahlboxen und Listenboxen geändert sind im Vergleich zu 9B. Insbesondere ist in 9C die Box „Vereinfache Feldindizierung“ gesetzt und die Liste „ Globalen Datenzugriff optimieren“ hat „Ohne“ ausgewählt. Dies zeigt die Wirkung, die eine nichtatomare Auswahl auf die Einstellungen für atomare Quellen hat. 9C the appearance of the right pane 911 when the maximum level 914 selected and priority to maximize execution speed 920 is selected. It should be noted that some of the selection of the selection boxes and list boxes have been changed compared to 9B . In particular, in 9C the box "Simplified field indexing" is set and the list "Optimize global data access" has selected "None". This shows the effect that a non-atomic selection has on the settings for atomic sources.

9D zeigt ein Beispiel, in welchem die maximale Ebene 914 ausgewählt wird und die Priorität Minimiere RAM 922 ausgewählt wird. Als ein Ergebnis werden die Auswahlboxen „Packe Boolsche Daten in Bitfelder“ und „Verwende Puffer unterschiedlicher Größen und Dimensionen“ ausgewählt. Weiterhin ist in der Listenbox „Optimiere Blockoperationsreihenfolge in dem generierten Code“ die ausgewählte Option „Aus“. Dies ist ein Beispiel davon, wie zwei nichtatomare Quellenaspekte (das heißt, maximiere Optimierungsgrad und minimiere RAM als eine Priorität) die Auswahl von atomaren Quellenaspekten (das heißt, die aufgeführten Auswahlboxen und Listenboxen) beeinflussen. Diese Benutzerschnittstellendarstellungen in den 8 und 9 sind nicht als Beschränkung gedacht, sondern sind vielmehr illustrierend gedacht. Es sei verstanden, dass eine Anzahl von unterschiedlichen Benutzerschnittstellen verwendet werden kann, um die atomaren Konfigurationseinstellungen auszuwählen. Die atomaren Konfigurationseinstellungen können mehr oder weniger enthalten als die dargestellten. 9D shows an example in which the maximum level 914 is selected and the priority minimize RAM 922 is selected. As a result, the selection boxes "Pack Boolean data into bit fields" and "Use buffers of different sizes and dimensions" are selected. Furthermore, in the list box "Optimize block operation order in the generated code", the selected option is "Off". This is an example of how two non-atomic source aspects (that is, maximize optimization and minimize RAM as a priority) affect the selection of atomic source aspects (that is, the selection boxes and list boxes listed). These user interface representations in the 8th and 9 are not intended as a limitation, but rather are intended to be illustrative. It is understood that a number of different user interfaces can be used to select the atomic configuration settings. The atomic configuration settings may contain more or less than those shown.

Die beispielhaften Ausführungsformen sind eingerichtet, Interdependenzen zwischen Quellenaspekten und den resultierenden Merkmalen in dem generierten Programmcode zu bestimmen. Die beispielhaften Ausführungsformen können die Beziehungen zwischen Quellenaspekten erfassen und beurteilen, wie die Quellenaspekte den generierten Programmcode beeinflussen. Diese Erfassung dieser Beziehungen ermöglicht das Bestimmen der Assoziationen zwischen Komponenten von Merkmalen in dem generierten Programmcode und Quellenaspekten. Die erfassten Assoziationen ermöglichen eine reverse Codegeneration, wo Code geändert werden kann und das System Änderungen an Quellenaspekten ableitet, um die gewünschten Codeänderungen zu erreichen.The exemplary embodiments are set up to determine interdependencies between source aspects and the resulting features in the generated program code. The exemplary embodiments can grasp the relationships between source aspects and assess how the source aspects affect the generated program code. This detection of these relationships enables the associations between components of features in the generated program code and source aspects to be determined. The detected associations enable reverse code generation, where code can be changed and the system derives changes to source aspects in order to achieve the desired code changes.

Es können mehrere Beziehungen, die sich auf die Quellenaspekte beziehen, erfasst und gespeichert werden in einer Weise wie derjenigen, die mit Bezug auf 2C beschrieben wurde. Ein erstes Beispiel einer solchen Beziehung ist eine logische und Beziehung, in welcher mehrere Quellenaspekte notwendig sind, um einen spezifischen Codeeffekt zu erreichen. Wie zum Beispiel in 10A gezeigt ist eine Optimierungseinstellung 1006, welche eine Bezeichner-basierte Pufferwiederverwendung erlaubt, zusammen damit, dass mehrere Signalleitungen denselben Bezeichner aufweisen, ein Beispiel von Quellenaspekten, die eine logische und Beziehung aufweisen. 10A zeigt ein Fenster 1000, in welchem mit der Codegenerierung in Beziehung stehende Konfigurationseinstellungen gesetzt werden können. In diesem Fall wurden die „Optimierung“ Einstellungen 1002 ausgewählt. Der rechte Fensterbereich 1004 des Fensters 1000 weist eine Anzahl von Einstellungen auf, die gesetzt werden können, indem Auswahlboxen ausgewählt werden. Eine dieser Einstellungen 1006 stellt ein, dass die Signalbezeichner die Pufferwiederverwendung anleiten. In 10A ist diese Auswahl 1006 ausgewählt.Several relationships related to the source aspects can be captured and stored in a manner similar to that related to 2C has been described. A first example of such a relationship is a logical and relationship in which several source aspects are necessary to achieve a specific code effect. Like for example in 10A an optimization setting is shown 1006 , which allows identifier-based buffer reuse, along with having multiple signal lines having the same identifier, an example of source aspects that have a logical and relationship. 10A shows a window 1000 , in which configuration settings related to code generation can be set. In this case, the "optimization" settings 1002 selected. The right pane 1004 of the window 1000 has a number of settings that can be set by selecting selection boxes. One of these settings 1006 sets the signal identifiers to guide buffer reuse. In 10A is this selection 1006 selected.

Dies ist ein Beispiel einer logischen und Beziehung, in welcher mehrere Quellenaspekte notwendig sind, um einen Effekt in dem generierten Programmcode zu produzieren. Der Effekt kann daher mit den mehreren Quellenaspekten assoziiert und durch die Pfeile in 10A angegeben werden. Oftmals wird diese Art von Beziehung zwischen einem breiten Quellenaspekt (beispielsweise einer modellweiten Einstellung) und einem engeren Quellenaspekt (beispielsweise einer lokalen Einstellung) gefunden. In diesem illustrativen Fall ist die „Verwende Signalbezeichner zur Anleitung der Pufferwiederverwendung“ Einstellung 1006 der breitere Quellenaspekt, da die Einstellung 1006 die gesamte Klasse von Signalbezeichnerinstanzen betrifft. Die mehreren Signalleitungen 1012 und 1014 (siehe Modell 1010), welche denselben Bezeichner haben, ist der engere Quellenaspekt, da sich dieser auf die bestimmten Instanzen der gleichen Bezeichner für Signalleitungen 1012 und 1014 bezieht. Die resultierende Komponente 1016 in dem generierten Programmcode ist in dem Codelisting 1008 gezeigt. Wenn ein beliebiger dieser Quellenaspekte nicht vorliegt, wie in 10B gezeigt, unterscheidet sich die Komponente 1020 darin, dass es keine Pufferwiederverwendung in dem Codelisting 1002 des generierten Programms gibt, im Gegensatz zur Komponente 1016 in 10A.This is an example of a logical and relationship in which several source aspects are necessary to produce an effect in the generated program code. The effect can therefore be associated with the multiple source aspects and indicated by the arrows in 10A can be specified. Often, this type of relationship is between a broad source aspect (for example, a model-wide setting) and a narrower source aspect (e.g. a local setting). In this illustrative case, the "Use signal identifier to guide buffer reuse" setting 1006 the broader source aspect since the setting 1006 affects the entire class of signal identifier instances. The multiple signal lines 1012 and 1014 (see model 1010 ), which have the same identifier, is the narrower source aspect, since this refers to the specific instances of the same identifier for signal lines 1012 and 1014 relates. The resulting component 1016 in the generated program code is in the code listing 1008 shown. If any of these source aspects are absent, as in 10B shown, the component differs 1020 in that there is no buffer reuse in the code listing 1002 of the generated program, in contrast to the component 1016 in 10A .

Quellenaspektvariablen können auch eine logische oder Beziehung aufweisen, wobei mehrere Quellenaspekten unabhängig voneinander einen Effekt auf den generierten Programmcode haben. Wie zum Beispiel in größerem Detail nachstehend mit Bezug auf 11B beschrieben kann ein Signalname in dem generierten Programmcode von einer Änderung des Signalnamens in dem Modell oder einer Änderung in der Speicherklasse, die für das Signal spezifiziert wird, resultieren.Source aspect variables can also have a logical or relationship, with several source aspects independently of one another having an effect on the generated program code. As for example in more detail below with reference to 11B As described, a signal name in the generated program code may result from a change in the signal name in the model or a change in the storage class specified for the signal.

Ein weiteres Beispiel einer Beziehung ist eine überschreibende bzw. überstimmende Beziehung, in welcher ein Konfigurationseinstellungswert einen anderen überschreibt, aber beide Einstellungen zu einem Effekt in dem generierten Programmcode beitragen.Another example of a relationship is an overriding relationship, in which one configuration setting value overrides another, but both settings contribute to an effect in the generated program code.

10C zeigt eine überschreibende bzw. überstimmende Beziehung zwischen Quellenaspekten. Insbesondere überschreibt eine Einstellung einer Speicherklasse auf „ExportierelnDatei“ bzw. „ExportToFile“ für In1 in Ziele 1046 des Modelldateneditors 1042 die Default Speicherklasse für die Gruppe von Inports, die durch die Einstellung 1044 im Fenster 1040 angegeben sind. 10C shows an overriding or overlapping relationship between source aspects. In particular, a setting of a storage class to "ExportingFile" or "ExportToFile" for In1 overwrites in targets 1046 of the model data editor 1042 the default storage class for the group of imports, which is determined by the setting 1044 in the window 1040 are specified.

10D zeigt ein Beispiel 1060, in welchem alle Inports die Default Speicherklasse haben. 10E zeigt den Fall, wo die Speicherklasse für In1 geändert wurde zu „ExportierelnDatei“ bzw. „ExportToFile“ 1062, während die Speicherklasse für die anderen Inports spezifiziert ist (siehe 1064), bei der Default Speicherklasse zu bleiben. 10D shows an example 1060, in which all inports have the default storage class. 10E shows the case where the storage class for In1 has been changed to "ExportierFile" or "ExportToFile" 1062 while the storage class is specified for the other inports (see 1064) to remain with the default storage class.

Ein weiteres Beispiel einer Beziehung zwischen Konfigurationseinstellungswerten, das von verschiedenen beispielhaften Ausführungsformen erfasst wird, ist eine Kombinationsbeziehung. In einer solchen Kombinationsbeziehung resultieren mehrere Konfigurationseinstellungswerte in Kombination in einem Effekt in dem generierten Programmcode. Ein beispielhafter Fall ist der einer Namensgebungsregel (siehe 838 in 8D), wo mehrere Teile einer Namensgebungsregel von unterschiedlichen Quellenaspektwerten (wie etwa Wurzel-Modellname, Speicherklassenname, etc.) stammen können. Zum Beispiel, wie in 838 gezeigt, haben die globalen Variablen eine Namensgebungsregel „rt$N$M“. Diese Regel zeigt an, dass das „rt“ ein führender Teil des Variablennamens wird, gefolgt von dem Namen des Objekts, welcher wiederum gefolgt wird von dem Makro Mangle, wie in 8D gezeigt.Another example of a relationship between configuration setting values that is captured by various exemplary embodiments is a combination relationship. In such a combination relationship, multiple configuration setting values in combination result in an effect in the generated program code. An exemplary case is that of a naming rule (see 838 in 8D ), where several parts of a naming rule can come from different source aspect values (such as root model name, storage class name, etc.). For example, like in 838 shown, the global variables have a naming rule "rt $ N $ M". This rule indicates that the “rt” becomes a leading part of the variable name, followed by the name of the object, which in turn is followed by the Mangle macro, as in 8D shown.

Schließlich können die beispielhaften Ausführungsformen eine Kompositbeziehung zwischen Konfigurationseinstellungswerten erfassen. Eine solche Kompositbeziehung entsteht dadurch, dass rekursive irgendwelche der anderen Typen von Beziehungen, wie die oben beschrieben, angewandt werden.Finally, the example embodiments may capture a composite relationship between configuration setting values. Such a composite relationship arises from recursively applying any of the other types of relationships, such as those described above.

Die beispielhaften Ausführungsformen können Empfehlungen erzeugen, wenn ein Benutzer eine Modifikation an einer bestimmten Zeile des generierten Programmcodes ausführt. 11A stellt ein Flussdiagramm 1100 der Schritte bereit, die bezüglich solcher Empfehlungen ausgeführt werden können. Zunächst wird in Schritt 1102 eine Änderung an dem generierten Programmcode vorgenommen. Das System bemerkt, dass die Änderung mit einer Änderung assoziiert ist (Schritt 1104). In diesem Beispiel ist das Subsystem ein Simulink Subsystem.-Es wird in Antwort auf die Änderung eine Empfehlung angezeigt (Schritt 1106). Zum Beispiel kann das System so konfiguriert sein, dass Änderungen an Variablennamen oder andre Änderungen assoziierte Empfehlungen erzeugen. Die Empfehlung erläutert, wie atomare Quellenaspekte so modifiziert werden können, dass der generierte Programmcode die Änderungen aufweist, ohne dass es einer manuellen Editierung der Änderung bedarf. Wenn es mehrere Empfehlungen gibt, können die Empfehlungen in einer priorisierten Reihenfolge angezeigt werden, basierend auf einem vorbestimmten Priorisierungssystem, oder können ohne eine priorisierte Reihenfolge angezeigt werden. Die Priorität kann auf Information wie etwa früherem Verhalten, einer empfangenen Präferenz (wie etwa von einem Benutzer), einer Regel oder einer anderen Basis basieren. In einigen Ausführungsformen kann der Benutzer die Option haben, die Empfehlung anzunehmen oder nicht. Daher wird in Schritt 1108 eine Bestimmung gemacht, ob die Empfehlung angenommen wird (das heißt, der bzw. die atomare(n) Quellenaspekt(en), die in der Empfehlung identifiziert sind, werden automatisch modifiziert). Wenn die Empfehlung nicht angenommen wird, werden die identifizierten atomaren Quellenaspekte nicht modifiziert. Wenn die Empfehlung jedoch angenommen wird, werden die empfohlenen Änderungen an den atomaren Quellenaspekten ausgeführt in Schritt 1110 und der generierte Programmcode kann (automatisch) erneut generiert werden, um die Änderungen in den Quellenaspekten andernorts in dem Modell zu berücksichtigen.The exemplary embodiments may generate recommendations when a user makes a modification to a particular line of the generated program code. 11A presents a flow chart 1100 of the steps that can be taken regarding such recommendations. First in step 1102 made a change to the generated program code. The system notices that the change is associated with a change (step 1104 ). In this example, the subsystem is a Simulink subsystem. - A recommendation is displayed in response to the change (step 1106 ). For example, the system can be configured so that changes to variable names or other changes generate associated recommendations. The recommendation explains how atomic source aspects can be modified in such a way that the generated program code has the changes without the manual editing of the change being necessary. If there are multiple recommendations, the recommendations may be displayed in a prioritized order based on a predetermined prioritization system, or may be displayed without a prioritized order. The priority may be based on information such as past behavior, a preference received (such as from a user), a rule, or some other basis. In some embodiments, the user may have the option to accept the recommendation or not. Therefore, in step 1108 a determination is made as to whether the recommendation will be accepted (that is, the atomic source aspect (s) identified in the recommendation) automatically modified). If the recommendation is not accepted, the identified atomic source aspects will not be modified. However, if the recommendation is accepted, the recommended changes to the atomic source aspects are made in step 1110 and the generated code can (automatically) be regenerated to account for the changes in the source aspects elsewhere in the model.

Die Empfehlungen können aus der gespeicherten Information bestimmt werden, wie etwa mit Bezug auf 2C diskutiert. Da die Entscheidungspunkte des Codegenerationsprozesses und die zugeordnete Information gespeichert werden kann, kann die gespeicherte Information verwendet werden, um zu identifizieren, wie die gewünschte Änderung zu erreichen ist. Man kann zum Beispiel die Effekte des Modifizierens einer Speicherklasse aus der gespeicherten Dateninformation bestimmen, und wenn einer der Effekte die gewünschte Änderung ist, kann eine geeignete Empfehlung generiert werden.The recommendations can be determined from the stored information, such as with reference to 2C discussed. Since the decision points of the code generation process and the associated information can be stored, the stored information can be used to identify how to achieve the desired change. For example, one can determine the effects of modifying a storage class from the stored data information, and if one of the effects is the desired change, an appropriate recommendation can be generated.

Das System erfasst und speichert die geeignete Information zum Erfassen der Interdependenzen und zum Generieren von Empfehlungen. Das System kann zum Beispiel Information bezüglich der oben genannten logischen und Beziehungen erfassen und speichern. Diese Information und die Information des effektiven Gültigkeitsbereichs kann verwendet werden, um Empfehlungen darüber zu geben, welche Quellenaspekte geändert werden müssen, um das gewünschte Merkmal in dem generierten Programmcode zu erhalten. Es wird daher eine verbesserte Mensch-Maschine-Interaktion bereitgestellt. Wenn zum Beispiel ein Benutzer die Pufferwiederverwendung für einen einzelnen Puffer deaktiviert, kann die Empfehlung sein, die Signale mit unterschiedlichen Bezeichnern neu zu benennen im Hinblick auf die logische und Beziehung.The system records and stores the appropriate information for recording the interdependencies and for generating recommendations. For example, the system can collect and store information related to the above logical and relationships. This information and the effective scope information can be used to give recommendations as to which source aspects need to be changed in order to obtain the desired feature in the generated program code. An improved human-machine interaction is therefore provided. For example, if a user disables buffer reuse for a single buffer, the recommendation may be to rename the signals with different identifiers in terms of logic and relationship.

Bei einer logischen oder Beziehung weiß das System, dass alle Quellen geändert werden müssen, um in der bzw. den assoziierten Komponente(n) in dem generierten Programmcode zu resultieren.In the case of a logical or relationship, the system knows that all sources must be changed to result in the associated component (s) in the generated program code.

Im Fall einer überschreibenden bzw. überstimmenden Beziehung unter Quellenaspekten erfasst und speichert das System auf ähnliche Weise alle Quellenaspekte und die überschreibende bzw. überstimmende Beziehung. Wenn daher eine Default Speicherklasse überschrieben wird, wird die Information der Default Speicherklasse weiterhin erfasst, zusammen mit der überschreibenden Information. Wenn daher die überschreibende Einstellung entfernt wird, kann die Default Speicherklasse wiederhergestellt werden.In the case of an overwriting or overriding relationship under source aspects, the system similarly captures and stores all source aspects and the overriding or overriding relationship. Therefore, if a default storage class is overwritten, the information of the default storage class is still recorded, together with the overwriting information. Therefore, if the overriding setting is removed, the default storage class can be restored.

11B zeigt ein Beispiel 1120, welches in Tabellenform Änderungsempfehlungen 1122 anzeigt, die Ergebnisse des Akzeptierens der Änderungsempfehlung 1124 in derselben Zeile und die Nebenwirkungen 1125 des Akzeptierens der Empfehlungen. In einigen Ausführungsformen kann das Verfahren umfassen Anzeigen, auf einer Anzeigevorrichtung, von Information bezüglich dazu, wie eine oder mehrere Quellen und/oder Quellenaspekte modifiziert werden können, um eine Modifikation oder gewünschte Änderung von generiertem Programmcode mittels Codegeneration durch einen Codegenerator zu bewirken, Information bezüglich der Modifikation oder gewünschten Änderung an dem generierten Programmcode, wenn die eine oder die mehreren Quellen und/oder Quellenaspekte modifiziert werden, und Information bezüglich dazu, ob eine oder mehrere zusätzliche Änderungen und/oder Nebenwirkungen an dem generierten Programmcode verursacht werden, wenn die eine oder die mehreren Quellen und/oder Quellenaspekte modifiziert werden. Die angezeigte Information bezüglich dazu, wie eine oder mehrere Quellen und/oder Quellenaspekte modifiziert werden können, um eine Modifikation oder gewünschte Änderung von generiertem Programmcode durch Codegeneration durch einen Codegenerator erreicht werden kann, kann weiter mehrere Wege spezifizieren, wie die eine oder die mehreren Quellen und/oder Quellenaspekte modifiziert werden können, um die Modifikation oder gewünschte Änderung zu bewirken. In diesem Beispiel möchte ein Benutzer einen Variablenname von „ln1“ auf „rtln1“ ändern. Es gibt drei Empfehlungen, wie der Variablenname auf diese Weise zu ändern ist. 11B shows an example 1120, which table recommendations for changes 1122 indicates the results of accepting the change recommendation 1124 on the same line and the side effects 1125 accepting the recommendations. In some embodiments, the method may include displaying, on a display device, information related to how one or more sources and / or source aspects can be modified to effect modification or desired modification of generated program code by code generation by a code generator, information related to the modification or desired change to the generated program code when the one or more sources and / or source aspects are modified, and information regarding whether one or more additional changes and / or side effects are caused to the generated program code when the one or the multiple sources and / or source aspects are modified. The information displayed regarding how one or more sources and / or source aspects can be modified to achieve modification or desired change of generated program code by code generation by a code generator can further specify several ways, such as the one or more sources and / or source aspects can be modified to effect the modification or desired change. In this example, a user would like to change a variable name from "ln1" to "rtln1". There are three recommendations on how to change the variable name in this way.

Die erste Änderungsempfehlung ist, direkt den entsprechenden Signalnamen in dem Modell zu ändern, aus welchem der generierte Programmcode generiert wird, wie durch das Element 1126 gezeigt. Die resultierende Änderung ist in dem Codelisting 1128 für den generierten Programmcode gezeigt. Es gibt keine Nebenwirkungen, wie durch das Element 1130 gezeigt.The first change recommendation is to directly change the corresponding signal name in the model from which the generated program code is generated, as by the element 1126 shown. The resulting change is in the code listing 1128 shown for the generated program code. There are no side effects like through the item 1130 shown.

Die zweite Änderungsempfehlung ist, die Speicherklassenbeschreibung für die Inports von „Default“ auf „ImportedExtern“ bzw. „ImportiertExtern“ bzw. „ImportedExtern“ zu ändern in dem Modell durch Modifizieren der Deklaration in der Einstellung Konfigurationseinstellungen, wie durch das Element 1132 identifiziert. Das Resultat in dem generierten Programmcode wird durch das Element 1134 gezeigt. Die Nebenwirkungen, wie im Element 1036 identifiziert, sind, dass die Namen aller Wurzel Inport Namen sich ändern, und dass e seine Änderung von struct Feldnamen zu individuellen Variablen gibt.The second change recommendation is to change the storage class description for the imports from "Default" to "ImportedExtern" or "ImportiertExtern" or "ImportedExtern" in the model by modifying the declaration in the configuration settings setting, as by the element 1132 identified. The result in the generated program code is through the element 1134 shown. The side effects as in the element 1036 identified are that the names of all root inport names change, and that there are changes from struct field names to individual variables.

Die dritte Änderungsempfehlung ändert eine Identifikator Namensgebungsregel für die Namensgebungsregel für Feldnamen von globalem Typ. Die resultierenden Änderungen an dem generierten Programmcode sind in dem 1140 gezeigt. Die Nebenwirkung 1142 ist, dass sich die Namen aller Feldnamen globaler Variablen ändern. The third change recommendation changes an identifier naming rule for the naming rule for field names of global type. The resulting changes to the generated program code are in the 1140 shown. The side effect 1142 is that the names of all field names of global variables change.

Die Ergebnisse 1128, 1134, 1140 können generiert werden, indem eine partielle Codegeneration bezüglich Änderungen im Hintergrund vorgenommen wird. Für dieses Beispiel kann der Codegenerator die Variablendeklaration, die dessen Namen enthält, generieren, ohne die vollständige Codegeneration auszuführen. Daher kann er schnell Empfehlungen und erwartete Nebenwirkungen bereitstellen direkt nachdem der Benutzer den Variablennamen in dem Code ändert. Die Empfehlungen können für den Benutzer live oder sofort erscheinen, während der Benutzer den Variablennamen modifiziert.The results 1128 , 1134 , 1140 can be generated by making a partial code generation regarding changes in the background. For this example, the code generator can generate the variable declaration that contains its name without executing the full code generation. Therefore, he can quickly provide recommendations and expected side effects immediately after the user changes the variable name in the code. The recommendations can appear live to the user or immediately as the user modifies the variable name.

11 C zeigt ein Beispiel einer Benutzerschnittstelle, die Änderungsempfehlungen zeigt. Wie in 11C gezeigt, beinhaltet ein Codelisting von generiertem Programmcode 1150 eine Änderung an einem Feldnamen 1152 von In1 zu rtln. Als ein Ergebnis dieser Änderung wird ein Tooltip 1154 mit zwei Änderungsempfehlungen 1156 und 1162 angezeigt. Die erste Empfehlung 1156 ist ein Hyperlink Menüelement, das, wenn es ausgewählt wird, das Modell 1160 in einem Benutzerschnittstellenelement 1158 anzeigt, um die empfohlene Änderung in dem Modell 1160 anzuzeigen. Das zweite Menüelement 1162 ist ebenfalls ein Hyperlink Menüelement, das, wenn es ausgewählt wird, die Anzeige eines Benutzerschnittstellenelements 1164 veranlasst, welches die Namensgebungsregeln und die Modifikation an den Namensgebungsregeln identifiziert. Wenn der Benutzer wählt, die Namensgebungsregel zu ändern, (siehe 1162) kann die Namensgebungsregel Editier-Ul 1164 angezeigt werden, mit dem Fokus auf die spezifische zu modifizierende Regel 1166. 11 C. shows an example of a user interface showing change recommendations. As in 11C shown includes a code listing of generated program code 1150 a change to a field name 1152 from In1 to rtln. As a result of this change, a tooltip 1154 with two recommendations for change 1156 and 1162 displayed. The first recommendation 1156 is a hyperlink menu item that, when selected, is the model 1160 in a user interface element 1158 indicates the recommended change in the model 1160 display. The second menu item 1162 is also a hyperlink menu item that, when selected, displays a user interface item 1164 initiated, which identifies the naming rules and the modification of the naming rules. If the user chooses to change the naming rule (see 1162), the naming rule Edit-Ul 1164 are displayed with the focus on the specific rule to be modified 1166 .

12A zeigt ein Rechensystem 1200, das geeignet ist, um beispielhafte Ausführungsformen zu verwirklichen. Das Rechensystem 1200 kann eine Rechenvorrichtung 1202 mit einem oder mit zwei Prozessoren 1204 beinhalten. Die Rechenvorrichtung 1202 hat Zugriff auf oder beinhaltet einen Speicher 1206. Der Speicher 1206 kann eine Umgebung zum technischen Rechnen (TCE) beinhalten, wie etwa die MATLAB Umgebung zum technischen Rechnen, die auch Simulink, Stateflow und andere Komponenten beinhalten kann. Der Speicher 1206 kann einen Codegenerator 1210 beinhalten und kann Programmcode 1212 beinhalten, welcher von dem Codegenerator generiert wird. Der Speicher 1206 kann ein oder mehrere graphische Modelle 1214 beinhalten. Der Speicher kann einen Compiler 1216 zum Kompilieren von Code und zum Identifizieren von Kompilationsfehlern beinhalten. Der Speicher 1206 kann auch einen Codeanalysator beinhalten, der Probleme mit dem Code identifizieren kann, wie etwa Codierstandardverstöße, Logikfehler, Codebeweisfehler, Bugs und andere Artefakte. Die Programme in dem Speicher 1206 können von dem Prozessor 1204 der Rechenvorrichtung ausgeführt werden. Der Speicher 1206 kann nichttransitorische computerlesbare Speichermedien beinhalten zum Beinhalten von von einem Computer ausführbaren Anweisungen, die von dem Prozessor 1204 der Rechenvorrichtung ausgeführt werden können, um die Funktionalität der oben diskutierten beispielhaften Ausführungsformen auszuführen. Der Speicher 1206 kann eine Anzahl von unterschiedlichen Formen annehmen, welche unterschiedliche Typen von Speichervorrichtungen beinhalten können, einschließlich, ohne hierauf beschränkt zu sein, Magnetplattenspeicher, optische Plattenspeicher, RAM, Flash Speicher, Nur-Lese Speicher (ROM), Halbleiterspeicher und/oder ähnliches. 12A shows a computing system 1200 that is suitable to implement exemplary embodiments. The computing system 1200 can be a computing device 1202 with one or two processors 1204 include. The computing device 1202 has access to or contains a memory 1206 . The memory 1206 may include a technical computing environment (TCE), such as the MATLAB technical computing environment, which may also include Simulink, Stateflow, and other components. The memory 1206 can be a code generator 1210 may include and program code 1212 include which is generated by the code generator. The memory 1206 can be one or more graphic models 1214 include. The memory can be a compiler 1216 for compiling code and identifying compilation errors. The memory 1206 may also include a code analyzer that can identify problems with the code, such as coding standard violations, logic errors, code proof errors, bugs, and other artifacts. The programs in the memory 1206 can from the processor 1204 the computing device. The memory 1206 may include non-transitory computer readable storage media for containing computer-executable instructions issued by the processor 1204 of the computing device to perform the functionality of the exemplary embodiments discussed above. The memory 1206 may take a number of different forms, which may include different types of memory devices including, but not limited to, magnetic disk storage, optical disk storage, RAM, flash memory, read only memory (ROM), semiconductor memory, and / or the like.

Die Rechenvorrichtung 1202 kann Zugriff auf eine Anzeigevorrichtung 1220 zum Anzeigen von Information haben, wie etwa die Benutzerschnittstelle und Elemente, die oben diskutiert sind. Die Rechenvorrichtung 1202 kann Zugriff auf einen Netzwerkadapter 1222 haben, welcher es der Rechenvorrichtung ermöglicht, mit Netzwerken zu interagieren, einschließlich lokalen Netzwerken und Weitbereichsnetzwerken.The computing device 1202 can access a display device 1220 for displaying information, such as the user interface and elements discussed above. The computing device 1202 can access a network adapter 1222 which enables the computing device to interact with networks, including local area and wide area networks.

Es sein verstanden, dass die beispielhaften Ausführungsformen auch in einer verteilten Umgebung verwirklicht sein können. 12B zeigt ein Beispiel einer geeigneten verteilten Umgebung 1250. Die verteilte Umgebung beinhaltet einen Client 1252 und einen Server 1254, welche über ein Netzwerk 1256, wie etwa das Internet, kommunizieren können. Der Client 1252 kann einen oder mehrere Prozessoren 1258 beinhalten. Ähnlich kann der Server einen oder mehrere Prozessoren 1260 beinhalten. Der Client 1252 kann Zugriff auf einen Speicher 1262 haben, der ein graphisches Modell beinhalten kann. Der Server 1254 kann Zugriff auf einen Speicher 1266 haben. Der Speicher kann einen Codegenerator 1268 und einen Codeanalysator 1270 beinhalten, die von dem einen oder den mehreren Prozessoren 1260 auf dem Server 1254 ausgeführt werden können. In einigen Ausführungsformen kann der Client 1252 das Modell dem Server bereitstellen, welcher den Codegenerator 1268 verwendet, um Code zu generieren, welcher dann von dem Codeanalysator 1270 analysiert wird. Es sei verstanden, dass andere Client Server Konfigurationen und andere verteilte Umgebungen ebenfalls verwendet werden können, um die beispielhaften Ausführungsformen zu verwirklichen.It should be understood that the exemplary embodiments can also be implemented in a distributed environment. 12B shows an example of a suitable distributed environment 1250 . The distributed environment includes a client 1252 and a server 1254 which over a network 1256 such as the Internet. The client 1252 can be one or more processors 1258 include. Similarly, the server can have one or more processors 1260 include. The client 1252 can access a memory 1262 have, which can include a graphic model. The server 1254 can access a memory 1266 to have. The memory can be a code generator 1268 and a code analyzer 1270 include that of the one or more processors 1260 on the server 1254 can be executed. In some embodiments, the client can 1252 provide the model to the server, which is the code generator 1268 used to generate code, which is then generated by the code analyzer 1270 is analyzed. It is understood that other client server configurations and other distributed environments can also be used to implement the exemplary embodiments.

Während beispielhafte Ausführungsformen der vorliegenden Erfindung hierin beschrieben wurden, werden die Fachleute verstehen, dass verschiedene Änderungen in Form und Detail gemacht werden können, ohne den angedachten Bereich der vorliegenden Erfindung wie durch die beigefügten Ansprüche definiert zu verlassen. While exemplary embodiments of the present invention have been described herein, those skilled in the art will understand that various changes in form and detail can be made without departing from the scope of the present invention as defined by the appended claims.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents listed by the applicant has been generated automatically and is only included for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent literature cited

  • US 62778101 [0001]US 62778101 [0001]

Claims (26)

Verfahren, das ausgeführt wird durch einen Prozessor (1258, 1260) einer Rechenvorrichtung (1202), wobei das Verfahren umfasst: Generieren von Programmcode (106, 1150, 1212) mit einem Codegenerator (104, 162, 168,1210, 1268) für ein Modell (122, 160, 170, 532, 1160) und einen oder mehrere Konfigurationswerte, die für das Modell (122, 160, 170, 532, 1160) eingestellt sind, Ausführen des Modells (122, 160, 170, 532, 1160) oder des Programmcodes (106, 1150, 1212), das bzw. der das Verhalten eines Systems der echten Welt simuliert, wobei das Generieren umfasst Aufzeichnen von Information über Verhaltenseffekte des Modells (122, 160, 170, 532, 1160) und/oder des Codegenerators (104, 162, 168,1210, 1268) und einen oder mehrere Konfigurationseffekte auf den Programmcode (106, 1150, 1212) von dem Modell (122, 160, 170, 532, 1160) und/oder dem Codegenerator (104, 162, 168,1210, 1268) und dem einen oder den mehreren Konfigurationswerten, wobei zumindest einige der Verhaltenseffekte und dem einen oder der mehreren Konfigurationseffekte voneinander abhängig sind; für einen Teil des Programmcodes (106, 1150, 1212), Bestimmen welcher von dem einen oder den mehreren Konfigurationseffekten und/oder Verhaltenseffekten zu einem Merkmal des Teils des Programmcodes (106, 1150, 1212) beigetragen hat, wobei das Bestimmen umfasst Analysieren der aufgezeichneten Information und Ableiten, von den Verhaltenseffekten und dem einen oder den mehreren Konfigurationseffekten, einer Identität von dem einen oder den mehreren Konfigurationseffekten und/oder Verhaltenseffekten, der bzw. die zu dem Merkmal des Teils des Programmcodes (106, 1150, 1212) beigetragen hat bzw. haben; und Speichern einer Assoziation zwischen dem Identifizierten von dem einen oder den mehreren Konfigurationseffekten und/oder Verhaltenseffekten, der zu dem Merkmal des Teils des Programmcodes (106, 1150, 1212) beigetragen hat. A method executed by a processor (1258, 1260) of a computing device (1202), the method comprising: Generate program code (106, 1150, 1212) with a code generator (104, 162, 168, 1210, 1268) for a model (122, 160, 170, 532, 1160) and one or more configuration values for the model (122 , 160, 170, 532, 1160), executing the model (122, 160, 170, 532, 1160) or the program code (106, 1150, 1212) that simulates the behavior of a real world system, wherein the generation includes Record information about behavioral effects of the model (122, 160, 170, 532, 1160) and / or the code generator (104, 162, 168, 1210, 1268) and one or more configuration effects on the program code (106, 1150, 1212) of the model (122, 160, 170, 532, 1160) and / or the code generator (104, 162, 168, 1210, 1268) and the one or more configuration values, with at least some of the behavior effects and the one or more configuration effects from each other are dependent; for a portion of the program code (106, 1150, 1212), determining which of the one or more configuration effects and / or behavioral effects contributed to a feature of the portion of the program code (106, 1150, 1212), the determining comprising Analyzing the recorded information and deriving the behavior effects and the one or more configuration effects, an identity of the one or more configuration effects and / or behavior effects related to the feature of the part of the program code (106, 1150, 1212) contributed or have; and Storing an association between the identified one or more configuration effects and / or behavioral effects that contributed to the feature of the portion of the program code (106, 1150, 1212). Verfahren nach Anspruch 1, wobei das Analysieren den einen oder die mehreren Konfigurationseffekte als zu dem Merkmal beitragend identifiziert.Procedure according to Claim 1 analyzing identifies the one or more configuration effects as contributing to the feature. Verfahren nach Anspruch 2, wobei der eine oder die mehreren identifizierten Konfigurationseffekte von einem oder von mehreren der folgenden Konfigurationswerte resultiert bzw. resultieren: Wahl einer Namensgebungsregel (144) für Identifikatoren, Wahl einer Speicherklasse, Wahl eines Lösertyps, Wahl eines Lösers (146, 812, 814), Wahl von zu importierenden Daten, Wahl von zu exportierenden Daten, Zielhardwaredetails (150), Codierstilparameter, oder Wahl einer Programmiersprache (908) von generiertem Programmcode (106, 1150, 1212).Procedure according to Claim 2 , wherein the one or more identified configuration effects result or result from one or more of the following configuration values: choice of a naming rule (144) for identifiers, choice of a storage class, choice of a solver type, choice of a solver (146, 812, 814), Choice of data to be imported, choice of data to be exported, target hardware details (150), coding style parameters, or choice of a programming language (908) of generated program code (106, 1150, 1212). Verfahren nach einem der vorstehenden Ansprüche, wobei das Analysieren einen oder mehrere der Verhaltenseffekte als zu dem Merkmal beitragend identifiziert.The method of any preceding claim, wherein the analyzing identifies one or more of the behavioral effects as contributing to the feature. Verfahren nach Anspruch 4, wobei der eine oder die mehreren identifizierten Verhaltenseffekte das Ergebnis von zumindest einem der folgenden ist bzw. sind: eine Wahl einer Optimierung (128, 164) in der Codegenerierung, ein hinzugefügtes Merkmal des Codegenerators (104, 162, 168,1210, 1268), ein Patch, der auf den Codegenerator (104, 162, 168,1210, 1268) angewandt wurde, ein Algorithmus des Modells (122, 160, 170, 532, 1160), eine Modifikation an dem Modell (122, 160, 170, 532, 1160), um einen Fehler zu beheben, oder eine Modifikation an dem Modell (122, 160, 170, 532, 1160), um den generierten Programmcode (106, 1150, 1212) mit einem Standard kompatibel zu machen.Procedure according to Claim 4 , wherein the one or more identified behavior effects are the result of at least one of the following: a choice of an optimization (128, 164) in the code generation, an added feature of the code generator (104, 162, 168, 1210, 1268) , a patch applied to the code generator (104, 162, 168, 1210, 1268), an algorithm of the model (122, 160, 170, 532, 1160), a modification to the model (122, 160, 170, 532, 1160) to fix an error or a modification to the model (122, 160, 170, 532, 1160) to make the generated program code (106, 1150, 1212) compatible with a standard. Verfahren nach einem der vorstehenden Ansprüche, weiter umfassend: Verwenden der gespeicherten Assoziation, um zu identifizieren, welcher von dem einen oder den mehreren Konfigurationswerten, Aspekten des Modells (122, 160, 170, 532, 1160) und/oder Aspekten des Codegenerators (104, 162, 168,1210, 1268) zu dem Merkmal des Teils des Programmcodes (106, 1150, 1212) beigetragen hat bzw. haben; und Anzeigen eines visuellen Hinweises oder einer Anzeige, der bzw. die kenntlich macht, dass der bzw. die identifizierten Konfigurationswerte, Aspekte des Modells (122, 160, 170, 532, 1160) und/oder Aspekte des Codegenerators (104, 162, 168,1210, 1268) zu dem Merkmal des Teils des Programmcodes (106, 1150, 1212) beigetragen hat bzw. haben.Method according to one of the preceding claims, further comprising: Use the saved association to identify which of the one or more configuration values, aspects of the model (122, 160, 170, 532, 1160) and / or aspects of the code generator (104, 162, 168, 1210, 1268) to contributed to the feature of the part of the program code (106, 1150, 1212); and Display of a visual indication or display that indicates that the identified configuration values, aspects of the model (122, 160, 170, 532, 1160) and / or aspects of the code generator (104, 162, 168, 1210, 1268) contributed to the feature of the part of the program code (106, 1150, 1212). Verfahren nach Anspruch 6, wobei das Anzeigen automatisch ausgelöst wird durch einen programmatischen Mechanismus.Procedure according to Claim 6 , whereby the display is triggered automatically by a programmatic mechanism. Verfahren nach Anspruch 6, wobei das Anzeigen in Antwort auf ein Benutzerschnittstellenereignis erfolgt.Procedure according to Claim 6 displaying in response to a user interface event. Verfahren nach einem der vorstehenden Ansprüche, wobei das Modell (122, 160, 170, 532, 1160) eines ist von einem graphischen Modell (1214) oder einem textuellen Modell. The method of any preceding claim, wherein the model (122, 160, 170, 532, 1160) is one of a graphic model (1214) or a textual model. Verfahren nach einem der vorstehenden Ansprüche, wobei der eine oder die mehreren Konfigurationswerte zumindest einen atomaren Konfigurationswert beinhaltet.The method of any preceding claim, wherein the one or more configuration values includes at least one atomic configuration value. Verfahren nach einem der vorstehenden Ansprüche, wobei zumindest zwei Quellenaspekte, welche Aspekte des Modells (122, 160, 170, 532, 1160), Aspekte des Codegenerators (104, 162, 168,1210, 1268) und/oder einen oder mehrere Konfigurationswerte umfassen, zumindest eine der folgenden Beziehungen aufweisen mit Bezug auf das Verursachen des einen oder der mehreren Konfigurationseffekte und/oder Verhaltenseffekte: eine logische UND Beziehung, eine logische ODER Beziehung, eine überschreibende bzw. überstimmende Beziehung, wobei einer der zumindest zwei Quellenaspekte einen anderen der zumindest zwei Quellenaspekte überschreibt bzw. überstimmt, oder eine Kombinationsbeziehung, wobei jeder der zumindest zwei Quellenaspekte zu dem einen oder den mehreren Konfigurationseffekten oder den Verhaltenseffekten beiträgt.The method of any preceding claim, wherein at least two source aspects include aspects of the model (122, 160, 170, 532, 1160), aspects of the code generator (104, 162, 168, 1210, 1268) and / or one or more configuration values , have at least one of the following relationships related to causing the one or more configuration effects and / or behavior effects: a logical AND relationship, a logical OR relationship, an overriding or overriding relationship, wherein one of the at least two source aspects is another of the at least overrides or overrides two source aspects, or a combination relationship, each of the at least two source aspects contributing to the one or more configuration effects or the behavior effects. Verfahren nach einem der vorstehenden Ansprüche, wobei das Merkmal eines ist von Gültigkeitsbereich bzw. Scope, Sichtbarkeit, Lebensdauer, Datentyp oder Speichersektor.Method according to one of the preceding claims, wherein the feature is one of scope, visibility, lifespan, data type or storage sector. Verfahren, das ausgeführt wird von einem Prozessor (1258, 1260) einer Rechenvorrichtung (1202), wobei das Verfahren umfasst: Identifizieren, dass generierter Code modifiziert wurde, um eine Modifikation aufzuweisen, wobei der generierte Code von einem Codegenerator (104, 162, 168,1210, 1268) generiert wurde aus mehreren Quellen (102, 222), die ein Modell (122, 160, 170, 532, 1160) und zumindest einen andern Typ von Quelle (102, 222), welche die Codegeneration durch den Codegenerator (104, 162, 168,1210, 1268) beeinflusst, beinhalten; Bestimmen, wie die Quellen (102, 222) modifiziert werden können, um die Modifikation durch Codegeneration durch den Codegenerator (104, 162, 168,1210, 1268) zu bewirken; und Anzeigen von Information auf einer Anzeigevorrichtung (1220), die sich darauf bezieht, wie die Quellen (102, 222) modifiziert werden können, um die Modifikation durch Codegeneration durch den Codegenerator (104, 162, 168,1210, 1268) zu bewirken.A method executed by a processor (1258, 1260) of a computing device (1202), the method comprising: Identify that generated code has been modified to include a modification, the generated code being generated by a code generator (104, 162, 168, 1210, 1268) from multiple sources (102, 222) that generate a model (122, 160, 170, 532, 1160) and at least one other type of source (102, 222) that affects code generation by the code generator (104, 162, 168, 1210, 1268); Determining how the sources (102, 222) can be modified to effect the modification by code generation by the code generator (104, 162, 168, 1210, 1268); and Displaying information on a display device (1220) related to how the sources (102, 222) can be modified to effect the modification by code generation by the code generator (104, 162, 168, 1210, 1268). Verfahren nach Anspruch 13, wobei die angezeigte Information mehrere Wege spezifiziert, wie die Quellen (102, 222) modifiziert werden können, um die Modifikation zu bewirken.Procedure according to Claim 13 , the information displayed specifying several ways in which the sources (102, 222) can be modified to effect the modification. Verfahren nach einem der Ansprüche 13 bis 14, weiter umfassend Erfassen von Information bezüglich Beziehungen zwischen den Quellen (102, 222) und Verwenden der Information bezüglich der Beziehungen beim Bestimmen, wie die Quellen (102, 222) modifiziert werden können.Procedure according to one of the Claims 13 to 14 , further comprising acquiring information regarding relationships between the sources (102, 222) and using the information regarding the relationships in determining how the sources (102, 222) can be modified. Verfahren nach einem der Ansprüche 13 bis 15, wobei das Anzeigen von Information anzeigt, wie die Quellen (102, 222) modifiziert werden können, in einer priorisierten Reihenfolge basierend auf einem vorbestimmten Priorisierungssystem.Procedure according to one of the Claims 13 to 15 wherein displaying information indicates how the sources (102, 222) can be modified in a prioritized order based on a predetermined prioritization system. Verfahren nach Anspruch 16, wobei das vorbestimmte Priorisierungssystem auf zumindest einem von einem früheren Verhalten, einer empfangenen Präferenz oder einer Regel basiert.Procedure according to Claim 16 wherein the predetermined prioritization system is based on at least one of an earlier behavior, a received preference, or a rule. Verfahren nach einem der Ansprüche 13 bis 17, wobei die zumindest eine andere Quelle (102, 222) zumindest eines beinhaltet von Konfigurationsinformation für den Codegenerator (104, 162, 168,1210, 1268) oder Modifikationen, die an dem Codegenerator (104, 162, 168,1210, 1268) vorgenommen wurden.Procedure according to one of the Claims 13 to 17th , the at least one other source (102, 222) including at least one of configuration information for the code generator (104, 162, 168, 1210, 1268) or modifications made to the code generator (104, 162, 168, 1210, 1268) were. Verfahren nach einem der Ansprüche 13 bis 18, wobei das Modell (122, 160, 170, 532, 1160) ein graphisches Modell (1214) ist.Procedure according to one of the Claims 13 to 18th , wherein the model (122, 160, 170, 532, 1160) is a graphic model (1214). Verfahren, das ausgeführt wird von einem Prozessor (1258, 1260) einer Rechenvorrichtung (1202), wobei das Verfahren umfasst: Ausführen einer Analyse (108, 110, 112, 422, 424, 426, 442) eines Teils von generiertem Code, der generiert wurde von einem Codegenerator (104, 162, 168,1210, 1268) aus mehreren Eingangsquellen (102, 222), unterschiedlichen Typs, beinhaltend ein graphisches Modell (1214) und eine andere Eingangsquelle (102, 222) von einem Typ, der kein graphisches Modell (1214) ist, wobei die Analyse (108, 110, 112, 422, 424, 426, 442) Ergebnisse liefert; Bestimmen, welche der Eingangsquellen (102, 222) zu den Ergebnissen der Analyse (108, 110, 112, 422, 424, 426, 442) beigetragen hat bzw. haben; und Anzeigen, auf einer Anzeigevorrichtung (1220), einer Nachverfolgung der Ergebnisse der Analyse (108, 110, 112, 422, 424, 426, 442) zu den bestimmten Eingangsquellen (102, 222), welche zu den Ergebnissen beigetraben haben.A method executed by a processor (1258, 1260) of a computing device (1202), the method comprising: performing an analysis (108, 110, 112, 422, 424, 426, 442) of a portion of generated code that generates was generated by a code generator (104, 162, 168, 1210, 1268) from several input sources (102, 222) of different types, including a graphic model (1214) and another input source (102, 222) of a type that is not a graphic one Model (1214), the analysis (108, 110, 112, 422, 424, 426, 442) providing results; Determining which of the input sources (102, 222) contributed to the results of the analysis (108, 110, 112, 422, 424, 426, 442); and displaying, on a display device (1220), tracking the results of the analysis (108, 110, 112, 422, 424, 426, 442) to the particular input sources (102, 222) that have contributed to the results. Verfahren nach Anspruch 20, wobei die Analyse (108, 110, 112, 422, 424, 426, 442) eines der folgenden identifiziert: Verstöße gegen einen Codierstandard, Kompilationsfehler, Fehler im Programmcode (106, 1150, 1212), dass ein Teil des generierten Codes von einem Codebeweiser (444) nicht bewiesen werden kann, oder Änderungen in dem generierten Code relativ zu zuvor generiertem Code, der generiert wurde aus dem graphischen Modell (1214) durch den Codegenerator (104, 162, 168,1210, 1268).Procedure according to Claim 20 , the analysis (108, 110, 112, 422, 424, 426, 442) identifying one of the following: violations of a coding standard, compilation errors, errors in the program code (106, 1150, 1212) that part of the generated code from a Code Evidence (444) cannot be proven, or changes in the generated code relative to previously generated code generated from the graphical model (1214) by the code generator (104, 162, 168, 1210, 1268). Verfahren nach einem der Ansprüche 20 bis 21, wobei die Analyse (108, 110, 112, 422, 424, 426, 442) von einem Codebeweiser (444) ausgeführt wird, der Fehler in dem Teil des generierten Codes identifiziert.Procedure according to one of the Claims 20 to 21st , wherein the analysis (108, 110, 112, 422, 424, 426, 442) is performed by a code provider (444) that identifies errors in the portion of the generated code. Verfahren nach einem der Ansprüche 20 bis 22, wobei die Analyse (108, 110, 112, 422, 424, 426, 442) eine statische Analyse (110, 424) ist.Procedure according to one of the Claims 20 to 22 , wherein the analysis (108, 110, 112, 422, 424, 426, 442) is a static analysis (110, 424). Verfahren nach einem der Ansprüche 20 bis 22, wobei die Analyse (108, 110, 112, 422, 424, 426, 442) eine dynamische Analyse (112, 426) ist.Procedure according to one of the Claims 20 to 22 , wherein the analysis (108, 110, 112, 422, 424, 426, 442) is a dynamic analysis (112, 426). Verfahren nach einem der Ansprüche 20 bis 24, wobei die andere Eingangsquelle (102, 222) von einem Typ, der kein graphisches Modell (1214) ist, das Generieren des generierten Codes durch den Codegenerator (104, 162, 168, 1210, 1268) beeinflusst.Procedure according to one of the Claims 20 to 24th , wherein the other input source (102, 222) of a type that is not a graphic model (1214) influences the generation of the generated code by the code generator (104, 162, 168, 1210, 1268). Nichttransitorisches computerlesbares Speichermedium, welches Anweisungen speichert, die von einem Prozessor (1258, 1260) einer Rechenvorrichtung (1202) ausführbar sind, welche den Prozessor (1258, 1260) veranlasst, ein Verfahren nach einem der Ansprüche 1 bis 25 auszuführen.A non-transitory computer-readable storage medium that stores instructions that can be executed by a processor (1258, 1260), a computing device (1202) that causes the processor (1258, 1260), a method according to one of the Claims 1 to 25th to execute.
DE102019008598.1A 2018-12-11 2019-12-11 Identification and visualization of associations between code generated by a model and sources that influence code generation Pending DE102019008598A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862778101P 2018-12-11 2018-12-11
US62/778,101 2018-12-11
US16/383,132 US10915302B2 (en) 2018-12-11 2019-04-12 Identification and visualization of associations among code generated from a model and sources that affect code generation
US16/383,132 2019-04-12

Publications (1)

Publication Number Publication Date
DE102019008598A1 true DE102019008598A1 (en) 2020-06-18

Family

ID=70859452

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019008598.1A Pending DE102019008598A1 (en) 2018-12-11 2019-12-11 Identification and visualization of associations between code generated by a model and sources that influence code generation

Country Status (1)

Country Link
DE (1) DE102019008598A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721977A (en) * 2021-08-18 2021-11-30 昆明理工大学 Method and device for processing programming data
CN116185373A (en) * 2023-04-26 2023-05-30 上海金仕达软件科技股份有限公司 Micro-service infrastructure generation method based on static code analysis

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721977A (en) * 2021-08-18 2021-11-30 昆明理工大学 Method and device for processing programming data
CN113721977B (en) * 2021-08-18 2024-04-26 昆明理工大学 Programming data processing method and device
CN116185373A (en) * 2023-04-26 2023-05-30 上海金仕达软件科技股份有限公司 Micro-service infrastructure generation method based on static code analysis
CN116185373B (en) * 2023-04-26 2023-09-01 上海金仕达软件科技股份有限公司 Micro-service infrastructure generation method based on static code analysis

Similar Documents

Publication Publication Date Title
DE60011479T2 (en) XML ROBOT
Benavides et al. Using Constraint Programming to Reason on Feature Models.
DE69518446T2 (en) Type-safe framework for dynamically expandable objects
DE69622305T2 (en) Process and device for an optimizing compiler
DE69316210T2 (en) TROUBLESHOOTING THAT CONTAINS THE ASSOCIATION BETWEEN THE SOURCE PROGRAM AND OPTIMIZED OBJECT CODE.
EP1723513B1 (en) Method for configuring a computer program
DE102019003851A1 (en) Systems and methods for the automatic realization of models for co-simulation
US20110131253A1 (en) System and Method of Schema Matching
DE102011101920A1 (en) Vehicle system modeling systems and methods
US10915302B2 (en) Identification and visualization of associations among code generated from a model and sources that affect code generation
DE102014210854A1 (en) A computer-implemented method and signal sequence for a program for reusing executable software configurations for software systems, as well as a computer system and a computer program with program code for performing the method
DE102016110195A1 (en) Generate code in statically typed programming languages for a dynamically typed array-based language
DE112018006377T5 (en) MERGING SPARELY OCCUPIED KERNELS TO APPROXIMATE A FULL KERNEL OF A NEURONAL FOLDING NETWORK
DE102004043788A1 (en) Personal computing device executes program based on individual programming code to provide predefined code and to define direct relation between input and output of data by user and attribute of classes in input model
DE69907714T2 (en) COMPONENT-BASED SOURCE CODE GENERATOR METHOD
DE102019008598A1 (en) Identification and visualization of associations between code generated by a model and sources that influence code generation
DE102010033861A1 (en) On a formal analysis based development of requirements specifications
DE10038499A1 (en) Formal verifying method for development in data processor involves executing verification algorithm using one limit of signal envelope, and limiting state-space search by using verification algorithm
DE102021116315A1 (en) Method for merging architectural information
Bajaj et al. A visual notation for succinct program traces
DE202016008006U1 (en) Generation of integration tests on a small scale
DE10324594A1 (en) Method for providing improved simulation capabilities of a dynamic system outside of the original modeling environment
DE112017002779T5 (en) Format specific data processing operations
Järvi et al. Property models: from incidental algorithms to reusable components
CN111949267B (en) UI front end generation method and device

Legal Events

Date Code Title Description
R012 Request for examination validly filed