Skip to main content


Showing posts from 2008

Folders are changing

There's a new spec for Folders in xProcess that should be released shortly in the v3 programme. The new feature let's you define a hierarchy of Folders and it clarifies the difference between folders with "explicit" members (the tasks are in the folder because someone put them there) and "implicit" members (the tasks are there because they fulfil the criteria for the folder - usually that they are in the appropriate category.

Email me or post a comment below if you would like a preview of this spec.

Rescheduling tasks to the date you want

I was asked by someone recently to help them get their task to be scheduled on the date they wanted. One thing xProcess doesn't give you (except for overhead tasks whose size is defined by their duration rather than the estimated effort) is the ability to state when a task should start and stop. This is what the auto-scheduler does, based on your estimates, constraints (e.g. dependencies on other tasks or specific dates), your priorities and your available resources. So what if you have a task which is not being scheduled when you think it should?Here's the checklist I gave my colleague:
If the task being scheduled toosoon you can add a constraint to the task by opening its editor (double-click) and selecting the “Constraints” where you can add the constraint (e.g. a dependency on another task or a “start after <date >” constraint).
It may be though that the task is being scheduled too late and you want it scheduled sooner. A quick and easy way to achieve this is to m…

IT&T Conference Galway

Ireland seems to be a second home for me at present with a number of clients using my services for migrating to agile practices through partners Neueda Technologies. So it was a pleasure to be back in sunny Galway (in the gaps between the gales!) for this conference at GMIT. My tutorial was on "Agility: driving software projects for value and quality" and apart from giving an overview of agile methods, particularly Scrum, it looked at some of the key issues for scaling agile processes including design, continuous integration and team structures.

Project Home Page

xProcess allows you to define a wiki, blog or other site as your project's home page. If you can see this page from with your project in xProcess you are pointed at the default page. Why not change this to a site where you can add details of your own project and invite team members to contribute.

Some processes are configured to expect a Wiki site rather than a blog. These sites generally allow pages which do not yet exist to be referenced by url. In such processes a reference to a new page is generated when a new task or project is created, allowing the user to create the corresponding page, at the same time as and already linked to the task or project.

New Scrum Process for v3

With the release of xProcess v3 drawing closer here's an overview of some of the improvements that are in the pipeline enabled by new features in the product. In this article we look at the steps to create Scrum projects and the backlog, then to prioritize them and allocate them to Sprints. In subsequent articles we'll consider how you can use the same features used in the Scrum process to tailor development processes for your organisation.

Here's the dialog for a new Scrum project. It shows the parameters used to set up the project including the location where Wiki pages may be created (including a home page for the project) and the Sprint duration which is used when Sprints (the timeboxes of the Scrum process) are created.

As the next screenshot shows there are now more patterns to choose from when you hit the "New" button in the project toolbar. We'll be looking at exactly what all these patterns are for in subsequent articles. For now let's just look at…

Defects kill Sprint Planning

Burning down user stories sprint by sprint at a nice constant velocity is what we hope to be seeing on agile projects. What happens though if there are defects in the work we've delivered and we have to start planning the defect fixing as well as the new work? How should this situation be approached?

Firstly, don't deliver defects! Easy to say but we know that all teams deliver defects at some points. If you start getting a lot of defects back though it's a pretty sure sign that you have a false velocity - you're reporting work as done when it isn't really. It simply hasn't been tested enough. So the second point is that you have to face reality about the velocity of your team. Get the testing done and automated before you deliver the next set of stories.

All well and good but what about planning the next few sprints? How do we plan reliably now when we are not sure how much defect fixing we're going to have to do along side the new user stories. Here's o…

Running xProcess with a console

It seems I missed out a vital piece of information in the previous blog - how do you create a shortcut that runs xProcess with a console. Actually it's pretty simple: add "- console" to the target command. So on a Windows machine the Target field of the shortcut should look something like this...
"C:\Program Files\Ivis\xProcess 2\xProcess\xprocess.exe" -console

Reporting and exporting from xProcess 2.9

A project I've been working with recently has been needing to get reports and data out of xProcess to integrate with other management reports. This hasn't proved as easy as I would have hoped with the product's standard reports, custom reports through BIRT, exporting and other options failing to give us what we needed. I decided to do some more experimenting with "UI Actions", which use OGNL to navigate over the data. Turns out this is a pretty good option with writing the required scripts being quite straightforward. The hardest thing turned out to be actually getting the export file which was a bit more of a hassle. I'm told all this will be great in v3 but for now here's my solution.

First you need to create a new Action in your process, and set it applicable to "Task" (or whatever type of object you want to report on) and "UI Action to "true". The only other crucial bit in this stage is writing the OGNL Expression. My script is…

How long should a Sprint be?

Generally I'd I'd say between 2 and 4 weeks. How long can the business leave the team alone to get on with what they've planned (the "no interruptions"rule) is one constraint. The other is how frequently do we need to update the release plan - we only really get feedback on velocity at sprint boundaries.

I've been working with a team recently where establishing a constant velocity has been very difficult. They are basically dealing with a large backlog of defects from previous iterations where they weren't using an agile process. Until this backlog is cleared it's largely academic how long the sprint is - they still get interrupted with a significant number of urgent defect fix tasks every week. Perhaps going to a weekly sprint, at least until this backlog is effectively cleared would help. That way the defects being worked on in that week would be known, with analysis only being done on new defect reports during the week. The sprint planning for the f…

Requirements, requirements, requirements

Is it possible to implement an agile project without overhauling your requirements process? I think not. The key economic benefits flow from agile methods ability to reduce "work in progress" compared to traditional methods [Anderson]. This means specifiers must take a much lighter approach to distant requirements and have much greater involvement, for example as "on-site customers" or product owners, in requirements currently being implemented.

[Anderson] Agile Management, Prentice-Hall (2003)

Availability - how much and who to?

When you're specifying your availability in xProcess there are 2 parts to the information required: when are you available? and to which projects? If you are wanting to change availability for people in your project from the assumed defaults (usually 8 hours each weekday), then here are a few hints to get you started.

The first part - your overall availability - can be specified for both organisations and for individuals Open an editor for either a person or organisation and you'll find (at the bottom of the editor pane) a tab labelled "Availability". This shows the availability records that have been defined. Each record has a from and to date ("..." means "forever" in this context, either in the past for the "from" date, or in the future for the "to" date). For each day of the week you can either specify a specific number of hours or inherit the hours specified on another person or organisation.

By default organisations at the…

Process patterns: what are "composites"?

The key to defining the task structure in a process definition is the task pattern. Task patterns consist of prototype tasks, optionally contained in a prototype project. Here's an example:

This is the task pattern for a "Feature" in the FDD process and it results in the creation of a set of subtasks and artifacts when the Feature pattern is "instantiated". This is quite a simple pattern and it doesn't include any composite tasks, which are structures to allow multiple tasks, optional tasks and iterations of tasks (repeated tasks that follow on one after the other). It is composites that allow arbitary process diagrams, drawn say using UML's activity diagram format, to be translated into xProcess processes. Here's an example of a task pattern, this time shown in the Hierarchy Diagram view, which does contain a composite. It's the "Feature Set" pattern from the same process.

The composite task in this example is called "Features: $Na…

Not just project management - not just process improvement

Explaining xProcess's position in the market of agile management products is something I never find straightforward. On the one hand it's important to emphasize the way you can simply define a set of tasks a team will be working on and immediately generate a plan (which you can then monitor in real time as tasks are re-prioritised, started and completed). On the other hand there's all that cool stuff you can do defining the task patterns, artifact templates, gateways and workflows that make up the process definitions behind different project approaches. I guess it all depends who you're talking to. If they're project managers needing something to get them started quickly, emphasize the simplest possible agile approach (prioritizing a list of tasks, defining the resources available and generating the plan). If they're process gurus - it has to be said these guys are thinner on the ground! - try impressing them the process modelling facilities xProcess provides f…

SpringSource Application Platform released

An interesting announcement this week that you may have missed is the release of the SpringSource Application Platform. Effectively this is a lightweight but high-performance platform providing most of the functionality of existing application servers in a much simpler, small-footprint package. SpringSource CEO Rod Johnson has been quoted as saying that it will provide a "leaner and more powerful solution." He continued. "The SpringSource Application Platform, comprised of the dm-Kernel we developed, along with the proven Spring, Eclipse Equinox and Apache Tomcat technologies inside, provides the industry with the leanest, most flexible server for running enterprise Java applications". Paul Kuzan, a leading software architect and part of the team that put together xProcess, has been contributing to the open source code in the SpringSource platform. "It's a really exciting development in the app server world", said Paul, "and one that is likely t…

UK Earned Value Conference announced

For another opportunity to hear my thoughts on using Earned Value analysis within agile develop- ment processes, check out this conference in London in June. My presentation is on the Wednesday (11th June) entitled Applying Earned Value in Agile Projects. I'll be reporting on the work to integrate EV analysis into the xProcess project-process improvement environment, highlighting essential modifications that make it possible to apply EV within agile projects.

Sample project revisited

The last time we looked at progress on the blog's sample xProcess project we were looking at the way that project velocity measured simply as "points per sprint" can vary significantly (Calculating team velocity, 24.02.08). If we can gather accurate data about team availability and overhead activity, using a simple measure of productivity produces much better forecasts. Here's the burndown chart as last seen on 24th February.

This sprint completed the target 69 points although as can be seen by the slightly changed positions of the steps on the burndown, some individual tasks completed on different days to the forecast.

The following sprint also completed 77 points, again showing the problem of "yesterday's weather" forecasting, albeit within a reasonably acceptable 10% margin of error. However the productivity measure is much more stable, only varying from 0.91 to 0.90.

Here's the state of the current sprint. In this case we're forecasting 64 poin…

Converting Eclipse RCP applications to Web apps

We're exploring a new technology called the Rich AJAX Platform (RAP) at present which converts Eclipse Rich Client Platform (RCP) applications into AJAX-enabled Web applications. It looks very interesting. For those of you interested to find out more here's a link to a useful webinar...
Since xProcess is an Eclipse RCP application you might gues the reason for my interest. The main advantage of this technology is the ability to share the same Java code base for the RCP and web applications.

Whitepapers available for download

A number of whitepapers relating to process modelling and agile development are now available for download via the xProcess Europe web site. These include:
EVM and Agile Processes – an investigation of applicability and benefits
Priority-Driven ProcessesPlanning by PriorityManaging Processes with Agility and TransparencyBuilding Agility into a CMMI-oriented culture - the BT experienceThe last of these is a report into the BT experience of transforming a traditional CMMI-oriented culture with the adoption of agile techniques. This paper was published in 2005 and since that time more experience papers relating to the cross-over between software engineering focused organisations and the agile community have appeared. It remains though a gulf that is only rarely bridged by companies and communities - generally people prefer to stay one side or the other. I heard recently of a major bank that had implemented a major new project management methodology, standardising the approach for all its I…

Modelling processes to scale

Tasks in process models come in varying sizes. There is a key distinction that divides tasks in process models into two classes: is this task at the "plannable" or "sub-plannable" level. Plannable tasks appear on plans, Gantt charts, burndowns and crucially time-sheets. They are the kind of tasks that take from several hours to days or even weeks. Plannable tasks are the trackable planned, estimated and costed elements in xProcess. However in some processes we wish to define (and monitor) tasks at the sub-plannable level. For example if my tasks is to distil a certain compound from ingredients (in a chemical process), the steps in the process may need to separately defined and tracked to ensure quality compliance. xProcess provides a mechanism to support this in the "Gateway Type". While these steps form only a simple sequence in v2, we've recently been experimenting with a richer model for gateways that will allow the same kind of forms - selections…

Better Faster Audit

I've recently been asked to outline the structure for our process audit service offering at xProcess Europe. The product is called the "Better Software Faster Process Audit" and is based on the structure of Dan Haywood's and my book of the same name(Better Software Faster). It covers 7 crucial aspects of any software development process:
The last step - Build and Deploy
The first step - Modelling and designThe stakeholder step - RequirementsThe controlling step - Management
The continuous step - Quality measurementThe micro step - DevelopmentThe macro step - ArchitectureStarting with the last step usually throws people, but given one of the key criteria for improvement is agility, it makes sense to start with seeing how close a team is to fully automating their build and test suite. There's no excuse for not fixing this area if you're using languages like Java or C# but with some older languages it can be tough to provide continuous integration for every change …

EVM and Agile Processes

I am presenting a paper on EVM and xProcess next week at the 2nd EVM Conference in Birmingham, UK. I’d love to see you at the conference but if you’re not able to make it and would like a copy of the paper you can download it now from the xProcess Europe or Ivis web sites. Here's the abstract...

EVM and Agile Processes – an investigation of applicability and benefits

Earned Value Management (EVM) is a technique for understanding the degree to which a project is following a plan. A prerequisite for EVM as traditionally applied is therefore a stable baseline plan with a fixed scope. Agile processes for software development by contrast are designed to be responsive to a changing environment and enable discovery of requirements through their lifecycle. Agile plans are rarely stable or of fixed scope. However both approaches share the goal of producing plans that provide stakeholders with immediate feedback on the daily progress of projects and they share common needs in under…

Calculating team velocity

Why is it that agile methods use timeboxes containing broadly similar sets of activities - as opposed to phases favoured by more traditional methods, which contain different types of activity in each phase through the lifecycle? A key reason is that stakeholders in the project get quicker and more effective feedback on the progress and direction of the project. As a consequence planners can judge more accurately the effectiveness of the project and what it is likely to achieve over its full duration. One of the most useful metrics planners get from each timebox is the velocity of the team. Scrum projects usually use the velocity from previous sprints to forecast their likely progress - a technique often referred to as "yesterday's weather" since it effectively assumes the next period will be broadly the same as the previous. In this article we discuss what velocity is, how to calculate it in xProcess, and how to go beyond "yesterday's weather" by calculatin…

Developing your own workflow monitor

Just occasionally I'm tempted to post a really techie article that will probably only be of interest to hard-core xProcess enthusiasts! This is one of those occasions. I've written elsewhere about some of the aspects of workflow support in xProcess (see for example the article on State Diagram support which explains how to define triggers for internal events graphically, and "From tracking to planning and back" which discusses how tracker products can be linked to xProcess via workflow). This article though will go a bit further and give you some hints about how the Workflow Server works and how you can link in your own programs to detect workflow events and trigger actions on them.

The Workflow Server sits in a Tomcat instance watching the outside world (and the inside world of the xProcess Data Source) through a set of monitors. When these monitors discover events that might be of interest, they tell the Workflow Server which checks whether any object in the xProces…

Set effort to match size

A previous entry provided the script required to define an action shortcut for setting the Size of tasks based on existing estimates for the effort required (see Set size to match effort). In some cases the inverse of this operation - Set effort to match size - is the useful operation. Here's the code you need for that one. Once again you should make it a "UI Action" by setting this field to True so that it appears on the right-click menu when you select a task or set of tasks.

Action Name: Set effort to match size
#factor = getProject().getFloatProperty( "CurrentProductivity_pointsPerIdealPersonDay"),
#factor = (#factor < 0.01) ? 1.0 : #factor,
#size = getSize(),
Applicable to: Task
UI Action: True

Note that the operation uses a factor to scale the mapping between size points and effort. If this factor is 1.0 the mapping…

Traceability through a simple metamodel

When people start defining processes with total traceability between every aspect, the sight is often not very pretty! When traceability adds multiple layers of complexity it rarely pays for itself in terms of improved quality or maintainability.

This is one of the reason why we defined what we termed the "minimum metamodel" in the Better Software Faster book on agile development. The diagram shown here is this model in its simplest form. The questions traceability should answer are:
How is this requirement tested?How is this requirement implemented?How is this part of the design tested?Why is this part of the design needed?It's a useful starting point when defining the artifacts required in a software development process, and the references they should contain to enable these questions to be answered.

The Role of the Process Engineer

Since xProcess provides configurability of processes, it also introduces a new role to projects - that of the Process Engineer. Of course the role may be played by a project manager or process consultant, or simply by one of the members of the project, but it's an important role and one that can greatly enhance the success of projects using xProcess.

Several Process Engineers have already created the processes that come bundled with xProcess (Basic Scrum, Basic FDD, Simple Process) and there are others such WPM Prince 2, Web Development, Issue Management and Basic UP that are available in the community. So the likelihood is that most Process Engineers will start with one of these processes as the baseline. As experience with a process is gained, the details of the way it is being used by the projects can be understood and the sorts of useful modifications or additions to the patterns, actions and workflows can be specified.

Using parameters in task patterns

Processes are defined in xProcess through Patterns - patterns for sets of tasks, for projects, for priority groupings (e.g. Folders) and patterns for artifacts. By constructing sets of patterns, including patterns within patterns (Composite Tasks), a complete definition of the process behind a family of projects can be built up. A key part of pattern definition is the specification the pattern's parameters. This is what this article looks at.
The diagram above shows the editor for a typical pattern from the Simple Process, showing the 4 parameters that this pattern has: Name, Project Home Page, Start Date, Duration. These are the values that the user can supply when creating an instance of the pattern. Parameters always have default values which are used if the user does not change them, but you can add an action to a parameter - a DefaultValueGetter - which will set the default value at run time based on teh context or time at which the pattern is being instantiated. You can see …

Artifact templates

When you're defining the process for your project don't forget that a major part of this is defining the standards for the files, documents and records (artifacts) that are created, modified and qualified as a result of the process. xProcess provides excellent support for defining the types of artifacts that will be used in a process. Furthermore it stores both the document templates and the resulting documents within its version control system so you can not only reliably access the most up to date version, but also compare it with previous versions if necessary. Here's a task pattern showing artifact templates that have been added to each of the subtasks in the pattern.
You can do this simply by right-clicking on the task and adding a "reference" to a new artifact - an attached file, form or hyperlink. (To learn more about the different types of artifacts supported in xProcess see Creating Artifacts in the Help system). Once you've done this, every time you …

Adding gateways to task patterns

An important part of defining the process for your project is defining how to know when a task is complete. Is a development task complete before unit testing for example? Almost certainly not. But if acceptance testing for an enhancement is a separate task in your process, at what stage does the developer hand it over for acceptance testing?

One way to define this in xProcess is to define a gateway for the task so that the user is prompted by a checklist to ensure he has completed the required work.
In the task pattern shown above you can see that a gateway called "Feature complete" has been added to the "Develop" task. To do this in one of your patterns simply switch from the Project Manager perspective to the Process Engineer perspective, you can thenopen the pattern diagram for your pattern (right-click on the pattern). You can then select "Gateway Type" from the palette and drop it on the task in the pattern that you want to have a gateway.

The content …

EV for Agile

Earned Value analysis is really designed for showing how closely you are tracking a pre-defined plan. Schedule efficiency and cost efficiency give separate measures of the degree to which you are "on-time" and on-budget". The problem with agile plans is that the scope of the project is expected to change as it progresses, usually with the aim of keeping schedule and cost more or less constant. Is EV analysis simply not applicable in this case? Actually in the context of a forecasting environment like xProcess, EV can still provide some most valuable metrics to agile plans. I've been invited to present a paper on EV for agile projects in a few months time and so I'd be most interested to hear of others applying EV with plans that must vary over time. Drop me a line if that's you!

If you're interested in receiving a copy of the paper btw click here.