Open-Source-Softwareentwicklung

Open-Source-Softwareentwicklung (OSSD) ist der Prozess, durch den Quelloffene Software, oder eine ähnliche Software, deren Quellcode ist öffentlich verfügbar, wird von einem entwickelt Open-Source-Softwareprojekt. Dies sind Softwareprodukte, die mit seinem Quellcode unter einem verfügbar sind Open-Source-Lizenz zu studieren, zu verändern und sein Design zu verbessern. Beispiele für einige beliebte Open-Source-Softwareprodukte sind Mozilla Firefox, Google Chrom, Android, Libreoffice und die VLC Media Player.

Geschichte

In 1997, Eric S. Raymond schrieb Die Kathedrale und der Basar.[1] In diesem Buch unterscheidet Raymond zwischen zwei Arten der Softwareentwicklung. Das erste ist die konventionelle Entwicklung geschlossener Quellen. Diese Art von Entwicklungsmethode ist laut Raymond wie der Bau einer Kathedrale; Zentrale Planung, enge Organisation und ein Prozess von Anfang bis Ende. Die zweite ist die progressive Open-Source-Entwicklung, die eher "ein großer plätschernder Basar unterschiedlicher Agenden und Ansätze entspricht, aus denen ein kohärentes und stabiles System nur durch eine Reihe von Wundern auftauchen kann". Die letztere Analogie weist auf die Diskussion hin, die an einem Open-Source-Entwicklungsprozess beteiligt ist.

Unterschiede zwischen den beiden Entwicklungsstilen laut Bar und Fogel sind im Allgemeinen die Handhabung (und die Erstellung) von Fehlerberichten und Feature -Anfragen sowie die Einschränkungen, unter denen die Programmierer arbeiten.[2] Bei der Entwicklung von Closed-Source-Software verbringen die Programmierer häufig viel Zeit damit, Fehlerberichte zu tun und Feature-Anfragen zu bearbeiten. Diese Zeit wird für die Erstellung und Priorisierung von weiteren Entwicklungsplänen aufgewendet. Dies führt dazu, dass ein Teil des Entwicklungsteams viel Zeit für diese Themen und nicht für die tatsächliche Entwicklung verbringt. In geschlossenen Projekten müssen die Entwicklungsteams auch häufig zu Managementbeschränkungen (wie Fristen, Budgets usw.) arbeiten, die die technischen Probleme der Software beeinträchtigen. In der Open-Source-Softwareentwicklung werden diese Probleme gelöst, indem die Benutzer der Software in den Entwicklungsprozess integriert oder diese Benutzer sogar das System selbst erstellen lassen.

Modell

Prozessdatenmodell für die Open-Source-Softwareentwicklung

Open-Source-Softwareentwicklung kann in mehrere Phasen unterteilt werden. Die hier angegebenen Phasen werden abgeleitet Sharma et al.[3] Ein Diagramm, das die Prozessdatenstruktur der Open-Source-Softwareentwicklung zeigt, wird rechts angezeigt. In diesem Bild werden die Phasen der Open-Source-Softwareentwicklung zusammen mit den entsprechenden Datenelementen angezeigt. Dieses Diagramm wird mit dem gemacht Meta-Modelling und Meta-Process-Modellierung Techniken.

Ein Open-Source-Projekt starten

Es gibt verschiedene Möglichkeiten, wie Arbeiten an einem Open-Source-Projekt beginnen können:

  1. Eine Person, die die Notwendigkeit eines Projekts erkennt, kündigt die Absicht an, ein Projekt in der Öffentlichkeit zu entwickeln.
  2. Ein Entwickler, der an einer begrenzten, aber funktionierenden Codebasis arbeitet, gibt sie als erste Version eines Open-Source-Programms an die Öffentlichkeit frei.
  3. Der Quellcode eines ausgereiften Projekts wird der Öffentlichkeit veröffentlicht.
  4. Ein gut etabliertes Open-Source-Projekt kann sein gegabelt von einer interessierten externen Partei.

Eric Raymond beobachtete in seinem Aufsatz Die Kathedrale und der Basar Die Ankündigung der Absicht für ein Projekt ist in der Regel unterlegen, ein Arbeitsprojekt an die Öffentlichkeit weiterzugeben.

Es ist ein häufiger Fehler, ein Projekt zu starten, wenn es zu einem bestehenden ähnlichen Projekt beitragen würde, effektiver (NIH -Syndrom). Um ein erfolgreiches Projekt zu beginnen, ist es sehr wichtig, zu untersuchen, was bereits da ist. Der Prozess beginnt mit einer Wahl zwischen der Annahme eines bestehenden Projekts oder dem Start eines neuen Projekts. Wenn ein neues Projekt gestartet wird, geht der Prozess in die Einweihungsphase. Wenn ein vorhandenes Projekt angewendet wird, geht der Prozess direkt in die Ausführungsphase.[Originalforschung?]

Arten von Open-Source-Projekten

Es gibt verschiedene Arten von Open-Source-Projekten. Erstens gibt es die Gartenvielfalt von Softwareprogrammen und Bibliotheken, die aus eigenständigen Codestücken bestehen. Einige könnten sogar von anderen Open-Source-Projekten abhängig sein. Diese Projekte erfüllen einen bestimmten Zweck und erfüllen einen bestimmten Bedarf. Beispiele für diese Art von Projekt sind die Linux Kernel, Der Firefox -Webbrowser und die Libreoffice Office Suite von Tools.

Verteilungen sind eine andere Art von Open-Source-Projekt. Verteilungen sind Softwaresammlungen, die aus derselben Quelle mit einem gemeinsamen Zweck veröffentlicht werden. Das bekannteste Beispiel für eine "Verteilung" ist ein Betriebssystem. Es gibt viele Linux Verteilungen (wie z. Debian, Fedora -Kern, Mandriva, Slackware, Ubuntu usw.) die den Linux-Kernel zusammen mit vielen Benutzer-Landkomponenten versenden. Es gibt andere Verteilungen wie ActivePerl, das Perl Programmiersprache für verschiedene Betriebssysteme und Cygwin Verteilungen von Open-Source-Programmen für Microsoft Windows.

Andere Open-Source-Projekte wie die BSD Derivate verwalten den Quellcode eines gesamten Betriebssystems, des Kernels und aller seiner Kernkomponenten in einem Revisionskontrolle System; Entwicklung des gesamten Systems gemeinsam als einzelnes Team. Diese Betriebssystementwicklungsprojekte integrieren ihre Tools eng integrieren als in den anderen verteilungsbasierten Systemen.

Schließlich gibt es das Buch oder das eigenständige Dokumentprojekt. Diese Artikel versenden normalerweise nicht als Teil eines Open-Source-Softwarepakets. Das Linux -Dokumentationsprojekt beherbergt viele solche Projekte, die verschiedene Aspekte des Linux -Betriebssystems dokumentieren. Es gibt viele andere Beispiele für diese Art von Open-Source-Projekt.

Methoden

Es ist schwierig, ein Open-Source-Projekt nach einer traditionelleren Softwareentwicklungsmethode wie dem durchzuführen Wasserfall-ModellWeil es in diesen traditionellen Methoden nicht zu einer vorherigen Phase zurückkehren darf. Bei der Entwicklung von Open-Source-Software werden die Anforderungen vor Beginn des Projekts selten erhoben. Stattdessen basieren sie auf frühen Veröffentlichungen des Softwareprodukts, wie Robbins beschreibt.[4] Neben den Anforderungen wird häufig freiwillige Mitarbeiter angezogen, um das Softwareprodukt basierend auf den frühen Veröffentlichungen der Software zu entwickeln. Dieser Netzwerkeffekt ist laut Abrahamsson et al.: „Wenn der eingeführte Prototyp genug Aufmerksamkeit sammelt, wird er nach und nach immer mehr Entwickler anziehen.“ Abrahamsson et al. weisen auch darauf hin, dass die Community sehr hart ist, ähnlich wie die Geschäftswelt der Closed-Source-Software: „Wenn Sie die Kunden finden, die Sie überleben, aber ohne Kunden sterben Sie.“[5]

