Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise...

36
Team Development Team Development Using Visual Studio Using Visual Studio 6.0 6.0 Martyn Lovell Martyn Lovell Development Lead Development Lead Visual Studio Enterprise Visual Studio Enterprise Microsoft Corporation Microsoft Corporation 6-309 6-309

Transcript of Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise...

Page 1: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Team Development Using Team Development Using Visual Studio 6.0Visual Studio 6.0

Martyn LovellMartyn LovellDevelopment LeadDevelopment LeadVisual Studio EnterpriseVisual Studio EnterpriseMicrosoft CorporationMicrosoft Corporation

6-3096-309

Page 2: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.
Page 3: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

OverviewOverview

Team Development ToolsTeam Development Tools Source ControlSource Control

Setting upSetting up Unifying toolsUnifying tools Parallel DevelopmentParallel Development VSS integration best practicesVSS integration best practices

Component ManagementComponent Management Setting upSetting up Best practicesBest practices

SummarySummary Q&AQ&A

Page 4: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Focus AreasFocus Areas

CoveredCovered Visual Studio 6.0Visual Studio 6.0

Visual C++, Visual Basic, Visual J++, Visual Visual C++, Visual Basic, Visual J++, Visual InterDevInterDev

Source Control SystemsSource Control Systems Visual SourceSafe, OthersVisual SourceSafe, Others

Visual Component ManagerVisual Component Manager Not Deeply CoveredNot Deeply Covered

Visual FoxProVisual FoxPro Microsoft AccessMicrosoft Access Other uses of the Microsoft RepositoryOther uses of the Microsoft Repository

Page 5: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Team Development ToolsTeam Development Tools

Source controlSource control Manage Source codeManage Source code Manage DocumentationManage Documentation Share Reusable sourceShare Reusable source

Component managementComponent management Manage Built binariesManage Built binaries Manage External binaries (MFCxx.DLL)Manage External binaries (MFCxx.DLL) Share Binary components (OCX)Share Binary components (OCX)

Each allows other’s contentEach allows other’s content But is optimized as described above.But is optimized as described above.

Page 6: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Source ControlSource Control

All of Visual Studio is integrated with All of Visual Studio is integrated with Source ControlSource Control

Each piece of the product does it Each piece of the product does it slightly differentlyslightly differently

Working with each individually is well-Working with each individually is well-documenteddocumented

When your work crosses tools things When your work crosses tools things become more complexbecome more complex This is the focus of this part of the talkThis is the focus of this part of the talk

Page 7: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Types of IntegrationTypes of Integration

Client SideClient Side Has user interfaceHas user interface

e.g. Diff/Mergee.g. Diff/Merge Uses Microsoft Source Code Control Uses Microsoft Source Code Control

Interface (MSSCCI)Interface (MSSCCI) Server/AutomationServer/Automation

No user-interfaceNo user-interface Runs unattendedRuns unattended

Page 8: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Client IntegrationClient Integration

MSSCCI-basedMSSCCI-based De Facto standardDe Facto standard Supported by all major vendorsSupported by all major vendors

PVCS, ClearCase, Team Connection, …PVCS, ClearCase, Team Connection, … Used by other editors and toolsUsed by other editors and tools

MS ProductsMS Products Visual Basic, Visual C++, Visual J++, Visual Basic, Visual C++, Visual J++,

Visual FoxPro, AccessVisual FoxPro, Access

Page 9: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Server IntegrationServer Integration

Server-side integration uses a VSS-Server-side integration uses a VSS-specific interfacespecific interface SourceSafe supports itSourceSafe supports it PVCS has some support tooPVCS has some support too

Used to keep a server backed by Used to keep a server backed by source controlsource control

Not widely used on the clientNot widely used on the client MS ProductsMS Products

FrontPage, Office Web Server, Visual FrontPage, Office Web Server, Visual InterDevInterDev

Page 10: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Setting up: TeamSetting up: Team

One person should administerOne person should administer They will be responsible forThey will be responsible for

User managementUser management SharingSharing BranchingBranching PinningPinning AnalyzeAnalyze Creating DatabasesCreating Databases

Page 11: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Setting up:Setting up:Visual SourceSafeVisual SourceSafe Use VSS explorer to open databasesUse VSS explorer to open databases Use browse to find your database on Use browse to find your database on

the networkthe network Create shareable connectionsCreate shareable connections Shareable connections look likeShareable connections look like

\\martyn\vss\srcsafe.ini\\martyn\vss\srcsafe.ini Non-shareable connections look likeNon-shareable connections look like

C:\foo\srcsafe.iniC:\foo\srcsafe.ini Avoid using NetSetupAvoid using NetSetup

