Practical Agile Scrum Tool

Practical Agile Scrum Tool 1

Overview 2

Some Key Features 2

Requirements 3

Quick Install (Windows only) 3

Slightly Slower Install 3

How to Update 4

Getting Started 4

Stories 13

Tasks and Comments 16

Tasks 16

Comments 17

Epic/Parents 17

The ‘Tree’ or ‘Epic’ view 18

How the Epic or Story Tree works. 18

Velocity and Burn-up 20

Export & Import 20

Export 20

Import 21

Notes: 21

Reports 22

Searching 23

Text Search 23

Special Search 23

Hints, Tips and Tricks 25

FAQ 25

Security Model. 27

Users 27

Global Admin users: 27

Project Admin users: 27

Read Only users: 27

Some Restrictions or things to remember 27

Problems to be fixed 28

Overview

This was created as an exercise as I simply could not see how the majority of agile tools out there justify their pricing. On top of that I wanted something simple and easy to use that would not distract teams new to Agile and Scrum. This application is the result of that exercise.



It allows you to create and manage Projects, Iterations, Epics, Stories, Story Tasks and Comments using a tool that is simple, easy to use and only does what it needs to do.



One of the more useful features is that you can have a hierarchy of Stories or Epics, something that is normally only included in scrum tools at a substantial cost. The hierarchy is easily accessible from most places and visible for each story that is part of a tree. This means Stories can have children (and obviously parents) to an almost infinite level.

This helps with breaking larger pieces of work down into manageable addressable chunks. Work that can then be addressed in a single iteration while not losing track of the ultimate business value goal, and purpose of the work.



Some Key Features



Requirements



* included in full install

+ included in both full and small install



Quick Install (Windows only)

  1. Download and extract the ‘PA-Full- Install’ file into a new directory ‘e.g. PracticalAgile ’ on the server you want to use (a local PC is fine for testing)

  2. Browse to the directory containing the extracted files

  3. Open and examine _Start.bat and _Stop.bat

  4. Run _start.bat and make sure both Apache and Mysql start up

  5. Navigate to Navigate to http://127.0.0.1:8088

  6. Log in as admin : admin (Yes I know that is not an e-mail address)

  7. Browse the template and/or create your first project.

  8. To resize your icons use ‘ _icon_resize.bat’ in the pa/images folder



Slightly Slower Install

  1. Grab a XAMPP package that include the above requirements somewhere. (‘xampp-portable-lite-win32-1.8.1-VC9’ from PortableApps work well for me)

  2. Install it and makes sure that it works.

  3. Download and extract the ‘PA-Site-Only’ installation file somewhere.

  4. Drop the entire ‘pa’ folder into your document root

  5. Edit pa/include/dbconfig.inc.php and make sure that the server, port, user and password are correct.

  6. Make sure that MySQL is running

  7. Edit the file ‘_setupdatabase.bat’ and correct any paths, ports, usernames and passwords.

  8. Save and Execute the batch file

  9. Stop and restart both MySQL and Apache

  10. Navigate to http://<yourwebserver>/pa

  11. Log in as admin : admin

  12. Change the admin password and e-mail if you wish

  13. Create your first project

  14. To resize your icons use ‘ _icon_resize.bat’ in the pa/images folder.

How to Update

  1. Take a backup of both your site and database

  2. Stop the database and site

  3. Grab a PA-Site-Only install

  4. Extract it into your pa directory

  5. Start the database and site

  6. Log in to the site and if the database needs updating it will be updated automatically.

Getting Started



Do not make extensive edits to the ‘Template’ project. This forms the base for any new projects and should contain sensible defaults for your organisation. Items propagated to new projects include things like ‘Points Scale’, ‘Story Types’ and ‘Story Status’.





Creating your First project (and subsequent ones for that matter)

  1. Log in as ‘admin’



  1. You will be presented with the list of projects you have access to



  1. Select ‘New Project’ from the ‘Org. Config.’ menu.



  1. Enter the appropriate project details.

    1. Category - Group projects by category on the project list page

    2. Name – The Project Name

    3. Desc – A longer description of the project

    4. Enable As A – When checked, this will enable an additional field for each story to be used to capture the user role/Truth etc. This can be toggled off and on without losing data.

    5. Enable I Need - When checked, this will enable an additional large text to be used to detail exactly what it is you need. This can be toggled off and on without losing data.

    6. Enable Acceptance - When checked, this will enable an additional large text to be used to detail story acceptance criteria. This can be toggled off and on without losing data.

    7. Story Size Scale - This is the scale that will be used to size stories in the project. To create or edit the scale navigate to ‘App Config’ and select the appropriate menu item.

    8. Archived – When checked this project will not appear in the project list for users other than the admin user.

    9. Hit Update and that is it! You have created a new project.



You should now be presented with a project list that includes your new project. Here you can edit or delete a project.

(When a project is deleted, stories, comments, tasks, story status and story type for that project are also deleted.) (Project velocity is reported as the average of the 5 most recently completed iterations. If you want to change this, then fiddle with the code in the function Update_Project_Points($thisproject) in the file include/common.php)

  1. Select it from the list and

  2. Configure it from the <Project Name> menu as follows.

    1. Check that the project settings are as you expect to see them



    1. Story Type - Are the defaults suitable. It is strongly suggested that you leave these alone. If you need/want more than this, you are likely to be overcomplicating things. The default types of stories are: Features, Chores, Bugs, and Debt.

      1. Features are backlog items that provide direct visible business value to customer.

      2. Chores are backlog items where work needs to be done, but provides no direct, visible business value to the customer. Bugs represent unintended or erroneous behavior

      3. ‘Debt’ would normally be removed and addressed as a ‘Chore’. A new team is likely to initially create more debt than a mature team and this is a good way to see how much there is.

    2. Story Status – Amend the descriptions and colours to suit your project and your team, (there is a limit on the number of status values of 10). There is no attempt to restrict the movement of a story based on its status, this would imply imposing a workflow that should best be decided by the team. It also help keep the product simple and easy to use. To enable a Status value, add a description remembering that a description of a single space while difficult to see is in fact a description. Less is more. The defaults are the minimum you would expect to see.



    1. The table below shows some combinations I have seen. ‘List 1’ would be the absolute minimum for most teams, ‘List 2’, the recommended set for more established teams, ’List 3’ for a newer team, and ‘List 6’ is just over-kill.




RGB

List 1

List 2

List 3

List 4

List 5

List 6

1

D0D0D0

Todo

Todo

Todo

Todo

Todo

Backlog

2

A0A0A0



Ready to play


Tasked

Estimated

3

66CCFF




Unstarted


Ready to play

4

3399FF

Doing

Doing

Doing

In Play

Started

In progress

5

0066FF






Code Reviewed

6

A066FF






Tested

7

FFFF54






Checked In

8

FF7F05


To Review

Review

Review

Review

Review

9

FF0000






Rejected

10

A0D050

Done

Done

Done

Done

Done

Accepted



    1. Iteration – Add at least the current iteration, and stubs for the next few iterations. Iterations must have valid Start and End Dates. It is up to you to make sure this is the case. If you are starting out, 2 week iterations are probably suitable. Make your iterations start on the first working day and end on the last working day. This is especially important if you start and end your iterations on a Monday and Friday. Wednesday to Tuesday are probably better start and end days anyway as you are then not disrupted as much by the weekends.

Clicking on the ‘Minus’ sign hides the points details and the ‘Plus’ reveals them again.



  1. Go back to the ‘App. Config.’ Menu and

    1. Add the users you expect to have access the project, remembering that a single user can have access to many projects.

    2. Once all the users have been added, go in and edit them to allow access to their projects.



  1. You can now either capture your stories via add story, or import them via a csv file. For importing stories refer to the section below.



  1. To add stories manually,

    1. Select either the Backlog or the iteration you want them created in. (Stories can only be created in the Backlog of an iteration)

    2. And select the Add story button and capture the story as detailed in the following section







