DTS Agile is happy to announce that Dave Bouwman will be teaching a developer intensive agile training course August 13-15, 2008. Dave will lead this intensive 3-day course and will show you how we develop our software. Releasing software every iteration sounds daunting, but it doesn't have to be. This course is designed to help teams implement a solid process for designing, testing, documenting and releasing software in an automated manner. Dave will review the use of open-source tools in the context of a real project. He will also discuss some of the additional challenges geospatial developers face. Although this class will focus on .NET technologies, the techniques and core concepts apply to any development language and platform. A complete description of the course topics can be found below. Click here for more details about the course and to register.
Course Topics
Source Control with Subversion
Source control systems are critical to any software development effort. We'll review how to setup a free Subversion repository at Assembla.com, and how to work with it via TortoiseSVN and the AnkhSNV plugin for Visual Studio.
Automated Code Documentation
Ever come back to some code you wrote and wonder what you were thinking? Did you wish you had some documentation? In today's development environments, adding good comments is very simple, and in some cases automated. Putting in structured comments also simplifies the creation of API documentation. We'll review how to leverage Xml comments, GhostDoc, and DocProject to produce professional quality HTML documentation from your source code.
Unit Testing
Going with the idea you need to walk before you can run, we'll start with an introduction to the why, what and how of unit testing. We'll look at how you can leverage unit tests today as part of a test-after development strategy. We will then look at MBUnit, a popular unit testing framework for .NET, as well as the TestDriven.net Visual Studio add-in that streamlines testing. We will also discuss the use of mock objects, and look at how we can use RhinoMocks to simplify things.
Design Patterns
Now that we have a handle on what unit testing is all about, we need to figure out how to write code that's testable. Luckily we can lean on some really smart people like Martin Fowler who have come up with re-usable code patterns that help us build testable software.
Refactoring Tools
Being agile means being open to that wild change of direction your client just asked for. When that happens you'll really appreciate good refactoring tools, but we'll show you how they can help keep your code lean and mean on a daily basis, and allow you to easily implement design patterns. We'll be looking at the tools built into Visual Studio, as well as ReSharper
Automated Builds
It's one thing to know it builds on your box, but that's not what counts! We'll review how to write a build script using MSBuild, the MSBuild Community Tasks, and how to setup a daily build process.
Continuous Integration
Since having the software build automatically every day is good, building on every check-in must be great! This is the core idea behind continuous integration - every time there is a check-in, the code is built, tests are run, and the team is notified if anything breaks. We'll look at setting up a CruiseControl.net server, and how that works for a real project.