Implementing Agile Development with Microsoft™ Visual Studio Team System™
Five-day Hands-on course.
Course Description
This course equips students with the knowledge and skills needed to participate effectively on an Agile team that is using Microsoft Visual Studio Team System (VSTS). Participants will learn the roles of Agile, the principles of Agile planning, analysis, and development. VSTS will be used to illustrate the practices taught. There also is a section on how to customize VSTS to support the team’s Agile methods. This course can be thought of as an integration of:- How to implement Agile for your team
- How to do Agile Estimation and Analysis
- How to use VSTS in an Agile team
- How to customize VSTS for your team
Learning Objectives
This course equips the student with the following:- Roles of Agile
- Daily Standup
- Agile Estimation
- Managing the Product Backlog
- Agile Testing Strategies
- Basics of VSTS
- Customizing VSTS
Course Level
BeginnerCourse Outline
Detailed Course Outline
Sample ProjectThis course will use a sample project that will provide the context of the exercises and will involve Agile Analysis, Story Sizing, Acceptance Test Coding, Development Using Test-Driven Development, Continuous Integration and Team Builds.
Course Setup
- This section will introduce the course and set the expectations of the class. The section will take about 1 hour.
- Objectives
- Course Objectives
- What the course is NOT!
- About Net Objectives
- Student Engagement in Objectives
- Course Vision Statement
- Principles
- Vision Statements Frame the Project
- Process
- Create a Course Vision Statement
- Practices
- Connecting to Team Foundation Server from Visual Studio
- Implementation in VSTS
- Connecting to Team Foundation Server from Visual Studio
- Uploading a Process Template
- Creating a Team Project
- Adding requirement documents to VSTS for the team to use
Introduction
- This section begins to lay the foundation of Agile Analysis by focusing the students on the delivery of Business Value. There will also be a discussion about the reasons why and organization might adopt an Agile process. The section will take about 2 hours.
- Objectives
- What Makes a Good Process
- Providing a Flow of Business Value
- The Business Case for Agile
- Principles
- Delivering Business Value Fast
- Process should support the team, the process is a tool of the team and the organization.
- Process
- The delivery of business capabilities requires delivering software capability.
- Software capabilities need to be broken down so that value driven priorities can be seen.
- That analysis process is the true heart of an Agile organization.
- The iterative and incremental development of the prioritized software capabilities rolls up into releases that deliver business value.
- Practices
- Using a Team Project
- Implementation in VSTS
- Uploading a Process Template
- Creating a Team Project
- Adding requirement documents to VSTS for the team to use
Agile Analysis
- This section will focus on the principles and practices of Agile Analysis. This will include the ability to unfold the requirements into units of work that are independent, negotiable, valuable, estimable, small and testable. The process of analysis will discover the work items to be tracked in TFS. Acceptance Tests are the definition of a completed analysis. Planning a release is the grouping of the units of work discovered in analysis to deliver business value. This section will take about 5 hours.
- Objectives
- Feature Analysis and Breakdown to Provide Business Value
- Creating and Maintaining a Product Backlog
- The Ever Unfolding Story
- Story Sizing
- Minimally Releasable Feature Sets
- Release Planning
- TFS Work Items
- Release
- Feature
- Story
- Task
- Defining Acceptance Tests
- Principles
- For work to be properly prioritized, business value as well as a cost to implement the value.
- Analysis discovers stories.
- Acceptance Tests are the output of Analysis.
- Requirements Analysis should discover how software capabilities should be organized into Releases.
- Process
- Creating a Product Backlog
- Practices
- Requirements unfolding using User Stories
- Team Story Sizing
- Release Planning
- Defining Acceptance Test
- Implementation in VSTS
- Adding Release Plan to TFS
- Adding Features to TFS
- Adding Stories to TFS
- Adding Tasks to TFS
- Associating the work items
- Reporting and querying on work item status
- Acceptance Test creation in VSTS using FIT
Agile Process Basics
- This section will introduce the basic practices of Scrum. The roles of Product Champion, Scrum Master and the Team are discussed. The student teams will conduct a Sprint Planning Session and record the results of the planning in TFS. The team will be introduced to work item queries and reporting in TFS. This section will take about six hours.
- Objectives
- Evaluate process in software development
- Provide brief overview of Scrum
- Explore Scrum roles
- Explore Agile products and differences
- Explore work item tracking in TFS
- Impediment Work Item
- Practice Agile activities and learn what more you need to learn
- Principles
- Delays cause problems.
- Not having the ability to work with the people who have information about the project causes problems.
- Software Development is like product development and involves a lot of discovery.
- Process
- The process of Scrum
- The Product Champion
- The Scrum Master
- The Team
- Practices
- Product Backlog
- Sprint Planning
- Task discovery
- Team makeup
- Daily Standup
- Defining Done
- Story and Task tracking
- Sprint Release
- Sprint Retrospective
- Implementation in VSTS
- Recording the results of Sprint Planning in TFS
- Story and Task tracking in TFS
- Story Point Burn Down in TFS
- Impediment Tracking in TFS
- Basic TFS queries and reports.
Principles for Successful Development
- This section introduces the principles of Lean Software Development. These principles are the measure for the effectiveness of our process. Scrum is founded on these principles and any changes to process should be made in an effort to follow these principles more closely. These principles are often useful in removing impediments to the practices being following by the team. This section will take about two hours.
- Objectives
- Introduce Lean
- Introduce Lean Software Development
- Learn Biggest Waste According To Lean
- Learn What Lean Tells Us To Do
- Learn Where We Start With Lean
- Learn Why We Need to Focus on Time More than on Money Spent
- Principles
- Optimize the Whole
- Eliminate Waste
- Build Quality In
- Deliver Fast
- Defer Commitment
- Create Knowledge
- Respect People
- Process
- Eliminate waste by
- Not building what you don’t need
- Improving the process (eliminate delays)
- Have the process support the team (and continue to improve it)
- Go to the root cause
- Avoid errors if possible
- Fix their cause when they happen
- Practices
- Focus on reducing delays
- Build to be changeable
- Emphasis on good programming practices
- TDD
- Design Patterns
- Move QA to the front of the story development process
- Remember that the support team and the development teams are also customers and have requirements from the product
- High level of automation
- The process should support the team and not add undue work to it
- Makes the team’s work more productive
- The team evolves the process
- Measure and report what’s useful
- Software development requires people to solve problems
- The team must understand the problem
- They must be empowered to find the best solution
- Implementation in VSTS
- Have a focus on removing waste.
- How can TFS support quality?
How Agile Changes Development
- This section discusses the fundamental differences between traditional up-front design development and an Agile process. The role of QA and testing discussed in the context of the whole team concept. Significant time is spent on Agile architecture as well as Acceptance and Unit Testing. The fundamental concepts of code quality as well as the quality principles from the original Design Patterns (GoF) book are discussed. This section will take about 7 hours.
- Objectives
- Architecture and Analysis
- Code Quality Terms and Principles
- Building an Agile Architecture
- The Analysis Matrix: Tying the domain to the architecture
- The Role of QA
- Writing Acceptance Tests in VSTS
- Test-Driven Development in VSTS
- How product documentation / specification changes.
- Principles
- Build quality in
- Advice from the GoF
- QA should prevent defects rather than only try to find defects.
- Process
- Acceptance-Test-Driven Development
- Finding Concepts first then relating concepts.
- Practices
- Building Acceptance Tests
- Commonality – Variability Analysis
- Unit-Test-Driven Development
- Implementation in VSTS
- TDD in VSTS
- Acceptance Test Tracking in VSTS
- Product Specfication / Documentation in VSTS
Principles and Practices at Work
- This section puts it all together at the team level. The student teams practice the planning meetings, daily meetings as well as develop more Acceptance Tests and build more product. More detail is added about planning, story sizing and progress visibility. This section will take about 7 hours.
- Objectives
- Practice activities during a simulated release
- Get some more details on how to make Scrum work
- The mechanics
- Sprint Iteration Story and Task tracking
- Have teams experience:
- A Release Planning meeting
- A Sprint/Iteration Planning meeting
- Sprint/Iteration activities
- A Sprint/Iteration Review & Retrospective
- Release activities
- A Release Review & Retrospective
- Implement Continuous Integration in TFS
- Principles
- Release Planning is Analysis NOT Scheduling!
- Problems that slow the team down are impediments.
- Iterations that do not deliver business value are WASTE!
- Process
- Velocity-Driven vs. Commitment-Driven Iteration Loading
- Task Discovery
- Feedback to Management
- Impediment Management
- Continuous Integration
- Practices
- Release Planning
- Iteration Planning
- Information Radiators
- Daily Stand-ups
- Sprint Review Meeting
- Sprint Retrospective
- Release Acceptance
- Release Retrospective
- Implementation in VSTS
- Information Radiators in VSTS
- Continuous Integration in VSTS
Implementing Scrum for Your Team
- This section will talk about the organizational and human challenges of being Agile. Dealing with code contention, team dependencies and multiple teams pulling from the same backlog. The basics of process template customization will be covered. If time allows more development will be done that demonstrates handling issues across teams. (This is the time adjustor in the class.) This section will take 2-6 hours.
- Objectives
- Explore scaling Agile issues
- Explore and identify organization and technical challenges
- Start developing transition action plan
- TFS customization basics
- Principles
- The Promises of Agile
- Process
- Scaling to multiple teams
- Practices
- Scrum of Scrums
- Implementation in VSTS
- Customizing TFS for your team
- Process Template Customization in TFS
Course Wrap-Up
- This section will review the basic Agile principles and best practices. This section will take about two hours.
- Objectives
- Bring the class back to the principles and practices that make Agile work.
- The process is a tool of the team not the other way around.
- Where to go from here
- Final questions and discussion
- Principles
- Highest priority is to satisfy the customer through early and continuous delivery of valuable software
- Embrace Change
- Deliver working software frequently
- Daily Collaboration – business & Dev Team
- Respect People- Give them the environment and support they need, and trust them to get the job done
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Sustainable development
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity--the art of maximizing the amount of work not done--is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- Regular and frequent inspection/reflection/adjustment
- Practices
- Small, empowered teams
- Two levels of planning and tracking
- Multiple pull-oriented Backlogs
- Drive Iteration successes
- Frequent hi-value Releases
- Test early, often and everyone
- Continuous integration
- Frequent process reflection and adaptation
- Implementation in VSTS
- Teach the Elephant to dance!
Who is this course for
All members of an Agile team: developers, testers, business, facilitators/Scrum Masters. It is most appropriate for teams who are using VSTS/TFS as a tool to support their processes.Equipment
Computer requirements: 1 computer per 2 students. Each computer has access to a central computer running Microsoft TFS 08, either via the Internet or on an internal network.Prerequisites
There are no prerequisite for students. The student is, or soon will be, a member of an Agile team. Ideally, the entire Agile team will take the course together.- Note: Microsoft VSTS/TFS must already be installed and available in the classroom. Instructor could bring a VPC install of TFS, but client workstations must have VSTS install appropriate for the students (probably Team Suite). If a client TFS install is used, Administrator credentials must be available to upload process template modifications and create appropriate team permissions.