Stories





In the ‘Story List view” for the backlog or iterations, stories that can have work executed against them, are presented in priority order. This excludes parent stories.



Drag and drop stories to re-order them, an independent order is retained for both Iteration & Epic views.

In the backlog or iteration view drag using the vertical bar on the left of the story (The Status indicator).





When the mouse cursor is over a story, a small menu is presented on the right this allows a quick and easy means of viewing the full details, changing the status, moving to a different iteration, editing or deleting a story.

You can also go to the iteration by clicking the iteration link. If this is a child story, the epic will be displayed after the task & comment micro menu. Hovering over the epic with the mouse will display the epic summary detail. Clicking on the Epic will present the Epic Tree with all its children.





Clicking on the status on the left also allows you to change it, and clicking on the story ID will put you it into story edit mode. This is identical to the add story view.



When deleting a story, tasks & comments are also deleted.



When adding a new story, they can be added to either the top or bottom of the current iteration by selection the appropriate radio button (default to the bottom)



If you want to print individual stories as cards, hit the print preview and a new tab containing a single story will be presented in the appropriate size.

If you click in the story summary, it will be stretched so that the story can be printed for review with the truth. (another click will shrink it.)



If there are any epic stories in the current project, they will be presented in a dropdown for easy selection. Otherwise a parent story number can be input in the box to the left of the dropdown.

Large text fields have html editing enabled, this helps with linking, highlighting etc





To duplicate an existing story select the duplicate story icon and an identical copy of the existing story (excluding tasks and comments) will be created.

To include tasks in you duplicate select the icon.

A new story will be created, but you will still be editing the original so take care.

Click on the link presented to edit the new story

Tasks and Comments

Are linked to a parent story. These can viewed or added from a story list view, or while editing a story. Click the appropriate icon to reveal them.

Tasks

Tasks have 3 states ‘Not Started’ , ‘Started/Doing’ , ‘Complete/Done’().

They can be re-ordered by dragging and dropping them (use either the edit or delete images as handles.)

Tasks can also be assigned to any person with access to the project. The two columns to the right are expected and actual hours respectively. At the moment, these are not exported without accessing the database directly.



To change a task status, simply check the box. There is no need to go into edit mode.

There are 3 reports associated with tasks, namely:







Comments

Can be replied to or deleted, not edited. Once a comment has a reply, it may not be deleted. Replies are indented under the comment they are responding to and may have replies themselves.



Epic/Parents

Hovering the mouse over a parent story ID or size will present a tooltip containing the parent summary.

To navigate to a parent click on the parent story (in the last line) and you will be presented with a tree view with that epic as the base of the tree



Tags

Tags can only be added when editing a story, and the story must be saved to update them. To create a tag that include a space enclose it in double quotes eg. “A tag with spaces”’.

Clicking on a tag in either the story list of the story edit will return a list of stories in the current project that contain that tag. Essentially a case insensitive ‘tag: tagtext’ search is performed.



The ‘Tree’ or ‘Epic’ view

How the Epic or Story Tree works.

Features or themes are Top down, but work is performed bottom up.



This means that work can only be performed against the lowest level item in any story tree. It also means that no story that has a child story can be moved into an iteration or have work performed against it. Once a story has been moved into an iteration (work started against it) it can’t have any children.



The result of this is that the backlog only contains work that can be addressed by the team and does not show parents.







In the example above those cards with ‘White’ handles are Epics and cannot have work performed against them. As you can see epics can have children that are themselves epics with children



To access the epic view or story/ hierarchy:



To make a story a child of another, either:

  1. Enter the Epic view for either the Project or iteration and Drag and drop using the project or iteration/Backlog epic /tree view



  1. Select the parent story from the list of current parents in the dropdown on the story edit page



  1. Type the parent id in the box to the left of the parent dropdown (not much validation, so take care)

