DE112013002953T5 - Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung - Google Patents

Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung Download PDF

Info

Publication number
DE112013002953T5
DE112013002953T5 DE112013002953.7T DE112013002953T DE112013002953T5 DE 112013002953 T5 DE112013002953 T5 DE 112013002953T5 DE 112013002953 T DE112013002953 T DE 112013002953T DE 112013002953 T5 DE112013002953 T5 DE 112013002953T5
Authority
DE
Germany
Prior art keywords
group
functionality
developer
computer
coding
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.)
Ceased
Application number
DE112013002953.7T
Other languages
English (en)
Inventor
Swaminathan Balasubramanian
Rick II Hamilton
Keith Raymond Walker
Brian Marshall O'Connell
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.)
Kyndryl Inc
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013002953T5 publication Critical patent/DE112013002953T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • 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/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Ausführungsformen der vorliegenden Erfindung betreffen das Instanziieren eines Codier-Wettbewerbs, um Problemen in Programmmodulen eine Lösung zuzuführen. Bei einer typischen Ausführungsform wird eine erste Anmerkung in einer Programmcode-Datei erkannt, die eine Gruppe von Programmmodulen aufweist. Die erste Anmerkung gibt im Allgemeinen eine Notwendigkeit einer Funktionalität an, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist. In Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Lösung aufweist, wird eine Angabe zum Instanziieren eines Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Lösung empfangen. In Reaktion auf die Angabe wird eine zweite Anmerkung in die Programmcode-Datei eingefügt. Der Codier-Wettbewerb kann dann instanziiert werden, um eine Gruppe von Entwickler-Bibliotheken zu identifizieren, die eine Möglichkeit zum Bereitstellen der Lösung aufweisen. Anhand des Codier-Wettbewerbs kann die Lösung dann identifiziert und umgesetzt werden.

