wiki:SCS_ISSUE_TRACKER_SETUP_R1

Version 32 (modified by kyli, 16 years ago) (diff)

--

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Analysis

Overview

Decided to try to use Ticket system more efficiently. This includes using ticket systems for every task's change to see what is the status of each task, use assign to, etc.

Task requirements

Create new ticket resolutions:

  • analyzing - Analyzing (task in analysis process)
  • analyzed - Analyzed (this means the task is analysis is done and is pending for review)
  • analysis accepted - Analysis OK (task analysis reviewed and the result is >=3)
  • designing - Designing (task in design process)
  • designed - Design ready (pending review)
  • design accepted - Design OK (task design reviewed and the result is >=3p)
  • implementing - Implementing (task is currently being implementated)
  • implemented - Implementation ready (pending review)
  • implementation accepted - Implementation OK - implementation of task passes review. The result of this review is score for the whole task's revision (SuperScore)

Task result

Issue tracker capable of handling tasks' whole process.

Implementation idea

Create the resolutions listed in Task Requirements section. Design a workflow. Try to separate PLANNED_TASKS in order to assign the designed workflow for these tasks only.

Backup first!

Use

[ticket-workflow]
accept = new,assigned,accepted,reopened -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
leave = * -> *
leave.default = 1
leave.operations = leave_status
reassign = new,assigned,accepted,reopened -> assigned
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,accepted,reopened -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY
proceed = new -> analyzing
proceed = analyzing -> analyzed
proceed = analyzed -> an-OK,new
proceed = an-OK -> designing
proceed = designing -> designed
proceed = designed -> de-OK,an-OK,new
proceed = de-OK -> implementation
proceed = implementation -> im-OK,de-OK,an-OK,new
proceed = im-OK -> closed
proceed.operations = set_resolution
proceed.permissions = TICKET_MODIFY

in /home/dan/env/conf/trac.ini

TracWorkflow this document should be useful.

How to demo

Create a new PLANNED_TASK ticket. Change different resolutions.

Design

The diagram below shows what our workflow will look like. The transitions available are:

  • accept - this is when s.o. accepts to analyse, design, implement a task, with this transition the task's owner is automaticly changed to self. When accepting testing the owner will not change.
  • done - finnished designing, implementing, etc. It is a must to write a comment including the time spended on working.
  • review fail - the review has failed. Reasons and scores must be written as a comment.
  • review ok - the review has passed. Scores and remarks must be written as a comment.
  • reassign - this transition is available at any state of the issue it does not change da current state, just the owner of the issue.
  • resolve - this is a transition to finalise the issue, it leads to a closed state with a specific resolution ( fixed, invalid, wontfix, duplicate, worksforme, etc ). This is also availbla at any state of the issue.

source:/trunk/sophie2-platform/doc/uml-design-diagrams/workflow.png

Some issues may not need testing, we can resolve these issues after "implementation accepted"

Design Refactoring:

The ini is located /sophie-project/sophie2/conf/trac.ini . The phases should be changed -

  • "analysis accepted" should be "analysis OK"
  • "design accepted" should be "design OK"
  • "implementation accepted" should be "implementation OK"
  • "testing accepted" should be "testing ok"

Should add numbers to help ordering the statuses. Suggestions:

  • 01 new

Statuses:

  • new
  • closed
  • s1a_analyzing
  • s1b_analyzed
  • s1c_analysis_ok
  • s2a_designing
  • s2b_designed
  • s2c_design_ok
  • s3a_implementing
  • s3b_implemented
  • s3c_implementation_ok
  • s4a_testing
  • s4b_tested
  • s4c_test_ok

Workflow:

  • new -> s1a_analyzing
  • s1a_analyzing -> s1b_analyzed
  • s1b_analyzed -> s1c_analysis_ok (analysis review ok); s1b_analyzed -> new (analysis review fail)
  • s1c_analysis_ok -> s2a_designing
  • s2a_designing -> s2b_designed
  • s2b_designed -> s2c_design_ok (design review ok); s2b_designed -> s1c_analysis_ok (design review fail); s2b_designed -> new(design review fail)
  • s2c_design_ok -> s3a_implementing
  • s3a_implementing -> s3b_implemented
  • s3b_implemented -> s3c_implementation_ok (implementation review ok); s3b_implemented -> s2c(implementation review fail); s3b_implemented -> new(implementation review fail)
  • s3c_implementation_ok -> s4a_testing
  • s4a_testing -> s4b_tested
  • s4b_tested -> s4c_test_ok (test ok); s4b_tested -> s3c_implementation_ok (test fail)

Implementation

The trac.ini ticket-workflow section modified as follows:

[ticket-workflow]

accept_analyzing = new -> analyzing
accept_analyzing.name = "analyse"
accept_analyzing.operations = set_owner_to_self
accept_analyzing.permissions = TICKET_MODIFY

done_analyzing = analyzing -> analyzed
done_analyzing.name = "analysed"

fail_analysis = analyzed,designed,implemented -> new
fail_analysis.name = "analysis review fail"

accept_analysis = analyzed -> analysis_accepted
accept_analysis.name = "analysis accepted"

accept_designing = analysis_accepted -> designing
accept_designing.name = "design"
accept_designing.operations = set_owner_to_self
accept_designing.permissions = TICKET_MODIFY

done_designing = designing -> designed
done_designing.name = "designed"

fail_designing = designed,implemented -> analysis_accepted
fail_designing.name = "design review fail"

accept_design = designed -> design_accepted
accept_design.name = "design accepted"

accept_implementing = design_accepted -> implementing
accept_implementing.name = "implement"
accept_implementing.operations = set_owner_to_self
accept_implementing.permissions = TICKET_MODIFY

done_implementing = implementing -> implemented
done_implementing.name = "implemented"

fail_implementing = implemented -> design_accepted
fail_implementing.name = "implementation review fail"

accept_implementation = implemented -> implementation_accepted
accept_implementation.name = "implementation accepted"

accept_testing = implementation_accepted -> testing
accept_testing.name = test

done_testing = testing -> tested
done_testing.name = tested

fail_testing = tested -> implementation_accepted
fail_testing.name = "test review fail"

accept_test = tested -> test_accepted
accept_test.name = "test accepted"

reopen = closed -> new
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE

reassign = * -> *
reassign.operations = set_owner
reassign.set_owner = pac,tanya,pav,pap,peko,deyan,tosho
reassign.permissions = TICKET_MODIFY

resolve = * -> closed
resolve.operations = set_resolution

Testing

Log

Error: Macro Include(wiki:SCS_ISSUE_TRACKER_SETUP_R1_LOG) failed
current transaction is aborted, commands ignored until end of transaction block