Application Lifecycle Management with TFS


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • A quick tour of TFS Administration ConsoleDo not panic. We are going to go through all these
  • Show Team Collections in the TFS Admin consoleShow how they relate to a database eachShow how they have got their portals
  • Talk about differencesCMMI sucksAgile and scrum are good. Scrum is more lightweightHow to install Scrum template
  • Talk about differencesCMMI sucksAgile and scrum are good. Scrum is more lightweightHow to install Scrum template
  • Show how to create team projectsHow to setup a portal as part of the build or later
  • Think of it as a journal in accounting. You will not remove a journal entry. If you made a mistake you fix it by a reverse transaction entry
  • Do you guys know what branching is?Do you know why it is “useful”?Define branching
  • Discuss the benefits of each strategy/need
  • Explain in details
  • Explain how build agents can be createdExplain the benefits
  • But agile template is more or less the same
  • Create backlog itemsChange prioritiesAssign to different sprints/iterations
  • SharePoint PortalHow to bring it upHow to set it up if you have not as part of building a Team ProjectHow to store and retrieve documentsHow to version documents
  • Direct links to work items, query results, diffs, change sets and moreDisplay custom controls on work item formsView queued builds new, queue new buildsAdd new work items or edit existing onesWork with any type of work item, including custom onesAdd new work item queries or edit existing onesView, download, upload, check-in and check-out documents on SharePoint team portalView reports, export as PDF or ExcelBrowse source control repositories, download files, view changesets, diffs, histories, and annotated viewsView build results, start or stop buildsSearch for keywords in work items
  • Application Lifecycle Management with TFS

    1. 1.  Mehdi Khalili Consultant at Readify Code, lead and mentor by day Blog and hack on OSS by night Blog: Twitter: @MehdiKhalili
    2. 2.  ALM ALM the TFS way  Team Collections and Team Projects  Version Control and branching  Build Automation  Work Item Tracking  Team Collaboration Using Portal  Web Access! Putting it all together
    3. 3. There may be glitches in demos due to our virtual setupThis is not a TFS only talk. We are going to talk about ALM and software processes and methodologies
    4. 4.  A quick tour of our virtual environment  Windows Server 2008  SQL Server 2008 R2 ▪ Database ▪ Reporting Services ▪ Analysis Services  Windows SharePoint Services 3.0  Team Foundation Server 2010  Visual Studio 2010 Premium
    5. 5. What is it?
    6. 6.  “continuous process of managing the life of an application” Increases productivity Improves quality Accelerates development through simplified integration Cuts maintenance time Maximizes investments Increases flexibility …
    7. 7.  Build management Release/deployment Testing Requirements management Work item management Project management Change management Configuration management ….
    8. 8. The most integrated ALM solution in .Net land
    9. 9.  A quick tour of the Administration Console  Application Tier  Team Project Collections ▪ Team Projects ▪ SharePoint portal ▪ Reporting  Build Configurations ▪ Build Controllers ▪ Build Agents
    10. 10.  The basic unit of recovery One database per collection Benefits  Scalability: load balance  Backup and recovery  Security isolation  Information sharing Organizational/team structure
    11. 11.  The largest unit of work associated with developing a single product or product line Each collection can have many team projects
    12. 12.  Creating Team Projects is time consuming Per Team Project you will get  Milestones and release schedules  Areas and Iterations  Version Control Settings  ALM methodology  Process Template and its customization  Portal
    13. 13.  CMMI Agile Scrum
    14. 14. Work Item ComparisonAgile ScrumBug BugIssue ImpedimentUser Story Product Backlog ItemTask TaskN/A Sprint
    15. 15. User Story vs. PBIUser Story Product Backlog ItemTitle TitleDescription DescriptionRank Backlog PriorityStory Points EffortBusiness Value Business ValueAcceptance Criteria Acceptance Criteria
    16. 16.  Off to Team Explorer
    17. 17.  Customize a project’s template Customize Project Template
    18. 18. AKA Source Control Management
    19. 19.  A journal of changes to your code All actions are irreversible: if you make a mistake you can only reverse it by compensating actions (well, except in git which allows you to rewrite the history – oh yeah)
    20. 20.  Atomic check-ins Branching and merging Shelving Labeling Concurrent check-outs Check-in policies Association of check-ins with work items
    21. 21.  Add a project to source control Workspaces Get a project Get latest Get specific Check-in Check-out and Lock!!! Undo changes Shelve-sets: shelving and unshelving Move …and Source Control File Types
    22. 22.  Check-out settings  Bringing VSS annoyance to TFS!! Check-in policy  Some useful policies  And some are unnecessary and annoying Check-in notes
    23. 23. The Dark Side ofVersion Control!
    24. 24.  Feature branch Dev branch Release branch Hotfix branch Integration isolation Technology specific branch
    25. 25.  Create a branch Make some changes on the branch Merge changes back Make some changes on the branch Make some changes on the mainline Merge changes and resolve the conflict
    26. 26.  “No Branching”, Says Me But if you REALLY need branching at least do it on demand And then do your best to remove the demand ;-)
    27. 27.  Create a label on the release Do NOT create a branch If you need to fix some bugs on the release branch off the label Do NOT forget to merge your changes back
    28. 28.  Chrome with hundreds of millions of users is released every six weeks Chrome Canary is released once a day Flickr with hundreds of millions of users deploys to production 10 times a day
    29. 29.  You need to maintain workable Mainline You want to check-in frequently Conflicting needs Feature branching seems like the solution
    30. 30. From Feature Branching By Martin Fowler
    31. 31.  Make your features small Have very few features in progress Do not create developer silos Branching is painful. You may reduce the pain; but it is always going to hurt
    32. 32.  Avoid branching using  Smaller features  Shorter sprints  Feature Toggle  Branch By Abstraction … but sometimes you just HAVE to create a branch. That is ok because it should not happen often
    33. 33. The relief we are after
    34. 34.  Integrate your work frequently Everyone checks into Mainline on daily basis Every commit should be built Builds should include test runs Keep the build fast Keep your tests fast Use CI to drive your Automated Deployment
    35. 35.  With or without branches, please continuously integrate back and forward And do not forget: Mainline is the king!From Feature Branching By Martin Fowler
    36. 36.  AKA baseless merge in TFS land Only doable through command prompt This is not a good ideausually And we never talked about it – alright?!
    37. 37.  Offline Mode Source History Code Annotation Diff tools  Comparing files  Comparing folders Merge tools  Two way merge  Three way merge
    38. 38. This is an important part of Continuous Integration
    39. 39.  Several triggers:  Manual  CI  Rolling Builds  Gated Check-In  Scheduled From MSBuild in 2008 to WF in 2010  Some are happy and some like me are sad pandas
    40. 40.  Manual: most useful for deployment builds CI: Good for CI Rolling Build: Useful when you have a big team and devs check-in very frequently Gated Check-In: Useful for junior teams and for your Mainline if you have many branches Schedule: useful for functional tests, nightly builds, …
    41. 41.  Install TFS on your agent machine Set it up as an agent for the build controller Give your agents good names Optionally give it some tags You can use tags in your build definition  Or when you queue the build You can see a list of controllers and agents from team explorer
    42. 42.  You can queue  The latest code  A shelveset  A changeset  A label
    43. 43.  Test result Broken test could break the build Keeping a build result around Build Log MSBuild Log Drop folder Build folder
    44. 44.  Get (late) notifications on builds Desktop notification from TFS Do not rely on it; but having it could help
    45. 45. Remember Chrome and FlickrIf you want to win you should do the same
    46. 46. Short HappyContinuous FeedbackIntegration Cycle CustomerContinuous Continuous Testing Delivery
    47. 47.  No matter how big your application is, if your deployment takes more than a minute to trigger you are doing it wrong Some cool tools:  MSDeploy  TFSDeployer
    48. 48.  You need to apply database transformation as part of your push-button deployment Some cool tools  MigratorDotNet  DBUP
    49. 49.  Different environments have different settings To create push-button deployment you need to easily apply config transformations Some cool tools  CodeAssassin.ConfigTransform  SlowCheetah
    50. 50. No CMMI Please!
    51. 51.  Integrated work item tracking system Integration with Version Control Requirements, tasks, bugs, issues, test cases Extensible:  Create your custom fields  Change the layout  Available states  State transitions
    52. 52.  Create a sprint Create iterations and areas Create Product Backlog Item/Story Create tasks and subtasks Create bugs Create impediments Check-in code against a backlog item Create custom queries
    53. 53.  Editing multiple entries at once Populating your backlog
    54. 54.  Backlog is a living creature!! If your backlog is not growing your product is dead Backlog MUST be always prioritized Do not forget to groom your backlog The Team should help PO groom the backlog Prioritize your backlog Backlog MUST be always prioritized
    55. 55. Customer Preferences Attractive One-Dimensional Must-Be Indifferent Reverse
    56. 56.  Deny is THE king  And then there are administrators ▪ Project Collection Administrators ▪ Project Administrators ▪ Team Foundation Administrators Allow is the king in the absence of Deny Unset means denied unless stated otherwise  This is where inheritance shines
    57. 57.  Administer warehouse Create team project collection Delete team project collection Edit instance-level information Make requests on behalf of others Trigger Events Use full Web Access features View instance-level information
    58. 58.  SharePoint Web Application Services Team Foundation Administrators Team Foundation Service Accounts Team Foundation Valid Users Work Item Only View Users
    59. 59.  Administer shelved changes Administer workspaces Create a workspace Create new projects Delete team project Manage process template Manage build resources Delete team project collection ….
    60. 60.  Project Collection Administrators Project Collection Service Accounts Project Collection Build Administrators Project Collection Build Service Accounts Project Collection Valid Users Collection Proxy Service Accounts Project Collection Test Service Accounts
    61. 61.  Project Administrators Contributors Readers Builders
    62. 62.  Permission Levels:  Project  Build  Work Item Query  Areas  Iterations  Version Control And each has very granular permissions
    63. 63.  Create different AD groups for different roles TFS has to be granular to suit every need Do not over specify – a few groups would usually suffice Do not lock it in: adapt as need arises
    64. 64.  Project documents and requirements Process Guidance Dashboard with reports about ongoing things Wiki Some versioning goodness
    65. 65.  Announcements Contacts Discussion Boards Out of TFS Tasks Surveys …. RSS subscriptions Alerts
    66. 66.  Environment Lists: Name, status, URLs, current release info, access details if need be Active Risks Sprint info: sprint No., goal, start and end dates, daily stand-up location and time, review location and time Project Glossary Important Dates Contacts
    67. 67.  Create/Edit Work Items and Work Item Queries Create/Edit Areas and Iterations Read-only access to Version Control Access to Team Build A Work Item Only View (doesnt require CAL)
    68. 68.  Your work items (or any work item) changes  Or a work item is assigned to you  Or a new work item is created Build Quality Changes  Or a build completes  Or it fails Anything is checked in  Or there is a check-in on a specific file  Or a folder  Or a file extension  Or when a check-in policy is overridden
    69. 69.  Roles  Ceremonies  Product Owner  Sprint planning  ScrumMaster  Daily standup  The Team  Sprint review  Sprint retrospective Documents  Product backlog  Sprint backlog  Burndown charts
    70. 70. All that said ...
    71. 71.  There is no silver bullet - NEVER … and TFS is no exception A good process succeeds regardless of tools To succeed we should  Be transparent  Inspect  Adapt Get as much feedback as frequently as possible … and the tool comes next
    72. 72. Let’s run a project!
    73. 73.  git-tfs and posh-git Team Foundation Sidekicks Team Foundation Power Tools Telerik’s TFS Project Dashboard TFS Integration Tools TFS Administration Tools Just search for them
    74. 74. Q&A
    75. 75.  TFS Permissions: VS TFS Branching Guidance: Continuous Integration: Feature Branching:
    76. 76.  Branch By Abstraction: changes-incrementally-with-branch-by-abstraction/ Feature Toggle: Mitigate your merge issues:
    77. 77.  MSDeploy: esomeIfYoureUsingXCopyYoureDoingItWrong.aspxhttp://ch TFSDeployer: TFS Sidekicks: App and Web Config Transformation
    78. 78.  Team Foundation Power Tools: 4-04ba-4f68-8f4e-cd473d6b971f Telerik’s TFS project dashboard: tools/tfs.aspx TFS Integration Tools: c98c-4e36-9ead-fa115b27fefe TFS Administrations Tools: