Friday, June 01, 2012

Concordion specs for xProcess

We've recently started writing the specs for xProcess changes with Concordion which is an open source tool for writing acceptance tests- here's some initial feedback.

This is probably a topic I'll come back to, but for now if you're interested in seeing the first examples produced, they are available with the source code download at Source Forge. The initial area where Concordion is being used is the specification of constraints and dependencies. This is a complex area and we felt just adding unit tests for the xProcess scheduler would be insufficient to capture the nuances of the effect of adding a constraint; for example a task ending after the start of another one. This constraint alters not only the end date of the task, but also the order in which certain aspects of scheduling take place, which could affect the forecast dates of other tasks. Comments in the test code are simply not good enough to capture this behaviour, but Concordion provides ideal flexibility and clarity to document and test such behaviour. So far the experience has been very positive.

Below is an example of the generated output from Concordion following the test run.

Example output

Note - the links in the generated output below are to local files and therefore not accessible!

xProcessScheduler >

Constraints and Dependencies

Constraints may be defined on a task to limit when the task may either start or end. For example a task may be constrained to start after a specific calendar date, or a date which is manually defined on another task such as its target start date. Constraints may also reference the forecast date of another task, in which case it may be referred to as a dependency.

Dependencies defined on a task from another project use the forecast dates from the last time that project was scheduled - see Dependencies on another project - (note: such dates will be "NEVER" if the depended-on project has not yet been scheduled). Dependencies on tasks in the same project however require that the depended-on task is scheduled before the depending task. The depended-on task may be promoted in schedule order (start-after-end-of constraints) or the depending-on task may be demoted in schedule order (other forms of dependency such as start-after-start-of constraints). More details can be found on this and following pages.

Example 1. - With no Constraints

Assume that today is Wednesday 2012/4/12. (2012/4/12 )


  • a small project starting today
  • with one fully available participant available 8 hours per day for the duration of the project
  • having 2 date-based tasks (overheads of 20% each on all participants, one for the duration of the project and the other for the first week)
  • 10 effort-based tasks with 16 hour estimates, named a-j,
The following table sets up the tasks:

Task Name Task Type Hours / % Earliest Start Earliest End No. of Participants
a For Horses effort-based 16 1
b For Mutton effort-based 16 1
c Forth Highlanders effort-based 16 1
d For Rential effort-based 16 1
e For Braun effort-based 16 1
f For Vessence effort-based 16 1
g For Police effort-based 16 1
h For One And One For All effort-based 16 1
i For Novello effort-based 16 1
j For Oranges effort-based 16 1
General Overhead date-based 20% 2012/4/12 2012/10/18 All
Starting Overhead date-based 20% 2012/4/12 2012/4/19 All

When the project is scheduled the project forecast start will be: 2012/4/12

Then the start and end dates of the workpackages will be as follows:

Workpackage Forecast Start Forecast End (50%)
project 2012/4/12 2012/10/18
a For Horses 2012/4/12 2012/4/17
b For Mutton 2012/4/17 2012/4/20
c Forth Highlanders 2012/4/20 2012/4/24
d For Rential 2012/4/25 2012/4/27
e For Braun 2012/4/27 2012/5/1
f For Vessence 2012/5/2 2012/5/4
g For Police 2012/5/4 2012/5/8
h For One And One For All 2012/5/9 2012/5/11
i For Novello 2012/5/11 2012/5/15
j For Oranges 2012/5/16 2012/5/18
General Overhead 2012/4/12 2012/10/18
Starting Overhead 2012/4/12 2012/4/19

A dependency of one of these tasks on a task that is lower in priority will change the order of scheduling and result in different forecast dates for the project.

How Constraints change this result

Post a Comment