Fuggetta[6] argumentiert, dass „schnelles Prototyping, inkrementelle und evolutionäre Entwicklung, Spirallebenszyklus, schnelle Anwendungsentwicklung und kürzlich extreme Programmierung und der agile Softwareprozess gleichermaßen auf proprietäre und Open -Source -Software angewendet werden können“. Er bestimmt auch Extremes Programmieren Als äußerst nützliche Methode für die Entwicklung von Open -Source -Software. Allgemeiner alle, alle Agile Programmierung Methoden sind aufgrund ihres iterativen und inkrementellen Charakters auf Open-Source-Softwareentwicklung anwendbar. Eine andere agile Methode ist gleichermaßen nützlich für die Softwareentwicklung der offenen und geschlossenen Quellen:Internet-Geschwindigkeits-EntwicklungZum Beispiel eignet sich aufgrund des verteilten Entwicklungsprinzips für Open-Source-Softwareentwicklung. Die Entwicklung von Internetspeed nutzt geografisch verteilte Teams, um rund um die Uhr zu arbeiten. Diese Methode, die größtenteils von großen Unternehmen mit geschlossenen Quellen übernommen wird (weil sie die einzigen sind, die sich Entwicklungszentren in verschiedenen Zeitzonen leisten), funktioniert in Open-Source-Projekten ebenso gut, da eine von einer große Gruppe von Freiwilligen entwickelte Software natürlich tendiert Entwickler verbreiten sich in allen Zeitzonen.

Werkzeug

Kommunikationskanäle

Entwickler und Benutzer eines Open-Source-Projekts arbeiten nicht alle unbedingt in der Nähe an dem Projekt. Sie erfordern elektronische Kommunikationsmittel. Email ist eine der häufigsten Kommunikationsformen zwischen Open-Source-Entwicklern und Benutzern. Häufig, Elektronische Mailinglisten werden verwendet, um sicherzustellen, dass E-Mail-Nachrichten an alle interessierten Parteien gleichzeitig zur Verfügung gestellt werden. Dies stellt sicher, dass mindestens eines der Mitglieder darauf antworten kann. Um in Echtzeit zu kommunizieren, verwenden viele Projekte eine Instant Messaging Methode wie IRC. Web-Foren sind in letzter Zeit zu einer gemeinsamen Möglichkeit für Benutzer geworden, Hilfe bei Problemen zu erhalten, denen sie bei der Verwendung eines Open-Source-Produkts auftreten. Wikis sind als Kommunikationsmedium für Entwickler und Benutzer gemeinsam geworden.[7]

Versionskontrollsysteme

In der OSS -Entwicklung sind die Teilnehmer, die größtenteils Freiwillige sind, zwischen verschiedenen geografischen Regionen verteilt, sodass Tools erforderlich sind, um den Teilnehmern bei der Zusammenarbeit bei der Entwicklung des Quellcode zu helfen.

Anfang der 2000er Jahre, Gleichzeitige Versionssystem (CVS) war ein herausragendes Beispiel für ein Quellcode -Kollaborations -Tool, das in OSS -Projekten verwendet wurde. CVS hilft bei der Verwaltung der Dateien und Codes eines Projekts, wenn mehrere Personen gleichzeitig am Projekt arbeiten. Mit CVS können mehrere Personen gleichzeitig an derselben Datei arbeiten. Dies erfolgt durch Verschieben der Datei in die Verzeichnisse der Benutzer und dann die Fusion der Dateien, wenn die Benutzer fertig sind. Mit CVS können auch eine frühere Version einer Datei problemlos abrufen. Mitte der 2000er Jahre, Das Subversion Revision Control System (SVN) wurde erstellt, um CVS zu ersetzen. Es gewinnt schnell als OSS -Projektversionskontrollsystem an Boden.[7]

Viele Open-Source-Projekte verwenden jetzt verteilte Revisionskontrollsysteme, die besser als zentralisierte Repositorys wie SVN und CVS skalieren. Beliebte Beispiele sind Git, verwendet von der Linux Kernel, und Quecksilber, verwendet von der Python Programmiersprache.

Fehlerverfolger und Aufgabenlisten

Die meisten groß angelegten Projekte erfordern ein Fehlerverfolgungssystem, um den Status verschiedener Probleme bei der Entwicklung des Projekts zu verfolgen. Einige Bug -Tracker sind:

  • Bugzilla -ein webbasierter Fehler-Tracker von Mozilla.
  • Mantis Bug Tracker -Ein webbasiertes PHP/MySQL-Fehler-Tracker.
  • Trac - Integration eines Fehler -Trackers in ein Wiki und eine Schnittstelle zum Subversion -Versionskontrollsystem.
  • Redmine - In Ruby geschrieben, integriert die Ausgabe von Problemen, Wiki, Forum, Nachrichten, Roadmap, Gantt -Projektplanung und Schnittstellen mit LDAP -Benutzerverzeichnis.
  • Anfrage Tracker - in Perl geschrieben. Als standardt an gegeben CPAN Module - siehe rt.cpan.org.
  • SourceForge und seine Gabeln bieten einen Bug -Tracker als Teil seiner Dienste. Infolgedessen werden viele Projekte auf SourceForge.net und ähnliche Dienste standardmäßig gehostet, um es zu verwenden.
  • Jira -Webbasierter Projektmanagement und Ausgabe-Tracking-Tool von Atlassian.

