If an Agile methodology is to be implemented there needs to be some tools for the participants to use. For developers that will most likely be Visual Studio (VS) utilizing Team Foundation Server (TFS) for source control and more. The business analyst(s) and project manager will also be using TFS albeit from the web client to insert/update work items.
Let’s examine TFS at a high level and what it provides. TFS is composed of many components which leverage the Microsoft stack, namely SQL Server, SharePoint and Team Explorer (if Visual Studio is installed). SQL Server houses the DB along with delivering reports via reporting services (SSRS) while SharePoint is used for collaboration and document storage.
Iteration Planning, Tasking and Tracking
Most developers who have used Visual Source Safe (VSS) prior for source control are mistakenly under the impression that TFS is just the next version of VSS but in reality it encompasses source control and much more. For instance, TFS contains work items that are work flow enabled which represent certain aspects of the project (e.g. requirements, issues, bugs, tasks, etc.).
Having these work items in a centralized repository along with developer code enhances task management, traceability and gives enhanced visibility into the progress of the project.
“Testing” is just but one of many areas where VS and TFS have been heavily integrated. This integration lends itself to not only producing automated unit tests but also tracing the linkage of a specific test to the requirements and defects (if any). Combine automated web, performance and regression testing with detailed reports and all parties involved can rest assured that the final application deployed to a production environment will be of the highest quality.
Continuous Integration and Build
Another area of interest where TFS can become an invaluable tool is release management. Check-in policy automation that can potentially trigger builds (gated check-in) brings build verification testing (BVT) into the software development lifecycle.
Things to Accomplish
· Test-driven development (TDD)
· The power of a dedicated application architect
· Paired programming – informal QA (dev-to-dev) with checks and balances
· Focus on evolving small, manageable parts; not complex use cases
· Automate as much as possible
Things to Avoid
· Resistance to perform TDD (or any part of the process)
· Separate testing from development
· Lack of communication with Subject Matter Experts (SME’s)
· Misalign the project with dependent areas
· Part-time commitment from key resources
I only scratched the surface of what some of the features are that VS and TFS provide so for more information check out the following links:
Visual Studio team Foundation Server 2010
Visual Studio 2010
MSF for Agile Development v5.0