DE202017106504U1 - Automatisiertes Schnittstellendesign - Google Patents

Automatisiertes Schnittstellendesign Download PDF

Info

Publication number
DE202017106504U1
DE202017106504U1 DE202017106504.9U DE202017106504U DE202017106504U1 DE 202017106504 U1 DE202017106504 U1 DE 202017106504U1 DE 202017106504 U DE202017106504 U DE 202017106504U DE 202017106504 U1 DE202017106504 U1 DE 202017106504U1
Authority
DE
Germany
Prior art keywords
design
user interface
tree
node
candidate
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.)
Active
Application number
DE202017106504.9U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202017106504U1 publication Critical patent/DE202017106504U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Nichtflüchtiges computerlesbares Medium mit darauf gespeicherten Anweisungen, die dann, wenn sie ausgeführt werden, veranlassen, dass eine Computervorrichtung die Schritte durchführt: Empfangen einer Vielzahl von Funktionen und von Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich auf einander beziehen, um eine Anwenderschnittstelle automatisch zu erzeugen; Erzeugen eines Baums von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, wobei jeder dazwischenliegende Knoten des Baums ein teilweises Anwenderschnittstellendesign darstellt und wobei jeder Zweig bzw. jede Verzweigung des Baums eine Designaktion darstellt, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert; Bestimmen, automatisch ohne Anwenderintervention, eines Kandidaten-Anwenderschnittstellendesigns, das die empfangene Vielzahl von Funktionen implementiert, durch automatisches Durchlaufen des Baums entlang einem Durchlaufpfad von einem Wurzelknoten des Baums zu einem Blattknoten des Baums und Ausführen von jeweiligen Designaktionen, die durch Verzweigungen entlang dem Durchlaufpfad dargestellt sind; Berechnen, automatisch ohne Anwenderintervention, eines Designwerts für das Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns; Wiederholen, für eine vorbestimmte Anzahl von Iterationen, der Bestimmungs- und Berechnungsschritte, um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Designwerten zu erzeugen; Auswählen, automatisch ohne Anwenderintervention, eines ausgewählten Kandidaten-Schnittstellendesigns aus der Vielzahl von Kandidaten-Schnittstellendesigns basierend auf der Vielzahl von Designwerten; und Erzeugen der Anwenderschnittstelle basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign.

