Einführung von Team System Ein Vorgehensvorschlag Toni Steimle 25.August 2008
A: Wird das Projekt heute fertig. B: Mmmh, voraussichtlich morgen A: Wird das Projekt heute fertig? B: Mmmh, voraussichtlich morgen. A: Das haben Sie doch gestern schon gesagt! B: Wir können ihnen doch auf die gleiche Frage heute keine andere Antwort geben!
Zielsetzungen Mögliches Vorgehen für Einführung von Visual Studio Team System kennenlernen Wichtige Aspekte und Fallstricke für Einführung kennenlernen Konkrete Erfahrungen und Beispiele kennen
Beispiel-Szenarios für Einführung Szenario Neues Bankteam Bank, .net Team mit 4 Entwickler und 2 Externen .net immer mehr nachgefragt Team übernimmt kritisches Projekt Heute kaum Teamarbeit, keine Versionsverwaltung Entwickler bekommen einfach Spezifikationen Szenario ERP Hersteller Software Unternehmen mit Standardsoftware 14 Entwickler vor Ort, 12 Entwickler Nearshore Halbjährliche Releases Weekly Builds, Ansätze von automatischem Testen RUP ähnliches Projektvorgehen Qualitätsproblem
Einflussfaktoren für die Einführung Einsatz von Team System Projekt und Teamgrösse Reifegrad des Teams Art der Projekte Bestehende Infrastruktur Standorte
Schrittweises Vorgehen im Überblick Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports
Nachverfolgbarkeit und Transparenz Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports
Kontinuierliche Integration Schwerpunkt dieser Präsentation Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports
Kontinuierliche Integration – kurz vorgestellt Einchecken wenn ok Integriert builden Automatisiert testen Freigeben oder Rollback Vorteile Integrations-Probleme werden laufend entdeckt und behoben – nicht erst kurz vor einem Meilenstein frühe Warnungen bei nicht zusammenpassenden Bestandteilen konstante Verfügbarkeit eines lauffähigen Standes für Demo-, Test- oder Vertriebszwecke Probleme/Risiken Build Geschwindigkeit im Vergleich zu Check-in Frequenz
„People matter most“ Basisinfrastruktur Versionskontrolle Agiles Projekt- management User Centred Design Test Driven Development Patterns Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports Schulen, Coachen, Mitarbeiten
Schritt 1: Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports
Basisinstallation Onsite Standort / Active Directory Offshore Standort / Active Directory Build Server TFS DB TFS Proxy 10 Visual Studio Clients TFS APP 15 Visual Studio Clients DMZ Sharepoint TFS Web Server TS Web Access TFS Fallback
Schritt 2: Versionskontrolle Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports
Versionskontrolle Themen Konzepte von Versionverwaltung: Labeling, Branching, Merging, Shelving, Changesets, Workspaces, Policies Aufteilung Teamprojekt, Solutions und Projekten Verzeichnisstrukturen Migration von Versionsverwaltungen Versionsverwaltung von Non-Sourcecode Branching und Merging Strategien Einbindung externer Komponenten Einsatz von Team System Projekt und Teamgrösse Reifegrad des Teams Art der Projekte Bestehende Infrastruktur Standorte
Versionskontrolle Aufteilung TFS Installation Team Projekt 1 Solution 1 Solution 2 Projekt 1 Projekt 2 Team Projekt 2 Solution 3 Prozesstemplate Buildprozess Assembly
Schritt 3: Build Automatisation Basisinfrastruktur Versionskontrolle Build Automatisation Projekttemplates Entwicklung Test Automatisation Code Metriken und Richtlinen Issue Management Projektreports
Themen Builds Buildstrategie Buildprozess optimieren Terminiert Sources aus der Versionsverwaltung holen Sources kompilieren Code Analyse durchführen Tests laufen lassen Code Coverage berechnen Bei Fehler Work Items kreieren Build Details loggen Build in Zielverzeichnis ablegen Buildstrategie Terminiert Kontinuierlich Kombination Buildprozess optimieren Builds per Branch Inkrementelle Builds und Smoke Testing Automated Deployment Externe Komponenten
Zusammenfassung Manchmal hat man nur eine Chance In Schritten vorgehen Team steht im Mittelpunkt Zuerst lernen dann verbessern