Difference between revisions of "IS480 Team wiki: 2018T1 analyteaka metrics"
Jump to navigation
Jump to search
(14 intermediate revisions by the same user not shown) | |||
Line 156: | Line 156: | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 7 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 7 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 8 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 63 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 8 |
|style="text-align: center;"| 0 | |style="text-align: center;"| 0 | ||
|style="text-align: center;"| 59 | |style="text-align: center;"| 59 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 63 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 100% |
|style="text-align: left;"| Team is on schedule, carry on with current estimation of tasks. | |style="text-align: left;"| Team is on schedule, carry on with current estimation of tasks. | ||
|- | |- | ||
Line 168: | Line 168: | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 8 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 8 | ||
|style="text-align: center;"| 7 | |style="text-align: center;"| 7 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 70 |
|style="text-align: center;"| 7 | |style="text-align: center;"| 7 | ||
|style="text-align: center;"| 0 | |style="text-align: center;"| 0 | ||
|style="text-align: center;"| 66 | |style="text-align: center;"| 66 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 70 |
|style="text-align: center;"| 100% | |style="text-align: center;"| 100% | ||
|style="text-align: left;"| Team is on schedule, carry on with current estimation of task | |style="text-align: left;"| Team is on schedule, carry on with current estimation of task | ||
Line 179: | Line 179: | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 9 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 9 | ||
|style="text-align: center;"| 7 | |style="text-align: center;"| 7 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 80 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 10 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 0 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 73 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 80 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 143% |
− | |style="text-align: left;"| - | + | |style="text-align: left;"| Team is ahead of schedule. Effort required to complete task is over-estimated. Re-estimate tasks for future iterations. Add the number of days gained to buffer days |
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 10 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 10 | ||
|style="text-align: center;"| 9 | |style="text-align: center;"| 9 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 90 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 10 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 0 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 82 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 90 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 111% |
− | |style="text-align: left;"| | + | |style="text-align: left;"| Team is on schedule, carry on with current estimation of tasks. |
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 11 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 11 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 9 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 101 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 9 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 0 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 93 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 101 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 100% |
− | |style="text-align: left;"| | + | |style="text-align: left;"| Team is on schedule, carry on with current estimation of tasks. |
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 12 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 12 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 7 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 108 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 7 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 0 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 100 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 108 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 100% |
− | |style="text-align: left;"| | + | |style="text-align: left;"| Team is on schedule, carry on with current estimation of tasks. |
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 13 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 13 | ||
+ | |style="text-align: center;"| 6 | ||
+ | |style="text-align: center;"| 114 | ||
|style="text-align: center;"| 7 | |style="text-align: center;"| 7 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 0 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 106 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 114 |
− | |style="text-align: center;"| | + | |style="text-align: center;"| 117% |
− | |style="text-align: | + | |style="text-align: left;"| "Team is ahead of schedule. Effort required to complete task is over-estimated. |
− | + | Re-estimate tasks for future iterations | |
− | + | Add the number of days gained to buffer days" | |
+ | |||
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 14 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 14 | ||
− | |style="text-align: center;"| | + | |style="text-align: center;"| 4 |
|style="text-align: center;"| - | |style="text-align: center;"| - | ||
|style="text-align: center;"| - | |style="text-align: center;"| - | ||
Line 246: | Line 249: | ||
[[File:Analyteka_Task_Metrics.png|1000px|center]] | [[File:Analyteka_Task_Metrics.png|1000px|center]] | ||
+ | [[File:PlannedVsActualTask.png|1000px|center]] | ||
Line 369: | Line 373: | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 9 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 9 | ||
|style="text-align: center; background-color:#ffffff;"| 0 | |style="text-align: center; background-color:#ffffff;"| 0 | ||
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 4 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 2 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 40 |
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 10 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 10 | ||
− | |style="text-align: center; background-color:#ffffff;"| - | + | |style="text-align: center; background-color:#ffffff;"| 2 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 0 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 3 |
+ | |style="text-align: center; background-color:#ffffff;"| 32 | ||
|- | |- | ||
Line 384: | Line 389: | ||
|style="text-align: center; background-color:#ffffff;"| - | |style="text-align: center; background-color:#ffffff;"| - | ||
|style="text-align: center; background-color:#ffffff;"| - | |style="text-align: center; background-color:#ffffff;"| - | ||
+ | |style="text-align: center; background-color:#ffffff;"| | ||
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 12 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 12 | ||
− | |style="text-align: center; background-color:#ffffff;"| - | + | |style="text-align: center; background-color:#ffffff;"| 5 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 1 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 2 |
+ | |style="text-align: center; background-color:#ffffff;"| 30 | ||
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 13 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 13 | ||
− | |style="text-align: center; background-color:#ffffff;"| - | + | |style="text-align: center; background-color:#ffffff;"| 3 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 1 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 2 |
+ | |style="text-align: center; background-color:#ffffff;"| 28 | ||
|- | |- | ||
!style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 14 | !style="color:#7D5B53; text-align: center; background-color:#ffffff;"| 14 | ||
+ | |style="text-align: center; background-color:#ffffff;"| 1 | ||
|style="text-align: center; background-color:#ffffff;"| - | |style="text-align: center; background-color:#ffffff;"| - | ||
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 1 |
− | |style="text-align: center; background-color:#ffffff;"| | + | |style="text-align: center; background-color:#ffffff;"| 11 |
|- | |- | ||
|} | |} | ||
+ | |||
+ | [https://docs.google.com/spreadsheets/d/1da-IZ_trfMDsGaWu988WJtovUgX7HZiEDxW4aONqcWY/edit?usp=sharing Bug Logs] | ||
[[File:Analyteka_Bug_Metrics.png|800px|center]] | [[File:Analyteka_Bug_Metrics.png|800px|center]] | ||
+ | |||
+ | [[File:Analyteka_Bug_Score.png|800px|center]] | ||
[[File:Analyteaka issues.png|1000px|center]] | [[File:Analyteaka issues.png|1000px|center]] | ||
Line 435: | Line 448: | ||
Adding of gunicorn with 2 workers threads | Adding of gunicorn with 2 workers threads | ||
|- | |- | ||
− | | 6 || | + | | 6 || 9 || Datastore is too slow, we would require a faster system for pulling of data. Hence, the need to dd Mysql to contain the aggregated data. || Backend || High || Solomon || Closed || 3/9/18 || 13/9/18 || Datastore is meant for long-term storage. Hence even retrieval of a single record will take at least 2 seconds. Hence, there's a need to speed up the process by using aggregating of data. Data will still be uploaded to datastore and during certain period, a cron job will trigger and aggregate the data to MySQL, allowing the front end to reduce the size of the data being retrieve while increasing the processing speed by reducing the computational power needed. |
|- | |- | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Latest revision as of 09:16, 23 November 2018
We used a combination of task metric calculations to track our progress of task completion through the project.
- Quantitative Task Metric Measure to gauge task estimation efforts and appropriate action taken to address any over/underestimations
Calculation of Task Metric Score
Task Metric Score = (Actual Tasks Completed / Planned Tasks to Complete) x 100%
Score | Action |
---|---|
< 50% | Team is very significantly behind schedule, advise contacting supervisor for advice, re-estimation of tasking and dropping of non-essential functionality. |
50% to 90% | Team is behind schedule, consider number of tasks attempted and circumstances, advise re-estimation of tasking. |
90% to 110% | Team is on schedule, carry on with current estimation of tasks. |
110% to 150% | Team is ahead of schedule. Effort required to complete task is over-estimated. |
> 150% | Team is very significantly ahead of schedule schedule, advise contacting supervisor for advice and re-estimation of tasking. |
Iteration | Number Of Tasks | Total Complete | Completed within the same iteration | Completed within a different iteration | Planned Cumulative Task Count | Actual Cumulative Task Count | Task Metrics | Action |
---|---|---|---|---|---|---|---|---|
1 | 8 | 8 | 8 | 0 | 8 | 8 | 100% | Team is on schedule, carry on with current estimation of tasks. |
2 | 9 | 17 | 9 | 0 | 17 | 17 | 100% | Team is on schedule, carry on with current estimation of tasks. |
3 | 6 | 23 | 6 | 0 | 23 | 23 | 100% | Team is on schedule, carry on with current estimation of tasks. |
4 | 5 | 28 | 5 | 0 | 28 | 28 | 100% | Team is on schedule, carry on with current estimation of tasks. |
5 | 10 | 42 | 14 | 0 | 38 | 42 | 140% | Team is ahead of schedule. Effort required to complete task is over-estimated. Re-estimate tasks for future iterations. Add the number of days gained to buffer days. |
6 | 13 | 55 | 14 | 0 | 51 | 55 | 108% | Team is on schedule, carry on with current estimation of tasks. |
7 | 8 | 63 | 8 | 0 | 59 | 63 | 100% | Team is on schedule, carry on with current estimation of tasks. |
8 | 7 | 70 | 7 | 0 | 66 | 70 | 100% | Team is on schedule, carry on with current estimation of task |
9 | 7 | 80 | 10 | 0 | 73 | 80 | 143% | Team is ahead of schedule. Effort required to complete task is over-estimated. Re-estimate tasks for future iterations. Add the number of days gained to buffer days |
10 | 9 | 90 | 10 | 0 | 82 | 90 | 111% | Team is on schedule, carry on with current estimation of tasks. |
11 | 9 | 101 | 9 | 0 | 93 | 101 | 100% | Team is on schedule, carry on with current estimation of tasks. |
12 | 7 | 108 | 7 | 0 | 100 | 108 | 100% | Team is on schedule, carry on with current estimation of tasks. |
13 | 6 | 114 | 7 | 0 | 106 | 114 | 117% | "Team is ahead of schedule. Effort required to complete task is over-estimated.
Re-estimate tasks for future iterations Add the number of days gained to buffer days" |
14 | 4 | - | - | - | - | - | - | - |
Calculation of Impact Score
Total = 1 x num (low) + 5 x num (high) + 10 x num (critical)
Severity | Description |
---|---|
Low Impact (Score: 1) | Inconsequential. Simple typo error or minor user interface misalignment. |
High Impact (Score: 5) | Non-critical functionalities are not working, but still system runs. |
Critical Impact (Score: 10) | The system or core functionality is down. Immediate attention is required |
Mitigation Plan
Points in Iteration | Action |
---|---|
Points =< 10 | Fix during buffer time only. |
10 < Points < 20 | Use the planned debugging time. |
Points >= 20 | Stop current development and resolve the bug immediately. Reschedules the project. |
Iteration | Impact | ||||
---|---|---|---|---|---|
Low | High | Critical | Total Score | ||
1 | 0 | 0 | 0 | 0 | |
2 | 0 | 3 | 0 | 15 | |
3 | 0 | 0 | 0 | 0 | |
4 | 0 | 0 | 1 | 10 | |
5 | 0 | 1 | 1 | 15 | |
6 | 1 | 3 | 0 | 16 | |
7 | 2 | 4 | 0 | 22 | |
8 | 1 | 2 | 3 | 41 | |
9 | 0 | 4 | 2 | 40 | |
10 | 2 | 0 | 3 | 32 | |
11 | - | - | - | ||
12 | 5 | 1 | 2 | 30 | |
13 | 3 | 1 | 2 | 28 | |
14 | 1 | - | 1 | 11 |
Issues metrics show the issues that surfaced during the course of our project. As well as steps being taken to resolve it.
# | Iteration | Issues | Module | Priority | Initiator | Status | Open on | Closed on | Action taken |
---|---|---|---|---|---|---|---|---|---|
1 | 3 | Client requested everything to be done on Google standard engine. However, machine learning cannot be done on standard. It would require a flexible or VM instance. | Backend | High | Chester Ong | Closed | 20/6/18 | 22/6/18 | Adding compute engine as the backend. |
2 | 5 | During integration, we discovered issues with running flask and dash concurrently. Therefore we decide to use iframe or run dash on flask or flask on dash. | Visualization | High | Larry | Closed | 9/7/18 | 9/7/18 | Use iframe to integrate dash and flask. |
3 | 5 | Server log shows unauthorized user from China trying to ssh into our compute engine. However, we are not at the stage of whitelisting IP currently. Therefore, we need an alternative solution for security hardening. | Backend | Medium | Solomon | Closed | 13/7/18 | 13/7/18 | "Proceed with hardening
Non-default SSH port Uncomplicated Firewall Disabled root access Disabled password RSA key only LogWatch enabled Fail2ban enabled " |
4 | 6 | We realize gender has no bearing on the customer clustering result as purchasing decision tends to be made as a family. Therefore, we would need a different formula to cluster customer. | Machine learning | low | Hong yang | Closed | 24/7/18 | 25/7/18 | Dropping gender and use house size, household income, age, race and district for clustering purpose |
5 | 7 | Notice high swap on the compute engine system. This affects the performance of the system, increasing load time by 230% (based on browser inspector) | Backend | Medium | Solomon | Closed | 8/8/18 | 8/8/18 | Increase compute engine instance size from f1-micro to g1-small and activate auto scaling for app engine. Will monitor for the next few iter before deciding on CPU and ram size for custom machine size.
Adding of gunicorn with 2 workers threads |
6 | 9 | Datastore is too slow, we would require a faster system for pulling of data. Hence, the need to dd Mysql to contain the aggregated data. | Backend | High | Solomon | Closed | 3/9/18 | 13/9/18 | Datastore is meant for long-term storage. Hence even retrieval of a single record will take at least 2 seconds. Hence, there's a need to speed up the process by using aggregating of data. Data will still be uploaded to datastore and during certain period, a cron job will trigger and aggregate the data to MySQL, allowing the front end to reduce the size of the data being retrieve while increasing the processing speed by reducing the computational power needed. |