Featured Whitepapers
- Peer Code Review: An Agile Process
- Learn Ways to Keep Schedules and Costs in Line With Requirements Change Management
- Java Deployments in an Enterprise Environment
- Challenges & Characteristics of Enterprise Continuous Integration
- Build Release Plans That Deliver Customer Value!
- Improving Traceability and Auditability Across the Development Lifecycle
Upcoming & Recent Webcasts
|
A Motivating Story You point Jim to a wiki page that has instructions for setting up a developer workspace environment. Jim opens looks at the wiki page and follows the steps for downloading and installing an assortment of tools, including the compiler, version control client, etc. Hours later, after installing the tools, if Jim remembers that the purpose of this activity was to develop software, Jim gets to the steps that tell him what command to execute to get the source code. He checks out the code and tries to build it. The build fails. Jim re-checks the list on the wiki and realizes that he made a mistake on step 3. He fixes the problem and tries to build again. It compiles! But the tests fail part way through. After checking to see if he made a mistake, he grabs one of his colleagues who walks over with a USB Drive and says “You need a copy of this configuration file to run tests on a development box.” Right before Jim leaves for the day, he can build the application. Have a single point of access, or repository, for your code and related artifacts. Make creating a developer workspace as simple and transparent as possible. [SCM] The Repository advises you to create consistent workspaces for development, integration, etc. This enables:
In principle, you can attain the goal of reproducibility by having a “defined” manual process. Having a documented process made it possible for Jim to get started rather quickly compared to an ad-hoc one. Having a documented process puts Jim’s organization ahead of some. The risks with having only documented processes are that manual processes are slow to execute, error prone, and difficult to maintain. And once a document shows signs of being out of date people will start ignoring it, thus leading to discrepancies between workspaces, negating the value of having documentation. The value of an automated workspace creation process is best expressed by the Agile Manifesto value working software over comprehensive documentation. [MANIFESTO] The simplest way to ensure that a workspace is consistent is to make it very easy to set one up. An automated process for doing this sort of set up has all the benefits of the documentation only process, and also has these benefits:
To simplify workspace set up you will need to use some sort of tooling. This leads to a bootstrapping problem that can be addressed. To begin with you will need some tool in place to bootstrap the creation process. For example, if you start with a checkout from the source code repository, you will need a version control client. If you choose to start things off with a script, you need to be sure that the right version of the scripting tool is available on the target machine, It is also important to make as few assumptions as possible about the environment, such as assuming that certain tools live in a certain place. This makes the build process fragile and not robust to change. Rather than making a simple workspace creation process seem like an unreachable goal, you can get most of the benefits of automation by ensuring:
With these principles in mind, you can create a Getting Started page for your project that looks something like this:
Because, in the interest of getting a process working, we’re allowing that some tools can be installed manually it’s important that the build step verify that these tools are the correct versions. For example, your build script can have a “check-prerequisites” step that verifies that the build tool and complier are at an acceptable version, and fail with a message indicating that the developer needs to upgrade. While this is not as good as automatically upgrading, it is acceptable if the upgrades are infrequent, and developers are warned in advance. Treat core tool upgrades like changes to a published API. ![]() Figure 1 Wicket Quick Start Page The way that this works is that they web page does the details work of helping you build the maven command line that downloads the “archetype” project from a repository. The archetype is basically a template project. This process assumes that you have installed:
This example relies on the Maven archetype mechanism to do most of the work, and the code to generate the command line simply saves you from copying and pasting. And the archetype is just a template project with the default files in the default directory structure. But it is exactly this kind of automation that makes starting a new project simple and foolproof. With the help of tooling that Maven and the Wicket Quick start provides we can now create a wicket project. The good:
The Less Good:
The Wicket Quick Start example showed us that it can be simple to provide directions on how to start a project. You need only tell a developer that they need to go to the QuickStart page and type in the name of their components. The web page can enforce naming conventions. Or you can select the components from a menu. If you are doing work on a branch, you can incorporate the release labels in the drop down. What you have is the ability to build and test consistently in your development workspace.
If the Getting Started web page seems intimidating, simply add the maven command on the Getting Started page, and have the developer edit the command by hand. Not as foolproof as the generation approach, but should a developer mistype a label or the like, the process will fail quickly. One you have this basic process in place you have enabled your team to create workspace easily. This will allow you to:
Once you have the basics in place, you can work towards automating more steps. It’s possible to automate tool selection for example. Getting Started -- Again When Fred started, Jim pointed him to the getting started page:
The build shell script executes the correct version of maven that is installed in the project tools directory, and Fred is ready to go after an hour or so.
Brad Appleton is an enterprise SCM solution architect for a Fortune 100 technology company. Currently he helps projects and teams adopt and apply agile development & SCM practices. Brad also author's the Agile CM Environments blog, and is co-author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, the "Agile SCM" column in CMCrossroads.com's CM Journal, is a regular contributor to "The Agile Journal", and is a former section editor for The C++ Report. Since 1987, Brad has extensive experience using, developing, and supporting SCM environments for teams of all shapes and sizes. He holds an M.S. in Software Engineering and a B.S. in Computer Science and Mathematics. You can reach Brad by email at brad@bradapp.net
Set as favorite
Bookmark
Email this
Hits: 2922 Trackback(0)Comments (0)
|
| Last Updated on Sunday, 20 December 2009 13:35 |

A prerequisites to any of the Agile SCM Practices, such as Integration Builds Private Build, Unit Tests, and the like is being able to set up a developer’s Private Workspace with the right code and tools so that you can code, build and test.