Description

  • HINTERGRUND
  • Entwicklung und Erstellung von Anwenderschnittstellen sind oft zeitaufwendig. Eine Automatisierung von Entwicklungen bzw. Designs von Anwenderschnittstellen ist komplex, verwendet feste Regeln und ist schwierig ohne signifikante Kosten zu kalkulieren.
  • Um als Gebrauchsmuster geschützt zu werden und Gegenstand des Gebrauchsmusters zu sein, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren. In einem Fall, in welchem die Beschreibung auf Verfahren Bezug nimmt, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen darzustellen, für welche mit den beigefügten Ansprüchen Schutz gesucht wird.
  • ZUSAMMENFASSUNG
  • Die Fachgebietstechnologie stellt ein System und ein computerimplementiertes Verfahren zum Automatisieren von Anwenderschnittstellendesigns zur Verfügung. Bei einigen Implementierungen umfasst ein Verfahren ein Empfangen, für eine zu erzeugende Anwenderschnittstelle, einer Vielzahl von Funktionen und von Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich aufeinander beziehen, ein Erzeugen eines Baums von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, wobei jeder dazwischenliegende Koten des Baums ein teilweises Anwenderschnittstellendesign repräsentiert und wobei jeder Zweig des Baums eine Designaktion repräsentiert, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert, ein Bestimmen einer Vielzahl von Kandidaten-Anwenderschnittstellendesigns, die jeweils die empfangene Vielzahl von Funktionen implementieren durch Durchlaufen des Baums entlang mehrerer Traversierungspfade bzw. Durchlaufpfade von einem Wurzelknoten des Baums zu jeweiligen Blattknoten des Baums und Ausführen jeweiliger Designaktionen, die durch Zweige repräsentiert sind, entlang der Durchlaufpfade, ein Auswählen eines ausgewählten fertiggestellten Schnittstellendesigns aus der Vielzahl von fertiggestellten Schnittstellendesigns basierend auf einem vorbestimmten Auswahlalgorithmus und ein Erzeugen der Anwenderschnittstelle basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign.
  • Das Verfahren kann weiterhin ein Erzeugen eines jeweiligen Kandidaten-Anwenderschnittstellendesigns umfassen, das die empfangene Vielzahl von Funktionen implementiert durch ein Durchlaufen des Baums entlang einem jeweiligen Durchlaufpfad vom Wurzelknoten des Baums zu einem jeweiligen Blattknoten des Baums und ein Ausführen von jeweiligen Designaktionen, die durch Zweige entlang dem Durchlaufpfad repräsentiert sind, ein Berechnen einer Design-Auswertung für das jeweilige Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des jeweiligen Kandidaten-Anwenderschnittstellendesigns unter Verwendung eines vorbestimmten Auswertungsalgorithmus, ein Wiederholen des Erzeugungs- und Berechnungsschritts, um die Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Design-Auswertungen zu erzeugen, und ein Auswählen des ausgewählten fertiggestellten Schnittstellendesigns aus der Vielzahl von fertiggestellten Schnittstellendesigns basierend auf der Vielzahl von Design-Auswertungen. Andere Aspekte enthalten entsprechende Systeme, Vorrichtungen und Computerprogrammprodukte zur Implementierung des computerimplementierten Verfahrens.
  • Bei einer oder mehreren Implementierungen umfasst das System einen oder mehrere Prozessoren und einen Speicher, der darauf gespeicherte Anweisungen umfasst, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehrere Prozessoren Operationen durchführen. Bei einigen Implementierungen umfassen die Operationen ein Empfangen, für eine zu erzeugende Anwenderschnittstelle, einer Vielzahl von Funktionen und von Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich auf einander beziehen, ein Erzeugen eines Baums von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, wobei jeder dazwischenliegende Knoten des Baums ein teilweises Anwenderschnittstellendesign repräsentiert und wobei jeder Zweig des Baums eine Designaktion repräsentiert, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert, ein Bestimmen eines Kandidaten-Anwenderschnittstellendesigns, das die empfangene Vielzahl von Funktionen implementiert durch Durchlaufen des Baums entlang einem Traversierungspfad bzw. Durchlaufpfad von einem Wurzelknoten des Baums zu einem Blattknoten des Baums und Ausführen von jeweiligen Designaktionen, die durch Zweige repräsentiert sind, entlang dem Durchlaufpfad, ein Berechnen einer Design-Auswertung für das Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns unter Verwendung eines vorbestimmten Algorithmus, ein Wiederholen des Bestimmens und Berechnens, um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und einer entsprechenden Vielzahl von Design-Auswertungen zu erzeugen, ein Auswählen eines ausgewählten fertiggestellten Schnittstellendesigns aus der Vielzahl von fertiggestellten Schnittstellendesigns basierend auf der Vielzahl von Design-Auswertungen und ein Erzeugen der Anwenderschnittstelle basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign. Andere Aspekte enthalten entsprechende Verfahren, Vorrichtungen und Computerprogrammprodukte zur Implementierung der Operationen.
  • Bei einer oder mehreren Implementierungen hat ein nichtflüchtiges computerlesbares Medium Anweisungen darauf gespeichert, die dann, wenn sie ausgeführt werden, veranlassen, dass eine Computervorrichtung ein Verfahren durchführt, das umfasst: ein Empfangen, für eine zu erzeugende Anwenderschnittstelle, einer Vielzahl von Funktionen und von Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich aufeinander beziehen, ein Erzeugen eines Baums von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, wobei jeder dazwischenliegende Knoten des Baums ein teilweises Anwenderschnittstellendesign repräsentiert und wobei jeder Zweig des Baums eine Designaktion repräsentiert, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert, ein Bestimmen eines Kandidaten-Anwenderschnittstellendesigns, das die empfangene Vielzahl von Funktionen implementiert durch Durchlaufen des Baums entlang einem Traversierungspfad bzw. Durchlaufpfad von einem Wurzelknoten des Baums zu einem Blattknoten des Baums und Ausführen von jeweiligen Designaktionen, die durch Zweige repräsentiert sind, entlang dem Durchlaufpfad, ein Berechnen einer Design-Auswertung für das Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns unter Verwendung eines vorbestimmten Algorithmus, ein Wiederholen, für eine vorbestimmte Anzahl von Iterationen, der Bestimmungs- und Berechnungsschritte, um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Design-Auswertungen zu erzeugen, ein Auswählen eines ausgewählten fertiggestellten Schnittstellendesigns aus der Vielzahl von fertiggestellten Schnittstellendesigns basierend auf der Vielzahl von Design-Auswertungen und ein Erzeugen der Anwenderschnittstelle basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign. Andere Aspekte enthalten entsprechende Verfahren, Systeme, Vorrichtungen und Computerprogrammprodukte zur Implementierung des maschinenlesbaren Mediums.
  • Es wird verstanden, dass andere Konfigurationen der Fachgebietstechnologie Fachleuten auf dem Gebiet ohne weiteres aus der folgenden detaillierten Beschreibung offensichtlich werden, wobei verschiedene Konfigurationen der Fachgebietstechnologie anhand einer Illustration gezeigt und beschrieben sind. Wie es realisiert werden wird, ist die Fachgebietstechnologie fähig zu anderen und unterschiedlichen Konfigurationen und sind ihre mehreren Details zu einer Modifikation bezüglich verschiedener anderer Aspekte fähig, und das alles, ohne vom Schutzumfang der Fachgebietstechnologie abzuweichen. Demgemäß sind die Zeichnungen und die detaillierte Beschreibung bezüglich der Art als illustrativ und nicht als beschränkend anzusehen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Eine detaillierte Beschreibung wird unter Bezugnahme auf die beigefügten Zeichnungen erstellt werden:
  • 1 zeigt eine beispielhafte Designerschnittstelle für eine automatisierte Erzeugung einer schließlichen Anwenderschnittstelle basierend auf Kandidaten-Anwenderschnittstellendesigns.
  • 2 zeigt eine beispielhafte abgekürzte Serie von Design-"Aktionen", die in einer fertiggestellten Anwenderschnittstelle für eine Ziel-Computervorrichtung resultieren.
  • 3 zeigt einen beispielhaften Designbaum, der einen Designraum von allen möglichen Schnittstellen repräsentiert, die bei einem beispielhaften schließlichen Anwenderschnittstellendesign implementiert sein können.
  • 4A4D zeigen Beispiele von schließlichen Anwenderschnittstellen, die durch die beispielhafte Designerschnittstelle erzeugt sind.
  • 5 zeigt einen zweiten beispielhaften Prozess für eine automatisierte Erzeugung einer schließlichen Anwenderschnittstelle basierend auf Kandidaten-Anwenderschnittstellendesigns.
  • 6 ist ein Diagramm, das ein beispielhaftes elektronisches System für eine automatisierte Erzeugung einer schließlichen Anwenderschnittstelle basierend auf Kandidaten-Anwenderschnittstellendesigns darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Es ist beabsichtigt, dass die nachstehend dargelegte detaillierte Beschreibung eine Beschreibung von verschiedenen Konfigurationen der Fachgebietstechnologie ist, und es ist nicht beabsichtigt, dass sie die einzigen Konfigurationen darstellt, in welchen die Fachgebietstechnologie ausgeführt werden kann. Die beigefügten Zeichnungen sind hierin enthalten und bilden einen Teil der detaillierten Beschreibung. Die detaillierte Beschreibung enthält spezifische Details zum Zwecke eines Bereitstellens eines sorgfältigen Verstehens der Fachgebietstechnologie. Jedoch wird es Fachleuten auf dem Gebiet klar und offensichtlich werden, dass die Fachgebietstechnologie nicht auf die spezifischen Details beschränkt ist, die hierin dargelegt sind, und sie ohne diese spezifischen Details ausgeführt werden kann. In einigen Fällen sind wohlbekannte Strukturen und Komponenten in Blockdiagrammform gezeigt, um ein Verschleiern der Konzepte der Fachgebietstechnologie zu vermeiden.
  • Die Fachgebietstechnologie stellt ein automatisiertes Anwenderschnittstellendesignsystem zur Verfügung, das eine Anwenderschnittstelle basierend auf einer Spezifikation schnell erzeugt. Zuerst erfasst eine Designschnittstelle (z.B. vom Anwender) eine Designspezifikation, die eine Vielzahl von Funktionen enthält, die in der zu erzeugenden Anwenderschnittstelle zu implementieren sind, und Beziehungsinformation, die beschreibt, wie die Funktionen sich aufeinander beziehen. Die Designspezifikation kann in der Form einer Hierarchie von Gruppen sein, wobei jede Gruppe eine oder mehrere Zustandsvariablen, Befehle und/oder Textinformation umfasst. Die Beziehungsinformation kann die Hierarchie selbst enthalten.
  • Wenn die Designspezifikation einmal erfasst worden ist, erzeugt das System der Fachgebietstechnologie eine Datenstruktur von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, die in der Designspezifikation enthalten ist. Die Datenstruktur kann ein "Designbaum" sein, der Zweige und Knoten enthält, wobei der Wurzelknoten die Designspezifikation darstellt und wobei jeder Blattknoten ein Kandidaten-Anwenderschnittstellendesign darstellt. Jeder dazwischenliegende Knoten des Designbaums stellt ein teilweises Anwenderschnittstellendesign dar und jeder Zweig des Baums stellt eine Designaktion dar, die das teilweise Anwenderschnittstellendesign erzeugt und modifiziert. Jeder Zweig eines Knotens auf einer gegebenen Knotenebene innerhalb des Baums entspricht einer Designaktion vom selben Typ.
  • Mehrere Typen von Designaktionen können implementiert sein, wobei Knoten auf jeder Knotenebene des Designbaums unterschiedliche Typen von Designaktionen implementieren. Beispielsweise kann jeder Zweig eines ersten Knotens auf einer ersten Knotenebene einer Designaktion entsprechen, die eine unterschiedliche Vereinigungs- bzw. Mischoperation an der Hierarchie von Gruppen durchführt, die in der Designspezifikation zur Verfügung gestellt sind. Gemäß einem Beispiel können eine erste Gruppe und eine zweite Gruppe in einer Kind-Eltern-Beziehung sein und kann die erste Gruppe in die zweite Gruppe vereinigt bzw. gemischt sein. Jeder Zweig eines zweiten Knotens auf einer zweiten Knotenebene kann einer Designaktion entsprechen, die einen Widget-Typ für eine jeweilige Funktion der Vielzahl von Funktionen auswählt. Wenn der Zweig des zweiten Knotens ausgewählt ist, wird ein Widget von einem Widget-Typ für den Zweig in die erzeugte Anwenderschnittstelle platziert.
  • Der Designbaum wird entlang einem Traversierungspfad vom Wurzelknoten des Baums zu einem Blattknoten automatisch durchlaufen und jeweilige Designaktionen, die durch Zweige entlang dem Traversierungspfad dargestellt sind, werden ausgeführt. Welche Zweige ausgewählt werden, wenn der Baum zum ersten Mal durchlaufen wird, kann zufällig bestimmt werden. Ein Anwenderschnittstellendesign wird durch die Summe von allen Designaktionen automatisch erzeugt, die entlang dem Traversierungspfad ausgewählt sind.
  • Während nachfolgender Traversierungen bzw. Durchläufe des Designbaums kann ein Traversierungsalgorithmus Knoten und Zweige ignorieren, deren Kinder bereits vollständig erforscht worden sind. Um zukünftige Traversierungen bzw. Durchläufe des Baums zu führen, kann die einem Kandidaten-Anwenderschnittstellendesign zugeordnete Design-Auswertung jedem dazwischenliegenden Knoten im Durchlaufpfad zugeordnet werden, was nach oben zum Kandidaten-Anwenderschnittstellendesign führt. Die Design-Auswertung kann mit anderen Design-Auswertungen für Kandidaten-Anwenderschnittstellendesigns aggregiert werden, die unter Verwendung eines Durchlaufpfads erzeugt wurden, der den dazwischenliegenden Knoten enthält. Diesbezüglich kann, wenn der Designbaum durchlaufen wird, ein Zweig aus einer Vielzahl von Zweigen basierend auf den aggregierten Auswertungen ausgewählt werden, die den Knoten der Zweige zugeordnet sind.
  • Wenn der Traversierungsalgorithmus bzw. Durchlaufalgorithmus einen Blattknoten erreicht, ist ein Kandidaten-Anwenderschnittstellendesign bestimmt worden. Das System berechnet dann eine Design-Auswertung für das Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns unter Verwendung von einem oder mehreren vorbestimmten Auswertungsalgorithmen. Vorbestimmte Auswertungsalgorithmen können beispielsweise vorbestimmte Heuristiken in Bezug auf eine Qualität eines Anwenderschnittstellendesigns oder physiologische Modelle menschlichen Handelns enthalten.
  • Der Designbaum kann für eine Anzahl von Malen durchlaufen werden, um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Design-Auswertungen zu erzeugen. Eines der fertiggestellten Schnittstellendesigns wird dann basierend auf der Vielzahl von Design-Auswertungen ausgewählt und die Anwenderschnittstelle wird basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign erzeugt.
  • 1 zeigt eine beispielhafte Designerschnittstelle 102 zur automatisierten Erzeugung einer schließlichen Anwenderschnittstelle 104 basierend auf Kandidaten-Anwenderschnittstellendesigns 106 gemäß einem oder mehreren Aspekten der Fachgebietstechnologie. Während eines Betriebs einer Computervorrichtung 108 werden ausführbare Anweisungen 110 in eine Laufzeitumgebung 112 geladen und ausgeführt. Die Anweisungen 110 erzeugen dann, wenn sie ausgeführt werden, eine Designerschnittstelle 102 und können eine Anzahl von Operationen an Daten durchführen, die zur Anzeige in der Designerschnittstelle 102 zur Verfügung gestellt sind.
  • Ausführbare Anweisungen 110 können, als Teil der Designerschnittstelle 102, eine automatisierte Designschnittstelle 114 implementieren, die Eingangsdaten von einem Anwender empfängt und automatisch eine schließliche Anwenderschnittstelle 104 basierend auf einer Reihe von algorithmischen Operationen erzeugt. Gemäß einigen Implementierungen wird eine Designspezifikation 116 anhand einer Schnittstelle für ein Hochladen 118 zur Designschnittstelle 102 hochgeladen. Zusätzlich oder bei der Alternative kann eine Eingabe mittels einer Texteingabe und/oder Menüauswahlen 120 empfangen werden, um eine Designspezifikation 116 zu definieren. Die Designspezifikation 116 kann beispielsweise eine Vielzahl von Funktionen enthalten, für die es bestimmt ist, dass sie in der schließlichen Anwenderschnittstelle 104 implementiert sind, und Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich aufeinander beziehen. Die Beziehungsinformation kann in einer Form einer Hierarchie von Gruppen empfangen werden, wobei jede Gruppe eines oder mehreres von einer Zustandsvariablen, einem Befehl und Textinformation umfasst.
  • Die Spezifikation 116 kann in einer Sprache geschrieben sein, die auf z.B. der PUC-Spezifikationssprache basiert, die beschrieben ist von Jeffrey Nichols und Brad A. Myers, Creating a lightweight user interface description language: An overview and analysis of the personal universal controller project, ACM Trans. Comput.-Hum. Interact. (2009), 16 (4). 1–37. 10.1145/1614390.1614392, wovon der Gegenstand durch Bezugnahme enthalten ist. Wie die PUC-Sprache kann die Spezifikation 116 eine Hierarchie von Gruppen enthalten, die Zustandsvariable oder Befehle enthalten können. Zustandsvariablen können Typen haben, wie beispielsweise einen Booleschen Typ oder einen Kettentyp. Textlabels können für die meisten Elemente in der Sprache spezifiziert werden.
  • Die automatisierte Designschnittstelle 114 enthält Software (z.B. als Teil von ausführbaren Anweisungen 110), die basierend auf der Designspezifikation 116 einen Designbaum 122 von Designaktionen erzeugen kann. Der Designbaum 122 kann Kandidaten-Anwenderschnittstellendesigns 106 basierend auf Designaktionen erzeugen, die sich in Reaktion auf unterschiedliche Durchlaufpfade des Designbaums und/oder einer mit der Designerschnittstelle 102 assoziierten Eingabe ändern. Jeder dazwischenliegende Knoten des Baums stellt ein teilweises Anwenderschnittstellendesign dar und jeder Zweig des Baums stellt ein Designaktion dar, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert.
  • Die ausführbaren Anweisungen 110 können eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns 106 und eine entsprechende Vielzahl von Design-Auswertungen für Designs bestimmen. Jedes Kandidatendesign 106 stellt eine fertiggestellte (Prototyp-)Anwenderschnittstelle dar, die die Funktionen der empfangenen Spezifikation 116 implementiert. Um ein jeweiliges Kandidaten-Schnittstellendesign zu erzeugen, wird der Baum entlang einem anderen Pfad von einem Wurzelknoten des Baums zu einem Blattknoten des Baums durchlaufen und werden jeweilige Designaktionen, die durch Zweige entlang dem Durchlaufpfad dargestellt sind, ausgeführt. Diesbezüglich stellt jeder Zweig eine potentielle Aktion dar, die durchgeführt wird, um die Anwenderschnittstelle 104 zu entwickeln, stellen Knoten innerhalb des Baums teilweise erstellte Schnittstellen dar und stellt jeder Blattknoten im Baum eine fertiggestellte Anwenderschnittstelle dar. Beispielsweise könnte ein Typ einer Aktion ein bestimmtes UI-Widget, wie beispielsweise eine Taste, auf einem Bildschirm platzieren, um eine benötigte Funktion darzustellen. Eine Design-Auswertung wird für jedes Kandidaten-Anwenderschnittstellendesign 116 basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns unter Verwendung eines vorbestimmten Auswertungsalgorithmus berechnet. Auswertungseinheiten werden verwendet, um die Qualität der Kandidaten-Schnittstellendesigns in eine Reihenfolge zu bringen, und können auf Heuristiken, Modellen menschlichen Verhaltens oder beidem basieren.
  • Der Baum kann für eine vorbestimmte Anzahl von Iterationen (z.B. zehn, zwanzig, einhundert, eintausend, etc.) durchlaufen werden, bis eine Design-Auswertung mit vorbestimmter Schwelle erreicht ist oder bis jeder mögliche Pfad durchlaufen worden ist. Wenn die Kandidaten-Anwenderschnittstellendesigns 116 einmal bestimmt worden sind, wird ein ausgewähltes fertiggestelltes Schnittstellendesign aus den Kandidaten-Schnittstellendesigns basierend auf der Vielzahl von Design-Auswertungen ausgewählt und erzeugen die Anweisungen 110 die Anwenderschnittstelle 104 basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign.
  • 2 zeigt eine beispielhafte abgekürzte Serie von Design-"Aktionen" 200, die in einer fertiggestellten Anwenderschnittstelle für eine Ziel-Computervorrichtung 202 resultieren, gemäß verschiedenen Aspekten der Fachgebietstechnologie. Beim gezeigten Beispiel wird eine Spezifikation 116 empfangen 204, wird ein Anwenderschnittstellen-Bildschirm basierend auf z.B. Funktionen in der Spezifikation aufgeteilt 206, werden Textfelder auf dem Schnittstellenbildschirm positioniert 208 und werden andere Aktionen 210 gemäß Designauswahlen durchgeführt und implementiert, die während eines Durchlaufens des Designbaums 122 getroffen sind. Bei einem schließlichen Schritt 212 können schließliche Designauswahlen, wie beispielsweise eine Authentifizierung, implementiert sein. Die schließliche Anwenderschnittstelle 104 kann dann durch eine Designerschnittstelle 102 auf der Computervorrichtung 108 angezeigt werden. Die beispielhaften Designaktionen 200 sind repräsentativ für nur eine mögliche Designlösung und die Fachgebietstechnologie ist als solches nicht beschränkt. Unterschiedliche Designauswahlen werden letztlich zu irgendeiner Anzahl von unterschiedlichen Anwenderschnittstellendesigns führen. Anwenderschnittstellen, die durch die Fachgebietstechnologie bestimmt sind, können beispielsweise Email-Clients, FTP-Clients, Clients für eine gemeinsame Nutzung von Fotos, Podcast-Anwendungen, Druckerdialoge, Anwendungen für Listen für das, was zu tun ist, Musikanwendungen, etc. enthalten.
  • 3 zeigt einen beispielhaften Designbaum 122, der einen Designraum von allen möglichen Schnittstellen darstellt, die bei einem beispielhaften schließlichen Anwenderschnittstellendesign implementiert sein können, gemäß verschiedenen Aspekten der Fachgebietstechnologie. Innerhalb des Designbaums 122 stellt jeder Knoten 302 mit Kindern ein teilweises Design einer Anwenderschnittstelle dar, stellen Blattknoten 304 ein fertiggestelltes Kandidaten-Anwenderschnittstellendesign 106 dar und stellt jeder Zweig 306 eine bestimmte Designaktion 308 dar, die an dieser Stelle bei einem Durchlaufen des Baums durchgeführt wird. Der Designbaum 122 ist als Beispiel präsentiert und eine realistische Anwendung des Baums kann in Bezug auf eine Breite und eine Tiefe viel größer sein. Die Breite des Baums kann durch die Anzahl von bei jedem Schritt verfügbaren Aktionen beeinflusst sein, welche in einem realistischen Szenario wesentlich sein und exponentiell anwachsen würden, wenn der Baum austreibt bzw. größer wird bzw. sich vertieft. Eine Tiefe entspricht der Anzahl von Aktionen, die durchgeführt werden, um eine schließliche Anwenderschnittstelle 104 herzustellen. Die Anzahl von Aktionen, die nötig sind, um eine Schnittstelle fertigzustellen, ist wahrscheinlich proportional zur Anzahl von Schnittstellenelementen, die beim schließlichen Design verwendet sind, was für eine komplexe Schnittstelle in den unteren tausend sein kann. Der Designbaum kann viel breiter sein als er groß ist.
  • Designaktionen
  • Eine Designaktion 308 kann irgendetwas enthalten, was ein Anwender tun könnte, um die Anwenderschnittstelle zu modifizieren, die aktuell im Aufbau ist bzw. erstellt wird. Ein Zweig 306 kann im Designbaum 122 für jede Kombination von seinen Parametern eines Aktionstyps existieren. Beispielsweise kann es für einen Widget-Zuordnungsaktionstyp einen Zweig für jedes Element in der Spezifikation geben, das noch nicht einem Widget zugeordnet ist, und einen Zweig für jeden Widget-Typ, der diesem Element zugeordnet werden könnte. Je mehr Parameteroptionen es gibt, die ein Aktionstyp hat, umso größer ist der Verzweigungsfaktor im Designbaum 122. Die Anzahl und Typen von Designaktionen, um beim Designbaum 122 zu unterstützen, können sowohl die Durchführbarkeit des Erzeugers bzw. Generators als auch die Diversität von Designs, die erzeugt werden können, beeinflussen.
  • Einige beispielhafte Designaktionstypen enthalten ein Vereinigen von Spezifikationsgruppen in eine einzige größere Gruppe, ein Auswählen eines gesamten Layout-Musters für einen Bildschirm (z.B. eine Liste oder ein Raster), ein Zuordnen eines Widgets zu einem Element in der Spezifikation, ein Platzieren eines Widgets als das nächste Element auf einem Bildschirm, ein Platzieren eines Labels auf einem Bildschirm, assoziiert mit einem Widget, und ein Vergrößern oder Verkleinern der Textgröße für ein Label oder ein Widget. Dieses und anderes ist in der Tabelle 1 nachstehend beschrieben
    Aktionstyp Beschreibung
    Gruppenvereinigung Vereinigt die Kinder einer Spezifikationsgruppe in ihre Eltern, was die Gruppe entfernt.
    Seiten-Layout Wählt entweder ein Raster- oder ein Listenstil-Layout für ein Feld.
    Geschwistertrennung Wählt, wie auf einem Bildschirm angezeigte Untergruppen zu trennen sind: Separator, Karten, etc.
    Untergruppennavigation Wählt aus, ob Untergruppen unter der obersten Ebene eine Navigation erfordern und, wenn es so ist, welchen Typ
    Textgröße Wählt eine Textgröße für ein Label oder ein Widget aus.
    Navigation der oberste Gruppe Wählt den Navigationsstil auf oberster Ebene für die Anwendung aus: Tabs, Karussell, etc.
    Widget-Typ Wählt den Widget-Typ für eine Zustandsvariable oder einen Befehl aus.
    Tabelle 1: Aktionstypen
  • Jede Knotenebene des Designbaums 122 kann einen anderen Typ von Designaktion implementieren. Gemäß verschiedenen Implementierungen entsprechen die Verzweigungen eines ersten Knotens auf einer ersten Knotenebene des Baums unterschiedlichen Designaktionen zum Vereinigen einer ersten Gruppe der Hierarchie von Gruppen in eine zweite Gruppe der Hierarchie von Gruppen. Wie es in 3 gezeigt ist, kann die Spezifikation 116 den ersten oder Wurzel-Knoten darstellen und können Gruppenvereinigungsaktionen die ersten Aktionen sein, die auf der Spezifikation 116 durchgeführt werden.
  • Die Designaktionen können beispielsweise durch die Computervorrichtung 108 oder darauf gespeicherter Designsoftware implementiert sein. Bei einigen Implementierungen können eine oder mehrere von Designaktionen weit weg von anderen Designaktionen implementiert sein, und durch einen oder mehrere unterschiedliche Prozessoren oder Computervorrichtungen. Ebenso sind die Designaktionen zu erklärenden Zwecken derart beschrieben, dass sie seriell oder linear auftreten. Jedoch können mehrere Designaktionen parallel auftreten, und Designaktionen müssen nicht in einer bestimmten Reihenfolge durchgeführt werden und/oder eine oder mehrere der Designaktionen, die hierin beschrieben sind, müssen nicht durchgeführt werden.
  • Bei einigen Implementierungen können Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums unterschiedlichen Widget-Typen für eine jeweilige Funktion der Vielzahl von Funktionen entsprechen. Diesbezüglich wählt die automatisierte Designschnittstelle 114, wenn eine jeweilige Verzweigung des zweiten Knotens durchlaufen wird, einen Widget-Typen der unterschiedlichen Widget-Typen aus, die durch die Verzweigungen des Knotens zur Verfügung gestellt sind. Demgemäß wird ein Widget von dem ausgewählten Widget-Typen in die erzeugte Anwenderschnittstelle für die jeweilige Funktion platziert, wenn die Verzweigung entsprechend dem Widget-Typ im Durchlaufpfad ist.
  • Die Verzweigungen von einem weiteren Knoten auf einer weiteren Knotenebene des Baums können unterschiedlichen Seiten-Layouts für ein Feld der Anwenderschnittstelle entsprechen. Die Seiten-Layouts können z.B. ein Gitter-Layout bzw. Raster-Layout und ein Listenstil-Layout enthalten. Eines von diesen Seiten-Layouts wird ausgewählt, wenn die Verzweigung entsprechend dem ausgewählten Seiten-Layout im Durchlaufpfad ist.
  • Die Verzweigungen von einem weiteren Knoten bei einer weiteren Knotenebene des Baums können unterschiedlichen Separatoren für ein Feld der Anwenderschnittstelle entsprechen. Wenn der Designbaum 122 durchlaufen wird, kann die automatisierte Designschnittstelle 114 unterschiedliche Untergruppen von Elementen identifizieren, um auf dem Feld der Anwenderschnittstelle angezeigt zu werden, und einen ausgewählten Separator der unterschiedlichen Separatoren für die identifizierten unterschiedlichen Untergruppen basierend auf einem Durchlauf einer Verzweigung entsprechend dem ausgewählten Separator auswählen. Demgemäß können zwei oder mehr unterschiedliche Untergruppen basierend auf dem ausgewählten Separator voneinander getrennt werden.
  • Die Verzweigungen von einem weiteren Knoten auf einer weiteren Knotenebene des Baums können vorbestimmten Navigationstypen für die Anwenderschnittstelle entsprechen. Die Navigationstypen können z.B. Navigationstabs auf einer obersten Ebene und ein Navigationskarussell auf einer obersten Ebene enthalten. Wenn der Designbaum 122 durchlaufen wird, kann die automatisierte Designschnittstelle 114 einen Navigationstypen für die Anwenderschnittstelle basierend auf einem Durchlaufen einer Verzweigung entsprechend dem ausgewählten Navigationstyp auswählen.
  • Die Designsoftware der automatisierten Designschnittstelle 114 kann einige leistungsfähige Aktionen oder viele weniger leistungsfähige Aktionen oder Layout-Komponenten in einem Anwenderschnittstellendesign implementieren. Bei einigen Implementierungen kann eine einfache leistungsfähige bzw. mächtige Aktion die einzige Aktion zum Platzieren eines gegebenen Widgets bei einer spezifischen Pixelstelle auf dem Bildschirm unterstützen. Durch mehrere koordinierte Verwendungen dieser Aktion kann das System vollständige Layouts, wie Listen und Raster bzw. Gitter, durch Platzieren jedes Widgets bei einer bestimmten Stelle erzeugen. Zusätzlich oder bei der Alternative kann eine weniger mächtige Aktion mehr Granularität bei Designauswahlen als eine mächtige Aktion enthalten, kann aber zwei Aktionen enthalten: eine, um einen Layout-Stil für einen gegebenen Bildschirm auszuwählen, wie beispielsweise eine Liste oder ein Gitter, und eine weitere, um ein Widget in dem nächsten verfügbaren offenen Raum innerhalb des Layout-Stils zu platzieren. Viele weniger mächtige Aktionen können öfter zu einem gültigen Schnittstellendesign führen. Ein Begrenzen der Größe des Designraums kann den Designbaum kleiner machen, was ermöglicht, dass die durch den Schnittstellenerzeugungsalgorithmus durchgeführte Baumerforschung vollständiger ist und weniger Zeit braucht.
  • Die automatisierte Designschnittstelle 114 kann Aktionstypen enthalten, die durch eine vorherige Aktion eingeführte Änderungen rückgängig machen. Beispielsweise kann eine "Widget löschen"-Aktion vorherige Aktionen zunichtemachen, die Widgets für Elemente in der Spezifikation erzeugten. Bei einem weiteren Beispiel wird "Schriftgröße ändern" mehrere Male auf denselben Inhalt angewendet. Vorbestimmte Aktionen und/oder Aktionstypen können in der Designraum-Markierung beauftragt sein. Die automatisierte Designschnittstelle 114 kann eine vorbestimmte Aktion implementieren, die Beschränkungen anordnet, wie beispielsweise ein Erfordern, dass Widgets Elementen in der Reihenfolge zugeordnet werden, in welcher sie in der Spezifikation erscheinen. Eine Beschränkung der Reihenfolge von Aktionen kann den Verzweigungsfaktor des Designbaums reduzieren, was Ressourcen einspart und eine Laufzeit verbessert.
  • Design als Baumsuche
  • Wie es zuvor beschrieben ist, kann der Designbaum 122 vom Wurzel- zu einem Blattknoten durchlaufen werden, was jede der Aktionen entlang dem Weg ausführt, was in einer fertiggestellten Anwenderschnittstelle resultiert. Die Schnittstelle kann gemäß einer vorbestimmten Gruppe von Prinzipien oder einem Algorithmus automatisch ausgewertet werden. Information über den Suchdurchlauf und die resultierende Schnittstelle kann gespeichert werden, um zukünftige Suchen zu führen. Die vorangehenden Schritte können wiederholt werden, bis eine Stoppbedingung erreicht ist, z.B. oft nach einer vorbestimmten Anzahl von Iterationen.
  • Auswerten von Anwenderschnittstellendesigns
  • Die automatisierte Designschnittstelle 114 kann ein Anwenderschnittstellendesign automatisch auswerten, wenn es durch die Designsoftware erzeugt ist. Auswertungsverfahren können nach jedem Durchlauf des Designbaums 122 ausgeführt werden, und ihre Ergebnisse werden verwendet, um nachfolgende Durchläufe des Baums zu führen. Bei einigen Beispielen können tausende von Auswertungen erzeugt werden, bevor ein schließliches Design ausgewählt wird.
  • Einige Auswertungsverfahren können enthalten:
    • • Einfach zu berechnende Heuristiken, die auf eine Designqualität bezogen sein können, wie beispielsweise: einen Schnittstellenbereich, der aus einem Bildschirm gescrollt wird, ein sichtbarer unbenutzter Bereich auf dem Bildschirm, eine Anzahl von Gesamtbildschirmen, etc.
    • • Die Anzahl von Iterationsschritten, die nötig sind, um zwischen Schnittstellenelemente, die als Teil einer Aufgabe verwendet sind, zu gelangen.
    • • Physiologische Modelle menschlichen Verhaltens (z.B. ein visuelles Durcheinander, eine visuelle Suche, eine Zielerlangung, eine Gittersymmetrie und eine Farbharmonie). Einige von diesen, wie beispielsweise eine Zielerlangung und eine visuelle Suche, können in Bezug auf die mit der Schnittstelle durchzuführenden Aufgaben oder basierend auf dem Gesamtdesign berechnet werden.
    • • Ein Ähnlichkeitsmaß, das einen Unterbaum und ein bekanntes Designmuster oder eine häufige Gruppierung von UI-Steuerungen vergleicht. Solche Muster und Gruppierungen von UI-Steuerungen könnten von Förderungsprojekten für existierendes Design kommen.
    • • Modelle für ein tiefes neuronales Netz, die von menschlichen Auswertungen von realen Anwenderschnittstellen trainiert sind, z.B. ähnlich einem Wertenetz.
  • Mehrere Auswertungsverfahren können gleichzeitig verwendet werden und jeweilige Auswertungswerte können mit Gewichtungsfaktoren kombiniert werden, um einen schließlichen Auswertungswert zu erhalten. Beispielsweise kann eine Reihe von heuristischen Werten mit Werten einer Auswertung für physiologische Modelle basierend auf einer visuellen Suche und einer Zielerlangung kombiniert werden. Bei einigen Implementierungen kann die automatisierte Designschnittstelle 114 einen abgestuften Auswertungsansatz verwenden, bei welchem die obersten n Ergebnisse einer Suche ausgewertet werden, um ein Endergebnis zu bestimmen. In Szenarien ohne Zeitbeschränkungen können Designs durch reale Menschen ausgewertet und bewertet werden, und zwar entweder durch Crowdsourcing-Plattformen oder in einer traditionellen Anwender-Forschungslaboreinstellung.
  • Einige beispielhafte Auswertungsalgorithmen sind nachstehend in der Tabelle 2 weiter beschrieben.
    Aktionstyp Beschreibung
    Info nicht angezeigt Strafe dafür, dass Information nicht gezeigt wird, die in der Spezifikation zur Verfügung gestellt ist (z.B. ein Wertelabel auf einem Kreisel).
    Info nicht geliefert Strafe dafür, dass Vorgabeinformation nicht in der Spezifikation gezeigt wird (z.B. ein Auswählen eines Widgets, das ein nicht spezifiziertes Label erfordert).
    # von Bildschirmen Liefert eine Beeinflussung in Richtung zu einer minimalen Anzahl von Bildschirmen.
    Maximales Scroll-Verhältnis Maximales Verhältnis über alle Bildschirme von einer UI-Bildschirmhöhe/Vorrichtungs-Bildschirmhöhe. Sanktioniert ein Scrollen
    Durchschnittliches Scroll-Verhältnis Dasselbe wie oben, aber ein Durchschnitt über alle Bildschirme. Sanktioniert auch ein Scrollen.
    Maximales nicht verwendetes Verhältnis Maximales Verhältnis über alle Bildschirme von 1 – (UI-Bildschirmbereich/Vorrichtungs-Bildschirmbereich). Sanktioniert einen nicht verwendeten Bildschirmraum.
    Durchschnittliches nicht verwendetes Verhältnis Dasselbe wie oben, aber ein Durchschnitt über alle Bildschirme. Auch nicht verwendeten Bildschirmraum.
    Horizontales Scrollen Sanktioniert eine Verwendung eines horizontalen Scrollens (ein häufiges Auftreten bei Funktasten).
    # von Schritten, um eine Aufgabe fertigzustellen Für jede Aufgabenverfolgung Zählen der Anzahl von interaktiven Schritten, um die Aufgabe fertigzustellen. Basierend auf einem Aufgabenverfolgungs ausdruck.
    Design-Inkonsistenz Für jeden Bildschirm ein Zählen von unterschiedlichen Entscheidungen, die mit derselben Eingabe getroffen werden. Beispielsweise erscheinen zwei Boolesche Zustände als ein unterschiedliches Widget (z.B. Prüfkasten und Umschalter).
    Visuelle Suche Ein Modell einer visuellen Suche.
    Durchschnittliche Suchkosten über jeden Bildschirm.
    Zielerlangung Ein auf dem Gesetz von Fitts basierendes Modell. Zählkosten einer Zielerlangung für jede Aufgabenverfolgung.
    Tabelle 2: Beispielhafte Auswertungsalgorithmen
  • Wie es zuvor beschrieben ist, wird ein Designwert für jedes Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns unter Verwendung eines vorbestimmten Auswertungsalgorithmus berechnet. Jedes Blatt 304 des Designbaums 122 kann einen oder mehrere der Auswertungsalgorithmen initiieren, die in der Tabelle 2 aufgelistet sind, um ein Kandidaten-Schnittstellendesign 106 entsprechend dem Blatt auszuwerten. Bei einigen Implementierungen können mehrere Auswertungsalgorithmen verwendet werden, um den Designwert für das Kandidaten-Anwenderschnittstellendesign zu berechnen.
  • Als ein weiteres Beispiel kann ein erster Auswertungsalgorithmus den Designwert basierend auf einer Menge der Vielzahl von Funktionen und von Beziehungsinformation, die durch ein jeweiliges Kandidaten-Anwenderschnittstellendesign 106 implementiert sind, berechnen. Ein zweiter Auswertungsalgorithmus kann identifizieren, ob das jeweilige Kandidaten-Anwenderschnittstellendesign 106 Vorgabeinformation nicht in einer empfangenen Vielzahl von Funktionen und Beziehungsinformation enthält, und den berechneten Designwert reduzieren oder erhöhen, wenn die Vorgabeinformation identifiziert wird oder nicht identifiziert wird. Ein dritter Auswertungsalgorithmus kann den Designwert basierend auf einer Menge von Bildschirmen berechnen, die in dem jeweiligen Kandidaten-Anwenderschnittstellendesign implementiert sind. Ein vierter Auswertungsalgorithmus kann den Designwert basierend auf einem Höhe-zu-Breite-Verhältnis der Bildschirme berechnen, die im jeweiligen Kandidaten-Anwenderschnittstellendesign implementiert sind. Ein fünfter Auswertungsalgorithmus kann den Designwert basierend auf ungenutztem Bildschirmraum im jeweiligen Kandidaten-Anwenderschnittstellendesign berechnen. Ein sechster Auswertungsalgorithmus kann identifizieren, ob das jeweilige Kandidaten-Anwenderschnittstellendesign ein horizontales Scrollen von einem oder mehreren Bildschirmen enthält, und den berechneten Designwert reduzieren, wenn das horizontale Scrollen identifiziert wird. Ein siebter Auswertungsalgorithmus kann eine Aufgabe basierend auf der empfangenen Vielzahl von Funktionen und Beziehungsinformation identifizieren, und einer Anzahl von Anwenderinteraktionen, die erforderlich sind, um die Aufgabe zu initiieren und fertigzustellen, und den Designwert basierend auf der identifizierten Anzahl von Anwenderaktionen berechnen. Ein achter Auswertungsalgorithmus kann eine Zahl von unterschiedlichen Entscheidungen bestimmen, die basierend auf einer selben Anwenderinteraktionseingabe getroffen werden, und den berechneten Designwert basierend auf der bestimmten Zahl reduzieren. Ein neunter Auswertungsalgorithmus kann eine Aufgabe basierend auf der empfangenen Vielzahl von Funktionen und Beziehungsinformation identifizieren und ein Ziel identifizieren, das mit der Aufgabe in einem Bildschirm des jeweiligen Kandidaten-Anwenderschnittstellendesigns assoziiert ist, eine geschätzte Menge an Zeit für einen Anwender bestimmen, um sich zu dem Ziel zu bewegen und es auszuwählen, und den Designwert basierend auf der geschätzten Menge an Zeit berechnen (und/oder einstellen).
  • Der Designwert kann basierend auf einer linearen Kombination der Auswertungsalgorithmen berechnet werden. Eine Berechnung des Designwerts, wie sie auf jeden Algorithmus angewendet wird, kann eine Berechnung eines neuen Designwerts oder eine Neuberechnung oder Einstellung eines existierenden berechneten Designwerts enthalten. Die Ergebnisse von jeder dieser Auswertungseinheiten können linear in eine gewichtete Bewertung bzw. einen gewichteten Wert kombiniert werden und die schließliche Anwenderschnittstelle 104 basierend auf dem Kandidaten-Anwenderschnittstellendesign 106 mit dem niedrigsten Wert erzeugt werden. Bei einigen Implementierungen können Gewichtungen basierend auf einem Durchführen von Experimenten manuell eingestellt werden.
  • Suchen des Designraums
  • Um eine ideale schließliche Anwenderschnittstelle 104 zu entdecken, kann eine erschöpfende Suche des Designbaums 122 unternommen werden. Zusätzlich oder alternativ kann die automatisierte Designschnittstelle 114 eine Monte-Carlo-Baumsuche (MCTS) verwenden, um Kandidaten-Schnittstellendesigns 106 zu bestimmen. Einige Nutzen bzw. Vorteile eines Verwendens von MCTS, wenn der Designbaum 122 der Fachgebietstechnologie durchlaufen wird, enthalten:
    • • Der Designbaum 122 kann inkrementell gebildet werden, was somit nicht erfordert, dass der Baum (der sehr groß sein kann) immer vollständig instanziiert wird.
    • • Der Designbaum 122 kann gemäß einer Politik asymmetrisch erforscht werden, die eine Erforschung von unbekannten Bereichen des Baums gegenüber einem Ausnutzen bekannter guter Verzweigungen ausgleicht.
    • • Die Werte von Zwischenzuständen im Baum können nicht ausgewertet werden müssen und nur der Wert von Endzuständen kann bestimmt werden. Dies kann einem Auswerten einer Kandidaten-Anwenderschnittstelle 106 entsprechen, wie es oben diskutiert ist. Viele Optimierungs- und Spielealgorithmen können eine Auswertung von Zwischenzuständen erfordern, was der Aufgabe eines Auswertens eines unfertigen Anwenderschnittstellendesigns entsprechen kann.
    • • Es kann sein, dass eine Domänenkenntnis für den Algorithmus nicht erforderlich ist, um zu arbeiten, und in dem Vorgabefall kann MCTS zufällig auswählen, wenn sie keinerlei Information hat, um ihre nächste Auswahl zu führen. Der Algorithmus kann durch Bereitstellen von Information darüber verbessert werden, welche Aktionen wahrscheinlich ertragreicher sind, basierend auf vorherigen Suchen.
  • In Fällen, in welchen ein Baum zu groß sein würde, um vollständig zu instanziieren (z.B. aufgrund von Speicherbeschränkungen), kann der Durchlaufalgorithmus eine inkrementelle Eigenschaft des MCTS-Verfahrens inkrementieren. Bei solchen Implementierungen können Teilbereiche des Designbaums gebildet werden, wie sie während der Suche erforscht werden.
  • Eine Basisimplementierung von MCTS kann die folgenden Schritte enthalten:
    • • Auswahl: Beginnend von der Wurzel aus kann eine Auswahlpolitik rekursiv angewendet werden, um zum Knoten durchzulaufen, den die Politik als am relevantesten ansieht, um sich als nächstes dorthin zu erstrecken bzw. zu expandieren. Dies kann der am dringlichsten expandierbare Knoten genannt werden.
    • • Expansion bzw. Erweiterung: Eine Aktion kann aus denjenigen ausgewählt werden, die verfügbar sind, was einen Kindknoten erzeugt, der den Baum erweitert.
    • • Simulation: Eine Simulationspolitik kann auf ein rekursives Fortfahren nach unten von dem Baum angewendet werden, bis ein Endknoten erreicht ist. Die resultierende Schnittstelle kann ausgewertet werden, um einen Designwert zu erzeugen.
    • • Rückwärtspropagierung: Der Wert kann durch den durchlaufenden Knoten zurückpropagiert (oder "zurückgefahren") werden, um ihre Statistiken zu aktualisieren, was zukünftige Auswahlen beeinflussen kann, die durch die Auswahlpolitik durchgeführt werden.
  • Der Ansatz einer oberen Vertrauensgrenze für Bäume (UCT) kann als Auswahlpolitik verwendet werden. Diesbezüglich können Knoten, die bereits besucht worden sind, zugunsten eines Erforschens von neuen Knoten ignoriert werden. Simulationspolitik kann ein zufälliges Abtasten quer über alle verfügbaren Aktionen enthalten, oder ein gewichtetes Abtasten quer über alle verfügbaren Aktionen, gelernt von vorherigen Suchergebnissen an anderen Spezifikationen. Der spätere Ansatz beeinflusst die Simulationspolitik in Bezug auf Aktionen, für die gefunden wurde, dass sie bei vorherigen Suchen von Vorteil sind.
  • Bei einigen Implementierungen kann für jeden Durchlauf das Ergebnis des gesamten Durchlaufs und ein fertiggestelltes Kandidaten-Anwenderschnittstellendesign 106 eher gesichert werden, als nur der Knoten (die Knoten), den (die) die Auswahlpolitik des Durchlaufalgorithmus zum Expandieren auswählen. Bei einigen Implementierungen werden Unterbäume, die vollständig erforscht worden sind, verfolgt und lässt der Durchlaufalgorithmus keine weiteren Durchläufe in diese Unterbäume zu. Das beste Gesamt-Schnittstellendesign, das über alle Durchläufe hinweg gefunden wird, kann verfolgt und als Ausgabe zurückgebracht werden.
  • Die Spezifikation 116 kann mit einem optionalen Präferenzabschnitt erweitert werden, der zulässt, dass Designer bevorzugte Aktionen für einen gegebenen Kontext spezifizieren. Beispielsweise kann ein Designer eine Präferenz ausdrücken, dass alle Booleschen Zustände als Funktasten anstelle von Prüfkästen ausgeführt werden sollten. Während einer Simulation können bevorzugte Aktionen ein erhöhtes Gewicht im Vergleich mit anderen Aktionen aufnehmen, was es statistisch sehr wahrscheinlich macht, dass die bevorzugte Aktion unter ihren Kollegen zuerst erforscht werden wird. Wenn die Präferenz in einer gut (niedrig) bewerteten Schnittstelle resultiert, dann ist es wahrscheinlich, dass Alternativen, die diese Präferenz enthalten, fortgesetzt durch MCTS erforscht werden. Es gibt noch eine Chance, dass eine bessere Option gefunden werden kann, in welchem Fall die Präferenz unberücksichtigt werden kann. Zusätzlich oder alternativ können Kandidaten-Anwenderschnittstellendesigns einen geringen Bonus gegenüber ihrem Wert empfangen, wenn eine Präferenz enthalten ist. Dieser Bonus kann enthalten sein, um eine Schwelle hinzuzufügen, über welche alternative Designs einen Vorteil zur Verfügung stellen müssen, damit die Präferenz ignoriert wird.
  • 4 zeigt Beispiele von schließlichen Anwenderschnittstellen 104, die durch die beispielhafte Designerschnittstelle 102 der Fachgebietstechnologie erzeugt sind. 4A zeigt einen Druckerdialog, 4B zeigt eine Klassenraumpräsentation, 4C zeigt eine Musikanwendung und 4D zeigt eine Anwendung für ein gemeinsames Nutzen von Fotos. Die beispielhaften Schnittstellen wurden durch zufälliges Erzeugen einer Spezifikation 116 erzeugt, wovon eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns 106 unter Verwendung der Designerschnittstelle 102 bestimmt wurde, und dann die gezeigten Schnittstellen basierend auf Designwerten ausgewählt sind, die für jedes Kandidaten-Schnittstellendesign 106 erzeugt sind.
  • 5 zeigt einen zweiten beispielhaften Prozess für eine erweiterte Erzeugung einer schließlichen Anwenderschnittstelle basierend auf Kandidaten-Anwenderschnittstellendesigns gemäß Aspekten der Fachgebietstechnologie. Zu Erklärungszwecken sind die verschiedenen Blöcke des beispielhaften Prozesses 400 hierin beschrieben unter Bezugnahme auf die 13 und die Komponenten und/oder Prozesse, die hierin beschrieben sind. Der eine oder die mehreren der Blöcke des Prozesses 500 können beispielsweise durch die Computervorrichtung 108 implementiert sein, die einen Prozessor und andere Komponenten enthält, die durch die Vorrichtung 108 verwendet sind. Bei einigen Implementierungen können einer oder mehrere der Blöcke weit weg von anderen Blöcken implementiert sein, und durch einen oder mehrere unterschiedliche Prozessoren oder Vorrichtungen. Weiterhin sind zu Erklärungszwecken die Blöcke des beispielhaften Prozesses 500 derart beschrieben, dass sie seriell oder linear auftreten. Jedoch können mehrere Blöcke des beispielhaften Prozesses 500 parallel auftreten. Zusätzlich müssen die Blöcke des beispielhaften Prozesses 500 nicht in der gezeigten Reihenfolge durchgeführt werden und/oder müssen einer oder mehrere der Blöcke des beispielhaften Prozesses 500 nicht durchgeführt werden.
  • Beim gezeigten beispielhaften Ablaufdiagramm empfängt die automatisierte Designschnittstelle 114 für eine zu erzeugende Anwenderschnittstelle eine Vielzahl von Funktionen und Beziehungsinformation, die beschriebt, wie die Vielzahl von Funktionen sich aufeinander beziehen (502). Die Beziehungsinformation kann in einer Form einer Hierarchie von Gruppen empfangen werden, wobei jede Gruppe eines oder mehreres von einer Zustandsvariablen, eines Befehls und Textinformation umfasst.
  • Die automatisierte Designschnittstelle 114 erzeugt einen Baum 122 von Designaktionen (z.B. automatisch) basierend auf der Vielzahl von Funktionen und der Beziehungsinformation (504). Jeder dazwischenliegende Knoten des Baums kann ein teilweises Anwenderschnittstellendesign darstellen und jede Verzweigung des Baums stellt eine Designaktion dar, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert.
  • Jede Knotenebene des Designbaums 122 kann einen anderen Typ einer Designaktion darstellen. Jeder Knoten auf einer jeweiligen Knotenebene kann denselben oder einen ähnlichen Typ von Designaktion für einen anderen Durchlaufpfad des Baums 122 durchführen. Zu erklärenden Zwecken sind die Designaktionen in Bezug auf einen ersten oder einen zweiten Knoten jeweils auf einer ersten und einer zweiten Knotenebene diskutiert. Die zweite Knotenebene muss jedoch nicht ein nachfolgender Knoten gegenüber dem ersten Knoten sein oder auf einer Knotenebene direkt unter oder über dem ersten Knoten sitzen.
  • Gemäß verschiedenen Implementierungen können die Verzweigungen 306 eines ersten Knotens auf einer ersten Knotenebene des Baums unterschiedlichen Designaktionen zum Vereinigen einer ersten Gruppe der Hierarchie von Gruppen in eine zweite Gruppe der Hierarchie von Gruppen entsprechen. Die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums entsprechen unterschiedlichen Widget-Typen für eine jeweilige Funktion der Vielzahl von Funktionen. Bei diesem Beispiel kann die automatisierte Designschnittstelle 114 einen ausgewählten Widget-Typen der unterschiedlichen Widget-Typen basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Widget-Typen auswählen und ein Widget des ausgewählten Widget-Typen in die erzeugte Anwenderschnittstelle für die jeweilige Funktion platzieren, wenn die Verzweigung entsprechend dem Widget-Typ im Durchlaufpfad des ausgewählten Kandidaten-Anwenderschnittstellendesigns ist.
  • Die Verzweigungen 306 eines zweiten Knotens auf einer zweiten Knotenebene des Baums entsprechen unterschiedlichen Seiten-Layouts für ein Feld der Anwenderschnittstelle, wobei die Seiten-Layouts ein Gitter-Layout und ein Listenstil-Layout umfassen. Diesbezüglich kann die automatisierte Designschnittstelle 114 ein ausgewähltes Seiten-Layout von unterschiedlichen Seiten-Layouts basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Seiten-Layout auswählen.
  • Die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums entsprechen unterschiedlichen Separatoren für ein Feld der Anwenderschnittstelle. Diesbezüglich kann die automatisierte Designschnittstelle 114 unterschiedliche Untergruppen von Elementen identifizieren, um auf dem Feld der Anwenderschnittstelle angezeigt zu werden, und einen ausgewählten Separator der unterschiedlichen Separatoren für die identifizierten unterschiedlichen Untergruppen basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Separator auswählen. Gemäß verschiedenen Implementierungen sind zwei oder mehr der identifizierten unterschiedlichen Untergruppen basierend auf dem ausgewählten Separator voneinander getrennt.
  • Die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums können vorbestimmten Navigationstypen für die Anwenderschnittstelle entsprechen. Diesbezüglich kann die automatisierte Designschnittstelle 114 einen ausgewählten Navigationstyp der vorbestimmten Navigationstypen für die Anwenderschnittstelle basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Navigationstyp auswählen. Der ausgewählte Navigationstyp kann aus einer Vielzahl von vorbestimmten Navigationstypen einer obersten Ebene mit Navigationstabs einer obersten Ebene und einem Navigationskarussell einer obersten Ebene ausgewählt werden.
  • Die automatisierte Designschnittstelle 114 bestimmt (z.B. automatisch) ein Kandidaten-Anwenderschnittstellendesign 106, das die empfangene Vielzahl von Funktionen implementiert, durch automatisches Durchlaufen des Baums 122 entlang einem Durchlaufpfad (506). Der Durchlaufpfad kann von einem Wurzelknoten des Baums zu einem Blattknoten des Baums erfolgen und jeweilige Designaktionen ausführend sein, die durch Verzweigungen entlang dem Durchlaufpfad dargestellt sind. Während des Durchlaufs kann eine Verzweigung entlang dem Durchlaufpfad basierend auf Werten ausgewählt werden, die mit den Knoten assoziiert sind. Diesbezüglich kann die automatisierte Designschnittstelle 114 für einen jeweiligen dazwischenliegenden Knoten einen aggregierten Wert bestimmen, der Designwerte für Kandidaten-Anwenderschnittstellendesigns aggregiert, die unter Verwendung von jeweiligen Durchlaufpfaden bestimmt sind, die den jeweiligen dazwischenliegenden Knoten enthalten. Wenn der Baum 122 durchlaufen wird, wird eine Verzweigung entlang dem Durchlaufpfad aus einer Vielzahl von Verzweigungen 306 basierend auf jeweiligen aggregierten Werten von jedem Knoten ausgewählt, der mit jeder der Vielzahl von Verzweigungen assoziiert ist. Zusätzlich oder alternativ kann die automatisierte Designschnittstelle 114 einen dazwischenliegenden Knoten bestimmen, für welchen alle Verzweigungen des dazwischenliegenden Knotens erforscht worden sind, und den dazwischenliegenden Knoten von einem zukünftigen Durchlaufpfad ausschließen.
  • Die automatisierte Designschnittstelle 114 berechnet (z.B. automatisch) einen Designwert für jedes Kandidaten-Anwenderschnittstellendesign 106 (508). Der Designwert kann auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns unter Verwendung eines vorbestimmten Algorithmus basieren. Gemäß verschiedenen Implementierungen umfasst der vorbestimmte Auswertungsalgorithmus eines oder mehreres von einer Gruppe von Auswertungsalgorithmen. Beispielsweise kann ein erster Auswertungsalgorithmus den Designwert basierend auf einer Menge der Vielzahl von Funktionen und einer Beziehungsinformation, die durch das jeweilige Kandidaten-Anwenderschnittstellendesign implementiert sind, berechnen. Ein zweiter Auswertungsalgorithmus kann identifizieren, ob das jeweilige Kandidaten-Anwenderschnittstellendesign Vorgabeinformation nicht in der empfangenen Vielzahl von Funktionen und Beziehungsinformation enthält, und den berechneten Designwert reduzieren, wenn die Vorgabeinformation identifiziert wird.
  • Ein dritter Auswertungsalgorithmus kann den Designwert basierend auf einer Menge von Bildschirmen berechnen, die im jeweiligen Kandidaten-Anwenderschnittstellendesign implementiert sind. Ein vierter Auswertungsalgorithmus kann den Designwert basierend auf einem Höhe-zu-Breite-Verhältnis der Bildschirme berechnen, die im jeweiligen Kandidaten-Anwenderschnittstellendesign implementiert sind. Ein fünfter Auswertungsalgorithmus kann den Designwert basierend auf einem ungenutzten Bildschirmraum im jeweiligen Kandidaten-Anwenderschnittstellendesign berechnen. Ein sechster Auswertungsalgorithmus kann identifizieren, ob das jeweilige Kandidaten-Anwenderschnittstellendesign ein horizontales Scrollen von einem oder mehreren Bildschirmen enthält, und den berechneten Designwert reduzieren, wenn das horizontale Scrollen identifiziert wird. Ein siebter Auswertungsalgorithmus kann eine Aufgabe basierend auf der empfangenen Vielzahl von Funktionen und Beziehungsinformation identifizieren, und einer Anzahl von Anwenderinteraktionen, die erforderlich sind, um die Aufgabe zu initiieren und zu beenden, und den Designwert basierend auf der Anzahl von Anwenderinteraktionen berechnen. Ein achter Auswertungsalgorithmus kann eine Zahl von unterschiedlichen Entscheidungen bestimmen, die basierend auf einer selben Anwenderinteraktionseingabe getroffen werden, und den berechneten Designwert basierend auf der bestimmten Zahl reduzieren. Und ein neunter Auswertungsalgorithmus kann eine Aufgabe basierend auf der empfangenen Vielzahl von Funktionen und Beziehungsinformation identifizieren und kann ein Ziel, das mit der Aufgabe assoziiert ist, in einem Bildschirm des jeweiligen Kandidaten-Anwenderschnittstellendesigns identifizieren und eine geschätzte Menge an Zeit für eine Anwender bestimmen, um sich zu dem Ziel zu bewegen und es auszuwählen und den Designwert basierend auf der Menge an Zeit einstellen.
  • Gemäß verschiedenen Implementierungen kann der vorbestimmte Auswertungsalgorithmus irgendeine Kombination von den vorangehenden Auswertungsalgorithmen enthalten (z.B. zwei oder mehrere). Zusätzlich oder alternativ kann der Designwert für das jeweilige Kandidaten-Anwenderschnittstellendesign basierend auf einer linearen Kombination der Auswertungsalgorithmen berechnet werden.
  • Die Bestimmungs- und Berechnungsschritte werden wiederholt (z.B. automatisch), um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Designwerten zu erzeugen (510). Die Schritte können für eine vorbestimmte Anzahl von Malen wiederholt werden oder bis wenigstens einer der Vielzahl von Designwerten einen Schwellen-Designwert erfüllt.
  • Die automatisierte Designschnittstelle 114 wählt dann (z.B. automatisch) ein ausgewähltes fertiggestelltes Schnittstellendesign aus der Vielzahl von fertiggestellten Schnittstellendesigns 106 basierend auf der Vielzahl von Designwerten aus (512) und erzeugt eine Anwenderschnittstelle (514) basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign.
  • Viele der oben beschriebenen beispielhaften Prozesse 500 und der zugehörigen Merkmale und Anwendungen können auch als Softwareprozesse implementiert sein, die als eine Gruppe von Anweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium (auf das auch als computerlesbares Medium Bezug genommen wird) aufgezeichnet sind, und automatisch (z.B. ohne Anwenderintervention) ausgeführt werden können. Wenn diese Anweisungen durch eine oder mehrere Verarbeitungseinheit(en) ausgeführt werden (z.B. einen oder mehrere Prozessoren, Kerne von Prozessoren oder andere Verarbeitungseinheiten) veranlassen sie, dass die Verarbeitungseinheit(en) die Aktionen durchführt (durchführen), die in den Anweisungen angezeigt sind. Beispiele von computerlesbaren Medien enthalten, sind aber nicht darauf beschränkt, CD-ROMs, Speichersticks, RAM-Chips, Festplatten, EPROMs, etc. Die computerlesbaren Medien enthalten keine Trägerwellen und elektronische Signale, die drahtlos oder über verdrahtete Verbindungen verlaufen.
  • Der Ausdruck "Software" hat die Bedeutung, dass er dort, wo es geeignet ist, Firmware enthält, die in einem Nurlesespeicher sitzt, oder Anwendungen, die in einem magnetischen Speicher gespeichert sind, die in einen Speicher zum Verarbeiten durch einen Prozessor gelesen werden können. Ebenso können bei einigen Implementierungen mehrere Softwareaspekte der Fachgebietsoffenbarung als Unterteile eines größeren Programms implementiert sein, während unterschiedliche Softwareaspekte der Fachgebietsoffenbarung zurückbleiben. Bei einigen Implementierungen können mehrere Softwareaspekte auch als separate Programme implementiert sein. Schließlich ist irgendeine Kombination von separaten Programmen, die zusammen einen hier beschriebenen Softwareaspekt implementieren, innerhalb des Schutzumfangs der Fachgebietsoffenbarung. Bei einigen Implementierungen definieren die Softwareprogramme, wenn sie installiert sind, um auf einem oder mehreren elektronischen Systemen zu arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, die die Operationen der Softwareprogramme ausführen und durchführen.
  • Ein Computerprogramm (das auch als Programm, Software, Softwareanwendung, Skript oder Code bekannt ist) kann in irgendeiner Form einer Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder Verfahrenssprachen, und es kann in irgendeiner Form genutzt werden, einschließlich als alleinstehendes Programm oder als ein Modul, eine Komponente, ein Unterprogramm, ein Objekt oder eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateiensystem entsprechen. Ein Programm kann in einem Teilbereich einer Datei gespeichert sein, die andere Programme oder Daten hält (z.B. ein oder mehrere Skripte, die in einem Auszeichnungssprachendokument gespeichert sind), in einer einzelnen Datei, die für das infrage stehende Programm bestimmt ist, oder in mehreren koordinierten Dateien (z.B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teilbereiche eines Codes speichern). Ein Computerprogramm kann genutzt werden, um auf einem Computer oder auf mehreren Computern ausgeführt zu werden, die an einer Stelle lokalisiert sind oder über mehrere Stellen verteilt und durch ein Kommunikationsnetzwerk miteinander verbunden sind.
  • 6 ist eine grafische Darstellung bzw. ein Diagramm, die bzw. das ein beispielhaftes elektronisches System 600 zur automatisierten Erzeugung einer schließlichen Anwenderschnittstelle basierend auf Kandidaten-Anwenderschnittstellendesigns gemäß einem oder mehreren Aspekten der Fachgebietstechnologie darstellt. Das elektronische System 600 kann eine Computervorrichtung zur Ausführung von Software sein, die mit einem oder mehreren Teilbereichen oder Schritten eines Prozesses 600 assoziiert ist, oder Komponenten und Prozessen, die durch die 13 zur Verfügung gestellt sind. Das elektronische System 600 kann in Kombination mit der Offenbarung in Bezug auf die 15 die Computervorrichtung 108 oder die Computervorrichtung 202 darstellen. Diesbezüglich kann das elektronische System 600 oder die Computervorrichtung 108 oder 202 ein Personalcomputer oder eine mobile Vorrichtung, wie beispielsweise ein Smartphone, ein Tablet-Computer, ein Laptop, ein PDA, eine Vorrichtung für eine erweiterte Realität, eine tragbare Vorrichtung, wie beispielsweise eine Uhr oder ein Band oder eine Brille, oder eine Kombination davon, oder ein anderer Berührungsbildschirm oder ein Fernsehgerät mit einem oder mehreren Prozessoren darin eingebettet oder damit gekoppelt oder irgendeine andere Art von computerbezogener elektronischer Vorrichtung mit Netzwerkverbindungsfähigkeit sein.
  • Das elektronische System 600 kann verschiedene Typen von computerlesbaren Medien und Schnittstellen für verschiedene andere Typen von computerlesbaren Medien enthalten. Beim gezeigten Beispiel enthält das elektronische System 600 einen Bus 608, eine Verarbeitungseinheit (Verarbeitungseinheiten) 612, einen Systemspeicher 604, einen Nurlesespeicher (ROM) 610, eine Permanentspeichervorrichtung 602, eine Eingabevorrichtungsschnittstelle 614, eine Ausgabevorrichtungsschnittstelle 606 und eine oder mehrere Netzwerkschnittstellen 616. Bei einigen Implementierungen kann das elektronische System 600 andere Computervorrichtungen oder eine Schaltung zum Betrieb der verschiedenen Komponenten und Prozesse, die zuvor beschrieben sind, enthalten oder damit integriert sein.
  • Der Bus 608 stellt kollektiv alle System-Peripheren und Chipgruppen-Busse dar, die kommunikativ die zahlreichen internen Vorrichtungen des elektronischen Systems 600 verbinden. Beispielsweise verbindet der Bus 608 die Verarbeitungseinheit (Verarbeitungseinheiten) 612 kommunikativ mit dem ROM 610, dem Systemspeicher 504 und der Permanentspeichervorrichtung 602.
  • Von diesen verschiedenen Speichereinheiten liest die Verarbeitungseinheit (lesen die Verarbeitungseinheiten) 612 Anweisungen aus, um sie auszuführen, und Daten, um sie zu verarbeiten, um die Prozesse der Fachgebietsoffenbarung auszuführen. Die Verarbeitungseinheit(en) kann (können) ein einzelner Prozessor oder ein Mehrfachkernprozessor in unterschiedlichen Implementierungen sein.
  • Der ROM 610 speichert statische Daten und Anweisungen, die durch die Verarbeitungseinheit(en) 612 und andere Module des elektronischen Systems benötigt werden. Die Permanentspeichervorrichtung 602 ist andererseits eine Lese- und Schreib-Speichervorrichtung. Diese Vorrichtung ist eine nichtflüchtige Speichereinheit, die Anweisungen und Daten selbst dann speichert, wenn das elektronische System 600 ausgeschaltet ist. Einige Implementierungen der Fachgebietsoffenbarung verwenden eine Massenspeichervorrichtung (wie beispielsweise eine magnetische oder optische Platte und ihr entsprechendes Plattenlaufwerk) als Permanentspeichervorrichtung 602.
  • Andere Implementierungen verwenden eine entfernbare Speichervorrichtung (wie beispielsweise eine Diskette, einen Speicherstick und ihr entsprechendes Plattenlaufwerk) als Permanentspeichervorrichtung 602. Wie die Permanentspeichervorrichtung 602 ist der Systemspeicher 604 eine Lese-und-Schreib-Speichervorrichtung. Jedoch ist der Systemspeicher 604 ungleich der Speichervorrichtung 602 ein flüchtiger Lese-und-Schreib-Speicher, wie beispielsweise ein Direktzugriffsspeicher. Der Systemspeicher 604 speichert einige der Anweisungen und Daten, die der Prozessor zur Laufzeit benötigt. Bei einigen Implementierungen sind die Prozesse der Fachgebietsoffenbarung im Systemspeicher 604, in der Permanentspeichervorrichtung 602 und/oder im ROM 610 gespeichert. Aus diesen verschiedenen Speichereinheiten holt die Verarbeitungseinheit 612 (holen die Verarbeitungseinheiten 612) Anweisungen heraus, um sie auszuführen, und Daten, um sie zu verarbeiten, um die Prozesse von einigen Implementierungen auszuführen.
  • Der Bus 608 verbindet auch mit Eingabe- und Ausgabevorrichtungsschnittstellen 614 und 606. Die Eingabevorrichtungsschnittstelle 614 ermöglicht, dass der Anwender Information zum elektronischen System kommuniziert und Befehle zu diesem auswählt. Die Eingabevorrichtungen, die mit der Eingabevorrichtungsschnittstelle 614 verwendet sind, enthalten z.B. alphanummerische Tastaturen und Zeigevorrichtungen (die auch "Cursor-Steuervorrichtungen" genannt werden). Die Ausgabevorrichtungsschnittstellen 606 ermöglichen z.B. die Anzeige von Bildern, die durch das elektronische System 600 erzeugt sind. Ausgabevorrichtungen, die mit der Ausgabevorrichtungsschnittstelle 606 verwendet sind, enthalten z.B. Drucker und Anzeigevorrichtungen, wie beispielsweise Kathodenstrahlröhren (CRT) oder Flüssigkristallanzeigen (LCD). Einige Implementierungen enthalten Vorrichtungen, wie beispielsweise einen Berührungsbildschirm, der als sowohl Eingabe- als auch Ausgabe-Vorrichtungen fungiert.
  • Schließlich koppelt, wie es in 6 gezeigt ist, der Bus 608 auch das elektronische System 600 mit einem Netzwerk (nicht gezeigt) über Netzwerkschnittstellen 616. Die Netzwerkschnittstellen 616 können z.B. einen drahtlosen Zugangspunkt (z.B. Bluetooth oder WiFi) oder eine Funkschaltung zum Verbinden mit einem drahtlosen Zugangspunkt enthalten. Die Netzwerkschnittstellen 616 können auch Hardware (z.B. Ethernet-Hardware) zum Verbinden des Computers mit einem Teil eines Netzwerks von Computern, wie beispielsweise einem lokalen Netz ("LAN"), einem Weitverkehrsnetz ("WAN"), einem drahtlosen LAN, oder einem Intranet, oder einem Netzwerk von Netzwerken, wie beispielsweise dem Internet, enthalten. Irgendwelche oder alle Komponenten des elektronischen Systems 500 können in Verbindung mit der Fachgebietsoffenbarung verwendet werden.
  • Diese Funktionen, die oben beschrieben sind, können in Computersoftware, -firmware oder -hardware implementiert sein. Die Techniken können unter Verwendung von einem oder mehreren Computerprogrammprodukten implementiert sein. Programmierbare Prozessoren und Computer können enthalten sein in oder gepackt sein als mobile Vorrichtungen. Die Prozesse und logischen Abläufe können durch einen oder mehrere programmierbare Prozessoren und durch eine oder mehrere programmierbare logische Schaltungen durchgeführt werden. Allgemeine und spezielle Computervorrichtungen und Speichervorrichtungen können durch Kommunikationsnetzwerke miteinander verbunden sein.
  • Einige Implementierungen enthalten elektronische Komponenten, wie beispielsweise Mikroprozessoren, einen Speicher und einen Arbeitsspeicher, die Computerprogrammanweisungen in einem maschinenlesbaren oder computerlesbaren Medium (auf das alternativ als computerlesbare Speichermedien, maschinenlesbare Medien oder maschinenlesbare Speichermedien Bezug genommen wird) speichern. Einige Beispiele von solchen computerlesbaren Medien enthalten RAM, ROM, Compact Discs für nur Lesen (CD-ROM), einmal beschreibbare Compact Discs (CD-R), wieder beschreibbare Compact Discs (CD-RW), digitale vielseitige Scheiben für nur Lesen (z.B. DVD-ROM, zweischichtige DVD-ROM), eine Vielfalt von DVDs für einmal Beschreiben/wieder Beschreiben (z.B. DVD-RAM, DVD-RW, DVD + RW, etc.), einen Flash-Speicher (z.B. SD-Karten, Mini-SD-Karten, Mikro-SD-Karten, etc.), magnetische Festplatten und/oder Festkörper-laufwerke, Blu-Ray®-Scheiben für nur Lesen und einmal Beschreiben, ultradichte optische Scheiben, irgendwelche anderen optischen oder magnetischen Medien und Disketten. Die computerlesbaren Medien können ein Computerprogramm speichern, das durch wenigstens eine Verarbeitungseinheit ausführbar ist und Gruppen von Anweisungen zum Durchführen verschiedener Operationen enthält. Beispiele von Computerprogrammen oder einem Computercode enthalten einen Maschinencode, wie er beispielsweise durch einen Compiler erzeugt wird, und Dateien einschließlich einem Code höherer Ebene, die durch einen Computer, eine elektronische Komponente oder einen Mikroprozessor unter Verwendung eines Interpreters ausgeführt werden.
  • Während sich die obige Diskussion primär auf einen Mikroprozessor oder Mehrkernprozessoren bezieht, die Software ausführen, werden einige Implementierungen durch eine oder mehrere integrierte Schaltungen durchgeführt, wie beispielsweise anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGAs). Bei einigen Implementierungen führen solche integrierten Schaltungen Anweisungen aus, die auf der Schaltung selbst gespeichert sind.
  • Wie sie in dieser Beschreibung und irgendwelchen Ansprüchen dieser Anmeldung verwendet sind, beziehen sich die Ausdrücke "Computer", "Server", "Prozessor" und "Speicher" alle auf elektronische oder andere technologische Vorrichtungen. Diese Ausdrücke schließen Leute oder Gruppen von Leuten aus. Zu Zwecken der Beschreibung bedeuten die Ausdrücke Anzeige oder Anzeigeeinrichtung ein Anzeigen auf einer elektronischen Vorrichtung. Wie sie in dieser Beschreibung und irgendwelchen Ansprüchen dieser Anmeldung verwendet sind, sind die Ausdrücke "computerlesbares Medium" und "computerlesbare Medien" gänzlich auf greifbare, physikalische Objekte beschränkt, die Information in einer Form speichern, die durch einen Computer lesbar ist. Diese Ausdrücke schließen irgendwelche drahtlosen Signale, verdrahtete Herunterladesignale und irgendwelche anderen flüchtige bzw. kurzlebige Signale aus.
  • Um für eine Interaktion mit einem Anwender zu sorgen, können Implementierungen des in dieser Beschreibung beschriebenen Gegenstands auf einem Computer implementiert sein, der eine Anzeigevorrichtung, wie z.B. einen CRT-(Kathodenstrahlröhren-) oder LCD-(Flüssigkristallanzeige-)Monitor, zum Anzeigen von Information zum Anwender und eine Tastatur und eine Zeigevorrichtung, wie z.B. eine Maus oder einen Trackball, wodurch der Anwender eine Eingabe zum Computer liefern kann, hat. Andere Arten von Vorrichtungen können ebenso gut verwendet werden, um für eine Interaktion mit einem Anwender zu sorgen; z.B. kann eine zum Anwender gelieferte Rückkopplung irgendeine Form einer sensorischen Rückkopplung sein, wie z.B. eine visuelle Rückkopplung, eine akustische Rückkopplung oder eine taktile Rückkopplung; und eine Eingabe vom Anwender kann in irgendeiner Form empfangen werden, einschließlich einer akustischen, einer sprachlichen oder einer taktilen Eingabe. Zusätzlich kann ein Computer mit einem Anwender durch Senden von Dokumenten zu und Empfangen von Dokumenten von einer Vorrichtung interagieren, die durch den Anwender verwendet wird; z.B. durch Senden von Web-Seiten zu einem Web-Browser auf einer Client-Vorrichtung eines Anwenders in Reaktion auf Anfragen, die vom Web-Browser empfangen sind.
  • Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können in einem Computersystem implementiert sein, das eine Backend-Komponente, z.B. einen Datenserver, enthält oder das eine Middleware-Komponente, z.B. einen Anwendungsserver, enthält oder das eine Frontend-Komponente, z.B. einen Client-Computer mit einer graphischen Anwenderschnittstelle oder einem Web-Browser, wodurch ein Anwender mit einer Implementierung des in dieser Beschreibung beschriebenen Gegenstands interagieren kann, enthält, oder irgendeine Kombination von einer oder mehreren von solchen Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch irgendeine Form oder Medium von digitaler Datenkommunikation, z.B. ein Kommunikationsnetzwerk, miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken enthalten ein lokales Netz ("LAN") und ein Weitverkehrsnetz ("WAN"), ein inter-Netzwerk (z.B. das Internet) und Peer-to-Peer-Netzwerke (z.B. Ad-hoc-Peer-to-Peer-Netzwerke).
  • Das Computersystem kann Clients und Server enthalten. Ein Client und ein Server sind allgemein entfernt voneinander und interagieren typischerweise durch ein Kommunikationsnetzwerk. Die Beziehung von Client und Server entsteht mittels Computerprogrammen, die auf den jeweiligen Computern laufen und eine Client-Server-Beziehung zueinander haben. Bei einigen Ausführungsformen sendet ein Server Daten (z.B. eine HTML-Seite) zu einer Client-Vorrichtung (z.B. zu Zwecken eines Anzeigens von Daten zu und eines Empfangens einer Anwendereingabe von einem Anwender, der mit der Client-Vorrichtung interagiert). Daten, die bei der Client-Vorrichtung erzeugt sind (z.B. ein Ergebnis der Anwenderinteraktion), können von der Client-Vorrichtung beim Server empfangen werden.
  • Fachleute auf dem Gebiet würden wahrnehmen, dass die verschiedenen illustrativen Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hierin beschrieben sind, als elektronische Hardware, Computersoftware oder eine Kombination von beiden implementiert sein können. Um diese Austauschbarkeit von Hardware und Software darzustellen, sind verschiedene illustrative Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen oben allgemein in Bezug auf ihre Funktionalität beschrieben worden. Ob eine solche Funktionalität als Hardware oder Software implementiert ist, hängt von der bestimmten Anwendung und Gestaltungsbeschränkungen, die dem Gesamtsystem auferlegt sind, ab. Erfahrene Handwerker können die beschriebene Funktionalität in variierenden Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet werden (z.B. in einer unterschiedlichen Reihenfolge angeordnet oder auf eine unterschiedliche Weise aufgeteilt), und zwar insgesamt ohne vom Schutzumfang der thematisierten Technologie abzuweichen.
  • Es wird verstanden, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen eine Darstellung von beispielhaften Ansätzen ist. Basierend auf Gestaltungspräferenzen wird es verstanden, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen neu angeordnet werden kann. Einige der Schritte können gleichzeitig durchgeführt werden. Die begleitenden Verfahrensansprüche präsentieren Elemente der verschiedenen Schritte in einer Probenreihenfolge und haben nicht die Bedeutung, dass sie auf die spezifische Reihenfolge oder Hierarchie beschränkt sind, die präsentiert ist.
  • Gemäß einer beispielhaften Ausführungsform erzeugt eine automatisierte Schnittstelle einen Baum von Designaktionen basierend auf einer vorbestimmten Gruppe von Funktionen und einer Beziehungsinformation, wobei jeder dazwischenliegende Knoten des Baums ein teilweises Anwenderschnittstellendesign repräsentiert. Eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns wird bestimmt, wobei jedes die empfangene Vielzahl von Funktionen implementiert, durch Durchlaufen des Baums entlang mehrerer Durchlaufpfade von einem Wurzelknoten des Baums zu jeweiligen Blattknoten des Baums und Ausführen jeweiliger Designaktionen, die durch Zweige entlang den Durchlaufpfaden repräsentiert sind. Ein fertiggestelltes Schnittstellendesign wird aus der Vielzahl von fertiggestellten Schnittstellendesigns basierend auf einem vorbestimmten Auswahlalgorithmus ausgewählt und die schließliche Anwenderschnittstelle wird basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign erzeugt.
  • Die vorherige Beschreibung ist zur Verfügung gestellt, um zu ermöglichen, dass irgendwelche Fachleute auf dem Gebiet die hierin beschriebenen verschiedenen Aspekte ausführen. Die vorherige Beschreibung stellt verschiedene Beispiele der thematisierten Technologie zur Verfügung und die thematisierte Technologie ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen an diesen Aspekten werden Fachleuten auf dem Gebiet ohne weiteres offensichtlich werden und die allgemeinen Prinzipien, die hierin definiert sind, können auf andere Aspekte angewendet werden. Somit sollen die Ansprüche nicht auf die hierin gezeigten Aspekte beschränkt sein, sondern mit dem vollständigen Schutzumfang übereinstimmen, der mit der Sprache in den Ansprüchen konsistent ist, wobei eine Bezugnahme auf ein Element im Singular nicht "einer und nur einer" bedeuten soll, solange es nicht spezifisch so behauptet ist, sondern eher "einer oder mehrere". Solange spezifisch nichts anderes angegeben ist, bezieht sich der Ausdruck "einige" auf einer oder mehrere. Pronomen im Maskulin (z.B. sein) enthalten das feminine und neutrale Geschlecht (z.B. ihr und sein) und umgekehrt. Überschriften und Untertitel, wenn es welche gibt, sind nur der Annehmlichkeit halber verwendet und beschränken die Erfindung nicht.
  • Der Ausdruck Website, wie er hierin verwendet ist, kann irgendeinen Aspekt einer Website enthalten, einschließlich von einer oder mehreren Web-Seiten, eines oder mehrerer Server, die verwendet werden, um webbezogenen Inhalt zu hosten, etc. Demgemäß kann der Ausdruck Website austauschbar mit den Ausdrücken Web-Seite und Server verwendet werden. Die Prädikatswörter "konfiguriert, um", "betreibbar, um" und "programmiert, um" implizieren nicht irgendeine greifbare oder nicht greifbare Modifikation eines Gegenstands, sondern sollen vielmehr austauschbar verwendet werden. Beispielsweise kann ein Prozessor, der konfiguriert ist, um eine Operation oder eine Komponente zu überwachen und zu steuern, auch bedeuten, dass der Prozessor programmiert ist, um die Operation zu überwachen und zu steuern, oder dass der Prozessor betreibbar ist, um die Operation zu überwachen und zu steuern. Gleichermaßen kann ein Prozessor, der konfiguriert ist, um einen Code auszuführen, als ein Prozessor angesehen werden, der programmiert ist, um einen Code auszuführen, oder betreibbar ist, um einen Code auszuführen.
  • Der Ausdruck automatisch, wie er hierin verwendet ist, kann eine Durchführung durch einen Computer oder eine Maschine ohne Anwenderintervention enthalten; beispielsweise durch Anweisungen in Reaktion auf eine Satzaussage Aktion durch den Computer oder die Maschine oder einen anderen Initiierungsmechanismus. Das Wort „Beispiel“ ist hierin verwendet, um „als ein Beispiel oder eine Illustration dienend“ zu bedeuten. Jeder Aspekt oder jedes Design, der oder das hierin als „Beispiel“ beschrieben ist, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs anzusehen.
  • Eine Phrase, wie beispielsweise ein "Aspekt" impliziert nicht, dass ein solcher Aspekt wesentlich für die gegenständliche bzw. thematisierte Technologie ist oder dass ein solcher Aspekt für alle Konfigurationen der thematisierten Technologie gilt. Eine Offenbarung in Bezug auf einen Aspekt kann für alle Konfigurationen gelten, oder für eine oder mehrere Konfigurationen. Ein Aspekt kann ein oder mehrere Beispiele zur Verfügung stellen. Eine Phrase, wie beispielsweise ein Aspekt, kann sich auf einen oder mehrere Aspekte beziehen, und umgekehrt. Eine Phrase, wie beispielsweise eine "Ausführungsform", impliziert nicht, dass eine solche Ausführungsform wesentlich für die thematisierte Technologie ist oder dass eine solche Ausführungsform für alle Konfigurationen der thematisierten Technologie gilt. Eine Offenbarung in Bezug auf eine Ausführungsform kann für alle Ausführungsformen gelten, oder für eine oder mehrere Ausführungsformen. Eine Ausführungsform kann ein oder mehrere Beispiele zur Verfügung stellen. Eine Phrase, wie beispielsweise eine "Ausführungsform" kann sich auf eine oder mehrere Ausführungsformen beziehen, und umgekehrt. Eine Phrase, wie beispielsweise eine "Konfiguration", impliziert nicht, dass eine solche Konfiguration wesentlich für die thematisierte Technologie ist oder dass eine solche Konfiguration für alle Konfigurationen der thematisierten Technologie gilt. Eine Offenbarung in Bezug auf eine Konfiguration kann für alle Konfigurationen gelten, oder für eine oder mehrere Konfigurationen. Eine Konfiguration kann ein oder mehrere Beispiele zur Verfügung stellen. Eine Phrase, wie beispielsweise eine "Konfiguration", kann sich auf eine oder mehrere Konfigurationen beziehen, und umgekehrt.
  • Alle strukturellen und funktionellen Äquivalente zu den Elementen der verschiedenen Aspekte, die in dieser gesamten Offenbarung beschrieben sind, die Fachleuten auf dem Gebiet bekannt sind oder später bekannt werden, sind hierin ausdrücklich durch Bezugnahme enthalten und sollen durch die Ansprüche umfasst sein. Darüber hinaus ist beabsichtigt, dass nichts, was hierin offenbart ist, der Öffentlichkeit gewidmet ist, ungeachtet dessen, ob eine solche Offenbarung explizit in den Ansprüchen wiedergegeben ist. Kein Anspruchselement ist unter den Vorschriften von 35 U.S.C. § 112, sechster Absatz, anzusehen, solange das Element nicht ausdrücklich unter Verwendung der Phrase "Einrichtung zum" wiedergegeben ist oder im Fall eines Verfahrensanspruchs das Element unter Verwendung der Phrase "Schritt zum" wiedergegeben ist. Weiterhin ist bis zu dem Ausmaß, dass der Ausdruck "enthält", "hat" oder ähnliches in der Beschreibung oder den Ansprüchen verwendet wird, beabsichtigt, dass ein solcher Ausdruck einschließlich einer Art ähnlich dem Ausdruck "umfassen" ist, da "umfassen" interpretiert wird, wenn er als Übergangswort in einem Anspruch verwendet wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • 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.
  • Zitierte Nicht-Patentliteratur
    • Jeffrey Nichols und Brad A. Myers, Creating a lightweight user interface description language: An overview and analysis of the personal universal controller project, ACM Trans. Comput.-Hum. Interact. (2009), 16 (4). 1–37. 10.1145/1614390.1614392 [0025]
    • 35 U.S.C. § 112 [0095]

