64
ALM with TFS 2013 Vincent Grondin General Manager – Solutions Vet a CDMV subsidiary C# MVP .NET Montreal User Group Leader Blog: http://geekswithblogs.net/vincentgrondin

Alm with tfs 2013

Embed Size (px)

Citation preview

ALM with TFS 2013Vincent GrondinGeneral Manager – Solutions Vet a CDMV subsidiary

C# MVP

.NET Montreal User Group LeaderBlog: http://geekswithblogs.net/vincentgrondin

Content

• How to setup your Iterations• How to setup your Areas• Moving from one Iteration to the next• How to add work item types to the Backlog• How to create work item types• Useful queries for tracking a project properly• How I use windows 8 to save dev time

Content

• Creating release notes from your work items• What work should be done in which branch• When should you branch your code• Useful things to automate inside a build• Do I need a branch or a new workspace?

How to setup your Iterations

• Iterations are a way to slice your development in time

How to setup your Iterations

How to setup your Iterations

How to setup your Iterations

How to setup your Iterations

How to setup your Iterations

How to setup your Iterations

How to setup your Areas

• Areas are the logical parts of your project• Create an area for each zone or functionality• Don’t create too fine grained areas, it’s less

reportable and chartable.• You can then assign a Bug to an area and build a

query to see… – which areas of your product are more or less problematic– which areas of your product should you revamp first– where have you spent the most time fixing bugs recently

How to setup your Areas

• Use areas to track your “Operational” work vs your Development work!

• Exclude the “Operational” area from your queries !

How to setup your Areas

Moving from one iteration to the next

• First, if I’m starting a new Release I create a folder in my “Shared Queries” for the Release and copy old queries to this folder

Moving from one iteration to the next

• My iterations are 2 weeks Sunday to Friday + 3 days off (1 Sat & 2 Sun)• My iterations start on Sunday.• My iterations stop on Friday.• I move my iteration from Current to Past and the other one from Future to

Current on Sunday night, why?

Moving from one iteration to the next

• Moving iterations around is quite easy, just drag and drop!

Moving from one iteration to the next

• Then, I move a “Future” iteration to “Current”

Moving from one iteration to the next

• Move items that were not started to the next iteration• 2 ways of doing so, the long way from the backlog, one at the time….

Moving from one iteration to the next

• …or build a query on everything under “Current” Iteration Path and multi-select if you have many items to move….

Moving from one iteration to the next

• Make sure all tasks on items that aren’t finished are closed with the right amount of remaining time.

• Don’t move the parent work item to the next iteration

• Create a new Task in the new iteration with the remaining time from a previous task and assign it to the same parent work item

• It should appear again in the backlog for the new iteration with only it’s new Task as the todo

Moving from one iteration to the next

How to add work item types to the Backlog

Adding Bugs to the backlog

Adding other work item types to the backlog

• There are missing fields for a WIT to appear in the backlog, add them !

• witadmin exportwitd and start editing the WIT• Add the Story Points field• CMMI Template? Add the Size and Requirement

Type fields• Import back the WIT to the server• Explained clearly on MSDN

How to create work item types

How to create work item types

Use the process editor!

How to create work item types

How to create work item types

How to create work item types

How to create work item types

Useful queries for tracking a project properly

Useful queries for tracking your Devs Useful queries for tracking your Iteration Useful queries for tracking your Releases Useful queries for tracking your Product

• Create a folder “Base Queries” and copy all original Shared TFS queries in that Folder.

• This will save you the trouble of creating a team project just for copying it’s queries when you ruin them .

• Use Visual Studio to copy multiple queries at once because the Web Access can’t

Useful queries for tracking a project properly

Useful queries for tracking your Devs

• One query per DEV in the team• Avoids playing the little bee game• You want to track the Tasks not the Bugs/Requirements/Features• Tree of work items where:

– The Task is the Parent – The parent work item is the child

Work in progress

• Expand the parent to see which item the person works on

Work in progress

• This is the query in edit mode

Work in progress

Useful queries for tracking your Iteration

