Upload
jayla-ostler
View
227
Download
0
Tags:
Embed Size (px)
Citation preview
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
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
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
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.
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
DemoDemo
Assorted hostsAssorted hosts
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
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
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
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
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
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
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
DemoDemo
Publish and ReusePublish and Reuse
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
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
Q & AQ & A
Http://msdn.microsoft.comHttp://msdn.microsoft.com [email protected]@microsoft.com