2. Über mich...
• Stefan Brandt
• PHP seit 2001 (register_globals=on)
• Fachinformatiker Systemintegration
• Zend Certified Engineer
• TWT Interactive GmbH
• Aktuelles Team
• 10 PHP Entwickler
• XING: http://www.xing.com/profile/Stefan_Brandt27
• Privat: Handball & Reisen
3. Disclaimer
Die nachfolgenden Punkte beruhen auf meinen/
unseren praktischen Erfahrungen
Empfehlungen
Nicht in Stein gemeißelt
Keine Garantie! ;-)
4. Software Entwicklung im
Team ...
... hat viele Bestandteile
1. Menschen
2. Tools und Standards
3. Prozesse
4. Kommunikation
6. Versionskontrolle
Grundlage für Arbeit an einer gemeinsame Codebasis.
Jeder arbeitet in seiner eigenen Arbeitskopie.
Schafft mehr Transparenz
Wer hat was wann und warum geändert?
Welche Dateien waren betroffen?
Rollback bei Fehlern einfach möglich
Hilfsmittel und kein Kontrollmittel
Gute, kostenlose Systeme verfügbar
Subversion
GIT
Bazaar
etc.
Kein Grund es nicht zu benutzen!
8. Standardisierte
Entwicklungsumgebung
Editor, IDE, Build-Werkzeuge, Entwicklungsserver, etc.
Erleichtert die Integration neue Mitarbeiter/Teammitglieder
Kann von den Sysadmins vorinstalliert werden
Besserer Support möglich (alle haben die gleichen
Probleme) ;-)
Einstellungen und Tools können zentral vorgegeben werden
Zentrale Dokumentation wird durch Standards erst möglich
10. Coding Standards
Jeder Entwickler hat einen eigenen Stil
Coding Standards vereinheitlichen die Formatierung
Der gesamte Code wird für alle leichter lesbar.
Einarbeitung in „fremde“ Codeteile wird beschleunigt.
Fertige Coding Standards gibt es ...
PEAR Coding Styleguide
Zend PHP Coding Standards
etc.
Alternative: Definition eines eigenen Standards
Tipp: Beachten Sie bei der Einführung die Kompatibilität zu ggf.
eingesetzten Frameworks.
Herausforderung: Trennung von „neuem“ und „legacy“ Code.
12. Coding Standards einhalten
Standards sind nur sinnvoll, wenn sich alle daran halten
Erfahrung zeigt, dass die pure Existenz die Einhaltung nicht
garantiert.
Regelmäßige, automatische Überprüfung daher erforderlich
PHP_CodeSniffer
Integration in IDE stellt sinnvolle Unterstützung dar
Eclipse PTI (http://www.phpsrc.org/)
Netbeans (http://www.whitewashing.de/blog/articles/127)
Problematisch aber wirkungsvoll: Einsatz von Pre-Commit-
Hooks, die das einchecken verhindern.
14. Code Reviews
Führen sie einen Prozess bzw. Tool zur Durchführung von Code
Reviews ein.
Viele Vorteile
Besseres Verständnis des gesamten Codes
Code wird besser
Know How Transfer wird vereinfacht
Fehler fallen früher auf (Vier-Augen-Prinzip)
Flexiblere Einsatzmöglichkeiten der einzelnen
Teammitglieder.
Förderung von „Collective Code Ownership“
Teammitglieder sollten sich gegenseitig „reviewen“ um
Flaschenhälse zu vermeiden.
17. Build automatisieren
Verwenden Sie ein Tool um ihre Builds zu automatisieren
Phing
Ant
Make, etc.
Spart Zeit und Kosten
Schont die Nerven
Grundlage für weitere Automatisierung
Generierung von Modelklassen
Ausführen von Unittests
Erstellung von PEAR-Paketen
etc.
19. Continous Integration
Die Software wird kontinuierlich gebaut und getestet.
Intervall gesteuert oder nach jedem commit.
Im Fehlerfall wird eine Benachrichtigung ans Team verschickt.
Es entsteht ein zeitlicher Bezug zwischen Commit und
fehlerhaftem Build.
Fehlersuche beschränkt sich in der Regel auf die vom letzten
Commit betroffenen Dateien.
Erlaubt weitere Analysen, PHP_Codesniffer, Metriken, etc.
Kostenlose Tools: phpUnderControl bzw. Cruisecontrol, Hudson
21. Unittests
Lassens Sie besser schlafen.
Nimmt die Angst vor Veränderungen.
Änderungen sind vorprogrammiert.
Wenige Tests sind besser als gar keine.
Guter Start: Ein Test pro Bug.
Tests müssen automatisiert durchgeführt werden.
23. Bugtracker, Wiki, etc.
Moderne Tools verbinden Bugtracker, Wiki, uvm. unter einer
Oberfläche.
Alle Informationen liegen an einer zentralen Stelle vor.
Unterstützen bei Verwaltung von Repositories, Usern und
Gruppen.
Grundlage für Statistiken und weitere Automatisierung.
Freie und kommerzielle Systeme verfügbar:
Redmine
Trac
Jira