Successfully reported this slideshow.
Your SlideShare is downloading. ×

Agile Development in .NET

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 54 Ad

Agile Development in .NET

Download to read offline

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 Amazon.com.

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 Amazon.com.

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to Agile Development in .NET (20)

Recently uploaded (20)

Advertisement

Agile Development in .NET

  1. 1. Dan Hermes
  2. 2. Waterfall
  3. 3. Waterfall Analysis Design Development Deployment
  4. 4. Waterfall Why didn’t it work?
  5. 5. CHANGE Design changes  New requirements  Code rewrites  Versioning test plans and docs  Release Rescheduling 
  6. 6. 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 
  7. 7. 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? 
  8. 8. XP – the Dominant Agile Approach Scrum  Test-driven Development (TDD)  Behavior-driven Development (BDD)  Continuous Integration (CI)  Refactoring to Design Patterns  Code Reviews 
  9. 9. Scrum Scrum Master  Product Owner  Product Backlog  Sprint Planning Meeting  Sprint Backlog  Daily Scrum Meetings  Sprint Review Meeting 
  10. 10. Scrum
  11. 11. .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)
  12. 12. 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
  13. 13. VS Team Explorer - Scrum
  14. 14. Team Explorer – Work Items
  15. 15. Sprint Backog
  16. 16. Work Item
  17. 17. Team Web Access
  18. 18. Burndown Chart Provision your project with SQL Server Reporting Services
  19. 19. Team Foundation Service Kanban boards
  20. 20. 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
  21. 21. Urban Turtle
  22. 22. Eylean Assignments Kanban Board
  23. 23. So what does all this mean?
  24. 24. 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
  25. 25. Nunit Example
  26. 26. TDD in .NET Unit Test Template(in VS)  VSTest.Console.exe (replaces MSTest in VS 2012)  MSTest  ASP.NET MVC Framework 
  27. 27. Testing Frameworks NUnit  XUnit  MBUnit 
  28. 28. Mocking VS 2012 – MS Fakes – Stub and Shim  Moq  Rhino  NMock 
  29. 29. 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. 
  30. 30. What else is important when you move fast?
  31. 31. Knowing Your Destination
  32. 32. Behavior-driven Development (BDD) Move Fast  Be Clear About Where You’re Going 
  33. 33. Given-When-Then Given (preconditions) When (event occurs) Then (a testable outcome is achieved)
  34. 34. 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
  35. 35. BDD with .NET SpecFlow  Cuke4Nuke  Cucumber with Ruby   Use BDD to create User Stories
  36. 36. Continuous Integration (CI) Image by Thoughtworks
  37. 37. 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. “ 
  38. 38. CI in .NET Team Foundation Server  Cruisecontrol.NET  TeamCity by JetBrains 
  39. 39. Coding, testing, and releasing at breakneck speed. What could go wrong?
  40. 40. 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
  41. 41. Martin Fowler “Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.”
  42. 42. Erich Gamma “Design patterns provide targets for refactorings.”
  43. 43. Refactoring Tools Refactoring in Visual Studio  ReSharper by JetBrains (plug-in for VS) 
  44. 44. 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
  45. 45. 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
  46. 46. Design Patterns ASP.NET MVC Framework  Model View ViewModel(MVVM) 
  47. 47. Agile as Coding Culture Pair Programming (not popular)  Code Reviews (very popular) 
  48. 48. Agile in .NET Scrum  Test-driven Development (TDD)  Behavior-driven Development (BDD)  Continuous Integration (CI)  Refactoring to Design Patterns  Code Reviews 
  49. 49. Sources       http://agilemanifesto.org/ 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
  50. 50. Dan Hermes Lexicon Systems .NET Development and Consulting Email: dan@lexiconsystemsinc.com Twitter: @lexiconsystems Phone: (781)526-0738 Blog: www.itshopkeeping.com

Editor's Notes

  • Note Waterfall
  • Note Waterfall
  • Note Waterfall

×