Frage

Wie gehen Sie über einen täglichen Build tun und für ein Null-Fehler-Umfeld streben? Bedeutet es, ich nie nach Hause gehen zu bekommen, bis ich alle Fehler in meinem neuen Code getötet habe? Oder bedeutet es, ich nicht nur meinen Code überprüfen zurück, bis ich es vollständig getestet haben, die den Code lässt effektiv für eine viel längere Zeit verzweigt?

Ich arbeite mit einer Handvoll Programmierer zum ersten Mal (wie auf meinem eigenen Arbeit gegenüber, oder mit nur einem anderen Codierer), so dass ich nur mit Ringen Entscheidungen wie diese zum ersten Mal. Sollten wir einen Software-Entwicklungsprozess übernehmen?

War es hilfreich?

Lösung

Ja, wählen Sie bitte einen Software-Entwicklungsprozess übernehmen. Es gibt eine Vielzahl gibt, von denen ich bin sicher, dass mehr als ein Ihr Team passt. Auch ein, die nicht perfekt ist, ist viel besser als gar kein Prozess überhaupt.

Wie funktioniert mein Unternehmen gehen über die täglich mit aufbaut und das Streben nach Null-Fehler? Wir betreiben unsere Test-Suite, bevor wir in unserem Code überprüfen. Das einzigartige Problem für uns ist, dass eine vollständige Ausführung unserer Testsuite mehr als 72 Stunden in Anspruch nimmt, so laufen wir eine begrenzte Anzahl von Unit-Tests, bevor sie in Code zu überprüfen. Für unsere Nightly Builds, führen wir eine Reihe von Tests, die etwa 8 Stunden in Anspruch nehmen. Dann an den Wochenenden laufen wir die volle Testsuite. Jede Stufe fängt immer mehr Probleme, aber mehr als 90% ist mit den 5-Minuten Entwicklertests gefangen und wahrscheinlich mehr als 98% mit den nächtlichen Tests. Diese noch macht uns ziemlich früh, um Probleme, bevor sie unsere Kunden bekommen und eine Menge Geld kosten zu beheben.

Andere Tipps

Ganz einfach: Nie im Code überprüfen Sie mit (bekannt) Fehler drin. Dies bedeutet, dass Sie nicht einmal einchecken pro Tag. Check-in, wenn Sie eine sinnvolle Änderung implementiert haben, damit die anderen Entwickler Zugang zu ihm bekommen können.

Wir integrieren immer vor Ort, unsere Tests gegen den Code auszuführen, und wenn alle Pässe, wir einchecken. Ich überprüfe täglich in etwa 20-30 mal bei der Arbeit. Der Build-Server nimmt Änderungen und es läuft baut gegen das System. Kontinuierliche Integration (CI) ist eine gute Sache. : D

Continuous Integration - Automatisieren Sie Ihre Builds

Starten Sie mit dem Bau heraus erfolgreich und es auf diese Weise so viel wie möglich zu halten. Es ist wichtig, in einer Teamumgebung. Denken Sie daran, dass bricht baut. Es wird erwartet, dass sie jeder einmal in eine Weile zu brechen. Es ist ein Zeichen, dass Sie nur versehentlich in etwas schlecht überprüft, und Sie stoppen, was Sie tun, wieder die Build grün zu machen. Ein Build-Server, der nie gebrochen hat aufbaut, ist ein Warnzeichen!

Ich stimme auch mit chadmyers' Antwort: Was auch immer Sie sich entscheiden, muss er automatisch und automatisiert werden. Das Beste, was Tool über die Automatisierung für Sie diese Art von Sachen zu tun, ist, dass man nicht mehr daran denken oder daran erinnern, es zu tun. Oder wie Chad sagte, Sie nicht aufhören, es zu tun. Ich könnte empfehlen, eine Empfehlung für die CI-Tools machen aber einen Blick hier: Welche Werkzeuge haben Sie für die automatisierte Verwendung baut / Automatisierte Deployments? Warum?

Wenn Sie CI haben, können Sie eine höhere Qualität, wenn man etwas Humor injizieren (und Scham) durch einen gebrochenen Build Token Einführung! http: // ferventcoder .com / Archiv / 2008/08/20 / kontinuierliche Integration-Erweiterung - das aufgebrochene-build-token.aspx

