practical team foundation server

34
Practical Team Foundation Server Marcel de Vries IT Architect Microsoft MVP Team System http://blogs.infosupport.com/marcelv [email protected]

Upload: pradeepkub

Post on 13-Nov-2014

720 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Practical Team Foundation Server

Practical Team Foundation

Server

Marcel de VriesIT ArchitectMicrosoft MVP Team System

http://blogs.infosupport.com/[email protected]

Page 2: Practical Team Foundation Server

Session Code: CV.29

Practical Team Foundation

Server

Marcel de VriesMicrosoft MVP Team System

http://blogs.infosupport.com/[email protected]

Page 3: Practical Team Foundation Server

Agenda

• Team Projects, Reporting and Work items– When to choose for a new Team Project

– Areas and Iterations– Ad hock reporting from TFS Data warehouse

• Version Control– Workspaces and Change Sets

– Solution size and inter solution dependencies

– Branching and base lining strategies

• Build– Stamp build numbers in your assembly for traceability

– Generating Documentation

– Building Setup projects

Page 4: Practical Team Foundation Server

Team Projects

• TFS can hold 250-500 projects on a server depending on WI schema– Limitation mostly causes first time users to

have to wait very long when hitting a server that exceeds this limit

• Due to a design issue that causes a large download to the client (>32Mb)

• Team project is the bucket that contains all artifacts– Work items, Users rights, Build, etc

– Scope for reporting and building up metrics from your teams

Page 5: Practical Team Foundation Server

Choosing Team Project

granularity• Per Application

– The most common strategy for creating team projects is to create one for each application under development.

– This strategy can support both large and small applications, as well as multiple releases of applications being developed in parallel.

• Per Release– In the “Team Project Per Release” strategy, every major application

release starts a new team project.

– This strategy works well for very large teams who are often working on long-term projects.

• Per Team– For a few customers, the best way to structure team projects is to align

them with the team boundaries in their organization.

– This strategy closely aligns a team with the workflows defined in TFS work item types and provides a unit of reporting that spans the entire team.

Page 6: Practical Team Foundation Server

Team Project substructureUse Areas & iterations

• Areas can be used to break down your product complexities– Are very useful for reporting purposes

• Can use it to measure what is adding the most costs to your project– Define your areas of interest so you can measure them

• In software factories called viewpoints

– E.g. Break down a product into a feature tree

– Break down the project into architectural layers and from there into features

• Will help you determine #WI booked on certain artifacts– Your entry point in improving your project!

• E.g. We determined that 60% of defects where caused by UI development– This made us decide to invest in this area with more guidance and framework

• Result less defects in this area and therefore better predictability of our projects

Page 7: Practical Team Foundation Server

Reporting on TFS Data

warehouse• TFS comes with a data warehouse

– Build in reports use ware house and TFS databases for reporting

– You can extend the Data warehouse yourself• Create a custom data warehouse adapter

• Areas and iterations are reflected back in the warehouse to query on

• Building custom reports using SQL reporting can be a time consuming task– But you can also create ad hock reports using

Excel

Page 8: Practical Team Foundation Server

Demo

• Create ad hock report on TFS warehouse

– Work item breakdown assigned to specific

person

• Called bottleneck analysis

Page 9: Practical Team Foundation Server

Agenda

• Team Projects, Reporting and Work items– When to choose for a new Team Project

– Areas and Iterations– Ad hock reporting from TFS Data warehouse

• Version Control– Workspaces and Change Sets

– Solution size and inter solution dependencies

– Branching and base lining strategies

• Build– Stamp build numbers in your assembly for traceability

– Generating Documentation

– Building Setup projects

Page 10: Practical Team Foundation Server

Version Control

• What is a workspace

– Mapping between Version control folders and local file system

– Administered on the server!• Local changes without notifying TFS are not

administered!

• Get latest will not do a Get in this case!

• What is a Change Set

– One complete atomic check-in of sources

– Includes metadata like associated work items

Page 11: Practical Team Foundation Server

Version Control

• Practical tips– Always create one workspace for one TFS project

• Will only show pending changes for your current project

– Have only one mapping in your workspace• Map team project root to local folder

– Makes searching very easy

– Cloak folders if get latest gets to big

– Install Power tools• Easy rollback

• Tree diff

• Annotate

• Enables testing without Test Lists in build!

• … and much more

Page 12: Practical Team Foundation Server

Demo power tools

• Annotate

• Tree Diff

• Rollback

Page 13: Practical Team Foundation Server

Branching and baselining

strategies• Branching defined:

– Taking a snapshot of source code to create isolation • At a certain point in time

• At a stable or known state of source code– Most of the time from a baseline

– Baseline == Label || Latest || hand picked set of change sets

– The resulting copy is the child branch, and the source from which it was created is called the parent branch.

– Bi-directional synchronization of changes with the parent branch

• – usually referred to as integrating or merging

Page 14: Practical Team Foundation Server

Common used models

Branch per Release

Code-Promotion Branches

Branch per Task

Branch per Component

Page 15: Practical Team Foundation Server

What branching model to

choose?• Depends largely on size of the team and process to get to a

released product– Also depends if you do single or multi release development

– ISV’s often do multi release development• Recommend to use code promotion model

– In house development (not core business) often do single release development (one version in production)

• Promotion model often overkill

• Large teams need more isolation– Teams MS targets in whitepaper are large

– Sample includes 130 developers on 10 products!

– Use model published on codeplex• http://www.codeplex.com/BranchingGuidance/Wiki/View.aspx?title=html

&referringTitle=Home

Page 16: Practical Team Foundation Server

What branching model to

choose?• Common size teams require less isolation

– Team size 2-25 developers

• Recommendation, use a branch by purpose model– Create one development branch to start

– Create a branch only when you are stabilizing towards a internal/external release

– Keep a branch for maintenance if you develop for multiple releases

• Add your documents to version control– Let’s you create a baseline across code and

requirements

– Impossible when documents only on share point

Page 17: Practical Team Foundation Server

Branch by purpose modelMulti release

Main branch(dev)

Prod. Branch V1

Prod. Branch V2

1

1

Legenda

# Build / week

Merge

BranchBaseline

Bug Fix in R1

Bug Fix in R2

CHILD OF MAIN

CHILD OF MAIN

Optional baseless merge

Page 18: Practical Team Foundation Server

Branch by purpose modelSingle release

Main branch(dev)

Prod. Branch V1 Prod. Branch V2

1

Bug Fix Bug Fix

Legenda

# Build / week

Merge

BranchBaseline

Page 19: Practical Team Foundation Server

Solution structures

• Visual Studio solutions with >10 project become impractical– Slow startup times

– More potential locking on shared resources• Team Test files (e.g. vsmdi, runconfig, etc)

• Split your product across multiple solution– But what about my dependencies?

• Use File dependencies via a substituted drive

– Model will scale to really large software products

– Solution == Configuration item

– Configuration item is unit of design, development and versioning

• Often compared to a subsystem

Page 20: Practical Team Foundation Server

Solution structures

• Facilitate the file references in version control

– Create a folder that contains referenced assemblies from other solutions

• With TFS very efficient storage

• E.g

– Extref folder containing some subfolders:• For every deliverable (output from other solution)

• For every 3th party product you use

– If using com interop, generate interop assembly by hand and reference interop assembly!

• Location to keep the Strong Name file

Page 21: Practical Team Foundation Server

DEMO

• Solution Structures for large scale

applications

• Signing with only one snk file at one

location

• Branching of a version 1.0 of the product

for bug fixing

Page 22: Practical Team Foundation Server

Agenda

• Team Projects, Reporting and Work items– When to choose for a new Team Project

– Areas and Iterations– Ad hock reporting from TFS Data warehouse

• Version Control– Workspaces and Change Sets

– Solution size and inter solution dependencies

– Branching and base lining strategies

• Build– Stamp build numbers in your assembly for traceability

– Generating Documentation

– Building Setup projects

Page 23: Practical Team Foundation Server

Stamp build numbers in your

assembly• How can you determine what assembly in

production is related to a build?– You need to stamp the build number into your

assembly to create effective problem solving• Same as MS does with it’s assemblies

– No out of the box solution from Microsoft

• Can be done extending Team Build– Team build is based on MS build

• Wizard generates script based on provided scenario details

– Extensibility of team build is based on MS build extensibility

Page 24: Practical Team Foundation Server

Stamp build numbers in your

assembly• Difference between Assembly version

number and file version numbers

– Assembly version is used by fusion loader if assembly is strong named

– File version number is the one shown by the file system and used by e.g. installers

• To prevent assembly binding hell

– Set a fixed assembly version number

– Make the file version number reflect assembly version and the current build

Page 25: Practical Team Foundation Server

1.5

“Major” Version

“Minor” version

dddyy

build Revision (# build on a day)

Create an effective build numbering scheme

• AfterGet is where you can alter the sources in team build

• Build custom task to tweak the attributes– Can also use AssemblyInfo task from GDN

– Build number must be kept < 65535 • Is a short int

Page 26: Practical Team Foundation Server

DEMO

• Stamping the build number in your

assembly by extending team build

Page 27: Practical Team Foundation Server

Generating documentation

• Leverage XML documentation in C# or

VB.NET (Since .NET 2.0)

• Currently we used NDOC

– NDOC is officially stopped by it’s founder

• Microsoft is working on an alternative

– Called sandcastle

– Requires XML documentation to be turned on

during build

• Can be enforced with check-in policy

Page 28: Practical Team Foundation Server

Creating an installer

• Visual studio setup projects are not supported out of the box of Team Build– Can be fixed by creating your customized build

scripts and installing visual studio on the build machine

• Better is to use WIX in stead– WIX is an XML based script language

– Open source project by Microsoft

– Provides visual studio integration and MS build extensions

• Install extensions on build server and development workstations

Page 29: Practical Team Foundation Server

Running tests without Test SKU

• Unit tests require a vsmdi file to run during the build– You can specify which list to run

– Only problem, you need the test SKU to create a list

• Power tools enable you to run the tests without the vsmdi file– Need to replace the build targets file

– Need to copy the power tool dll that contains the new task

– Specify the testcontainers in the build• All tests executed in the specified assembly will be run

– Requires you to split the test scenarios into separate assemblies

Page 30: Practical Team Foundation Server

Demo Running Test without

VSMDI

Page 31: Practical Team Foundation Server

Agenda

• Team Projects, Reporting and Work items– When to choose for a new Team Project

– Areas and Iterations– Ad hock reporting from TFS Data warehouse

• Version Control– Workspaces and Change Sets

– Solution size and inter solution dependencies

– Branching and base lining strategies

• Build– Stamp build numbers in your assembly for traceability

– Generating Documentation

– Building Setup projects

Page 32: Practical Team Foundation Server

Team System Posterat info support booth

Page 33: Practical Team Foundation Server

Q & A• Where to find more information

– http://Blogs.infosupport.com/marcelv

– Downloads:

• http://accentient.com/widgets.aspx

Page 34: Practical Team Foundation Server

Evaluation form

Vul je evaluatieformulier in en maak kans

op een van de prachtige prijzen!!

Fill out your evaluation form and win one of

the great prizes!!

Session Code:CV.29