It makes a non-shareable connectionIt makes a non-shareable connection

Page 12: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Setting up: FrontPageSetting up: FrontPage

Set up FrontPage server to point at Set up FrontPage server to point at VSSVSS

Can point at VSS database on any Can point at VSS database on any machinemachine

Tough processTough process Get the KB articlesGet the KB articles

See Q157883, which points at other KB See Q157883, which points at other KB articlesarticles

Works seamlessly when set upWorks seamlessly when set up

Page 13: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Creating A New ProjectCreating A New Project

Create it on your local machineCreate it on your local machine Ensure it builds thereEnsure it builds there

Keep everything under a unified rootKeep everything under a unified root All projects and files should be under some well All projects and files should be under some well

known pointknown point Otherwise, VSS will force you to copy themOtherwise, VSS will force you to copy them

Put metafiles above their referencesPut metafiles above their references Workspaces above projects (VC)Workspaces above projects (VC) Project groups above projects (VB)Project groups above projects (VB) Solutions above projects (VJ/VID)Solutions above projects (VJ/VID) Vital for VB and VC; highly desirable for othersVital for VB and VC; highly desirable for others

Page 14: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Importing LibrariesImporting Libraries

Don’t try to share local copies of library Don’t try to share local copies of library filesfiles Your development efforts will interfere Your development efforts will interfere

with each otherwith each other Source space is a small fraction of build Source space is a small fraction of build

spacespace Use ‘Share and branch’ to make Use ‘Share and branch’ to make

references to common librariesreferences to common libraries Caveats laterCaveats later

Page 15: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Adding To Source Control Adding To Source Control

Server layout should match disk layoutServer layout should match disk layout Don’t add output or temporary filesDon’t add output or temporary files

OPT/SUOOPT/SUO NCBNCB PDBPDB APSAPS

Do add binary filesDo add binary files BMP/ICOBMP/ICO

Consider adding input binaries Consider adding input binaries (OCX, DLL)(OCX, DLL)

Page 16: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Working With Source ControlWorking With Source Control

Use integration where ever possibleUse integration where ever possible Resort to VSS Explorer only when Resort to VSS Explorer only when

necessarynecessary Use Refresh status command after Use Refresh status command after

using VSS Explorerusing VSS Explorer Check out all files before working on Check out all files before working on

themthem

Page 17: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Unifying ToolsUnifying Tools

Three ways to unify toolsThree ways to unify tools Command LineCommand Line Build TreeBuild Tree Single SCC EnvironmentSingle SCC Environment

Each has strengths and weaknessesEach has strengths and weaknesses No perfect solution yetNo perfect solution yet

Page 18: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Command LineCommand Line

Ensure unified root across all Ensure unified root across all languageslanguages

Avoid adding directories too oftenAvoid adding directories too often Write command line scripts to get Write command line scripts to get

latest versionslatest versions ProPro

SimpleSimple ExtensibleExtensible

ConCon Completely manualCompletely manual

Page 19: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Build TreeBuild Tree

Ensure unified root across all Ensure unified root across all languageslanguages

Avoid adding directories too oftenAvoid adding directories too often Use VSS GUI to get new versionsUse VSS GUI to get new versions

RecursiveRecursive Build TreeBuild Tree

ProPro SimpleSimple

ConCon Completely manualCompletely manual

Page 20: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Single SCC EnvironmentSingle SCC Environment

Choose a host environmentChoose a host environment Probably best to choose your most Probably best to choose your most

important oneimportant one Create fake projects to wrap all Create fake projects to wrap all

projects from other environmentsprojects from other environments Fake projects must be kept in sync Fake projects must be kept in sync

with real projectswith real projects All SCC operations done from the host All SCC operations done from the host

environmentenvironment Other environments see themselves as Other environments see themselves as

controlledcontrolled

Page 21: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Host: MDE (VJ/VID/VSA)Host: MDE (VJ/VID/VSA)

Microsoft Development EnvironmentMicrosoft Development Environment Best SCC UI and integrationBest SCC UI and integration Use utility projects to model external Use utility projects to model external

projectsprojects Can set up build tooCan set up build too No debugging except of VJNo debugging except of VJ Only way to integrate with VID as wellOnly way to integrate with VID as well Good support for Share and BranchGood support for Share and Branch

Does not have VC’s issues in this area.Does not have VC’s issues in this area. Best general-case solution from a source Best general-case solution from a source

control perspectivecontrol perspective

Page 22: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Host: VC++Host: VC++

Good SCC UI and integrationGood SCC UI and integration Use makefile projects to model external Use makefile projects to model external

projectsprojects Can set up build tooCan set up build too Debug VB, VCDebug VB, VC No way to integrate with VIDNo way to integrate with VID Manual support for Share and BranchManual support for Share and Branch Good for primary-VC usersGood for primary-VC users