You can do this to an almost unlimited level, but don’t get carried away.



This view can be independently ordered at project level and does not change the order of the work in the backlog or iteration . The status of the child stories are rolled up into their parent as are the points values. Drag and drop stories to create the hierarchy you need.







A tooltip indicating the status text for each parent status value is presented as a reminter

Velocity and Burn-up

Velocity, burn-up etc. are calculated on change of Iteration, Size or Status of any story.

These are cascaded up through the epics as well as to the Iteration and Project totals.

All Points and Status updates are times-tamped so progress during the project and iteration can be tracked.

Changes made to a story while it is in an iteration, will be reflected in that iteration, even if the iteration has ended. If the changes are made before the iteration has started, they will appear as though they happened on the first day of the iteration. If they change after the iteration has ended, they will be reflected on the last day of the iteration.



e.g. We have a Iteration-1 running from 1st to 14th of a month and Iteration-2 runs from 15th to 28th of the same month. If a story in Iteration-1 is changed to ‘Done’ on the 15th, the points will assigned to the 14th (the last day of the iteration containing the story). If the changes were made sometime in the previous month, they will appear on the 1st .



Export & Import

Export

Stories can be exported for further analysis, reporting, or printing cards for the radiator board.(use the included excel workbook for quick an easy printing of story cards.) Either the entire project, or a single iteration can be exported depending on where the export is selected from.

When selected from the ‘Iterations’ Menu, only the current iterations worth of stories is exported, if selected from the ‘<Project Name>’ menu all stories for the project are exported. If exporting the project remember that this includes Epic Stories and if you do a simple sum() of the points you will end up double or triple counting.

The project export include an additional column ‘Num_Children’ that is a count of the children for that story. This helps identify parents when printing cards etc. The Num_Children column MUST be deleted before attempting to import the result of a project export otherwise it will fail with an invalid column count.



Stories are written to a csv file that can easily be imported into a spread-sheet, printed etc. (The backlog is simply treated as another iteration).



Import

To help transferring project information a rudimentary import feature is provided. You can only import stories for a single project. Release, Iteration and Owner columns are reference columns and must be configured for the project before attempting an import.

The import file must be in the same format as an iteration export file and all 17 columns must be present and in the correct order, they can however be empty (The number of Children must NOT be present). To get a sample file, simply export you smallest iteration (It must contain at least 1 story!!).



Import Behaviour is as follows:



The parent column is never updated , so any relationships will need to be manually created after the import has taken place.

Notes:



Reports



There are two types of reports that are available:

There are a handful of built in reports that can be deleted or extended as you wish.





ID - Dictates the order the reports will appear in the list/menu

Desc - the report description that appears in the list/menu



Type 1 – (External = 1)

Essentially you are building a query along the lines of

SELECT * FROM story where story.Project_ID=”Current Project’" and ([Conditions]) order by [Some order].

Type 2 – (External = 2)

The sql used to build the report is a concatenation of the QSQL and Qorder columns (remember to have a space at the end of QSQL or the start of Qorder or you risk a syntax error and incorrect results returned.)



All reports are available across all projects. At the moment there the only way to add new reports is to add them to the table directly. This is probably not a bad thing.



The QSQL & Qorder can include replaceable parameters as follows, otherwise actual column names must be used.

{Project} – Current Project

{User} – Logged on User

{Iteration} Current Iteration (remember that the backlog simply an iteration)

{Backlog} - Current Project Backlog



The easiest way to get our head around this is to have a look in the ‘Queries’ table, duplicate a report that is already there and amend it to suit your needs.



Searching

Searching for Stories

In the header is a search box that accepts both words and phrases for a text search, or a special search syntax to find stories.

Text Search

Type text into the box to search for it within the story, tasks or comments of that story. A word search is performed and no matches are returned against partial words. It is currently performing a like search (like %text%)



