Tatsächlich gibt es bei diesen Prozessen so viele Variationen wie bei vielen Unternehmen. Das heißt: Jedes Unternehmen hat ein bisschen andere Konventionen als andere, aber es gibt einige gängige Best Practices, die in der Regel an den meisten Orten angewendet werden.
Best Practices, die immer nützlich sind
- Der gesamte Quellcode des Projekts und alles, was zum Erstellen erforderlich ist, unterliegt der Versionskontrolle (auch als Quellcodeverwaltung bezeichnet). Jeder sollte in der Lage sein, das gesamte Projekt mit einem Klick zu erstellen.
Darüber hinaus sollten unnötige Dateien (Objektdateien oder kompilierte Binärdateien) nicht zum Repository hinzugefügt werden, da sie recht einfach wiederhergestellt werden können und nur Speicherplatz im Repo verschwenden würden.
- Jeder Entwickler sollte einige Male pro Tag die Versionskontrolle aktualisieren und festlegen . Meistens, wenn sie die Aufgabe beendet haben, an der sie arbeiten, und sie genug getestet haben, damit sie wissen, dass sie keine trivialen Fehler enthält.
- Nochmals: Jeder sollte in der Lage sein, das Projekt mit einem einzigen Klick zu erstellen. Dies ist wichtig und erleichtert das Testen für alle. Ein großer Vorteil, wenn auch Nicht-Programmierer (z. B. der Chef) dazu in der Lage sind. (Sie fühlen sich in der Lage zu sehen, woran das Team genau arbeitet.)
- Jeder Entwickler sollte die neue Funktion oder Fehlerbehebung, die er hinzufügt, testen , bevor er diese in das Repository überträgt.
- Richten Sie einen Server ein, der sich regelmäßig (in festgelegten Intervallen) aus dem Repository aktualisiert und versucht, alles im gesamten Projekt zu erstellen . Wenn dies fehlschlägt, werden E-Mails zusammen mit den neuesten Festschreibungen an die Versionskontrolle an das Team gesendet (seitdem wurde keine Festschreibung erstellt), um das Problem zu beheben.
Diese Vorgehensweise wird als kontinuierliche Integration bezeichnet, und die Builds werden auch als nächtliche Builds bezeichnet .
(Dies bedeutet nicht, dass Entwickler den Code nicht auf ihren eigenen Computern erstellen und testen sollten. Wie oben erwähnt, sollten sie dies tun.)
- Natürlich sollte jeder mit dem grundlegenden Design / der Architektur des Projekts vertraut sein. Wenn also etwas benötigt wird, müssen verschiedene Mitglieder des Teams das Rad nicht neu erfinden. Das Schreiben von wiederverwendbarem Code ist eine gute Sache.
- Zwischen den Teammitgliedern ist eine Art Kommunikation erforderlich. Jeder sollte sich zumindest ein wenig darüber im Klaren sein, was die anderen tun. Je mehr desto besser. Aus diesem Grund ist das tägliche Aufstehen in SCRUM-Teams nützlich.
- Unit-Tests sind eine sehr gute Methode, mit der die grundlegenden Funktionen Ihres Codes automatisch getestet werden.
- Eine Fehlerverfolgungssoftware (manchmal auch als Zeiterfassungssoftware bezeichnet ) ist ein sehr gutes Mittel, um zu verfolgen, welche Fehler vorhanden sind und welche Aufgaben die verschiedenen Teammitglieder haben. Es eignet sich auch gut zum Testen: Die Alpha / Beta-Tester Ihres Projekts können auf diese Weise mit dem Entwicklungsteam kommunizieren.
Diese einfachen Dinge stellen sicher, dass das Projekt nicht außer Kontrolle gerät und jeder an derselben Version des Codes arbeitet. Der Continuos-Integrationsprozess hilft, wenn etwas furchtbar schlecht läuft.
Es verhindert auch, dass Benutzer Dinge festschreiben, die nicht im Haupt-Repository erstellt wurden.
Wenn Sie eine neue Funktion einbinden möchten, deren Implementierung Tage dauern würde und die andere Personen daran hindern würde, das Projekt zu erstellen (und zu testen), verwenden Sie die Verzweigungsfunktion Ihrer Versionskontrolle.
Wenn dies nicht ausreicht, können Sie es auch für automatisierte Tests einrichten, sofern dies mit dem betreffenden Projekt möglich ist.
Noch ein paar Gedanken
Die obige Liste kann auf den ersten Blick sehr schwer sein. Ich empfehle, dass Sie es nach Bedarf befolgen : Beginnen Sie mit einer Versionskontrolle und einem Bug-Tracker und richten Sie später den Continuous Integration Server ein, falls Sie ihn benötigen. (Wenn es sich um ein großes Projekt handelt, werden Sie es sehr bald brauchen.) Schreiben Sie Unit-Tests für die wichtigsten Teile. Wenn es nicht genug ist, schreiben Sie mehr davon.
Einige nützliche Links:
Kontinuierliche Integration , Tägliche Builds sind Ihre Freunde , Versionskontrolle , Unit-Tests
Beispiele:
Für die Versionskontrolle verwende ich heutzutage Git für meine persönlichen Projekte. Subversion ist ebenfalls beliebt, und beispielsweise ist VisualSVN recht einfach einzurichten, wenn Sie einen Windows-Server verwenden. Für Kunden funktioniert TortoiseSVN am besten für viele Menschen. Hier ist ein Vergleich zwischen Git und SVN.
Für Bug-Tracking-Software sind Jira und Bugzilla sehr beliebt. Wir haben Mantis auch an einem früheren Arbeitsplatz verwendet.
Für Software zur kontinuierlichen Integration gibt es Teamcity für eine (auch CruiseControl und sein .NET-Gegenstück sind bemerkenswert).
Antwort auf Ihre Frage "Wer entscheidet über das Hauptdesign des Projekts?"
Das wäre natürlich der Hauptentwickler.
In Unternehmen ist der Hauptentwickler die Person, die mit den Finanz- / Marketingmitarbeitern des Projekts spricht und die Arcithecture entsprechend der finanziellen Leistungsfähigkeit des Unternehmens, den geplanten Merkmalen, den Anforderungen der Benutzer und der verfügbaren Zeit festlegt.
Es ist eine komplexe Aufgabe, an der normalerweise mehr als eine Person beteiligt ist. Manchmal werden Mitglieder des Teams auch gebeten, sich an der Gestaltung des gesamten Projekts oder bestimmter Teile zu beteiligen oder ein Brainstorming durchzuführen.