Description

  • Technisches Gebiet
  • Ausführungsformen der vorliegenden Erfindung beziehen sich auf die Entwicklung von Programmmodulen. Ausführungsformen der vorliegenden Erfindung beziehen sich insbesondere auf einen Ansatz zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programms in einer vernetzten Datenverarbeitungsumgebung (z.B. eine Cloud-Datenverarbeitungsumgebung).
  • Hintergrund der Erfindung
  • Bei einer Code-Ablage (code repository) handelt es sich üblicherweise um einen durchsuchbaren, kategorisierten und/oder über das Internet zugänglichen Speicherort, auf den Benutzer zugreifen können, um Quellcode oder kompilierten Bibliothekscode durchzublättern, zu durchsuchen oder herunterzuladen. Zu den Verwendungsarten von Code-Ablagen können Open-Source-Projekte, proprietäre Entwicklungsprojekte und/oder Projekte gehören, die Bibliotheken für eine spätere Verwendung erzeugen. Bei einer Code-Anmerkung handelt es sich um eine spezielle Form von syntaktischen Metadaten, die Quellcode angefügt werden können. Klassen, Verfahren, Variable, Parameter und/oder Code-Pakete können mit Anmerkungen versehen werden. Im Unterschied zu Kommentaren können Anmerkungen dahingehend verfolgbar sein, dass sie in Dateien eingebettet sind, die durch einen Kompilierer erzeugt werden, und können durch eine Ausführungsumgebung verwendet werden, damit sie zur Laufzeit abrufbar sind.
  • Zu Schwierigkeiten kann es jedoch kommen, wenn festgestellt wird, dass Probleme (z.B. Laufzeitfehler usw.) in einem oder mehreren Programmmodulen vorhanden sind, die in einer Programmcode-Datei oder dergleichen enthalten sind. Üblicherweise kann bei vorhandenen Ansätzen auf bestehende Lösungen und/oder Bibliotheken zurückgegriffen werden, um auftretende Probleme zu lösen. Bei einem derartigen Ansatz ist es unter Umständen nicht möglich, Lösungen an die Besonderheiten jedes Problems anzupassen. Daher können die Probleme gegebenenfalls nicht vollständig und/oder korrekt gelöst werden.
  • Kurzdarstellung
  • Ausführungsformen der vorliegenden Erfindung beziehen sich im Allgemeinen auf das Instanziieren eines Codier-Wettbewerbs, um der Notwendigkeit einer Funktionalität in Programmmodulen (die z.B. in Programmdateien enthalten sind) Rechnung zu tragen. Bei einer typischen Ausführungsform wird eine erste Anmerkung in einer Programmcode-Datei erkannt, die eine Gruppe von Programmmodulen aufweist. Die erste Anmerkung gibt im Allgemeinen eine Notwendigkeit einer bestimmten Funktionalität an (z.B. Lösung eines Problems), die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist. In Reaktion auf das Fehlen einer vorhandenen Bibliothek, die die Funktionalität bereitstellt, wird eine Angabe empfangen, einen Codier-Wettbewerb zwischen einer Gruppe von Entwicklern zu instanziieren. In Reaktion auf die Angabe wird eine zweite Anmerkung (die beispielsweise eine Gruppe von Attributen des Codier-Wettbewerbs enthält) in die Programmmodul-Datei eingefügt. Der Codier-Wettbewerb kann dann anhand der Gruppe von Attributen instanziiert werden, um eine Gruppe von Entwickler-Bibliotheken zu identifizieren, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen. Aus der Gruppe von Entwickler-Bibliotheken kann dann eine Entwickler-Bibliothek identifiziert werden, die der Gruppe von Attributen am besten entspricht. Die Funktionalität kann aus der Entwickler-Bibliothek erhalten und realisiert werden.
  • In einem ersten Aspekt der vorliegenden Erfindung wird ein durch einen Computer umgesetztes Verfahren bzw. ein Computer-implementiertes Verfahrenzum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung bereitgestellt, wobei das Verfahren aufweist: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen einer Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
  • In einem zweiten Aspekt der vorliegenden Erfindung wird ein System zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung bereitgestellt, wobei das Verfahren aufweist: ein Speichermedium, das Befehle aufweist; einen Bus, der mit dem Speichermedium verbunden ist; und einen Prozessor, der mit dem Bus verbundenen ist, um beim Ausführen der Befehle zu bewirken, dass das System ausführt: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen einer Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
  • In einem dritten Aspekt der vorliegenden Erfindung wird ein Computerprogrammprodukt zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung bereitgestellt, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium und Programmbefehle, die in dem computerlesbaren Speichermedium gespeichert sind, aufweist zum: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen eine Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die die Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
  • In einem vierten Aspekt der vorliegenden Erfindung wird ein Verfahren zum Einsetzen eines Systems zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung bereitgestellt, wobei das Verfahren aufweist: Bereitstellen einer Computer-Infrastruktur, die in der Lage ist zum: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen einer Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
  • Kurzbeschreibung der Zeichnungen
  • Diese und weitere Merkmale dieser Erfindung werden aus der folgenden genauen Beschreibung der verschiedenen Aspekte der Erfindung leichter verstanden, die in Verbindung mit den beigefügten Zeichnungen erfolgt, worin:
  • 1 einen Datenverarbeitungsknoten gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 2 eine Systemdarstellung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 3 eine genauere Darstellung des Systems von 2 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • die 4A und 4B einen Ablaufplan eines weiteren Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung darstellen; und
  • 5 einen Ablaufplan eines weiteren Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • Die Zeichnungen sind nicht notwendigerweise maßstabsgerecht. Bei den Zeichnungen handelt es sich lediglich um schematische Darstellungen, die keine spezifischen Parameter der Erfindung wiedergeben sollen. Es ist beabsichtigt, dass die Zeichnungen lediglich typische Ausführungsformen der Erfindung darstellen und sie sollten deshalb in Bezug auf den Umfang der Erfindung nicht als einschränkend betrachtet werden. In den Zeichnungen repräsentieren gleiche Nummerierungen gleiche Elemente.
  • Genaue Beschreibung der Erfindung
  • Veranschaulichende Ausführungsformen werden an dieser Stelle unter Bezugnahme auf die beigefügten Zeichnungen genauer beschrieben, in denen beispielhafte Ausführungsformen gezeigt sind. Diese Beschreibung kann jedoch in vielen verschiedenen Formen umgesetzt werden und sollte nicht als einschränkend auf die hier dargestellten beispielhaften Ausführungsformen ausgelegt werden. Stattdessen werden diese beispielhaften Ausführungsformen bereitgestellt, so dass diese Beschreibung gründlich und vollständig ist und den Umfang dieser Beschreibung vollinhaltlich an Fachleute übermittelt. Bei der Beschreibung können Einzelheiten von bekannten Merkmalen und Techniken weggelassen werden, um ein unnötiges Verdecken der dargestellten Ausführungsformen zu vermeiden.
  • Die hier verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll diese Beschreibung nicht einschränken. Die hier verwendeten Singularformen „ein“ und „der/die/das“ sollen die Pluralformen ebenfalls einschließen, falls im Kontext nicht deutlich anders angegeben. Des Weiteren bezeichnet die Verwendung der Ausdrücke „ein“ usw. keine Mengenbegrenzung, sondern bezeichnet das Vorhandensein von wenigstens einem der angegeben Elemente. Das Wort „Gruppe“ soll eine Menge von wenigstens einem Element bezeichnen. Es ist ferner klar, dass die Ausdrücke „aufweist“ und/oder „aufweisend“ oder „enthält“ und/oder „enthaltend“ bei Verwendung in dieser Spezifikation das Vorhandensein von angegebenen Merkmalen, Bereichen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen Merkmalen, Bereichen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen hiervon ausschließen.
  • Ausführungsformen der vorliegenden Erfindung beziehen sich auf das Instanziieren eines Codier-Wettbewerbs, um einer Notwendigkeit einer Funktionalität in Programmmodulen (die beispielsweise in Programm-Dateien enthalten sind) Rechnung zu tragen. Bei einer typischen Ausführungsform wird eine erste Anmerkung in einer Programmcode-Datei erkannt, die eine Gruppe von Programmmodulen aufweist. Die erste Anmerkung gibt im Allgemeinen eine Notwendigkeit einer bestimmten Funktionalität an (z.B. die Lösung eines Problems), die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugehörig ist. In Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität bereitstellt, wird eine Angabe zum Instanziieren eines Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern empfangen. In Reaktion auf die Angabe wird eine zweite Anmerkung (die beispielsweise eine Gruppe von Attributen des Codier-Wettbewerbs enthält) in die Programmcode-Datei eingesetzt. Der Codier-Wettbewerb kann dann anhand der Gruppe von Attributen instanziiert werden, um eine Gruppe von Entwickler-Bibliotheken zu identifizieren, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen. Eine Entwickler-Bibliothek kann dann aus der Gruppe von Entwickler-Bibliotheken identifiziert werden, die der Gruppe von Attributen am besten entspricht. Die Funktionalität kann aus der Entwickler-Bibliothek erhalten und umgesetzt werden.
  • In 1 ist eine schematische Darstellung eines beispielhaften Datenverarbeitungsknotens gezeigt. Bei dem Datenverarbeitungsknoten 10 handelt es sich lediglich um ein Beispiel eines geeigneten Datenverarbeitungsknotens, und er soll keine Einschränkung in Bezug auf den Umfang der Verwendung oder die Funktionalität von Ausführungsformen der hier beschriebenen Ausführungsformen nahelegen. Der Datenverarbeitungsknoten 10 kann trotzdem umgesetzt werden und/oder jede der oben dargestellten Funktionalitäten ausführen.
  • Im Datenverarbeitungsknoten 10 gibt es ein Computersystem/einen Server 12, das bzw. der mit zahlreichen anderen allgemeinen oder speziellen Umgebungen oder Konfigurationen des Datenverarbeitungssystems betrieben werden kann. Zu Beispielen bekannter Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server 12 geeignet sind, gehören Personal-Computersysteme, Server-Computersysteme, Thin-Clients, Thick-Clients, handgehaltene oder Laptop-Einheiten, mobile Einheiten, Globale Positionierungssysteme (GPS), GPSfähige Einheiten, Multiprozessor-Systeme, mikroprozessorgestützte Systeme, Settop-Boxes, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteile Datenverarbeitungsumgebungen, die ein beliebiges der oben genannten Systeme oder Einheiten enthalten, und dergleichen, ohne auf diese beschränkt zu sein.
  • Das Computersystem/der Server 12 kann im allgemeinen Kontext von im Computersystem ausführbaren Befehlen beispielsweise als Programmmodule beschrieben werden, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logikschaltungen, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 12 kann in verteilten Datenverarbeitungsumgebungen realisiert werden, bei denen Aufgaben durch Fernverarbeitungseinheiten ausgeführt werden, die durch ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch fernen Computersystem-Speichermedien befinden, zu denen Speichereinheiten des Arbeitsspeichers gehören.
  • Wie in 1 dargestellt ist das Computersystem/der Server 12 im Datenverarbeitungsknoten in Form einer Mehrzweck-Datenverarbeitungseinheit gezeigt. Zu Komponenten des Computersystems/Servers 12 können ein oder mehrere Prozessoren oder Prozessoreinheiten 16, ein Systemspeicher 28 und ein Bus 18, der zahlreiche Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet, ohne darauf beschränkt zu sein.
  • Der Bus 18 repräsentiert einen oder mehrere von verschiedenen Typen von Busstrukturen, zu denen ein Speicherbus oder eine Speicher-Steuereinheit, ein peripherer Bus, ein beschleunigter Grafikanschluss und ein Prozessor- oder lokaler Bus unter Verwendung von einer aus einer Vielzahl von Busarchitekturen gehört. Lediglich beispielhaft und ohne Einschränkung zählen zu derartigen Architekturen Industry Standard Architecture(ISA-)Bus, Micro Channel Architecture(MCA-)Bus, Enhanced ISA(EISA-)Bus, Video Electronics Standards Association(VESA-)Lokalbus und Peripheral Component Interconnects(PCI-)Bus.
  • Das Computersystem/der Server 12 enthält üblicherweise eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei derartigen Medien kann es sich um alle verfügbaren Medien handeln, auf die durch das Computersystem/den Server 12 zugegriffen werden kann, zu denen sowohl flüchtige als auch nichtflüchtige Medien und Wechsel- bzw. Nichtwechselmedien gehören.
  • Der Systemspeicher 28 kann durch ein Computersystem lesbare Medien in der Form von flüchtigem Speicher wie z.B. Direktzugriffsspeicher (RAM) 30 und/oder Cache-Speicher 32 enthalten. Das Computersystem/der Server 12 kann ferner weitere Wechsel/Nichtwechsel-, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Das Speichersystem 34 kann lediglich beispielhaft zum Lesen von und zum Schreiben auf ein Nichtwechsel-, nichtflüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise als „Festplattenlaufwerk“ bezeichnet wird). Obwohl nicht gezeigt können ein magnetisches Plattenlaufwerk zum Lesen von und zum Schreiben auf eine nichtflüchtige magnetische Wechselplatte (z.B. ein „Floppy Disk“) und ein optisches Plattenlaufwerk zum Lesen von oder zum Schreiben auf eine nichtflüchtige optische Wechselplatte wie z.B. ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. Dabei kann jedes durch eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 18 verbunden sein. Wie nachstehend weiter dargestellt und beschrieben kann der Speicher 28 wenigstens ein Programmprodukt mit einer Gruppe von Programmmodulen (z.B. wenigstens ein Programmmodul) enthalten, die so eingerichtet sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Die Ausführungsformen der Erfindung können als ein computerlesbares Signalmedium umgesetzt werden, das ein sich ausbreitendes Datensignal mit computerlesbarem Programmcode enthält, der darin (z.B. im Basisband oder als Teil einer Trägerwelle) verkörpert wird. Ein derartiges sich ausbreitendes Signal kann jede von einer Vielfalt von Formen annehmen, zu denen elektromagnetische, optische Formen oder eine geeignete Kombination von diesen gehören, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um jedes computerlesbare Medium handeln, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung übertragen, verbreiten oder transportieren kann.
  • Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, Hochfrequenz-(HF-)Medien usw. oder jede geeignete Kombination des Vorhergehenden, ohne darauf beschränkt zu sein.
  • Das Programm/Dienstprogramm 40 zum Instanziieren eines Codier-Wettbewerbs, das eine Gruppe von Programmmodulen 42 (wenigstens ein Programmmodul) aufweist, kann ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten beispielsweise und ohne auf diese beschränkt zu sein im Speicher 28 gespeichert werden. Das Instanziieren 40 eines Codier-Wettbewerbs führt im Allgemeinen die Funktion der vorliegenden Erfindung in der hier beschriebenen Weise aus. Jedes der Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder bestimmte Kombinationen hiervon können eine Umsetzung einer vernetzten Umgebung enthalten. Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von Ausführungsformen der Erfindung in der hier beschriebenen Weise aus.
  • Das Computersystem/der Server 12 kann außerdem mit einem oder mehreren externen Einheiten 14 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; einer oder mehreren Einheiten, die ermöglichen, dass ein Verbraucher mit dem Computersystem/Server 12 interagiert; und/oder allen Einheiten (z.B. Netzwerkkarte, Modem usw.), die ermöglichen, dass das Computersystem/der Server 12 mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten austauscht. Ein derartiger Datenaustausch kann über E/A-Schnittstellen 22 erfolgen. Das Computersystem/der Server 12 kann des Weiteren über Netzwerkadapter 20 mit einem oder mehreren Netzwerken Daten austauschen wie z.B. ein lokales Netzwerk (LAN), ein allgemeines Weitbereichsnetzwerk (WAN) und/oder ein öffentliches Netzwerk (z.B. das Internet). Wie dargestellt tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten aus. Obwohl nicht gezeigt sollte klar sein, dass andere Hardwareund/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Zu Beispielen gehören, sind jedoch nicht beschränkt auf:
    Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • In 2 ist eine Systemdarstellung gezeigt, die die hier erläuterten Erkenntnisse gemäß einer Ausführungsform der vorliegenden Erfindung beschreibt. Es ist klar, dass die hier angegebenen Lehren in jedem Typ von vernetzter Datenverarbeitungsumgebung (z.B. einer Cloud-Datenverarbeitungsumgebung) realisiert werden können. Ein Computersystem/Server 12, das bzw. der als ein eigenständiges Computersystem oder ein vernetztes Computersystem umgesetzt werden kann, ist in 2 gezeigt. Wenn die hier angegebenen Lehren in einer vernetzten Datenverarbeitungsumgebung (z.B. einer Cloud-Datenverarbeitungsumgebung) realisiert werden, muss nicht jeder Client eine Steuerungsroutine zum Instanziieren eines Codier-Wettbewerbs (Steuerungsroutine 50) aufweisen. Stattdessen könnte die Steuerungsroutine 50 in einen Server (z.B. ein Zahlungsverarbeitungs-Server) oder eine serverfähige Einheit geladen werden, die (z.B. drahtlos) mit den Clients Daten austauscht, um daraufhin eine Funktionalität zum Instanziieren eines Codier-Wettbewerbs bereitzustellen. Wie dargestellt ist die Steuerungsroutine 50 trotzdem in dem Computersystem/Server 12 gezeigt. Die Steuerungsroutine 50 kann im Allgemeinen als Programm/Dienstprogramm 40 im Computersystem 12 von 1 umgesetzt sein und kann die hier angegebenen Funktionen ermöglichen. Wie weiter gezeigt weist die Steuerungsroutine 50 (in einer Ausführungsform) eine Steuerungsroutine für Regeln und/oder Rechenvorgänge auf, die eine Gruppe (wenigstens eine) von Regeln/Logikschaltungen 52 verarbeitet und/oder dadurch eine Funktionalität zum Instanziieren eines Codier-Wettbewerbs bereitstellt. Die Steuerungsroutine kann im Allgemeinen als Teil von oder in Verbindung mit einer integrierten Entwicklungsumgebung (IDE) umgesetzt werden.
  • In dieser Hinsicht kann die Steuerungsroutine 50 ähnlich wie ein Mehrzweck-Computer mehrere Funktionen ausführen. Die Steuerungsroutine 50 kann neben weiteren Funktionen im Einzelnen (u.a.) ausführen: Erkennen einer ersten Anmerkung 56A in einer Programmcode-Datei 54, wobei die erste Anmerkung 56A eine Notwendigkeit für eine Lösung 66 für ein Problem 58 angibt, das der Programmcode-Datei 54 zugehörig ist; Suchen in wenigstens einer Computer-Speichereinheit 68 nach einer vorhandenen Bibliothek 70, die die Lösung 66 aufweist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek 70, die die Lösung 66 aufweist, Empfangen einer Anforderung zum Umsetzen eines Codier-Wettbewerbs 64 zwischen einer Gruppe von Entwicklern zum Bereitstellen der Lösung 66; Einfügen einer zweiten Anmerkung 56B in die Programmcode-Datei 54, wobei die zweite Anmerkung 56B eine Gruppe von Attributen des Codier-Wettbewerbs 64 aufweist (z.B. einen Titel, eine Beschreibung, ein Anfangsdatum, ein Enddatum, eine Kontaktangabe, eine Vergütung usw.); Umsetzen des Codier-Wettbewerbs 64 anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken 60A bis N (z.B. von konkurrierenden Entwicklern 62A bis N), die die Möglichkeit aufweisen, die Lösung 66 bereitzustellen; Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken 60A bis N, die der Gruppe von Attributen am besten entspricht; Identifizieren der Lösung 66 aus der Entwickler-Bibliothek; Umsetzen der Lösung 66, um dem Problem 58 eine Lösung zuzuführen; und/oder Bereitstellen der Honorierung für den wenigstens einen Entwickler, der der Entwickler-Bibliothek zugehörig ist. Obwohl 2 eine Lösung und ein Problem darstellt, ist klar, dass die hier angegebenen Lehren umgesetzt werden können, um jeden Typ von Funktionalität umzusetzen (z.B. nicht nur „Lösungen“ für „Probleme“).
  • In 3 ist eine genauere Darstellung des Programms 40 (1) und/oder der Steuerungsroutine 50 (2) gezeigt. 3 stellt im Einzelnen das Programm 40/die Steuerungsroutine 50 dar, die mittels einer Entwickler-IDE 100 und einer Wettbewerbs-Netzwerk-Site 200 umgesetzt sind. In der IDE 100 ist der Prozessor 110 der Wettbewerbs-Anmerkungen so konfiguriert/eingerichtet, dass er wettbewerbsbezogene Anmerkungen aus Programmcode-Dateien extrahiert. Der Wettbewerbsmanager 130 nutzt ein Wettbewerbs-Site-Register 120 zum Erhalten einer Liste von Sites, an denen Anforderungen eröffnet werden können. Der Wettbewerbsmanager 130 kann außerdem eine auf Erwartungen gestützte Suchsteuerungsroutine 150 nutzen, um Wettbewerbs-Gelegenheiten sowie Rücktritts-Gelegenheiten zu erkennen. Der Wettbewerbsmanager 130 kann zusätzlich einen Leistungs-Profiler 140 nutzen, um zu ermitteln, ob eine entwickelte Bibliothek den Leistungsspezifikationen des Entwicklers entspricht. Der Wettbewerbsmanager 130 kann schließlich Wettbewerbe an einer Wettbewerbs-Site 200 eröffnen. Entwickler können zum Bereitstellen von Bibliotheken mit Lösungen für Codeprobleme mit Wettbewerbs-Sites 200 interagieren.
  • Veranschaulichendes Beispiel
  • Dieser Abschnitt beschreibt verschiedene Funktionen, die durch die Steuerungsroutine 50 gemäß eines nachfolgend dargestellten veranschaulichenden Beispiels ausgeführt werden.
  • Anmerkungsanalyse: Bei einem Beispiel wird angenommen, dass ein Benutzer eine Bibliothek sucht, um eine Base64-Codierung von Strings auszuführen (2). Für deren Anwendung wird weiter angenommen, dass der Benutzer wünscht, dass es sich bei der Rückgabe von dem Bibliotheksaufruf ebenfalls um einen String handelt. Zum Auslösen einer Suche kann der Benutzer Folgendes in den Code eingeben, wo der Bibliotheksaufruf erfolgen soll:
    Figure DE112013002953T5_0002
  • Die obige Gruppe von Befehlen fordert die IDE auf, ein Durchsuchen von Ablagen nach Verfahren aufzurufen, die die Ausdrücke „base64“ und „decode“ enthalten. Bei Verfahren mit Übereinstimmungen kann die IDE dann die Suche auf Verfahren einengen, die öffentlich sind, ein String-Objekt zurückgeben und ein einzelnes String-Objekt als Parameter erwarten. Wenn des Weiteren zu diesem Verfahren ein String von „hello“ zugeführt wird, sollte der Rückgabewert von diesem Verfahren ein String von „aGVsbG8=“ sein. Dem Benutzer kann dann eine Liste von Verfahren mit Übereinstimmungen sowie den Bibliotheken, zu denen diese Verfahren gehören, präsentiert werden. Wenn die IDE nicht in der Lage ist, eine Bibliothek mit Übereinstimmungen für die gelieferten Anmerkungen zu finden, könnte bei dem Entwickler der Wunsch bestehen, dass die Bibliothek neu entwickelt wird und über einen Wettbewerb zugestellt wird. Eine neue Anmerkung kann genutzt werden, um diesen Prozess zu ermöglichen wie nachfolgend in dem folgenden Beispiel beschrieben:
    Figure DE112013002953T5_0003
  • Codier-Wettbewerb: Bei einer Ausführungsform kann diese Anmerkung durch den Entwickler angefügt werden, während er alle Anmerkungen deklariert, die das Verfahren betreffen. Bei einer alternativen Ausführungsform kann die IDE, wenn keine Übereinstimmungen bei der Bibliotheksdurchsuchung gefunden werden, den Entwickler mittels einer Option auffordern, die Suche in einen Wettbewerb umzuwandeln. Der Entwickler fügt die Anmerkung @Competition zusammen mit den folgenden Attributen hinzu: Titel des Wettbewerbs, Beschreibung des Wettbewerbs und/oder Anfangs- und Enddatum, Kosten, die festgelegt sein können oder Kontaktangaben über Zeit/Material, ohne auf diese beschränkt zu sein. Außerdem fügt die IDE die anderen vom Entwickler bereitstellten Anmerkungen an, die für die Suche verwendet wurden.
  • Erfassen einer Wettbewerbsgelegenheit: Wenn die IDE nicht in der Lage ist, eine Bibliothek mit Übereinstimmungen für die gelieferten Anmerkungen zu finden, versucht die IDE die Suche in eine Wettbewerbsanforderung umzuwandeln. Bei einer Ausführungsform tastet die IDE die gesamte Code-Basis nach zusätzlichen Verfahren ab, bei denen keine Übereinstimmungen gefunden werden, und verknüpft sie in einem einzigen Wettbewerb.
  • Wettbewerbserzeugung: Der Entwickler kann mehrere Wettbewerbs-Sites einrichten, an die die IDE die Anforderung richtet. Alternativ kann der Entwickler eine Abfolge aufrechthalten, in der die Anforderung an mehreren Wettbewerbs-Sites erzeugt werden muss. Der Entwickler kann z.B. wünschen, dass die Anforderung zuerst an der gemeinsamen Site eröffnet wird. Wenn die Anforderung für eine im Voraus definierte Zeitspanne ohne Aktualisierung geöffnet bleibt, muss der Wettbewerb an einer öffentlichen, aber offenen Quell-Site eröffnet werden. Die Anforderung kann schließlich an einer kommerziellen Site eröffnet werden, bei der alle Wettbewerbe bezahlt werden. Zusätzlich muss der Entwickler außerdem spezifizieren, was die IDE mit dem Wettbewerb an der vorhergehenden Site in der Abfolge tun sollte, wenn einer in der nächsten Site erzeugt wird (wodurch ermöglicht wird, dass der Wettbewerb offen bleibt oder der Wettbewerb geschlossen wird).
  • Automatische Akzeptanz und Einbinden von Wettbewerbsergebnissen: Die IDE prüft periodisch Wettbewerbs-Sites nach dem Status offener Wettbewerbe. Wenn ein Wettbewerb angibt, dass sein Status abgeschlossen ist, kann die IDE mehrere Schritte ausführen. Die IDE kann im Einzelnen:
    • (1) Die bei dem Wettbewerb erzeugte Bibliothek herunterladen und in Bezug auf die Erwartungen prüfen, die durch den Entwickler spezifiziert werden. Bei diesem Schritt kann die IDE den Entwickler auffordern, zusätzliche Prüfdaten zu liefern.
    • (2) Wenn die Bibliothek die Akzeptanz-Prüfung besteht, kann die IDE die Bibliothek in das Projekt automatisch einschließen und den Wettbewerb beenden.
  • Erfassen einer Gelegenheit zur Rücknahme eines Wettbewerbs: Die IDE wiederholt periodisch Durchsuchungsvorgänge, bei denen Wettbewerbe aktuell offen sind. Wenn die IDE zuvor keine Bibliotheks-Übereinstimmung gefunden hatte und nun eine solche findet, benachrichtigt die IDE den Entwickler über eine Gelegenheit zur Rücknahme des offenen Wettbewerbs.
  • Aufheben/Verbessern eines Wettbewerbs: Der Entwickler kann die Komponente und einen nachfolgenden Wettbewerb während der Architekturphase des Projekts definieren. Dadurch kann der Entwickler einen Wettbewerb für bestimmte Arbeitsabschnitte fordern, während sich der Entwickler auf andere Bereiche konzentriert. Der Entwickler kann später zu dem mit Anmerkungen versehenen Abschnitt zurückkehren und den Code selbst entwickeln, wenn er andere Teile des Projekts fertiggestellt hat und der Code noch nicht entwickelt wurde. In Abhängigkeit von der Handlung des Entwicklers kann der Codier-Wettbewerb aufgehoben oder modifiziert werden. Wenn der Entwickler die Wettbewerbs-Markierung entfernt, entfernt das System den Wettbewerb von der Wettbewerbs-Site. Bei einem weiteren Szenario kann der Entwickler die Wettbewerbs-Markierungen mit einer Anmerkung zur Leistungssteigerung aktualisieren, die spezifiziert, um welchen Wert die aktuelle Umsetzung schneller wird. Der Entwickler kann beispielsweise den Wettbewerb trotzdem offen lassen, falls jemand in der Lage ist, diesen Abschnitt des Moduls so zu schreiben, dass er um 20% schneller läuft als die eigene Umsetzung des Entwicklers. Ausführungszeiten und Verbesserungen können mit automatisch erzeugten Mikro-Bewertungen gemessen werden.
  • In den 4A und 4B ist ein Ablaufplan des Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Im Schritt R1 wird ermittelt, ob eine Wettbewerbsgelegenheit erkannt wird. Wenn das nicht der Fall ist, geht der Prozess zum Schritt R6. Wenn das der Fall ist, fügt die IDE die zugehörigen Anmerkungen im Schritt R2 einer Wettbewerbsanforderung hinzu. Im Schritt R3 wird ermittelt, ob weitere Wettbewerbsgelegenheiten in dem Projekt vorhanden sind. Wenn das der Fall ist, kehrt der Prozess zum Schritt R2 zurück. Wenn das nicht der Fall ist, wird die Wettbewerbsanforderung im Schritt R4 an die Wettbewerbs-Site gesendet. Im Schritt R5 wird ermittelt, ob zusätzliche Wettbewerbs-Sites zur Verfügung stehen. Wenn das der Fall ist, kehrt der Prozess zum Schritt R4 zurück. Wenn das nicht der Fall ist, fragt die IDE im Schritt R8 den Wettbewerbsindex für offene Wettbewerbe ab, und im Schritt R7 wird ermittelt, ob offene Wettbewerbe vorhanden sind. Wenn das nicht der Fall ist, endet der Prozess. Wenn das der Fall ist, fragt die IDE im Schritt R8 die Wettbewerbsstatuswerte an den Wettbewerbs-Sites ab. Im Schritt R9 wird ermittelt, ob der Status abgeschlossen ist. Wenn das der Fall ist, erhält die IDE im Schritt R10 die entwickelte Bibliothek von der Wettbewerbs-Site und bewertet die Bibliothek im Schritt R11 in Bezug auf Übereinstimmungen. Im Schritt R16 wird ermittelt, ob die Bibliothekskriterien eingehalten wurden. Wenn das nicht der Fall ist, gibt die IDE im Schritt R17 den Wettbewerb zum Teilnehmer/Benutzer mit einem Ergebnisbericht zurück. Wenn das der Fall ist, nimmt die IDE im Schritt R18 die Bibliothek in das Projekt auf und beendet den Wettbewerb. Im Schritt R19 benachrichtigt die IDE den Entwickler über die Beendigung des Wettbewerbs.
  • Wenn der Wettbewerb im Schritt R9 einen Status nicht abgeschlossen aufweist, würde die IDE im Schritt 12 unter Verwendung einer spezifizierten Ausnahme nach einem Verfahren suchen und anschließend im Schritt S13 zur Verfügung stehende Ablagen durchsuchen. Im Schritt S14 wird ermittelt, ob eine Übereinstimmung gefunden wurde. Wenn das nicht der Fall ist, geht der Prozess zum Schritt R20. Wenn das der Fall ist, benachrichtigt die IDE den Entwickler im Schritt R15, den Wettbewerb abzuschließen. Im Schritt R20 wird ermittelt, ob zusätzliche Wettbewerbe ablaufen. Wenn das der Fall ist, erhält die IDE im Schritt R21 den nächsten Wettbewerb von dem Index, und der Prozessor kehrt zum Schritt R8 zurück. Wenn das nicht der Fall ist, endet der Prozess.
  • In 5 ist ein Ablaufplan eines weiteren Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt (das beispielsweise durch die Steuerungsroutine 50 von 2 ermöglicht wird). Wie dargestellt wird im Schritt S1 eine erste Anmerkung in einer Programmcodedatei erkannt, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die der Programmcodedatei zugehörig ist. Im Schritt S2 wird eine Anforderung zum Umsetzen eines Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität in Reaktion auf ein Fehlen einer vorhandenen Bibliothek 70 empfangen, die die Funktionalität aufweist. Im Schritt S3 wird eine zweite Anmerkung in die Programmcodedatei eingefügt, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist. Im Schritt S4 wird der Codier-Wettbewerb anhand der Gruppe von Attributen instanziiert zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen. Im Schritt S5 wird aus der Gruppe von Entwickler-Bibliotheken eine Entwickler-Bibliothek identifiziert, die der Gruppe von Attributen am besten entspricht.
  • Zwar ist die Erfindung hier als eine Lösung zum Instanziieren eines Codier-Wettbewerbs gezeigt und beschrieben, jedoch ist klar, dass sie des Weiteren verschiedene alternative Ausführungsformen bereitstellt. Bei einer Ausführungsform stellt die Erfindung beispielsweise ein durch einen Computer lesbares/nutzbares Medium bereit, das Programmcode enthält, um eine Computer-Infrastruktur zu befähigen, ein Instanziieren eines Codier-Wettbewerbs in der oben erläuterten Weise bereitzustellen. In diesem Zusammenhang enthält das durch einen Computer lesbare/nutzbare Medium Programmcode, der jeden der verschiedenen Prozesse der Erfindung umsetzt. Es ist klar, dass die Bezeichnungen computerlesbares Medium oder durch Computer nutzbares Medium einen oder mehrere von beliebigen Typen der physischen Ausführungsform des Programmcodes aufweisen. Das durch einen Computer lesbare/nutzbare Medium kann insbesondere Programmcode aufweisen, der auf einem oder mehreren tragbaren Speicherartikeln aus einem Herstellungsprozess (z.B. eine Compactdisk, eine Magnetplatte, ein Band usw.), auf einem oder mehreren Datenspeicherabschnitten einer Datenverarbeitungseinheit wie z.B. der Arbeitsspeicher 28 (1) und/oder das Speichersystem 34 (1) (z.B. eine Festplatte, ein Festwertspeicher, ein Direktzugriffspeicher, ein Cache-Speicher usw.) verkörpert ist.
  • Bei einer weiteren Ausführungsform stellt die Erfindung ein Verfahren bereit, das den Prozess der Erfindung auf der Grundlage eines Abonnements, einer Werbung und/oder einer Gebühr ausführt. Das heißt, ein Diensteanbieter wie etwa ein Lösungsintegrator könnte anbieten, einen Codier-Wettbewerb zum Instanziieren einer Funktionalität bereitzustellen. In diesem Fall kann der Diensteanbieter eine Computer-Infrastruktur wie beispielsweise das Computersystem 12 (1) erzeugen, vorhalten, unterstützen, die die Prozesse der Erfindung für einen oder mehrere Kunden ausführt. Der Diensteanbieter kann wiederum Zahlungen von dem (den) Kunden auf der Grundlage einer Abonnementund/oder Gebührenvereinbarung erhalten und/oder der Diensteanbieter kann Zahlungen aus dem Verkauf von Werbeinhalten an eine oder mehrere dritte Stellen erhalten.
  • Bei einer noch weiteren Ausführungsform stellt die Erfindung ein durch einen Computer umgesetztes Verfahren zum Instanziieren eines Codier-Wettbewerbs bereit. In diesem Fall kann eine Computer-Infrastruktur wie beispielsweise das Computersystem 12 (1) bereitgestellt werden und ein oder mehrere Systeme zum Ausführen der Prozesse der Erfindung können erhalten (z.B. erzeugt, gekauft, verwendet, modifiziert usw.) und bei der Computer-Infrastruktur angewendet werden. In diesem Zusammenhang kann der Einsatz eines Systems aufweisen: (1) Installieren von Programmcode in einer Datenverarbeitungseinheit wie beispielsweise das Computersystem 12 (1) von einem computerlesbaren Medium; und/oder (2) Hinzufügen einer oder mehrerer Datenverarbeitungseinheiten zu der Computer-Infrastruktur; und/oder (3) Einbinden und/oder Modifizieren eines oder mehrerer vorhandener Systeme der Computer-Infrastruktur, damit die Computer-Infrastruktur die Prozesse der Erfindung ausführen kann.
  • Es ist klar, dass die hier verwendeten Ausdrücke „Programmcode“ und „Computer-Programmcode“ Synonyme darstellen und alle Ausdrucksformen einer Gruppe von Befehlen in jeder Sprache, jedem Code oder jeder Schreibweise bedeuten, die vorgesehen sind, um zu bewirken, dass eine Datenverarbeitungseinheit mit der Möglichkeit der Informationsverarbeitung eine bestimmte Funktion entweder direkt oder nach (a) einer Umsetzung in eine andere Sprache, einen anderen Code oder eine andere Schreibweise und/oder (b) einer Wiedergabe in einer anderen materiellen Form ausführt. In diesem Zusammenhang kann Programmcode als ein Anwendungs-/Softwareprogramm und/oder eine Komponenten-Software/Bibliothek von Funktionen und/oder ein Betriebssystem und/oder ein Basis-Einheitensystem/Treiber für eine bestimmte Datenverarbeitungseinheit und dergleichen verkörpert sein.
  • Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, kann demgemäß bereitgestellt werden und kann wenigstens einen Prozessor enthalten, der über einen Systembus mit Speicherelementen direkt oder indirekt zum Datenaustausch verbunden ist. Zu Speicherelementen gehören lokale Speicher, die während der eigentlichen Ausführung von Programmcode verwendet werden, Massenspeicher und Cache-Speicher, die eine vorübergehende Speicherung von wenigstens eines Teils des Programmcodes bereitstellen, um die Häufigkeit zu verringern, wie oft Code während der Ausführung vom Massenspeicher abgerufen werden muss, sie sind jedoch nicht darauf beschränkt. Eingabe/Ausgabe- und/oder andere externe Einheiten (zu denen Tastaturen, Anzeigen, Zeigeeinheiten usw. gehören, jedoch nicht darauf beschränkt sind) können direkt oder über zwischengeschaltete Einheiten-Controller mit dem System verbunden sein.
  • Netzwerk-Adapter können außerdem mit dem System verbunden sein, damit das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen, fernen Druckern, Speichereinheiten und/oder dergleichen über jede Kombination von zwischengeschalteten privaten oder öffentlichen Netzwerken verbunden werden kann. Zu beispielhaften Netzwerk-Adaptern gehören Modems, Kabel-Modems und Ethernet-Karten, sind jedoch nicht darauf beschränkt.
  • Die vorhergehende Beschreibung verschiedener Aspekte der Erfindung wurde für Zwecke der Erläuterung und Beschreibung bereitgestellt. Sie soll jedoch weder erschöpfend sein noch die Erfindung auf die genaue Form, die beschrieben wurde, beschränken, wobei offensichtlich viele Modifikationen und Variationen möglich sind. Derartige Modifikationen und Variationen, die einem Fachmann ersichtlich sind, sollen im Umfang der Erfindung enthalten sein, der durch die beigefügten Ansprüche definiert ist.

