09/10/2007

Development Process Guidelines

"You're pirates. Hang the code, and hang the rules.
They're more like guidelines anyway."


I'll try to figure out some configuration and development process guidelines. Don't take it too seriously, it's just a guidelines :-)

Required infrastructure

Following tools and environments must be available:
  1. Issue Tracking system - JIRA or BugZilla
  2. Version Control System [VCS] - Subversion, CVS, etc.
  3. Continuous Integration Tool [CI tool] - Hudson, Continuum etc.
  4. System Test environment exists (dev-box) - for system test by development team (QA team - by request). Available for developers to deploy.
  5. Integration Test environment exists (tst-box) - for QA team. Not available for developers
  6. Pre-Production (user-acceptance) environment exists (uat-box) - visible to end-uses, used by another projects within organization (clients). Maintained by Integrators
  7. Production environment (prod-box) - maintained by Integrators.

Project requirements

Project structure requires following:
  • Each system component should be buildable (build script exists)
  • Each system component should be buildable on the remote machine using CI tool without human intervention (no manual source modifying) by schedule or forced build.

Roles

  • Developer - works with code
  • Builder - prepares the distribution
  • Tester - tests the application
  • Integrator - manages UAT and PROD environments
Single person may share multiple roles

The Process


  1. Builder gets the binaries from the CI Tool and deploys to dev-box environment.
  2. When internal system test passed:
    1. Packages components, deployed to dev-box, into distribution package with build number assigned.
    2. Builder submits the Package to SCM or special folder.
    3. Builder assembles the change list (or marks issues in issue tracking system).
    4. Builder writes deployment instructions (if required)
    5. Builder sends changelist, deployment instructions and reference to the distribution package to the Tester.
  3. Tester gets the package from the Builder and deploys it to Dev-box.
  4. Tester tests changes described in CHANGELIST or from Bug Tracking system as well as the regression tests
  5. If QA test passed:
    1. Tester marks Distribution package as Release Candidate
    2. Developers implement features and fix bugs. All changes are submitted to the VCS[Version Control System]
    3. Tester writes Release Notes for RC.
    4. Tester sends deploys tested package together with release notes to the Integrator
    5. Integrator installs RC version to uat-box. (Integrator learns how to install the new release over existing running system.)
  6. If UAT phase passed
    1. RC version is marked as release version
    2. Integrator installs RC version to the customer's server.
I must have left something important in process.
Comments are welcome ;-)

No comments:

Post a Comment

redirect