Showing posts with label Trac. Show all posts
Showing posts with label Trac. Show all posts

March's AgileNorth - Applying Agile Software Practices to Consultancy Projects

This month's AgileNorth was a short presentation and following discussion on Applying Agile Software Practices to Consultancy Projects.

The 20-odd slides were presented by Simon Monk, CTO of Momote (Momote's wikipedia page). Momote offer products that allow the development of mobile applications that will run on any device from a consumer Java phone to a Windows Mobile PDA.

Simon has worked in an agile development way for some time and now wants to create a consultancy group that can work in an agile way. Momote are 6 months into offering consultancy services and have a small XP team for the main development of their MX platform. At the moment they have one consultant but are growing that team to three or four in the very near future.

Momote don't want to follow the traditional consultancy process which was described as:
* lengthy (and therefore costly) detailed requirements gathering
* Big Design Up Front - BDUF
* Severe project management - Gant charts, Microsoft Project, etc.
* Waterfall model of software projects - development, testing, delivery

They hope to offer a new way where they have happy customers & consultants, real & accurate project estimates and much more flexible requirements (so that the customer actually gets what they want rather than what was captured in the initial requirements capture session). They hope that the client still gets the security of fixed priced contract but with added flexibility and feedback that the agile approach can provide.

Momote wants to try and capitalise on the following agile practises:
* low cost estimates - requirements gathering takes about a day not weeks
* task estimates
* velocity & tracking
* flexible scope - customers are allowed two significant changes
* customer involvement

They have come up with a simple way to categorise projects to be able to give 'ball park' estimates to clients as part of their non-chargeable requirements capture phase:

CostSmallMediumLarge
Requirements2 days4 days5 days
Development10 days20 days40 days
Handover3 days4 days5 days


As part of the output of this phase they produce a five to six page requirements specification which includes the initial project plan on the back page. They then follow up with the client by the use of weekly web-based review meetings. These meetings allow the client to review the work done so far, see how the actual productivity of the consultant matches against the estimated throughput and provides an opportunity to change the work plan for the following week.

They have found that a minority of customers are "too busy" for the weekly update meetings and just want Momote to produce what was initially discussed, but so far most clients have been very accepting of the 'new way'. In fact it was mentioned in the discussion section after the presentation that the weekly meetings seem to be key to the whole process working well.

A few software tools were mentioned in the discussion that followed:

Trac
Trac is an enhanced wiki and issue tracking system for software development projects. Trac uses a minimalistic approach to web-based software project management.
I've blogged previously about:
Installing Trac on Linux (Debian Stable)
Creating a Trac instance on Debian Linux

Trac plugins

Confluence
Confluence is an enterprise wiki that makes it easy for your team to collaborate and share knowledge.

Jira
JIRA is a bug tracking, issue tracking, and project management application developed to make this process easier for your team. JIRA has been designed with a focus on task achievement, is instantly usable and is flexible to work with.

HttpUnit
HttpUnit emulates the relevant portions of browser behavior, including form submission, JavaScript, basic http authentication, cookies and automatic page redirection, and allows Java test code to examine returned pages either as text, an XML DOM, or containers of forms, tables, and links.

Watij
Watij (pronounced wattage) stands for Web Application Testing in Java. Watij is a pure Java API created to allow for the automation of web applications.


Technorati Tags: , , , ,

Creating a Trac instance on Debian Linux

In a post back in October (has it really been that long?) I walked through how to install Trac on Debian Linux. This post will cover the configuration of Trac so that at the end you will have a running Trac system that you can use as a wiki, ticket manager and Subversion repository browser.

First you need to decide where you want your Trac instance to live, I wanted mine to be accessible via a sub-section of a website, but I wanted the instance to live outside of that website's directory structure. I decided on /var/www/Trac which I would link to from within my other website.

To create the instance run the trac-admin command as the root user like so:
trac-admin /var/www/Trac initenv

It will now ask you a number of questions about your environment and project:
* Project Name - enter a human-readable name for your project, this will appear on emails, webpages, etc.
* Database connection string - just hit return to use the default SQLite
* Path to repository - the directory path to your Subversion repository, note: it cannot be a remote repository with the current version of Trac.
* Templates directory - just hit return to use the default templates directory.

If all went well it should report that the environment was created successfully and will give you instructions on how to quickly test that it's working.

Now that we have created the Trac instance, we need to configure Apache to make the site available to the outside world (or intranet if that's more relevant to you). I've set it up to be accessed via a www.somedomain.com/trac so I added the following stanza to that site's virtual host entry within the /etc/apache2/sites-available directory:

# trac
ScriptAlias /trac "/usr/share/trac/cgi-bin/trac.cgi"
<Location "/trac">
SetEnv TRAC_ENV "/var/www/Trac"
</Location>

# edit trac.ini to change /trac to /trac-static
Alias /trac-static "/usr/share/trac/htdocs"

<Location "/trac">
AuthType Basic
AuthName "Trac"
AuthUserFile /some/path/htpasswd
Require valid-user
</Location>

This sets up /trac to point to the Trac master CGI script, and tells the script that the instance lives in /var/www/Trac. The htpasswd file protects the whole site from unauthorised people, (make sure that the htpasswd file exists and has some users in it otherwise you won't be able to access your Trac instance).

Before you restart Apache to see your new Trac instance you need to ensure that the Trac directory structure is owned by the same user as Apache, in my case www-data. Simply run chown -R www-data:www-data /var/www/Trac to sort this out.

Now restart Apache, (/etc/init.d/apache2 reload) and then goto http://www.yourdomain.com/trac to see Trac in all it's glory.

There are loads of things that you can configure with Trac and general usage instructions are all available within your instance, just click 'Help/Guide' link in the top-right menu bar.

I hope this has been informative, if you have any questions or comments then please don't forget to leave a comment or trackback below!

Technorati Tags: , , , ,

Installing Trac on Linux (Debian Stable)

Now that you've installed a dummy Debian package for Subversion you are ready to install Trac. I wanted to use the very latest version of Trac so I opted for building it from source using the latest code via the Trac Subversion repository.

The first thing to do is install the current Debian stable Trac package, this will install all the dependencies that we need (there are quite a few):
apt-get install trac

Once that's complete, we want to remove just the Trac package so that we can install it from source:
apt-get remove trac

To be able to build Trac from source it requires the Python development libraries:
apt-get install python-dev

Then we can checkout the latest version of the Trac source code (I did this in my home directory):
svn co http://svn.edgewall.com/repos/trac/trunk Trac

Then change directory into the Trac directory and as root issue the following command to build and install Trac:
./setup.py install

This step is optional, but if you want to ensure that get the latest version, periodically run svn update from the Trac directory (where ever you checked it out to) and then reinstall it (as root):
./setup.py install

Ok, that's the basic version of Trac installed, but you still won't be able to access the wiki, ticket management system or source code repository browser as you will need to create an instance of Trac that points at your repository and add it to an Apache virtual host, but hey, that's a topic for another post!

Technorati Tags: , , ,