Claims (22)

  1. Ein Computer-implementiertes Verfahren zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung, wobei das Verfahren aufweist: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit für eine Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugeordnet ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen einer Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
  2. Ein Computer-implementiertes Verfahren nach Anspruch 1, das ferner ein Identifizieren der Funktionalität aus der Entwickler-Bibliothek aufweist.
  3. Ein Computer-implementiertes Verfahren nach Anspruch 2, das ferner ein Umsetzen der Funktionalität aufweist, um dem Problem eine Lösung zuzuführen.
  4. Ein Computer-implementiertes Verfahren nach Anspruch 1, wobei die Gruppe von Attributen aufweist: einen Titel und/oder eine Beschreibung und/oder ein Anfangsdatum und/oder ein Enddatum und/oder eine Kontaktangabe und/oder eine Honorierung im Zusammenhang mit dem Codier-Wettbewerb.
  5. Ein Computer-implementiertes Verfahren nach Anspruch 4, das ferner ein Bereitstellen der Honorierung für wenigstens einen Entwickler aufweist, der der Entwickler-Bibliothek zugeordnet ist.
  6. Ein Computer-implementiertes Verfahren nach Anspruch 1, wobei ein Computerimplementiertes Verfahren über eine integrierte Entwicklungsumgebung (IDE) umgesetzt wird.
  7. Ein Computer-implementiertes Verfahren nach Anspruch 1, das ferner ein Suchen in wenigstens einer Computer-Speichereinheit nach einer vorhandenen Bibliothek aufweist, die die Funktionalität aufweist.
  8. System zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung, wobei das Verfahren aufweist: ein Speichermedium, das Befehle aufweist; einen Bus, der mit dem Speichermedium verbunden ist; und einen mit dem Bus verbundenen Prozessor, der beim Ausführen der Befehle bewirkt, dass das System: eine erste Anmerkung in einer Programmcode-Datei erkennt, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugeordnet ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, eine Angabe empfängt, um einen Codier-Wettbewerb zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität zu instanziieren; eine zweite Anmerkung in die Programmcode-Datei einfügt, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; den Codier-Wettbewerb anhand der Gruppe von Attributen instanziiert zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und eine Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken identifiziert, die der Gruppe von Attributen am besten entspricht.
  9. System nach Anspruch 8, wobei das Speichermedium ferner Befehle aufweist, um zu bewirken, dass das System die Funktionalität aus der Entwickler-Bibliothek identifiziert.
  10. System nach Anspruch 9, wobei das Speichermedium ferner Befehle aufweist, um zu bewirken, dass das System die Funktionalität umsetzt, um dem Problem eine Lösung zuzuführen.
  11. System nach Anspruch 8, wobei die Gruppe von Attributen aufweist: einen Titel und/oder eine Beschreibung und/oder ein Anfangsdatum und/oder ein Enddatum und/oder eine Kontaktangabe und/oder einen Bonus, der dem Codier-Wettbewerb zugeordnet ist.
  12. System nach Anspruch 11, wobei das Speichermedium ferner Befehle aufweist, um zu bewirken, dass das System den Bonus an wenigstens einen Entwickler bereitstellt, der der Entwickler-Bibliothek zugeordnet ist.
  13. System nach Anspruch 8, wobei das System über eine integrierte Entwicklungsumgebung (IDE) umgesetzt ist.
  14. System nach Anspruch 8, wobei der Speicher ferner Befehle aufweist, um zu bewirken, dass das System in wenigstens einer Computer-Speichereinheit nach einer vorhandenen Bibliothek sucht, die die Funktionalität aufweist.
  15. Computerprogrammprodukt zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist und auf dem computerlesbaren Speichermedium Befehle gespeichert sind zum: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugeordnet ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen einer Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
  16. Computerprogrammprodukt nach Anspruch 15, wobei das computerlesbare Speichermedium ferner Befehle zum Identifizieren der Funktionalität aus der Entwickler-Bibliothek aufweist.
  17. Computerprogrammprodukt nach Anspruch 16, wobei das computerlesbare Speichermedium ferner Befehle zum Umsetzen der Funktionalität aufweist, um dem Problem eine Lösung zuzuführen.
  18. Computerprogrammprodukt nach Anspruch 15, wobei die Gruppe von Attributen aufweist: einen Titel und/oder eine Beschreibung und/oder ein Anfangsdatum und/oder ein Enddatum und/oder eine Kontaktangabe und/oder eine Honorierung im Zusammenhang mit dem Codier-Wettbewerb.
  19. Computerprogrammprodukt nach Anspruch 18, wobei das computerlesbare Speichermedium ferner Befehle zum Bereitstellen der Honorierung für wenigstens einen Entwickler aufweist, der der Entwickler-Bibliothek zugeordnetist.
  20. Computerprogrammprodukt nach Anspruch 15, wobei das Computerprogrammprodukt über eine integrierte Entwicklungsumgebung (IDE) umgesetzt wird.
  21. Computerprogrammprodukt nach Anspruch 15, wobei das computerlesbare Speichermedium ferner Befehle aufweist, um in wenigstens einer Computer-Speichereinheit nach einer vorhandenen Bibliothek zu suchen, die die Funktionalität aufweist.
  22. Verfahren zum Einsatz eines Systems zum Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetzten Datenverarbeitungsumgebung, das aufweist: Bereitstellen einer Computer-Infrastruktur, die in der Lage ist zum: Erkennen einer ersten Anmerkung in einer Programmcode-Datei, die eine Gruppe von Programmmodulen aufweist, wobei die erste Anmerkung eine Notwendigkeit einer Funktionalität angibt, die wenigstens einem Programmmodul aus der Gruppe von Programmmodulen zugeordnet ist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek, die die Funktionalität aufweist, Empfangen einer Angabe zum Instanziieren des Codier-Wettbewerbs zwischen einer Gruppe von Entwicklern zum Bereitstellen der Funktionalität; Einfügen einer zweiten Anmerkung in die Programmcode-Datei, wobei die zweite Anmerkung eine Gruppe von Attributen des Codier-Wettbewerbs aufweist; Instanziieren des Codier-Wettbewerbs anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken, die eine Möglichkeit zum Bereitstellen der Funktionalität aufweisen; und Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken, die der Gruppe von Attributen am besten entspricht.
