In der firmeninternen Softwareentwicklung werden Anforderungen häufig durch einen formalen Prozess festgelegt, der zur Erstellung einer Reihe von Anforderungsdokumenten führt. In der Open-Source-Softwareentwicklung scheint dies häufig nicht vorhanden zu sein. Meine Frage lautet daher: Wie werden Anforderungen in Open-Source-Softwareprojekten ermittelt?
Mit "Anforderungen bestimmen" meine ich einfach "herausfinden, welche Funktionen usw. als Teil einer bestimmten Software entwickelt werden sollten".
open-source
Histelheim
quelle
quelle
Antworten:
Open-Source-Projekte haben manchmal intensive Ströme von Benutzer-Feedback, und manchmal zahlen Unternehmen einfach dafür, bestimmte Funktionen zu planen und zu implementieren (indem sie ihre eigenen Entwickler oder die ursprünglichen Entwickler einstellen).
Wenn Ihr Projekt 100 Benutzer hat, können Sie wahrscheinlich das entwickeln, was am meisten Spaß macht.
Wenn Ihr Projekt 100.000 Benutzer hat, haben Sie höchstwahrscheinlich bereits eine Liste der Schwachstellen, die die meisten Benutzer in der nächsten Version beheben möchten, und eine Liste der Top-N-Funktionen, die Benutzer in Ihrem Issue-Tracker anfordern und in Foren immer wieder nachfragen.
Mit diesem Feedback können Sie Anforderungsdokumente für Ihr Kernteam schreiben, Roadmaps erstellen, die unabhängigen Mitarbeitern helfen, Ihre Vision zu verstehen, und hoffen, dass einige der 100.000 Benutzer Patches einsenden.
quelle
Ich verfolge Open Source, seit ich 1995 zum ersten Mal von Linux gehört habe, und ich kann mich nicht erinnern, jemals das in diesem Zusammenhang verwendete Wort "Anforderungen" gehört zu haben.
Eric Raymond hat einen guten Aufsatz, The Cathedral and the Bazaar , in dem er über "Kratzer am eigenen Juckreiz" spricht. Wenn Sie versuchen, ein Problem zu lösen, mit dem Sie persönlich konfrontiert sind, müssen Sie nicht auf Anforderungsdokumente zurückgreifen, um herauszufinden, ob Sie es gelöst haben oder nicht.
In demselben Aufsatz geht es auch darum, Ihren Benutzern zuzuhören. Dies ist ein guter Rat für alle, nicht nur für Open Source-Projekte. Open-Source-Projekte sind in der Regel meritokratisch. Wer also den Code schreibt, macht die Regeln mehr oder weniger.
quelle
Nach meiner Erfahrung ist dies viel häufiger bei der vertraglichen Entwicklung, insbesondere wenn ein externes Unternehmen die Entwicklung für Ihr Unternehmen durchführt, und es besteht die rechtliche Notwendigkeit eines Vertrags. Aber viele andere Unternehmen kontrollieren ihre interne Entwicklung auf andere Weise durch ihre eigenen Mitarbeiter:
informelle Kommunikation
Priorisierte Anforderungen / Fehler / Probleme / Ticketlisten (und das ist definitiv keine Erfindung der "agilen" Community)
Dies ist die gleiche Art und Weise, wie die meisten Open-Source-Projekte funktionieren - da kein formeller Vertrag erforderlich ist, stört es niemanden, große, detaillierte, formale Anforderungsdokumente zu erstellen, sondern nur kleine, schmerzlose Listen fehlender Funktionen oder in einer Ausgabe gesammelte Tickets Tracker gelöst werden.
quelle
Wenn das Problem häufig auftritt, beispielsweise beim Schreiben eines Compilers oder eines Browsers, werden die Anforderungen in Form von Sprachstandards, Zielbetriebssystemen und Zielhardware usw. angegeben.
Für Dinge wie GNU Emacs, die viele Dinge für viele sind und nicht nur das ursprüngliche Ziel, ein Texteditor zu sein, hervorragend erfüllen, halte ich die Anforderungen aufgrund des immensen Umfangs für eine Erweiterung für sinnvoll. Chats, E-Mails, Newsgroups, Code-Bearbeitung und Versionskontrolle kommen mir in den Sinn. Es gibt einen Forscher, der an Emacspeak arbeitet. Ich denke, ähnliche Dinge können von Browsern und anderen Dingen gesagt werden, die Erweiterungen erlauben.
Wenn die Software eine Funktion aufholt, die nur in Nicht-Open-Source-Software verfügbar ist, wird die Anforderung wiedergegeben.
BEARBEITEN:
Wenn die Open-Source-Software gewartet wird und weniger ursprüngliche Anforderungen nicht erfüllt werden, können die meisten Anforderungen auf Fehler zurückzuführen sein, die an neue Plattformen wie Multi-Core-CPUs und andere Hardware angepasst werden müssen, die bei Ausnutzung eine bessere Leistung bieten, und dergleichen.
In einem vollständig forschungsbasierten Projekt wie dem GNU Hurd würde ich denken, dass die Anforderungen aus Forschungsergebnissen und Papieren stammen.
Um zusammenzufassen,
Zu Beginn können die Anforderungen an Software, die versucht, häufig auftretende Probleme zu lösen, aus Standarddokumenten stammen
Für Software, die andere vorhandene Software einholt, besteht die Anforderung wahrscheinlich darin, den gesamten oder den größten Teil des Funktionsumfangs der vorhandenen Software und einige andere Funktionen zu erstellen, die für Entwickler / Benutzer interessant sind
Für Forschungsprojekte könnten Papiere und andere Veröffentlichungen die Anforderungen festlegen
Während der Wartung können Fehler, die an neuere Umgebungen angepasst werden müssen, die Hauptursache für Anforderungen sein
quelle
Ich weiß es nicht genau, aber einmal wird vorgeschlagen, eine agile Methode zu verwenden, bei der Anforderungen als Tickets (oder "Karten") unter Verwendung von JIRA erhoben werden, wobei jedes Ticket eine Funktion oder Anforderung darstellt. Jedes Ticket könnte dann in andere Tickets zerlegt werden, die kleinere Arbeitseinheiten darstellen.
Um herauszufinden, was eine Anwendung oder Software tatsächlich tun soll, lautet die einfache Antwort "mit den anderen Entwicklern sprechen". :) "Sprechen" kann in diesem Fall eine E-Mail-Verteilerliste, ein Forum oder sogar ein IRC bedeuten, alles, was es Personen in verschiedenen Zeitzonen und geografischen Orten ermöglicht, zu chatten.
quelle