Claims (19)

  1. Nichtflüchtiges computerlesbares Medium mit darauf gespeicherten Anweisungen, die dann, wenn sie ausgeführt werden, veranlassen, dass eine Computervorrichtung die Schritte durchführt: Empfangen einer Vielzahl von Funktionen und von Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich auf einander beziehen, um eine Anwenderschnittstelle automatisch zu erzeugen; Erzeugen eines Baums von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, wobei jeder dazwischenliegende Knoten des Baums ein teilweises Anwenderschnittstellendesign darstellt und wobei jeder Zweig bzw. jede Verzweigung des Baums eine Designaktion darstellt, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert; Bestimmen, automatisch ohne Anwenderintervention, eines Kandidaten-Anwenderschnittstellendesigns, das die empfangene Vielzahl von Funktionen implementiert, durch automatisches Durchlaufen des Baums entlang einem Durchlaufpfad von einem Wurzelknoten des Baums zu einem Blattknoten des Baums und Ausführen von jeweiligen Designaktionen, die durch Verzweigungen entlang dem Durchlaufpfad dargestellt sind; Berechnen, automatisch ohne Anwenderintervention, eines Designwerts für das Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns; Wiederholen, für eine vorbestimmte Anzahl von Iterationen, der Bestimmungs- und Berechnungsschritte, um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Designwerten zu erzeugen; Auswählen, automatisch ohne Anwenderintervention, eines ausgewählten Kandidaten-Schnittstellendesigns aus der Vielzahl von Kandidaten-Schnittstellendesigns basierend auf der Vielzahl von Designwerten; und Erzeugen der Anwenderschnittstelle basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign.
  2. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, weiterhin umfassend: Erzeugen eines jeweiligen Kandidaten-Anwenderschnittstellendesigns, das die empfangene Vielzahl von Funktionen implementiert, durch Durchlaufen des Baums entlang einem jeweiligen Durchlaufpfad vom Wurzelknoten des Baums zu einem jeweiligen Blattknoten des Baums und Ausführen von jeweiligen Designaktionen, die durch Zweige bzw. Verzweigungen entlang dem Durchlaufpfad dargestellt sind; Berechnen, automatisch ohne Anwenderintervention, eines Designwerts für das jeweilige Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des jeweiligen Kandidaten-Anwenderschnittstellendesigns; Wiederholen, automatisch ohne Anwenderintervention, der Erzeugungs- und Berechnungsschritte, um die Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Designwerten zu erzeugen; und Auswählen, automatisch ohne Anwenderintervention, des ausgewählten Kandidaten-Schnittstellendesigns aus der Vielzahl von Kandidaten-Schnittstellendesigns basierend auf der Vielzahl von Designwerten.
  3. Nichtflüchtiges computerlesbares Medium nach Anspruch 2, weiterhin umfassend: Bestimmen, für einen jeweiligen dazwischenliegenden Knoten, eines aggregierten Werts, der Designwerte für Kandidaten-Anwenderschnittstellendesigns aggregiert, die unter Verwendung von jeweiligen Durchlaufpfaden bestimmt sind, die den jeweiligen dazwischenliegenden Knoten enthalten, wobei dann, wenn der Baum durchlaufen wird, eine Verzweigung entlang dem Durchlaufpfad aus einer Vielzahl von Verzweigungen basierend auf jeweiligen aggregierten Werten von jedem Knoten, der mit einer jeweiligen der Vielzahl von Verzweigungen assoziiert ist, ausgewählt wird.
  4. Nichtflüchtiges computerlesbares Medium nach Anspruch 2, weiterhin umfassend: Bestimmen eines dazwischenliegenden Knotens, für welchen alle Verzweigungen des dazwischenliegenden Knotens erforscht worden sind; und Ausschließen des dazwischenliegenden Knotens von einem zukünftigen Durchlaufpfad.
  5. Nichtflüchtiges computerlesbares Medium nach Anspruch 2, wobei die Beziehungsinformation über eine Designschnittstelle in einer Form einer Hierarchie von Gruppen empfangen wird, wobei jede Gruppe eines oder mehreres von einer Zustandsvariablen, einem Befehl und Textinformation umfasst.
  6. Nichtflüchtiges computerlesbares Medium nach Anspruch 5, wobei die Verzweigungen eines ersten Knotens auf einer ersten Knotenebene des Baums unterschiedlichen Designaktionen zum Vereinigen einer ersten Gruppe der Hierarchie von Gruppen in eine zweite Gruppe der Hierarchie von Gruppen entsprechen.
  7. Nichtflüchtiges computerlesbares Medium nach Anspruch 6, wobei die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums unterschiedlichen Widget-Typen für eine jeweilige Funktion der Vielzahl von Funktionen entsprechen, wobei das nichtflüchtige computerlesbare Medium weiterhin umfasst: Auswählen eines ausgewählten Widget-Typen der unterschiedlichen Widget-Typen basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Widget-Typen; und Platzieren eines Widgets des ausgewählten Widget-Typen in die erzeugte Anwenderschnittstelle für die jeweilige Funktion, wenn die Verzweigung entsprechend dem Widget-Typ im Durchlaufpfad des ausgewählten Kandidaten-Anwenderschnittstellendesigns ist.
  8. Nichtflüchtiges computerlesbares Medium nach Anspruch 6, wobei die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums unterschiedlichen Seiten-Layouts für ein Feld der Anwenderschnittstelle entsprechen, wobei die Seiten-Layouts ein Gitter-Layout und ein Listenstil-Layout umfassen, wobei das nichtflüchtige computerlesbare Medium weiterhin umfasst: Auswählen eines ausgewählten Seiten-Layouts der unterschiedlichen Seiten-Layouts basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Seiten-Layout.
  9. Nichtflüchtiges computerlesbares Medium nach Anspruch 6, wobei die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums unterschiedlichen Separatoren für ein Feld der Anwenderschnittstelle entsprechen, wobei das nichtflüchtige computerlesbare Medium weiterhin umfasst: Identifizieren unterschiedlicher Untergruppen von Elementen, um auf dem Feld der Anwenderschnittstelle angezeigt zu werden; und Auswählen eines ausgewählten Separators der unterschiedlichen Separatoren für die identifizierten unterschiedlichen Untergruppen basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Separator, wobei zwei oder mehrere der identifizierten unterschiedlichen Untergruppen basierend auf dem ausgewählten Separator voneinander getrennt sind.
  10. Nichtflüchtiges computerlesbares Medium nach Anspruch 6, wobei die Verzweigungen eines zweiten Knotens auf einer zweiten Knotenebene des Baums vorbestimmten Navigationstypen für die Anwenderschnittstelle entsprechen, wobei die Schritte weiterhin umfassen: Auswählen eines ausgewählten Navigationstypen der vorbestimmten Navigationstypen für die Anwenderschnittstelle basierend auf einem Durchlauf einer Verzweigung des zweiten Knotens entsprechend dem ausgewählten Navigationstyp.
  11. Nichtflüchtiges computerlesbares Medium nach Anspruch 10, wobei der ausgewählte Navigationstyp aus einer Vielzahl vorbestimmter Navigationstypen auf oberster Ebene ausgewählt wird, die Navigationstabs auf oberster Ebene und ein Navigationskarussell auf oberster Ebene umfassen.
  12. Nichtflüchtiges computerlesbares Medium nach Anspruch 2, wobei das Bestimmen und Berechnen für eine vorbestimmte Anzahl von Iterationen wiederholt werden, oder bis wenigstens einer der Vielzahl von Designwerten einen Schwellen-Designwert erfüllt.
  13. Nichtflüchtiges computerlesbares Medium nach Anspruch 2, wobei der Designwert durch eine oder mehrere von einer Gruppe von vorbestimmten Auswertungsalgorithmen berechnet wird, die umfassen: einen ersten Auswertungsalgorithmus, der den Designwert basierend auf einer Menge der Vielzahl von Funktionen und der Beziehungsinformation berechnet, implementiert durch das jeweilige Kandidaten-Anwenderschnittstellendesign; oder einen zweiten Auswertungsalgorithmus, der identifiziert, ob das jeweilige Kandidaten-Anwenderschnittstellendesign Vorgabeinformation nicht in der empfangenen Vielzahl und Beziehungsinformation enthält, und den berechneten Designwert reduziert, wenn die Vorgabeinformation identifiziert wird; oder einen dritten Auswertungsalgorithmus, der den Designwert basierend auf einer Menge von Bildschirmen berechnet, die im jeweiligen Kandidaten-Anwenderschnittstellendesign implementiert sind; oder einen vierten Auswertungsalgorithmus, der den Designwert basierend auf einem Höhe-zu-Breite-Verhältnis der Bildschirme berechnet, die im jeweiligen Kandidaten-Anwenderschnittstellendesign implementiert sind; oder einen fünften Auswertungsalgorithmus, der den Designwert basierend auf ungenutztem Bildschirmraum im jeweiligen Kandidaten-Anwenderschnittstellendesign berechnet; oder einen sechsten Auswertungsalgorithmus, der identifiziert, ob das jeweilige Kandidaten-Anwenderschnittstellendesign ein horizontales Scrollen von einem oder mehreren Bildschirmen enthält, und den berechneten Designwert reduziert, wenn das horizontale Scrollen identifiziert wird; oder einen siebten Auswertungsalgorithmus, der eine Aufgabe basierend auf der empfangenen Vielzahl von Funktionen von Beziehungsinformation identifiziert, und eine Anzahl von Anwenderinteraktionen, die erforderlich sind, um die Aufgabe zu initiieren und zu beenden, und den Designwert basierend auf der Anzahl von Anwenderinteraktionen berechnet; oder einen achten Auswertungsalgorithmus, der eine Zahl von unterschiedlichen Entscheidungen bestimmt, die basierend auf einer selben Anwenderinteraktionseingabe getroffen werden, und den berechneten Designwert basierend auf der bestimmten Zahl reduziert; oder einen neunten Auswertungsalgorithmus, der eine Aufgabe basierend auf der empfangenen Vielzahl von Funktionen und Beziehungsinformation identifiziert, und der ein Ziel identifiziert, das mit der Aufgabe assoziiert ist, in einem Bildschirm des jeweiligen Kandidaten-Anwenderschnittstellendesigns, und eine geschätzte Menge an Zeit für einen Anwender bestimmt, um sich zu dem Ziel zu bewegen und dies auszuwählen, und den Designwert basierend auf der Menge an Zeit einstellt.
  14. Nichtflüchtiges computerlesbares Medium nach Anspruch 13, wobei der Designwert unter Verwendung von zwei oder mehreren der Gruppe von vorbestimmten Auswertungsalgorithmen berechnet wird und wobei der Designwert für das jeweilige Kandidaten-Anwenderschnittstellendesign basierend auf einer linearen Kombination von den zwei oder mehreren der Gruppe von vorbestimmten Auswertungsalgorithmen berechnet wird.
  15. System, umfassend: einen oder mehrere Prozessoren; und einen Speicher mit darauf gespeicherten Anweisungen, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführen, die umfassen: Empfangen einer Vielzahl von Funktionen und Beziehungsinformation, die beschreibt, wie die Vielzahl von Funktionen sich aufeinander beziehen, um eine Anwenderschnittstelle automatisch zu erzeugen; Erzeugen eines Baums von Designaktionen basierend auf der Vielzahl von Funktionen und der Beziehungsinformation, wobei jeder dazwischenliegende Knoten des Baums ein teilweises Anwenderschnittstellendesign darstellt und wobei jeder Zweig bzw. jede Verzweigung des Baums eine Designaktion darstellt, die das teilweise Anwenderschnittstellendesign erzeugt oder modifiziert; Bestimmen, automatisch ohne Anwenderintervention, eines Kandidaten-Anwenderschnittstellendesigns, das die empfangene Vielzahl von Funktionen durch automatisches Durchlaufen des Baums entlang einem Durchlaufpfad von einem Wurzelknoten des Baums zu einem Blattknoten des Baums und Ausführen von jeweiligen Designaktionen, die durch Verzweigungen entlang dem Durchlaufpfad dargestellt sind, implementiert; Berechnen eines Designwerts für das Kandidaten-Anwenderschnittstellendesign basierend auf einer Auswertung des Kandidaten-Anwenderschnittstellendesigns; Wiederholen des Bestimmens und des Berechnens, um eine Vielzahl von Kandidaten-Anwenderschnittstellendesigns und eine entsprechende Vielzahl von Designwerten zu erzeugen; Auswählen, automatisch ohne Anwenderintervention, eines ausgewählten Kandidaten-Schnittstellendesigns aus der Vielzahl von Kandidaten-Schnittstellendesigns basierend auf der Vielzahl von Designwerten; und Erzeugen der Anwenderschnittstelle basierend auf dem ausgewählten Kandidaten-Anwenderschnittstellendesign.
  16. System nach Anspruch 15, wobei die Bestimmungs- und Berechnungsoperationen für eine vorbestimmte Anzahl von Iterationen wiederholt werden, oder bis wenigstens einer der Vielzahl von Designwerten einen Schwellen-Designwert erfüllt.
  17. System nach Anspruch 15, wobei die Operationen weiterhin umfassen: Bestimmen, für einen jeweiligen dazwischenliegenden Knoten, eines aggregierten Werts, der Designwerte für Kandidaten-Anwenderschnittstellendesigns aggregiert, die unter Verwendung von jeweiligen Durchlaufpfaden bestimmt sind, die den jeweiligen dazwischenliegenden Knoten enthalten, wobei dann, wenn der Baum durchlaufen wird, eine Verzweigung entlang dem Durchlaufpfad aus einer Vielzahl von Verzweigungen basierend auf jeweiligen aggregierten Werten von jedem Knoten ausgewählt wird, der mit jeder der Vielzahl von Verzweigungen assoziiert ist.
  18. System nach Anspruch 15, wobei die Operationen weiterhin umfassen: Bestimmen eines dazwischenliegenden Knotens, für welchen alle Verzweigungen des dazwischenliegenden Knotens erforscht worden sind; und Ausschließen des dazwischenliegenden Knotens von einem zukünftigen Durchlaufpfad.
  19. System nach Anspruch 15, wobei die Beziehungsinformation über eine Designschnittstelle in einer Form einer Hierarchie von Gruppen empfangen wird, wobei jede Gruppe eines oder mehreres von einer Zustandsvariablen, einem Befehl und Textinformation umfasst.
