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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, 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
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 von2 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt; - die
4A und4B 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 Datenverarbeitungsknoten10 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 Datenverarbeitungsknoten10 kann trotzdem umgesetzt werden und/oder jede der oben dargestellten Funktionalitäten ausführen. - Im Datenverarbeitungsknoten
10 gibt es ein Computersystem/einen Server12 , 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/Server12 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 Server12 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 Server12 im Datenverarbeitungsknoten in Form einer Mehrzweck-Datenverarbeitungseinheit gezeigt. Zu Komponenten des Computersystems/Servers12 können ein oder mehrere Prozessoren oder Prozessoreinheiten16 , ein Systemspeicher28 und ein Bus18 , der zahlreiche Systemkomponenten, darunter den Systemspeicher28 , mit dem Prozessor16 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 Server12 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-Speicher32 enthalten. Das Computersystem/der Server12 kann ferner weitere Wechsel/Nichtwechsel-, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Das Speichersystem34 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 Bus18 verbunden sein. Wie nachstehend weiter dargestellt und beschrieben kann der Speicher28 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 Programmmodulen42 (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 Speicher28 gespeichert werden. Das Instanziieren40 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. Programmmodule42 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 Einheiten14 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige24 usw.; einer oder mehreren Einheiten, die ermöglichen, dass ein Verbraucher mit dem Computersystem/Server12 interagiert; und/oder allen Einheiten (z.B. Netzwerkkarte, Modem usw.), die ermöglichen, dass das Computersystem/der Server12 mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten austauscht. Ein derartiger Datenaustausch kann über E/A-Schnittstellen22 erfolgen. Das Computersystem/der Server12 kann des Weiteren über Netzwerkadapter20 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 Netzwerkadapter20 mit den anderen Komponenten des Computersystems/Servers12 über den Bus18 Daten aus. Obwohl nicht gezeigt sollte klar sein, dass andere Hardwareund/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server12 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/Server12 , das bzw. der als ein eigenständiges Computersystem oder ein vernetztes Computersystem umgesetzt werden kann, ist in2 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 (Steuerungsroutine50 ) aufweisen. Stattdessen könnte die Steuerungsroutine50 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 Steuerungsroutine50 trotzdem in dem Computersystem/Server12 gezeigt. Die Steuerungsroutine50 kann im Allgemeinen als Programm/Dienstprogramm40 im Computersystem12 von1 umgesetzt sein und kann die hier angegebenen Funktionen ermöglichen. Wie weiter gezeigt weist die Steuerungsroutine50 (in einer Ausführungsform) eine Steuerungsroutine für Regeln und/oder Rechenvorgänge auf, die eine Gruppe (wenigstens eine) von Regeln/Logikschaltungen52 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 Steuerungsroutine50 kann neben weiteren Funktionen im Einzelnen (u.a.) ausführen: Erkennen einer ersten Anmerkung56A in einer Programmcode-Datei54 , wobei die erste Anmerkung56A eine Notwendigkeit für eine Lösung66 für ein Problem58 angibt, das der Programmcode-Datei54 zugehörig ist; Suchen in wenigstens einer Computer-Speichereinheit68 nach einer vorhandenen Bibliothek70 , die die Lösung66 aufweist; in Reaktion auf ein Fehlen einer vorhandenen Bibliothek70 , die die Lösung66 aufweist, Empfangen einer Anforderung zum Umsetzen eines Codier-Wettbewerbs64 zwischen einer Gruppe von Entwicklern zum Bereitstellen der Lösung66 ; Einfügen einer zweiten Anmerkung56B in die Programmcode-Datei54 , wobei die zweite Anmerkung56B eine Gruppe von Attributen des Codier-Wettbewerbs64 aufweist (z.B. einen Titel, eine Beschreibung, ein Anfangsdatum, ein Enddatum, eine Kontaktangabe, eine Vergütung usw.); Umsetzen des Codier-Wettbewerbs64 anhand der Gruppe von Attributen zum Identifizieren einer Gruppe von Entwickler-Bibliotheken60A bis N (z.B. von konkurrierenden Entwicklern62A bis N), die die Möglichkeit aufweisen, die Lösung66 bereitzustellen; Identifizieren einer Entwickler-Bibliothek aus der Gruppe von Entwickler-Bibliotheken60A bis N, die der Gruppe von Attributen am besten entspricht; Identifizieren der Lösung66 aus der Entwickler-Bibliothek; Umsetzen der Lösung66 , um dem Problem58 eine Lösung zuzuführen; und/oder Bereitstellen der Honorierung für den wenigstens einen Entwickler, der der Entwickler-Bibliothek zugehörig ist. Obwohl2 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 Programms40 (1 ) und/oder der Steuerungsroutine50 (2 ) gezeigt.3 stellt im Einzelnen das Programm40 /die Steuerungsroutine50 dar, die mittels einer Entwickler-IDE100 und einer Wettbewerbs-Netzwerk-Site200 umgesetzt sind. In der IDE100 ist der Prozessor110 der Wettbewerbs-Anmerkungen so konfiguriert/eingerichtet, dass er wettbewerbsbezogene Anmerkungen aus Programmcode-Dateien extrahiert. Der Wettbewerbsmanager130 nutzt ein Wettbewerbs-Site-Register120 zum Erhalten einer Liste von Sites, an denen Anforderungen eröffnet werden können. Der Wettbewerbsmanager130 kann außerdem eine auf Erwartungen gestützte Suchsteuerungsroutine150 nutzen, um Wettbewerbs-Gelegenheiten sowie Rücktritts-Gelegenheiten zu erkennen. Der Wettbewerbsmanager130 kann zusätzlich einen Leistungs-Profiler140 nutzen, um zu ermitteln, ob eine entwickelte Bibliothek den Leistungsspezifikationen des Entwicklers entspricht. Der Wettbewerbsmanager130 kann schließlich Wettbewerbe an einer Wettbewerbs-Site200 eröffnen. Entwickler können zum Bereitstellen von Bibliotheken mit Lösungen für Codeprobleme mit Wettbewerbs-Sites200 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: - 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:
- 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 und4B 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 Steuerungsroutine50 von2 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 Bibliothek70 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 Speichersystem34 (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 Computersystem12 (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)
- 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.
- Ein Computer-implementiertes Verfahren nach Anspruch 1, das ferner ein Identifizieren der Funktionalität aus der Entwickler-Bibliothek aufweist.
- Ein Computer-implementiertes Verfahren nach Anspruch 2, das ferner ein Umsetzen der Funktionalität aufweist, um dem Problem eine Lösung zuzuführen.
- 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.
- 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.
- Ein Computer-implementiertes Verfahren nach Anspruch 1, wobei ein Computerimplementiertes Verfahren über eine integrierte Entwicklungsumgebung (IDE) umgesetzt wird.
- 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.
- 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.
- System nach Anspruch 8, wobei das Speichermedium ferner Befehle aufweist, um zu bewirken, dass das System die Funktionalität aus der Entwickler-Bibliothek identifiziert.
- 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.
- 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.
- 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.
- System nach Anspruch 8, wobei das System über eine integrierte Entwicklungsumgebung (IDE) umgesetzt ist.
- 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.
- 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.
- Computerprogrammprodukt nach Anspruch 15, wobei das computerlesbare Speichermedium ferner Befehle zum Identifizieren der Funktionalität aus der Entwickler-Bibliothek aufweist.
- Computerprogrammprodukt nach Anspruch 16, wobei das computerlesbare Speichermedium ferner Befehle zum Umsetzen der Funktionalität aufweist, um dem Problem eine Lösung zuzuführen.
- 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.
- 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.
- Computerprogrammprodukt nach Anspruch 15, wobei das Computerprogrammprodukt über eine integrierte Entwicklungsumgebung (IDE) umgesetzt wird.
- 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.
- 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.
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)
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)
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 |
-
2012
- 2012-06-13 US US13/495,267 patent/US8875093B2/en not_active Expired - Fee Related
-
2013
- 2013-05-15 CN CN201380028258.6A patent/CN104335171B/zh active Active
- 2013-05-15 DE DE112013002953.7T patent/DE112013002953T5/de not_active Ceased
- 2013-05-15 WO PCT/IB2013/053980 patent/WO2013186642A1/en active Application Filing
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 |