agile development in .net
DESCRIPTION
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.TRANSCRIPT
![Page 1: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/1.jpg)
AGILE DEVELOPMENT
IN .NET
Dan Hermes
![Page 2: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/2.jpg)
Waterfall
![Page 3: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/3.jpg)
Waterfall
Analysis
Design
Development
Deployment
![Page 4: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/4.jpg)
Waterfall
Why didn’t it work?
![Page 5: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/5.jpg)
CHANGE
Design changes New requirements Code rewrites Versioning test plans and docs Release Rescheduling
![Page 6: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/6.jpg)
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
![Page 7: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/7.jpg)
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?
![Page 8: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/8.jpg)
XP – the Dominant Agile Approach Scrum Test-driven Development (TDD) Behavior-driven Development (BDD) Continuous Integration (CI) Refactoring to Design Patterns Code Reviews
![Page 9: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/9.jpg)
Scrum
Scrum Master Product Owner Product Backlog Sprint Planning Meeting Sprint Backlog Daily Scrum Meetings Sprint Review Meeting
![Page 10: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/10.jpg)
Scrum
![Page 11: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/11.jpg)
.NET
TFS Scrum TemplateVS 2012 Team Web AccessTeam Foundation ServicePowerpoint Storyboarding
(VS 2012 Premium, Ultimate,Test Professional)
Code Review (VS 2012 Premium, Ultimate)
![Page 12: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/12.jpg)
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
![Page 13: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/13.jpg)
VS Team Explorer - Scrum
![Page 14: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/14.jpg)
Team Explorer – Work Items
![Page 15: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/15.jpg)
Sprint Backog
![Page 16: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/16.jpg)
Work Item
![Page 17: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/17.jpg)
Team Web Access
![Page 18: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/18.jpg)
Burndown Chart
Provision your project with SQL Server Reporting Services
![Page 19: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/19.jpg)
Team Foundation Service
Kanban boards
![Page 20: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/20.jpg)
TFS Licenses Limited
View My Work Items Standard
View My Work ItemsStandard FeaturesAgile Boards
FullView My Work ItemsStandard FeaturesAgile BoardsBacklog and Sprint Planning ToolsRequest and Manage Feedback
![Page 21: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/21.jpg)
Urban Turtle
![Page 22: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/22.jpg)
Eylean
Assignments
Kanban Board
![Page 23: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/23.jpg)
So what does all this mean?
![Page 24: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/24.jpg)
![Page 25: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/25.jpg)
Test-driven Development (TDD)
1. Write the Test
2. Break the Thing
3. Run the Tests
4. Fix All the Things
5. Run all the successful Tests
![Page 26: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/26.jpg)
Nunit Example
![Page 27: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/27.jpg)
TDD in .NET
Unit Test Template(in VS) VSTest.Console.exe
(replaces MSTest in VS 2012) MSTest ASP.NET MVC Framework
![Page 28: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/28.jpg)
Testing Frameworks
NUnit XUnit MBUnit
![Page 29: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/29.jpg)
Mocking
VS 2012 – MS Fakes – Stub and Shim Moq Rhino NMock
![Page 30: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/30.jpg)
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.
![Page 31: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/31.jpg)
What else is important
when you move fast?
![Page 32: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/32.jpg)
Knowing Your Destination
![Page 33: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/33.jpg)
Behavior-driven Development (BDD) Move Fast Be Clear About Where You’re Going
![Page 34: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/34.jpg)
Given-When-Then
Given (preconditions)
When (event occurs)
Then (a testable outcome is achieved)
![Page 35: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/35.jpg)
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
![Page 36: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/36.jpg)
BDD with .NET
SpecFlow Cuke4Nuke Cucumber with Ruby
Use BDD to create User Stories
![Page 37: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/37.jpg)
Continuous Integration (CI)
Image by Thoughtworks
![Page 38: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/38.jpg)
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. “
![Page 39: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/39.jpg)
CI in .NET
Team Foundation Server Cruisecontrol.NET TeamCity by JetBrains
![Page 40: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/40.jpg)
Coding, testing, and releasing at breakneck speed.
What could go wrong?
![Page 41: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/41.jpg)
![Page 42: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/42.jpg)
Refactoring to Patterns
Refactoring: Improving the Design of Existing Codeby Martin Folwer
Design Patterns: Elements of Reusable Object-Oriented Softwareby Gang of Four (GoF)
○ Erich Gamma○ Richard Helm○ Ralph Johnson○ John Vlissides
![Page 43: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/43.jpg)
Martin Fowler
“Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.”
![Page 44: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/44.jpg)
Erich Gamma“Design patterns provide targets for refactorings.”
![Page 45: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/45.jpg)
Refactoring Tools
Refactoring in Visual Studio ReSharper by JetBrains (plug-in for VS)
![Page 46: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/46.jpg)
![Page 47: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/47.jpg)
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
![Page 48: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/48.jpg)
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
![Page 49: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/49.jpg)
Design Patterns
ASP.NET MVC Framework Model View ViewModel(MVVM)
![Page 50: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/50.jpg)
Agile as Coding Culture
Pair Programming (not popular) Code Reviews (very popular)
![Page 51: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/51.jpg)
Agile in .NET
Scrum Test-driven Development (TDD) Behavior-driven Development (BDD) Continuous Integration (CI) Refactoring to Design Patterns Code Reviews
![Page 52: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/52.jpg)
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
![Page 53: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/53.jpg)
AGILE DEVELOPMENT
IN .NETDan Hermes
Lexicon Systems.NET Development and Consulting
Email: [email protected]: @lexiconsystemsPhone: (781)526-0738Blog: www.itshopkeeping.com
![Page 54: Agile Development in .NET](https://reader036.vdocuments.mx/reader036/viewer/2022062513/554f48afb4c905b9508b46f1/html5/thumbnails/54.jpg)