DE202017106504.9U 2017-03-20 2017-10-26 Automatisiertes Schnittstellendesign Active DE202017106504U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/464,279 2017-03-20
US15/464,279 US10168998B2 (en) 2017-03-20 2017-03-20 Automated interface design

Publications (1)

Publication Number Publication Date
DE202017106504U1 true DE202017106504U1 (de) 2018-02-27

Family

ID=60164826

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202017106504.9U Active DE202017106504U1 (de) 2017-03-20 2017-10-26 Automatisiertes Schnittstellendesign

Country Status (5)

Country Link
US (2) US10168998B2 (de)
EP (1) EP3580653B1 (de)
CN (1) CN110462583B (de)
DE (1) DE202017106504U1 (de)
WO (1) WO2018174942A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107451486B (zh) * 2017-06-30 2021-05-18 华为技术有限公司 一种文件***的权限设置方法及装置
CN109165050B (zh) * 2018-07-05 2020-10-13 腾讯科技(深圳)有限公司 程序的运行方法、装置、计算设备以及存储介质
US11074053B2 (en) * 2018-09-07 2021-07-27 Boyd Cannon Multerer User interface generation system
US10949174B2 (en) * 2018-10-31 2021-03-16 Salesforce.Com, Inc. Automatic classification of user interface elements
CN112015405B (zh) * 2019-05-29 2022-06-21 腾讯数码(天津)有限公司 界面布局文件的生成方法、界面生成方法、装置及设备
US10929110B2 (en) 2019-06-15 2021-02-23 International Business Machines Corporation AI-assisted UX design evaluation
US11645047B2 (en) * 2019-09-13 2023-05-09 Axure Software Solutions, Inc. Focused specification generation for interactive designs
WO2021054809A1 (en) * 2019-09-21 2021-03-25 Samsung Electronics Co., Ltd. Method and system for generating dynamic user interface layout for an electronic device
US11392585B2 (en) * 2019-09-26 2022-07-19 Palantir Technologies Inc. Functions for path traversals from seed input to output
US11392484B2 (en) * 2019-10-31 2022-07-19 Express Scripts Strategie Development, Inc. Method and system for programmatically testing user interface paths
CN110837726B (zh) * 2019-11-15 2023-04-25 深圳市乐宜科技有限公司 生成成语游戏关卡的方法
CN111061477A (zh) * 2019-11-19 2020-04-24 腾讯科技(深圳)有限公司 一种基于spss应用程序的菜单生成方法、装置、设备及介质
US11537363B2 (en) * 2020-01-31 2022-12-27 Salesforce.Com, Inc. User interface migration using intermediate user interfaces
CN111459485B (zh) * 2020-04-01 2023-09-19 中国银行股份有限公司 交易界面的评估方法及装置
CN111857703B (zh) * 2020-07-31 2024-06-04 北京爱奇艺科技有限公司 一种界面中图层的匹配方法、装置及电子设备
US11762531B2 (en) 2020-10-28 2023-09-19 Axure Software Solutions, Inc. Stateful widget container management for interactive designs
CN113703645B (zh) * 2021-03-30 2024-06-28 腾讯科技(深圳)有限公司 图数据处理方法、装置、设备及存储介质
CN112799669B (zh) * 2021-04-06 2021-07-06 武汉元光科技有限公司 应用程序界面布局代码的生成方法、装置及电子设备
CN114816409B (zh) * 2022-06-27 2022-10-04 北京尽微致广信息技术有限公司 界面生成方法、装置以及存储介质
CN116039956B (zh) * 2022-11-02 2023-11-14 哈尔滨工业大学 一种基于蒙特卡洛树搜索的航天器序列博弈方法、装置及介质
CN117094530B (zh) * 2023-10-16 2024-02-20 国网浙江省电力有限公司金华供电公司 电网供应链指标体系管控方法及***

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5041992A (en) * 1988-10-24 1991-08-20 University Of Pittsburgh Interactive method of developing software interfaces
US5956737A (en) 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
WO2001040933A2 (en) * 1999-12-06 2001-06-07 Axiomatic Design Software, Inc. Method and apparatus for producing software using axiomatic design
ATE250240T1 (de) 1999-12-15 2003-10-15 Sun Microsystems Inc System und verfahren zur erstellung einer graphischen benutzeroberfläche aus einem filter- expressionsbaum
US8091036B1 (en) * 2006-04-27 2012-01-03 Oracle America, Inc. GUI builder tool for designing cross platform layout
US8984424B2 (en) * 2009-02-03 2015-03-17 Microsoft Technology Licensing, Llc Layout of user interface elements
US8121826B1 (en) * 2009-07-17 2012-02-21 Xilinx, Inc. Graphical user interface for system design
US8171406B1 (en) 2009-08-19 2012-05-01 Symantec Corporation Automating user interface navigation
US9323418B2 (en) * 2011-04-29 2016-04-26 The United States Of America As Represented By Secretary Of The Navy Method for analyzing GUI design affordances
US20150379074A1 (en) * 2014-06-26 2015-12-31 Microsoft Corporation Identification of intents from query reformulations in search

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
35 U.S.C. § 112
Jeffrey Nichols und Brad A. Myers, Creating a lightweight user interface description language: An overview and analysis of the personal universal controller project, ACM Trans. Comput.-Hum. Interact. (2009), 16 (4). 1–37. 10.1145/1614390.1614392