Page 23: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Host: VBHost: VB

Basic SCC UI and IntegrationBasic SCC UI and Integration Use a VB Project to model Use a VB Project to model

external projectexternal project Not idealNot ideal

Can’t easily set up buildCan’t easily set up build Debug only VBDebug only VB No way to integrate with VIDNo way to integrate with VID Good support for Share and BranchGood support for Share and Branch Good for mostly VB users who do a Good for mostly VB users who do a

little VClittle VC

Page 24: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

DemoDemo

Assorted hostsAssorted hosts

Page 25: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Parallel DevelopmentParallel Development

VSS uses Share command to work in VSS uses Share command to work in parallelparallel

Branch command splits the shareBranch command splits the share Always branch metafilesAlways branch metafiles

DSW, DSP, VBG, VBP, SLN, VJPDSW, DSP, VBG, VBP, SLN, VJP Some manual fix up required in VC Some manual fix up required in VC

See knowledgebase Q173065See knowledgebase Q173065 VJ has command to aid fix upVJ has command to aid fix up

Change ConnectionChange Connection

Page 26: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Parallel Development (2)Parallel Development (2)

Simplest solutionSimplest solution Share and branch everythingShare and branch everything

Administrator should complete branch Administrator should complete branch before people start workbefore people start work

Be sure to reopen everything before Be sure to reopen everything before you let others looseyou let others loose

Branching webs is hardBranching webs is hard Avoid itAvoid it Use Copy WebUse Copy Web

Page 27: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Parallel Development (3)Parallel Development (3)

Merge branches when no one is Merge branches when no one is workingworking Tree can become un-buildableTree can become un-buildable Do a get latest versionDo a get latest version Build, TestBuild, Test Fix any problemsFix any problems

Avoid re-share unless requiredAvoid re-share unless required

Page 28: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

VSS Best PracticesVSS Best Practices

Run Analyze weeklyRun Analyze weekly Take regular backupsTake regular backups

It’s a database!It’s a database! Use the 6.0 format databaseUse the 6.0 format database

PerformancePerformance Get Visual Studio 6 SP4Get Visual Studio 6 SP4

Includes several useful VSS fixesIncludes several useful VSS fixes Deploy to clients, not just serverDeploy to clients, not just server

Avoid unreliable networksAvoid unreliable networks Use RAS only for read operationsUse RAS only for read operations

Page 29: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Integration Best PracticesIntegration Best Practices

Have a shareable connectionHave a shareable connection Have a unified rootHave a unified root Share sparinglyShare sparingly Always use integrationAlways use integration Check out earlyCheck out early

Page 30: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Component ManagementComponent Management

Use Visual Component Manager toUse Visual Component Manager to Share built componentsShare built components Reuse across organization boundariesReuse across organization boundaries Provide centralised repositoryProvide centralised repository Assign custom propertiesAssign custom properties Archive binary dependenciesArchive binary dependencies

VBRUN, MFC, etcVBRUN, MFC, etc

Not good forNot good for Source code sharingSource code sharing

Page 31: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Setting UpSetting Up

Experiment with MS AccessExperiment with MS Access Create a taxonomyCreate a taxonomy

Investment here will pay offInvestment here will pay off Initial taxonomy may helpInitial taxonomy may help

Decide on keywordsDecide on keywords People will not bother unless the keywords are appositePeople will not bother unless the keywords are apposite

Then setup SQL serverThen setup SQL server Key for performanceKey for performance

Have users deployHave users deploy Many may not have installedMany may not have installed

Page 32: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

DemoDemo

Publish and ReusePublish and Reuse

Page 33: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Best PracticesBest Practices

Archive all used binaries, OS-es, etcArchive all used binaries, OS-es, etc Archive all inter-team releasesArchive all inter-team releases Create a simple website using Create a simple website using

FrontPageFrontPage Allows users to describe their component Allows users to describe their component

in more detailin more detail VCM will run within IE tooVCM will run within IE too

Keep the publish burden lowKeep the publish burden low Users are loathe to add metadataUsers are loathe to add metadata

Page 34: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

SummarySummary

SCC integration is powerful and SCC integration is powerful and flexibleflexible

Managing across many products is Managing across many products is easier than it seemseasier than it seems

Simple best practices can avoid most Simple best practices can avoid most problemsproblems

Page 35: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.

Q & AQ & A

Http://msdn.microsoft.comHttp://msdn.microsoft.com [email protected]@microsoft.com

Page 36: Team Development Using Visual Studio 6.0 Martyn Lovell Development Lead Visual Studio Enterprise Microsoft Corporation 6-309.