Scrum encourages version control. Below is the setup we have. Our development environment is local to all developers.
When a unit of work is complete and meets best practice it is checked in. Then on a regular basis the Test environment will be updated using the TFS synchronise functionality. This should update the test environment will all checked in work.
This diagram below illustrates this process.
We have 3 environments for product development:
Install on developers machine and TFS is enabled.
Installed on the server and TFS is enabled. When a developer is finished with a piece of functionality it is synced into this environment for testing.
Ideally a nightly build is recommended to ensure that everything is fine and it can be picked at as soon as a problem occurs. We actually do this on the last 5 days of our sprint- every night.
This environment is built on release of a sprint. This environment is updated towards the end of the sprint during the last week (built every night). The environment is updated by a model import. We call this our FIT (Functional Integration Testing) environment.
During each sprint we branch our code in TFS. So, we could potentially build an environment at any particular point. We package everything up:
- Model file (signed)
- Help file installer (signed msi file)
- Documentation (Implementation document, release notes, technical document etc)
If new developers join it is quite easy to add them on. Just install a base database and starting synching with TFS.
There are a number of resource online for build scripts,
Change management and TFS integration for multi-developer projects (white paper) [AX 2012]