Also Published As

Publication number Publication date
US20190121617A1 (en) 2019-04-25
CN110462583A (zh) 2019-11-15
EP3580653B1 (de) 2023-05-17
WO2018174942A1 (en) 2018-09-27
EP3580653A1 (de) 2019-12-18
CN110462583B (zh) 2022-04-26
US10168998B2 (en) 2019-01-01
US20180267777A1 (en) 2018-09-20
US10572227B2 (en) 2020-02-25

Similar Documents

Publication Publication Date Title
DE202017106504U1 (de) Automatisiertes Schnittstellendesign
DE202017106532U1 (de) Suche nach einer neuronalen Architektur
DE202017105848U1 (de) Multiräumlicher Übersichtsmodus
Grammel et al. An end user perspective on mashup makers
DE102017106023A1 (de) Verfahren und System zum automatisierten Benutzerschnittstellentesten über modellgetriebene Techniken
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
EP2425331A1 (de) Verfahren zur erzeugung mindestens einer anwendungsbeschreibung
DE102018204514A1 (de) Handhaben einer signalsättigung in gepulsten neuronalen netzen
DE102012215488A1 (de) Adaptive Anwenderschnittstelle für ein kreatives Multimedia-Gestaltungssystem
DE102021124445A1 (de) Metamerkmal-trainingsmodelle für maschinenlernalgorithmen
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
Johansson A feature and script based integration of CAD and FEA to support design of variant rich products
WO2011131186A2 (de) Computergestütztes verfahren zum erzeugen eines softwarebasierten analysemoduls
DE112020002372T5 (de) Schätzung einer realisierbarkeit von merkmalsvektoren
DE102019115293A1 (de) Vorrichtung zum Optimieren der Strömungsanalyse und Verfahren dafür
DE102022002707A1 (de) Maschinell lernende Konzepte zur Schnittstellenmerkmalseinführung über Zeitzonen oder grafische Bereiche hinweg
DE112016002250T5 (de) Mehrfachschalter-Optionsabtastung
Raneburger Interactive model-driven generation of graphical user interfaces for multiple devices
DE202015103261U1 (de) Computerimplementiertes System zum Vergleichen von mindestens zwei Dateien visueller Programmiersprachen
EP3716058A1 (de) Verfahren zum ansteuern eines geräts mit einem neuen programmcode
EP3771979A1 (de) Verfahren und vorrichtung zur optimalen konfiguration eines geräts einer geräteklasse
DE10055679A1 (de) Verfahren, Computersystem und Computerprogramm-Produkte zur modellbasierten Generierung von Testszenarien
CN107085578A (zh) 一种网页编辑方法和装置
Bigendako et al. Automatically Installing and Deploying Tools for Conducting Systematic Reviews in ReLiS
Hanna Automated data visualizations–a modular and extensible approach

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years