DE112013002953.7T 2012-06-13 2013-05-15 Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung Ceased DE112013002953T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/495,267 2012-06-13
US13/495,267 US8875093B2 (en) 2012-06-13 2012-06-13 Instantiating a coding competition to develop a program module in a networked computing environment
PCT/IB2013/053980 WO2013186642A1 (en) 2012-06-13 2013-05-15 Instantiating a coding competition to develop a program module in a networked computing environment

Publications (1)

Publication Number Publication Date
DE112013002953T5 true DE112013002953T5 (de) 2015-03-05

Family

ID=49757181

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013002953.7T Ceased DE112013002953T5 (de) 2012-06-13 2013-05-15 Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung

Country Status (4)

Country Link
US (1) US8875093B2 (de)
CN (1) CN104335171B (de)
DE (1) DE112013002953T5 (de)
WO (1) WO2013186642A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223769B2 (en) 2011-09-21 2015-12-29 Roman Tsibulevskiy Data processing systems, devices, and methods for content analysis
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
US9135591B1 (en) * 2014-05-15 2015-09-15 Linkedin Corporation Analysis and assessment of software library projects
US9547482B2 (en) * 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation
CN113138762A (zh) * 2017-07-27 2021-07-20 创新先进技术有限公司 Ui页面开发方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290636A (ja) 2000-04-04 2001-10-19 Nec Corp ソフトウェア保守販売方法
US6658642B1 (en) * 2000-06-21 2003-12-02 International Business Machines Corporation System, method and program product for software development
US6874140B1 (en) 2000-07-31 2005-03-29 Microsoft Corporation Debug annotations
CN1503951A (zh) * 2001-01-09 2004-06-09 托普科德公司 用于编码竞赛的系统和方法
US7778866B2 (en) * 2002-04-08 2010-08-17 Topcoder, Inc. Systems and methods for software development
US7584458B2 (en) 2003-10-02 2009-09-01 Microsoft Corporation Source code annotation language
JP2005216233A (ja) 2004-02-02 2005-08-11 Nec Corp オープンソースソフトウェアのバグ修正システム
US7703075B2 (en) 2005-06-22 2010-04-20 Microsoft Corporation Programmable annotation inference
US8141036B2 (en) 2005-07-07 2012-03-20 Oracle International Corporation Customized annotation editing
US20070089085A1 (en) * 2005-10-13 2007-04-19 Atkin Steven E System and method for identifying and measuring adherence to software development requirements
US7987456B2 (en) 2006-01-24 2011-07-26 Microsoft Corporation Qualitatively annotated code
US20070250378A1 (en) * 2006-04-24 2007-10-25 Hughes John M Systems and methods for conducting production competitions
US9021416B2 (en) * 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system
WO2009062033A1 (en) * 2007-11-09 2009-05-14 Topcoder, Inc. System and method for software development
JP4915362B2 (ja) 2008-02-14 2012-04-11 日本電気株式会社 静的検証ツールのアノテーション自動挿入方法
US20100030626A1 (en) * 2008-05-08 2010-02-04 Hughes John M Distributed software fault identification and repair
US20110307304A1 (en) 2010-06-11 2011-12-15 Microsoft Corporation Crowd-sourced competition platform
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments

Also Published As

Publication number Publication date
US8875093B2 (en) 2014-10-28
US20130339920A1 (en) 2013-12-19
CN104335171A (zh) 2015-02-04
CN104335171B (zh) 2017-09-22
WO2013186642A1 (en) 2013-12-19

Similar Documents

Publication Publication Date Title
DE102016226302B4 (de) Voice-action-system für entwickler
Mao et al. A survey of the use of crowdsourcing in software engineering
DE102016125508B4 (de) Auffindbarkeitssystem für Sprachaktionen
US11386510B2 (en) Method and system for integrating web-based systems with local document processing applications
DE112016002120T5 (de) Entwicklungs- und Vetriebsplattform für Software
DE112018006345T5 (de) Abrufen von unterstützenden belegen für komplexe antworten
DE202016008042U1 (de) Infrastruktur für Hosting und Publishing von Softwarepaketen
DE112017005638T5 (de) Systeme und Verfahren zur Bestimmung der Beziehung zwischen Datenelementen
DE102009040570A1 (de) Verfahren und System zum Erzeugen eines dynamischen Hilfe-Dokuments
DE102014113870A1 (de) Identifizieren und Anzeigen von Beziehungen zwischen Kandidatenantworten
DE112013002953T5 (de) Instanziieren eines Codier-Wettbewerbs zum Entwickeln eines Programmmoduls in einer vernetztenDatenverarbeitungsumgebung
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE102020110542A1 (de) Verfahren und einrichtungen zum ver walten von tickets
DE112018005076T5 (de) Erstellen einer rangfolge von dokumenten auf grundlage ihres semantischen reichtums
DE112013000916T5 (de) System zum Anzeigen und Bearbeiten von Artefakten an einem zeitbezogenen Referenzpunkt
EP2354968A1 (de) Hyperadapter und Verfahren zum Zugreifen auf Dokumente in einer Dokumentenbasis
DE102014103281A1 (de) Verknüpfen unterschiedlicher typerzwingungskomponenten zum beurteilen eines latenten typs
DE102012221251A1 (de) Semantisches und kontextbezogenes Durchsuchen von Wissensspeichern
DE102014112983A1 (de) Aktive Wissenslenkung beruhend auf Dokumententiefenanalyse
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
Jensen et al. Data Mining for Software Process Discovery in Open Source Software Development Communities.
DE102018008188A1 (de) Erstellen von Inhalt basierend auf einer Mehr-Satz-Komprimierung eines Quellinhalts
DE102021004562A1 (de) Abwandlung von Szenengraphen auf Grundlage von Befehlen in natürlicher Sprache
DE102021126598A1 (de) Verfahren, Systeme, Erzeugnisse und Vorrichtungen zur Erzeugung von Codesemantik
DE102019220056A1 (de) Domänenwissensinjektion in halb-schwarmausgelagerte unstrukturierte datenzusammenfassung für diagnose und reparatur

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R081 Change of applicant/patentee

Owner name: KYNDRYL, INC., NEW YORK, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009440000

Ipc: G06F0008540000

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final