Testen und Debugging -Tools

Da OSS -Projekte häufig integriert werden, werden Tools verwendet, mit denen die Tests während der Systemintegration automatisiert werden. Ein Beispiel für ein solches Werkzeug ist Tinderbox. Tinderbox ermöglicht es den Teilnehmern eines OSS -Projekts, Fehler während der Systemintegration zu erkennen. Tinderbox führt einen kontinuierlichen Build -Prozess durch und informiert Benutzer über die Teile des Quellcode, die Probleme haben und auf welchen Plattform (en) diese Probleme auftreten.[7]

A Debugger ist ein Computerprogramm, mit dem andere Programme debuggen (und manchmal testen oder optimieren) werden. GNU -Debugger (GDB) ist ein Beispiel für einen Debugger, der in der Open-Source-Softwareentwicklung verwendet wird. Dieser Debugger bietet ein entferntes Debugging, was es besonders für die Entwicklung von Open-Source-Software anwendbar macht.

Ein Speicherleckwerkzeug oder Speicherdebugger ist ein Programmierwerkzeug zum Suche Speicherlecks und Pufferüberläufe. Ein Speicherleck ist eine bestimmte Art von unnötigem Speicherverbrauch durch ein Computerprogramm, bei dem das Programm nicht mehr benötigt wird, der nicht mehr benötigt wird. Beispiele für die von Mozilla verwendete Speicherleckdetektionsinstrumente sind die XPCOM Speicherleckwerkzeuge. Validierungswerkzeuge werden verwendet, um zu überprüfen, ob Codeteile der angegebenen Syntax entsprechen. Ein Beispiel für ein Validierungswerkzeug ist Schiene.

Paketverwaltung

A Paketverwaltungssystem ist eine Sammlung von Tools zur automatisierenden Installation, Aktualisierung, Konfiguration und Entfernen von Softwarepaketen von einem Computer. Das Red Hat Package Manager (Drehzahl) für .rpm und Erweitertes Verpackungstool (Eigentlich) für .Deb Dateiformat sind Paketverwaltungssysteme, die von einer Reihe von Linux -Verteilungen verwendet werden.

Veröffentlichung eines Projekts

Softwareverzeichnisse und Release -Protokolle:

  1. Das Kostenloses Softwareverzeichnis

Artikel:

  1. Linux Weekly News
  2. IBM Developerworks

Siehe auch

Verweise

  1. ^ Raymond, E.S. (1999). Die Kathedrale und der Basar. O'Reilly holte ab http://www.catb.org/~esr/writings/cathedral-bazaar/. Siehe auch: Die Kathedrale und der Basar.
  2. ^ Bar, M. & Fogel, K. (2003). Open Source -Entwicklung mit CVS, 3. Auflage. Paraglyphenpresse. ( ISBN1-932111-81-6)
  3. ^ Sharma, S., Sugumaran, V. & Rajagopalan, B. (2002). Ein Framework zum Erstellen von Hybrid-offenen Quellsoftware-Communities. Information Systems Journal 12 (1), 7 - 25.
  4. ^ Robbins, J. E. (2003). Übernahme von Open Source Software Engineering (OSSE) -Praktiken durch Einführung von OSSE -Tools. Sinn für den Basar: Perspektiven auf Open Source und Free Software, Herbst 2003.
  5. ^ Abrahamsson, P, Salo, O. & Warsta, J. (2002). Agile Softwareentwicklungsmethoden: Überprüfung und Analyse. VTT -Veröffentlichungen.
  6. ^ Fuggetta, Alfonso (2003). "Open Source -Software - eine Bewertung". Zeitschrift für Systeme und Software. 66 (1): 77–90. doi:10.1016/s0164-1212 (02) 00065-1.
  7. ^ a b c "Tim Berners-Lee im Internet mit 25: Vergangenheit, Gegenwart und Zukunft". Wired UK.

Externe Links