Moderne SoftwareEntwicklung mit TFS 2013 und Visual Studio 2013 Christian Binder (Microsoft) Thomas Schissler (artiso) http://www.flickr.com/photos/5auge/9134637318/ http://www.flickr.com/photos/ian_crowther/8538917315/ http://www.flickr.com/photos/54027476@N07/4999919941/ IDEAS DATA CODE Anforderungs Management Qualitätssicherung Stakeholder einbeziehen AppTelemetrie Continous Delivery Erweiterbare Architektur EntwicklerProduktivität Developer Operations Planning Tools Was ist daran falsch? Technologien, Architektur, Tools etc. sind cool Aber welchen Kundennutzen erzeugen sie? Bauen wir wirklich Funktionen die unsere Anwender benötigen? Oder bauen wir Funktionen von denen wir glauben, dass sie benötigt werden? Stakeholder sind wichtig für ein Projekt, ohne sie kein Projekt Also müssen wir sie auch wichtig nehmen und uns um sie kümmern Alle die ein Interesse an dem Ergebnis haben, ohne direkt an der Umsetzung beteiligt zu sein Management Marketing / Sales Kunden / Key-User Außendienst Operations Trainings Support … You can‘t just ask customers what they want and then try to give that to them. By the time you get it built, they‘ll want something new. Steve Jobs Priorität bei Stakeholdern DeploymentAufwand Feedback verwalten Unklare Anforderungen Best Guess Sprach- und DomainBarrieren ? || Storyboards • Ideen schnell und einfach Skizzieren und Abstimmen • Konzepte reviewen Feedback Client • Qualifiziertes Feedback einholen • Inkrementelle Entwicklung optimieren Storyboarding & Feedback Client 1. MAKE BUSINESS HYPOTHESIS A TESTABLE EXPERIMENT 2. DEFINE EXPERIMENT AS MINIMUM VIABLE PRODUCT (MVP) 3. BUILD MEASUREMENT INTO MVP 6. PERSEVERE OR PIVOT 5. GAIN VALIDATED LEARNING 4. MEASURE THE RESULTS Release Category Feature TFS 2012.1 Kanban Kanban Board TFS 2012.2 Web-based Test Case Management Execution of Manual Test Cases & basic Test Case Authoring TFS 2012.2 Kanban Customizable Columns TFS 2012.2 Backlog Management Tagging work items TFS 2013 Web-based Test Case Management Test Plan & Suite authoring in the web and many other improvements TFS 2013 Team Collaboration Team Room and Code Comments in changesets/commits TFS 2013 Project Management Across Agile Teams Agile Portfolio Management – “Features” TFS 2013 Git Git support for on-premises, Branch Visualization, etc. TFS 2013 WI Charts Basic Reporting based on WI Queries http://tfs.visualstudio.com/news/release-archive Team Foundation Server / Service Team Projekt A 3rd Party Lokale Repos Team Projekt B 3rd Party Continuous Integration http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6 TFS DEV Automates Workflow QA PROD Full Traceability Release Management Release Management selbst gebaut Visual Studio PROD TFS RM 2013 QA DEV Azure Cloud Service + SQL Azure Visual Studio PROD QA VSO Continuous Delivery using Visual Studio Online Traditional Model DevOps Model Mean Time to Detect (MTTD) Mean Time to Repair (MTTR) Monitoring - System Center and TFS SCOM – Intellitrace on Demand Application Insights Application Insights Learn - Feedback and Telemetry WORKING Software http://visualstudio.uservoice.com Application Insights Available Health Dashboards Is my application available and performing for users? One Dashboard Performing Notifications & Deep Insights What’s wrong? Show me suspicious code and test cases Improving Usage Dashboards Where do we invest next? Show me top features and customer Usage patterns Code change Non-invasive Team Organisation Agiles Testen Mindset Test Automati -sierung Ein agiles Dream-Team AkzeptanzTest Driven Development (ATDD) Verändern das Qualitätsbewusstsein der Entwickler Gehören zur Machen Implementierung Entwickler effizienter Unit-Tests Herausforderungen Architektur Mindset Practices Objective Stub Shim Looking for max. performance? Abstract and Virtual methods Interfaces Internal types Static methods Sealed types Private methods http://vsartesttoolingguide.codeplex.com Exploratives Testen Regression Tests: Funktioniert noch, was gestern funktionierte? Default = Ja! Unit-Tests Integrationstests Automat. UI Tests Setup Tests 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 14 12 10 8 6 4 2 0 Memory Consuption of Process [MB] 5/31/2013 5/29/2013 5/27/2013 5/25/2013 5/23/2013 Testlaufzeit 5/21/2013 5/19/2013 5/17/2013 5/15/2013 5/13/2013 5/11/2013 5/9/2013 5/7/2013 5/5/2013 5/3/2013 5/1/2013 PerformanceAnalysen und TrendAuswertung CPU Usage [%] CPU Memory Load Tests in der Cloud Retrospektive Kontinuierliche Verbesserung Probleme früh erkennen Wissen und Erfahrung im Team nutzen Voneinander lernen Motivation durch gemeinsame Ziele Wartbar Testbar Erweiterbar • Redundanzen • UI-Componenten (z.B. Message-Boxen) im Code verwenden • Zugriffe auf Ressourcen (z.B. Files) nicht isolierbar • Zu viel Funktionalität in einer Methode • Starke Bindung zwischen Klassen Single Responsibility MVVM / MVC POCOs Sackgassenmethoden Trennung -Daten -Orchestrierung -Logik Komponentenorientierung IoC Interfaces IntegrationsTest Recognize SplitLine ReadData SplitDigit Recognize Digit DB IntegrationsTest Recognize IntegrationsTest SplitLine IntegrationsTest ReadData DB SplitDigit Recognize Digit IntegrationsTest Unit-Test Integrations-Test Recognize DB ReadData SplitLine SplitDigit Recognize Digit IntegrationsTest Unit-Test Unit-Test Unit-Test Code Maps Layer Diagramme UML Diagramme Code Clone Detection Code Visualisierung und Architektur-Tools GIT Integration Code Lense Team Rooms IDE Improvements IDE Improvements Moderne SoftwareEntwicklung ist mehr als Code und Technologien In kürzen Zyklen denken und agieren Automatisierung ist ein wesentlicher Aspekt [email protected] Microsoft Deutschland GmbH Konrad-Zuse-Str. 1 Christian Binder D-85716 Unterschleißheim http://blogs.msdn.com/cbinder [email protected] artiso Solutioins GmbH Oberer Wiesenweg 25 D-89134 Blaustein http://www.artiso.com/problog Thomas Schissler