• Features or Functional Requirements or bugs Resolved• These items need to move to CLOSED State (tested)• I’m making sure this Query is empty at the end of an Iteration• Flat list of work items• Pin it to the HOME page

Work to be tested

Useful queries for tracking your Releases

• In the Team Queries, create a Folder with your Release name like “Version 5.2”

• Copy your queries from a Release to the next

• If you followed the “Current” rule, they should work effortlessly

Useful queries for tracking your Releases

• At the start of a Release (or way before), decide what it will include– Features– Requirements– Operational Work (you’re lucky if you have none)– Bug fixes

What’s planned for Release 5.2

• PIN it on the HOME page• Keep it there for the Release and replace it every Release

What’s planned for Release 5.2

What’s planned for Release 5.2

• PIN it on the HOME page, right beside the Planned Work!• Keep it there for the Release and replace it every Release• Compare it with the Planned Work to see your progress!

Items closed in Release 5.2

• PIN it on the HOME page, people just love to know how many issues you fix in a release…

• Keep it there for the Release and replace it every Release

Bugs closed in Release 5.2

Useful queries for tracking your Product

Bugs backlog by severity

Other useful queries to track your product

• Bugs by area– What to refactor first– Where to focus next time

• Bugs closed by area– Where not to focus anymore– Where have you spent to most energy

How I use windows 8 to save dev time

• Install on SSD or go home!• Native Hypervisor!• Each dev has his set of VMs to test on!• Everyone is isolated from others• Reduced impact and friction• Quicker dev to test to dev feedback• Still need to test in a integrated environment• Accelerates development time (yes it does, VM haters !!!)

How I use windows 8 to save dev time

Creating release notes from your work items

• Go to Visual Studio• Select the query• Open with Excel• Remove unnecessary columns

Need I say more?

What work should be done in which branch

One way to do it A better way, I think

• Use iterations but don’t check the « Iteration » box

• PROS:– Easy for devs to see what Branch to use (use the HotFix V5.1 Branch) in their WI– Not everyone can create the Iteration just like branches !

• CONS:– Constantly need to create the Iteration from one iteration to the other– Queries have to be re-adjusted from one iteration to the other

One way to do it

• Use Tags !

• PROS:– Tags are persistent across iterations, no need to create them all the time– No need to adjust queries when moving to the next iteration

• CONS:– Can be hard to see which Tag is the Branch (when multiple tags are used)– Anyone can create, delete or misspell a Tag which can mess up your queries

A better way, I think

When should you branch your code

• Branch when you start work and don’t know if it will make it in time for the release

_____WORK_____________

|

___DEV__|____________

|

___MAIN____|_____

• Branch when you want to isolate code for a release

___DEV__________

| |

___MAIN____|________________|____

|

|___RELEASE_____

When should you branch your code

• Branch when you want to isolate code for a release

_____RELEASE_____________

|

___DEV__|____________

|

___MAIN____|_____

• Branch when you want to release often

__REL1_ __REL2__ __REL3___

| | | | | |

___DEV__|_______|_____|________|____|_________|______

|

___MAIN____|_____

When should you branch your code

Useful things to automate inside a build

• Setup!– Wix !!!– Each build = 1 setup– Each dev can deploy his own build– Each build is INSTALLABLE… ok but can you test it?

• SQL Scripts!– Many companies have built their own SQL Script Diff tools…– Automate their execution in your build process– Each build is now TESTABLE, not just installable!

• Versioning of your assemblies– Each build is now a potential RELEASE!

Useful things to automate inside a build

Do I need a new workspace?

• If you’re about to merge branches, YES

• If you have unfinished work and need to start new work, YES

• If you need to work on multiple branches at once, YES

• The more workspaces you have, the more in control you are!

• A workspace should be associated with only 1 branch

• You can have many workspaces pointing to the same branch

Do I need a new workspace?

QUESTIONS

Helpful at all?

Thank You For Attending!!!Vincent GrondinGeneral Manager – Solutions Vet a CDMV subsidiary

C# MVP

.NET Montreal User Group LeaderBlog: http://geekswithblogs.net/vincentgrondin