Verwenden Sie ein gutes Werkzeug für die automatisierte Builds

Die meisten Menschen in .NET Landnutzung NAnt oder MSBuild Scripts automatisiert haben baut, dass sie später an ihren CI-Server anschließen können. Wenn Sie gerade erst anfangen, mein Vorschlag wäre, zu benutzen Uppercut , ist es ein irrsinnig ist leicht Build Framework zu verwenden, die NAnt verwendet. Hier ist eine zweite Verbindung mit tieferen Erklärungen:. Uppercut

Branchen vs Trunk für Aktive Entwicklung

Sie müssten nicht verzweigen, wenn Sie Stamm nur für Versionen offen lassen (was bedeutet, dass alle anderen in der gleichen Branche wie Sie arbeitet). Aber ich würde CI sowohl auf den Kofferraum und den aktiven Entwicklungszweig.

Software-Entwicklungs-Prozess

Auch die Frage nach einem Software-Entwicklungsprozess zu beantworten, ist die Antwort ein klares Ja. Aber keine Eile zu nichts, es sei denn eine drastische Änderung erforderlich ist. Wählen Sie einen Prozess, den Sie migrieren möchten hin und beginnen langsam Annahme Prozesse. Und bewerten, zu bewerten, zu bewerten. Wenn der jeweilige Prozess ist nicht für Ihre Gruppe arbeitet, herauszufinden, ob Sie etwas falsch machen, oder wenn Sie es gerade brauchen zu beseitigen. Und dann tun. Was auch immer Sie Prozess mit Bedürfnissen am Ende für Sie arbeitet oder es wird nicht funktionieren.

Es bedeutet viel kleiner Commits machen. Je öfter Sie commit Arbeitsrevisionen, desto weniger oft Ihre eigene Arbeitskopie wird immer gebrochen. Iterative Entwicklung beginnt mit Ihnen.

Anfang Integration, Integration oft integriert schnell. Anstatt einer ‚täglichen Build‘, bauen oft jedes Mal, wenn jemand begeht und begehen (mindestens einmal täglich, vorzugsweise mehr als 2).

Wichtig: Fast Feedback ist notwendig für defektarme. Wenn Ihr Build viele Minuten oder sogar mehr als eine Stunde dauert, schließlich wachsen Sie den Build hassen, lernen, es zu vermeiden, führen Sie es so wenig wie möglich, usw. ist es Wert schnell auf den Punkt fällt der wertlos und Ihre Zählung Defekt wird beginnen die Höhe schnellen.

Invest einige Zeit nach vorne zu bekommen Ihre Build schnell ausgeführt wird. Wenn es langsam Zeug ist, herauszufinden, warum es langsam ist und dass beseitigen. Wenn Sie nicht, dann zumindest eine Kaskadierung aufgebaut Builds so dass der Rest des Build schnell geht (man denke <2-5 Minuten) und die lang andauernde Sachen können sofort folgen nach und nehmen so lange sie will (obwohl versuchen halten es unter 10m Tops).

Sie können es nicht oft genug sagen: Fast Feedback-Zyklus auf Änderungen extrem wichtig ist

!

Der Trick ist, Check-in, so oft wie möglich gemacht nur einige Tests bestehen, schön überprüfen Sie es an! Es wurde ein einzelner Fehler, überprüfen Sie es an! Versuchen Sie, die kleinste erhöhen möglich zu finden und überprüfen Sie es an! Dies hat den zusätzlichen Vorteil, dass tatsächlich was es möglich macht und convinent checkin Kommentare zu schreiben, die wirklich relevant sind, so einen schönen Bonus das ist.

Natürlich steht das erfordert, dass Sie eine CI-Umgebung haben, die häufiger als die Nightly Builds, so oft wie möglich ist wirklich das Beste, was es Option.

Oh, und denken Sie daran, wenn es nie bricht, dann bist du es falsch zu machen. (Das heißt Du zu konservativ zu sein, ein wenig Bruch von Zeit zu Zeit geht nur um zu zeigen, dass Sie es hoffentlich schieben.)

