Agile Development in .NET
Upcoming SlideShare
Loading in...5

Agile Development in .NET



The is from the book Agile Development in .NET by Dan Hermes. Most Agile methodologies used in .NET shops nationwide are variations of Scrum and Extreme Programming(XP). This booklet covers these ...

The is from the book Agile Development in .NET by Dan Hermes. Most Agile methodologies used in .NET shops nationwide are variations of Scrum and Extreme Programming(XP). This booklet covers these tools and techniques: Test-driven Development (TDD), Behavior-driven Development (BDD), Continuous Integration (CI), and Refactoring to Patterns. The QuickNotes series covers relevant topics in software development to provide the reader with a swift overview of important trends, terms, and concepts. This book is available at



Total Views
Views on SlideShare
Embed Views



1 Embed 78 78



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • Note Waterfall
  • Note Waterfall
  • Note Waterfall

Agile Development in .NET Agile Development in .NET Presentation Transcript

  • Dan Hermes
  • Waterfall
  • Waterfall Analysis Design Development Deployment
  • Waterfall Why didn’t it work?
  • CHANGE Design changes  New requirements  Code rewrites  Versioning test plans and docs  Release Rescheduling 
  • Agile Manifesto Individuals and interactions over processes and tools  Working software over comprehensive documentation  Customer collaboration over contract negotiation  Responding to change over following a plan 
  • How do we… Keep a team in sync at high speed?  Keep up with testing?  Implement super-fast releases?  Keep the code from becoming a mess? 
  • XP – the Dominant Agile Approach Scrum  Test-driven Development (TDD)  Behavior-driven Development (BDD)  Continuous Integration (CI)  Refactoring to Design Patterns  Code Reviews 
  • Scrum Scrum Master  Product Owner  Product Backlog  Sprint Planning Meeting  Sprint Backlog  Daily Scrum Meetings  Sprint Review Meeting 
  • Scrum
  • .NET  TFS Scrum Template  VS 2012 Team Web Access  Team Foundation Service  Powerpoint Storyboarding (VS 2012 Premium, Ultimate,Test Professional)  Code Review (VS 2012 Premium, Ultimate)
  • TFS Templates  Visual Studio Scrum 2.0+   Bugs + Product Backlog MSF for Agile Software Development v6.0+   bugs separate from Product Backlog resolve work items before closing them
  • VS Team Explorer - Scrum
  • Team Explorer – Work Items
  • Sprint Backog
  • Work Item
  • Team Web Access
  • Burndown Chart Provision your project with SQL Server Reporting Services
  • Team Foundation Service Kanban boards
  • TFS Licenses  Limited  View My Work Items  Standard  View My Work Items  Standard Features  Agile Boards  Full      View My Work Items Standard Features Agile Boards Backlog and Sprint Planning Tools Request and Manage Feedback
  • Urban Turtle
  • Eylean Assignments Kanban Board
  • So what does all this mean?
  • Test-driven Development (TDD) 1. 2. 3. 4. 5. Write the Test Break the Thing Run the Tests Fix All the Things Run all the successful Tests
  • Nunit Example
  • TDD in .NET Unit Test Template(in VS)  VSTest.Console.exe (replaces MSTest in VS 2012)  MSTest  ASP.NET MVC Framework 
  • Testing Frameworks NUnit  XUnit  MBUnit 
  • Mocking VS 2012 – MS Fakes – Stub and Shim  Moq  Rhino  NMock 
  • TDD - What’s It Good For? Highly effective for trivial code and code with few dependencies.  Effectiveness decreases with complexity and dependencies in the code. 
  • What else is important when you move fast?
  • Knowing Your Destination
  • Behavior-driven Development (BDD) Move Fast  Be Clear About Where You’re Going 
  • Given-When-Then Given (preconditions) When (event occurs) Then (a testable outcome is achieved)
  • Story: Buy Coffee  Given there is coffee left in the store and I have paid the cashier $5 plus tip.  When I stand in line in front of the Barista’s counter  Then I should be served a coffee
  • BDD with .NET SpecFlow  Cuke4Nuke  Cucumber with Ruby   Use BDD to create User Stories
  • Continuous Integration (CI) Image by Thoughtworks
  • Folwer’s Words of Wisdom “My general rule of thumb is that every developer should commit to the repository every day”  “Continuous Integration is all about communication, so you want to ensure that everyone can easily see the state of the system and the changes that have been made to it.”  “One of the most important things to communicate is the state of the mainline build. “ 
  • CI in .NET Team Foundation Server  Cruisecontrol.NET  TeamCity by JetBrains 
  • Coding, testing, and releasing at breakneck speed. What could go wrong?
  • Refactoring to Patterns  Refactoring: Improving the Design of Existing Code  by Martin Folwer  Design Patterns: Elements of Reusable Object-Oriented Software  by Gang of Four (GoF) ○ Erich Gamma ○ Richard Helm ○ Ralph Johnson ○ John Vlissides
  • Martin Fowler “Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.”
  • Erich Gamma “Design patterns provide targets for refactorings.”
  • Refactoring Tools Refactoring in Visual Studio  ReSharper by JetBrains (plug-in for VS) 
  • ReSharper Refactorings                  Adjust Namespaces Change Signature (Parameters) Convert Abstract Class to Interface / Interface to Abstract Class Convert Anonymous to Named Type Convert Extension Method to Plain Static Convert Indexer (Default Property) to Method Convert Interface to Abstract Class Convert Method to Indexer (Default Property) Convert Method to Property Convert Property to Auto-Property Convert Property to Method(s) Convert Static to Extension Method Copy Type Encapsulate Field Extract Class Extract Class from Parameters Extract Interface
  • ReSharper Refactorings                Extract Method Extract Superclass Inline Field/Method/Variable Introduce Field/Parameter/Introduce Variable Make Method Non-Static/Non-Shared/Static/Shared Move Static Member Move String to Resource Move to Folder Move Type to Another File or Namespace/Outer Scope/Matching Files Move Members Up/Down Rename Replace Constructor with Factory Method Safe Delete Transform Out Parameters to Tuple Use Base Type where Possible
  • Design Patterns ASP.NET MVC Framework  Model View ViewModel(MVVM) 
  • Agile as Coding Culture Pair Programming (not popular)  Code Reviews (very popular) 
  • Agile in .NET Scrum  Test-driven Development (TDD)  Behavior-driven Development (BDD)  Continuous Integration (CI)  Refactoring to Design Patterns  Code Reviews 
  • Sources       Extreme Programming Explained, Kent Beck Refactoring,Martin Fowler Design Patterns, GoF Refactoring to Patterns , Joshua Kerievsky Continuous Integration, Paul Duvall, Steve Matyas, and Andrew Glover
  • Dan Hermes Lexicon Systems .NET Development and Consulting Email: Twitter: @lexiconsystems Phone: (781)526-0738 Blog: