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
Related
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.
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