wiki:SCS_ISSUE_TRACKER_SETUP_R1
Last modified 12 years ago Last modified on 11/06/08 11:41:58

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. SCS_ISSUE_TRACKER_SETUP_R1/trac.ini.bak

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_design_ok (implementation review fail);s3b_implemented -> s1c_analysis_ok (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)
  • * -> new (super review fail); * -> s1c_analisys_ok (super review fail); * -> s2c_design_ok (super review fail); * -> s3c_implementation_ok (super review fail); * -> closed

example: SCS_ISSUE_TRACKER_SETUP_R1/trac.ini.new

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

Refactoring:

[ticket-workflow]
t9_leave = * -> *
t9_leave.name = leave


t8d_start_analysis = new -> s1a_analyzing
t8d_start_analysis.name = "start analysis"
t8d_start_analysis.operations = set_owner_to_self
t8d_start_analysis.permissions = TICKET_MODIFY

t8c_finish_analysis = s1a_analyzing -> s1b_analyzed
t8c_finish_analysis.name = finish analysis

t8b_review_analysis_ok = s1b_analyzed -> s1c_analysis_ok
t8b_review_analysis_ok.name = review analysis - OK

t8a_review_analysis_fail = s1b_analyzed -> new
t8a_review_analysis_fail.name = review analysis - FAIL


t7e_start_design = s1c_analysis_ok -> s2a_designing
t7e_start_design.name = start design
t7e_start_design.operations = set_owner_to_self
t7e_start_design.permissions = TICKET_MODIFY

t7d_finish_design = s2a_designing -> s2b_designed
t7d_finish_design.name = finish design

t7c_review_design_ok = s2b_designed -> s2c_design_ok
t7c_review_design_ok.name = review design - OK

t7b_review_design_fail = s2b_designed -> s1c_analysis_ok
t7b_review_design_fail.name = review desing - FAIL

t7a_review_design_fail2 = s2b_designed -> new
t7a_review_design_fail2.name = review design - FAIL 2

t6f_start_implementation = s2c_design_ok -> s3a_implementing
t6f_start_implementation.name = start implementation
t6f_start_implementation.operations = set_owner_to_self
t6f_start_implementation.permissions = TICKET_MODIFY

t6e_finish_implementation = s3a_implementing -> s3b_implemented
t6e_finish_implementation.name = finish implementation

t6d_review_implementation_ok = s3b_implemented -> s3c_implementation_ok
t6d_review_implementation_ok.name = review implementation - OK

t6c_review_implementation_fail = s3b_implemented -> s2c_design_ok
t6c_review_implementation_fail.name = review implementation FAIL

t6b_review_implementation_fail2 = s3b_implemented -> s1c_analysis_ok
t6b_review_implementation_fail2.name = review implementation FAIL 2

t6a_review_implementation_fail3 = s3b_implemented -> new
t6a_review_implementation_fail3.name = review implementation FAIL 3

t5d_start_test = s3c_implementation_ok -> s4a_testing
t5d_start_test.name = start test

t5c_finish_test = s4a_testing -> s4b_tested
t5c_finish_test.name = finish test

t5b_finish_test_ok = s4b_tested -> s4c_test_ok
t5b_finish_test_ok.name = review test OK

t5a_fail_testing = s4b_tested -> s3c_implementation_ok
t5a_fail_testing.name = review test FAIL

;trac sorts the transitions in reverse alphabetical order

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

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

t2a_resolve = * -> closed
t2a_resolve.name = resolve
t2a_resolve.operations = set_resolution


t1d_super = * -> new
t1d_super.name = super review

t1c_super = * -> s1c_analysis_ok
t1c_super.name = super review

t1b_super = * -> s2c_design_ok
t1b_super.name = super review

t1a_super = * -> s3c_implementation_ok
t1a_super.name = super review

Testing

Log

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