Featured Whitepapers
- Forrester Research: Optimizing Globally Distributed Software Development Using Subversion
- An Integrated Approach to Requirements and Quality Management
- Continuous Testing With ElectricCommander
- Agile CMMI at a Large Investment Bank
- Realize Effective Distributed Development Via a Virtual Software Factory
- Build & Deployment Automation for the Lean Economy
Upcoming & Recent Webcasts
- A New Kind of Engineering
- Managing Change in Rugged COTS Systems Development
- Keeping Control of Costs and Schedules When Requirements Change
- Three Simple Things that Will Help You Adopt Agile in Your Enterprise
- Customer speak: Teams, Insights, Results with Quality Driven Software
- Build & Deployment Automation for the Lean Economy
Agile SCM: Getting Started |
| Print | |
| Written by Brad Appleton, Robert Cowham and Steve Berczuk |
| Sunday, 16 November 2008 14:01 |
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.In this installment we discuss the important, and oft-overlooked process of creating a development workspace, which is to say, getting started. 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 . Robert Cowham has been in software development for over 20 years in roles ranging from programming to project management. He continues his involvement in development projects but spends most of his time on SCM Consultancy and Training. He is the Chair of the Configuration Management Specialist Group of the British Computer Society, has a BSc in Computer Science from Edinburgh University and is a Chartered Engineer (CEng MBCS CITP). You can reach him by email at rc@vaccaperna.co.uk Steve Berczuk is a Technical Lead for an Agile Software Development consulting company. He has been developing software applications since 1989, often as part of geographically distributed teams. In addition to developing software he helps teams use Software Configuration Management effectively in their development process. Steve is co-author of the book Software Configuration Management Patterns: Effective Teamwork, Practical Integration and a Certified ScrumMaster. He has an M.S. in Operations Research from Stanford University and an S.B. in Electrical Engineering from MIT. You can contact him at steve@berczuk.com.
Set as favorite
Bookmark
Email this
Hits: 2283 Trackback(0)Comments (0)
|
| Last Updated on Thursday, 23 July 2009 11:01 |

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.