Wenn Sie nicht nach Hause gehen, bis alle Ihre Mängel weg sind, dann werden Sie nie nach Hause gehen.

Meine Gedanken dazu sind, dass die täglichen Build sollten zu bestimmten Zeiten automatisiert werden. Jeder Code nicht überprüft, bevor diese in nicht bekommen gebaut und wenn es keine checkins von jemandem ist für 2 Tage (Builds) in einer Reihe dann sollte dem Build-System teilt sie und die Tech-Führung, als dies ein Warnzeichen ist.

Ein vielleicht pragmatischer Ansatz ist Null-Fehler auf dem Stamm zu haben, und Zweig für alle Entwicklung, dann täglich mit Builds ist möglich, sowohl auf den Stamm und Ästen, aber Null-Fehler gilt nicht verzweigt dev.

Zwar gibt es immer noch ein gewisses Maß an Stigma sein kann Ihre Branche aus, die zu brechen sein baut, ist es weniger ein Problem als den Stamm zu brechen.

Ein Blick durch die Antworten, die ich überrascht bin, dass niemand Test Driven Development erwähnt hat. Wenn Ihr Ziel ist Null-Fehler, das ist der beste Ort zu beginnen.

Danach würde ich stark Paar-Programmierung empfehlen.

verstehen

Schließlich, dass Tools wie Cruisecontrol sind nützlich, aber, wie Jim Shore sagte:

über die Null-Fehler-Strategie: Sie können nach Hause gehen, wenn bekannte Fehler im Code sind. Es geht mehr um, dass Fehler behoben werden sollen, bevor neue Funktionen implementiert sind.

Das muss für das gesamte Team nicht bewerben, aber wenn ein Entwickler einen Fehler zugewiesen hat, dass Fehler hat Vorrang vor neuen Funktionen dieser Entwickler erstellen hat.

Je nachdem, was Sie bauen in einer Weise vorgehen, die Mängel nicht erlaubt sind möglicherweise nicht geeignet. Meine persönliche Meinung ist, dass es selten, wenn überhaupt, ist.

Der ganze Sinn eines Fehlermanagementsystems ist genau das -, damit Sie Mängel verwalten. Wenn der Defekt ist ein show-stopping man dann sicher, Sie wollen wahrscheinlich nicht, es überprüfen in, aber wenn es etwas kleineren oder eine Kante Fall ist, dann kann es sinnvoll macht es zu überprüfen, in dem bekannten Defekt, solange Sie‘ re Tracking es.

Defekte erlauben existieren können Sie sich auf wichtigere Dinge konzentrieren - zum Beispiel, wenn Sie nur eine begrenzte Menge an Zeit in einem Release haben Sie keine Zeit, ein alles so gut zu beheben, wie auf alle Funktionen in zu bekommen, also wenn es haben kann Wahl zehn kanten Fall kleinere Fehler zwischen Fixierung oder ein Stück wertschöpfende Funktionalität zu schaffen dann der pragmatische Wahl sein kann mit bekannten Bugs zu versenden.

Ich bin Null-Fehler nicht sagen will, ist eine schlechte Idee - in der Tat sind wir bestrebt, dies bis zum Ende eines jeden Release-Zyklus -. Aber wie viele Dinge in der Software-Entwicklung, Pragmatismus normalerweise funktioniert besser in der realen Welt als Puritanismus

würde ich mit @feverentcoder auf den CI Argumente gehen. CI Ihr Freund ist, dann soll er Ihnen helfen!

Wie für die Branche / Trunk punkt- jeder immer auf der Seite Stamm arbeiten sollte , Zweig es sind für Spikes und POCs, Tag alle Mitteilungen

Wenn es um Prozesse geht, ist es in der Regel vorteilhaft zu finden ist Praktiken , die relevant sind für Sie und dann Mikro-Prozesse bauen um sie herum. Verwenden Sie außerdem nur solche Praktiken / Prozesse, die Sie Produktivität fühlen verbessern. Schließlich werden courageous- eine Woche lang eine Praxis versuchen oder zwei zu sehen, ob es mit Ihnen arbeitet; wenn dies nicht der Fall, werfen Sie es weg. Sie haben gelernt, nur eine weitere Möglichkeit nicht , um eine Glühbirne zu machen!

scroll top