Example: my search



Special Search

Special Search Criteria are #,owner, status, size & tag (case is irrelevant)



story number

You can find a story by its number by using a hash (#)

Example: #10

To search for the text ‘#10’ prefix it with a space



Owner

You can find stories owned by someone by typing owner:< and their initials>.

Example: owner:ppl



Status

Find stories of a particular status by typing status: <the status>.

Example: status: done



Tag

Find stories of a particular status by typing tag: <tagtext>.

Example: tag: bug



Size

Find stories of a particular status by typing size:<Size>

Example: Size:5





Special search tags can NOT be combined either by themselves or with some text (yet).

Having these tags, does mean that if you perform a search using only the tag ( incl the ‘:’ ) you will get unexpected results. search for a story containing the tag (including the ‘:’ ) as the start of a search term.



Search results will be presented in a list similar to that for an iteration or the backlog.





Hints, Tips and Tricks

FAQ

Q. My graphs have disappeared, where have they gone?

A. You are probably using internet explorer in compatibility mode, this more often than not breaks the graph. Revert to native mode and you should be ok.



Q. I am in standard mode, and I still do not have graphs, why?

A. The Google Area Chart needs at least 2 items on the x-Axis (Date) to plot so things will only appear from the second day onwards (provided something is edited on the second day!)



Q. Nope, I have checked both of these and there are still no graphs?

A. If this is the case, it is likely to be a story that has been imported with a status that is not a valid story status for that project or IE proxy settings and you are running everything from your local PC (using localhost rather than 127.0.0.1 normally solves this).



Q. I can’t get past the login page or I receive an error message

A. Check the username, password, database and port details for your database in the file include/dbconfig.inc.php

A. You may be trying to use a shortcut to a project, iteration or story that does not exist anymore, check the URL you are using and change it to login.php.



Q. I can’t make a story a child using the tree view.

A. You will probably find that the parent is already in an iteration (ie work scheduled). Remember, work can only be performed at the lowest level.



Q. I can’t import anything, what is wrong.

A. Check your php.ini and make sure that file uploads are allowed and that the upload tmp directory exists, is available and writable, or use the full install that includes the following settings.

file_uploads = On

upload_tmp_dir = /usr/local/mysql/tmp

upload_max_filesize = 2M



Q. When importing a csv file exported from a report I receive an error along the lines of "Excel has detected that the 'MyOutput.csv' is a SYLK file, .....”

A. This is a known issue with Excel, If the first column heading / value of the CSV file begins with uppercase ID, Excel will interpret the file as being in the SYLK format rather than CSV, as described here: http://support.microsoft.com/kb/323626. change the first column name to rectify this.

Security Model.

The security model is fairly light, it is not there to stop a hacker it is there to prevent accidents limit projects a user can access. The application is only meant for use inside a secure environment. And definitely not for a public facing site.

Each page is checked for valid access to a project before presenting it to the user to go some way to mitigating URL manipulation.

User passwords are hashed both across the network and in the table of users and both individuals and a Global Admin can change a user password.

Users

Global Admin users:

  1. Users with the Global Admin flag set are in effect a super-user with global rights across all projects.

  2. Edit organisation attributes

  3. They can add/edit/delete users

  4. Create, archive or delete projects

  5. Change user passwords

  6. Allow users access to projects

  7. Assign project Admin Rights

  8. Create new story point templates (numeric only)

Project Admin users:

  1. Can Edit project details

  2. story types for a project

  3. points values for a project

  4. this Setting override sthe read-only user setting

Read Only users:

Some Restrictions or things to remember

Problems to be fixed

  1. When editing an iteration start and end dates after there is work in the iteration, the iteration points history are not moved to the new dates. (Toggle the story status or all cards as a workaround.)

  2. Multiple Date & timezone handling (for the moment edit ‘include/dbconfig.inc.php’) but still only a single timezone