HeaderSIS.jpg

2011T2 Bazinga Midterm Wiki

From IS480
Jump to navigation Jump to search
Bazinga - Team Logo.png

Project Progress Summary

Summary Overview

Since 23 December 2011, we have gone through 4 iterations with the assigned functionality being completed timely every iteration. During these 3 months, our team accomplished the following:

  • Picked up Kinect development from scratch
  • Designed and planned the blueprint for our Kinect Application
  • Delivered a working Kinect application with 70% of the functionality completed
  • Conducted User Acceptance Test 1 with a total of 107 testers


Project Highlights

While the team has put in much effort in planning the execution of the project, there were some unexpected events which forced the team to take certain corrective measures as list below:

1 Took 2 weeks to learn on Kinect SDK
At the beginning phase of our application development, our team discovered that Kinect application development was rather difficult as there are limited relevant resources available online, as compared to a mobile or ordinary web development. In addition, the initial Kinect SDK only provides the coordinates of the human body, making it really difficult for us to do up the body gestures from scratch, that normal Kinect games have.

Thus, our group decided to try out the two available gesture libraries we found through the Kinect Community. The libraries could recognize and detect motion gestures accurately, but there are limitations such as adding new gesture functions or detecting new users easily. Thus, it made it very difficult for us to fully utilize all their functions. Due to this, our core programmer, Kiwie, decided to write our own gesture library from scratch.

While doing up the gestures, he also rely on a third party library that could enable different layouts of viewing products. The layouts were well designed and easy to implement.

2 Unforeseen delays to our Project during Iteration 2 and 3

2 of our team members' laptops crashed during Iteration
During the first and second week of school, two of our team members' laptop crashed, leaving no chance to push back any functionalities to the buffer days. This downtime has caused our application development to be severely affected, as the data was not placed in the database yet, and all current information was all static. In addition, web services needed to be redone, since our project scope was changed.


3 team members were sick in Iteration 3
During the second and third week of school, three of our team members were sick, leaving work to be slightly delayed.


Chinese New Year early in January this year
Chinese New Year is much earlier this year, making it harder for us to have our triple meetings a week. We had to communicate heavily through email and our group chat on a phone application.

3 Change of Project Idea after Project Acceptance
During the Project Acceptance, both Prof Shim and Prof Gan provided us with very concrete and useful feedback on how we could improve our project further. All of us spent some time thinking about their feedback and had several discussions before we decided to change our project idea and scenario. We even had two supervisor meetings with Prof Shim to pitch our new ideas to her. She has indeed helped us alot in getting towards the right direction of our project. All of us agreed on the need to change our project scope and functionalities partly as we wanted to target the masses, and not creating our project based on a particular software, although used by many companies around the world. In addition, we wanted to fully utilitze the Kinect and its main functions (Skeletal Tracking, Voice Recognition, Facial Recognition) and find a scenario where using the Kinect is simplier than using the keyboard and mouse.

The ideas can be found in our Meeting Minutes of 7,8 and Supervisor Meeting Minutes 4,5.

Our team then gave top priority to improve the scope, and then moving on to changing the Project Plan, and other technical documentation. Our project manager spent some time to make the necessary changes required for the project plan and schedule to accommodate the new proposed functionality. We had to reprioritize several functionalities planned to ensure that we completed the main functions.

The changes made in our project schedule includes:

  1. Changed in our project functionalities - SAP Functionalities and Facial Recognition was removed in Iteration 2. New functionalities such as 'Kinect Gestures: ListBox Scrolling by Kinect', 'Kinect Gestures: Single Hand Scroll for Element Flow' were added.


The changes began to take effect in Iteration 3 and the team managed to complete the tasks for Iteration 3 without any major issues.
4 User Acceptance Testing 1
During the UAT1,

The changes made in our project schedule includes:

  1. Changed in our project functionalities - SAP Functionalities and Facial Recognition was removed in Iteration 2. New functionalities such as 'Kinect Gestures: ListBox Scrolling by Kinect', 'Kinect Gestures: Single Hand Scroll for Element Flow' were added.


The changes began to take effect in Iteration 3 and the team managed to complete the tasks for Iteration 3 without any major issues.

Project Management

Project Schedule

Graphic Schedule

Project Status

Task/function/features, etc Status Complexity Level
(0-10)
Comment
Login with Facial Recognition using Face.com Function to be kept in view - fully developed but removed for the time being 9 Kiwie
Kinect with SAP integration: Pick Items Broadened scope instead of limiting to SAP - removed function for the time being 6 Kiwie
Kinect: Apply WPF Skin/Theme Complete with constant updates in each iteration, UAT1 done 5 Carmen & Joy
Kinect: Listbox scrolling with Kinect Fully deployed and tested 100%, UAT1 done 7 Kiwie
Kinect Gestures: Recognize Left and Right Swipes Fully deployed and tested 100%, UAT1 done 9 Kiwie
Kinect: Implement ElementFlow Fully deployed and tested 100%, UAT1 done 8 Kiwie
Kinect Gestures: Single Hand Scroll for Element Flow Fully deployed and tested 100%, UAT1 done 7 Kiwie
Application Paging (get Root Page, page and MenuOptions) Fully deployed and tested 100%, UAT1 done Kinect: 3, Backend: 7 Kiwie and Alex
Kinect Gestures: Recognize Up Swipes Fully deployed and tested 100%, UAT1 done 5 Kiwie
Kinect: KinectListMenu (Template and Display Selected MenuOption Preview) Fully deployed and tested 100%, UAT1 done 5 Kiwie
Kinect: HalfCircleMenu (Template and Databind Menu Options to HalfCirclePanel) Fully deployed and tested 100%, UAT1 done 6 Kiwie
Kinect Gestures: Vertical Scrolling for HalfCirclePanel Fully deployed and tested 100%, UAT1 done 8 Kiwie
Kinect: ElementFlow Product Browsing Fully deployed and tested 100%, UAT1 done 8 Kiwie
Kinect Gestures: 3D Two-Handed Scroll for Element Flow Fully deployed and tested 100%, UAT1 done 9 Kiwie
Kinect: ElementFlowMenu (Template and Databind MenuOptions to ElementFlow) Fully deployed and tested 100%, UAT1 done 7 Kiwie
View and Display Elements (tabs, prices, colors and features) Fully deployed and tested 100%, UAT1 done Kinect: 3, Backend: 7 Kiwie and Alex
View and Display Retailer-Generated Content Fully deployed and tested 100%, UAT1 done Kinect: 3, Backend: 6 Kiwie and Alex
Web app: Manage catalog 70% completed 9 Alex
Kinect: Instructional Video 90% completed 8 Bevan



Project Schedule (Plan vs Actual)

Comparing our project plan during the acceptance with the actual work done, our team feels that almost all the tasks/functions have been completed as plan. We had made some minor adjustments to our project schedule due to an additional functionality in order to justify the benefits of a Kinect app as opposed to a touchscreen app.


Planned Actual
Iteration Task Start End Task Start End comment
1 Create WPF App Project for Kinect Front-end 23/12/11 24/12/11 Create WPF App Project for Kinect Front-end 23/12/11 24/12/11
Login with Facial Recognition 24/12/11 27/12/11 Login with Facial Recognition 24/12/11 27/12/11
Main Menu Navigation (Listbox) 28/12/11 01/01/12 Main Menu Navigation (Listbox) 28/12/11 01/01/12
Pick Items (with SAP) 01/01/12 05/01/12 Pick Items (with SAP) 01/01/12 04/01/12
Create ASP.NET Web App for back-end 05/01/12 06/01/12 Create ASP.NET Web App for back-end 05/01/12 06/01/12
2 Review Project Scope and Storyboards 10/01/12 19/01/12 Review Project Scope and Storyboards 10/01/12 23/01/12 Went through more revisions than expected
Kinect Gestures: Recognize Left/Right Swipes 12/01/12 13/01/12 Kinect Gestures: Recognize Left/Right Swipes 12/01/12 13/01/12
Kinect: ListBox Scrolling by Kinect 13/01/12 14/01/12 Kinect: ListBox Scrolling by Kinect 13/01/12 14/01/12
Kinect: Implement ElementFlow 14/01/12 16/01/12 Kinect: Implement ElementFlow 14/01/12 16/01/12
Kinect Gestures: Single Hand Scroll for ElementFlow 16/01/12 17/01/12 Kinect Gestures: Single Hand Scroll for ElementFlow 16/01/12 17/01/12
3 Application Paging 19/01/12 24/01/12 Application Paging 21/01/12 28/01/12 Member's laptop malfunctioned
Kinect: View KinectListMenu 19/01/12 20/01/12 Kinect: View KinectListMenu 19/01/12 20/01/12
Kinect Gestures: Recognize Up Swipes 20/01/12 21/01/12 Kinect Gestures: Recognize Up Swipes 20/01/12 21/01/12
Kinect: Create HalfCircleMenu template 20/01/12 21/01/12 Kinect: Create HalfCircleMenu template 20/01/12 21/01/12
Kinect Gestures: Vertical Scrolling for HalfCirclePanel 20/01/12 21/01/12 Kinect Gestures: Vertical Scrolling for HalfCirclePanel 20/01/12 21/01/12
Kinect: Create ElementFlow Product Browsing template 20/01/12 25/01/12 Kinect: Create ElementFlow Product Browsing template 21/01/12 25/01/12
4 Kinect Gestures: 3D Two-Handed Scroll for Element Flow 27/01/12 28/01/12 Kinect Gestures: 3D Two-Handed Scroll for Element Flow 25/01/12 26/01/12 Kinect development going faster than planned
Kinect: Create ElementFlowMenu layout 28/01/12 30/01/12 Kinect: Create ElementFlowMenu layout 28/01/12 30/01/12
View and Display Elements 27/01/12 03/02/12 View and Display Elements 27/01/12 03/02/12
View Retailer-Generated Content 29/01/12 04/02/12 View Retailer-Generated Content 29/01/12 Need to touch-up on interface design
Web app: Manage Catalog 01/02/12 04/02/12 Web app: Manage Catalog 01/02/12 Not completed yet
Kinect: Special Function 06/02/12 07/02/12 Added a special function to justify use of Kinect


Project Metrics

The following is a summary analysis of our project metrics for the first 3 iterations. For more details of each metric, please click here.


Project Management Metric

Schedule Metric

Apart from Iterations 2 and 3, the team managed to finish the planned tasks within the estimated period allocated for each iteration. Iteration 2 took 2 days longer as the team went through more revisions to the storyboards than planned. This allowed us to make sure our scope was agreeable to all our stakeholders. Iteration 3 took 4 extra days than estimated previously and the course of action taken by the team was to extend the iteration. However, only the back-end web app was affected whereas the Kinect front-end was on schedule.

So far, the schedule metric served our team well by allowing us to have a better grasp of the actual duration needed to develop a function, so that we can better improve our estimation of similar functions in future iterations. This helped our Project Manager when he had to revise the project schedule at the end/beginning of each iteration.

For example, during the first iteration, the team's estimation for the assigned tasks was rather not accurate for most tasks (because the Project Manager used his experience with Windows Phone 7 development to estimate the schedule initially). However, the schedule metric results collected during the first few iterations helped the team to revise the estimated duration for Iterations 4 to 7 in an attempt to better reflect the eventual duration required for the remaining iterations.



Code Metrics

Code Metrics Goal and Questions
Bazinga code metrics.png

The main goal for our group is to 'Improve Code Quality' .
The code must be relatively easy to understand, test and maintain

The three main questions when evaluating the results of the code metrics is:

  • Is any method/function trying to do too much? (harder to test or maintain)
  • Any code area that is likely to produce errors?
  • Can we reveal any code smell to discover any deeper structural problem in our code?


Cyclomatic Complexity Metric

Lines of Code Metric

This metric is a very broad predictor of code quality, it does not say much on its own and relies on some basic truth to the idea that the more lines of code in a function, the more likely it is to have errors. We combine it with Cyclomatic Complexity to gain clearer picture of the potential for errors.

Maintainability Index Metric

Bazinga maintainability metric graph.png


Bazinga maintability metric.png

Maintability Index metric is the only metric that have Color coded ratings. It is used to quickly identify trouble spots in code and reveal code smell. It can b used together with cyclomatic complexity and lines of code in order to reveal code smell which is any symptom in the source code of a particular program that may have the possible indication of a deeper problem.


Code Metrics Analysis


Bazinga code metrics2.png

For example, using logJointStatus() has potential to be refactored. It has a relatively low maintainability index (even though >20 and a high complexity relative to other methods. Takes up almost half of total lines of codes in parent class



Bazinga metrics Data.png

Project Risks

Summary

Throughout the project, we have learnt that the impact and likelihood of certain risks presented during the project acceptance presentation did not turn out the way our team thought they would. For example, we used to be quite worried with integrating Bump API into the application but it turned out that the unstable Bump connection (due to the Bump's Android API being only in beta currently) was a bigger cause for concern. Next, the frequent disruptions to our server's uptime during Iteration 1 also did not occur at all in subsequent iterations so our team's reliance on our iLAB infrastructure was actually downgraded as a risk. Similarly, Bump service downtime which was observed in Dec 2010 also did not occur since then, therefore the likelihood of the Bump service being down due to maintenance was also downgraded.


Lastly, when the semester begun to kick into full swing, our team started to feel the heavy workload of juggling FYP with other SMU modules, such as assignment deadlines and midterms. Hence, we added this as a risk that was very likely with high impact.


No Types of Risk Reasons Likelihood Impact Mitigation Strategy Status
1 Project Management Risk

Project scope not optimal for Kinect app

Medium

High

  • Held emergency meeting after Acceptance PPT
  • Consulted Prof Ben & Prof Shim
  • Changed scope in Iteration 2

Mitigated

Own project risk: we do not know what’s best for us

High

High

Do many and shorter, quick iterations (we have 7) Conduct UAT1 ASAP (Week 5)

Mitigated

2 Technology & Learning Risk

Lack of documentation for Kinect SDK

High

High

Follow latest Kinect samples uploaded by online community

Mitigated

No suitable gestures library that we can use

High

High

Write our own gesture library

Eliminated

Self-written motion gestures may be inaccurate/ inconsistent / too difficult to perform

High

High

  • Assess written gestures in UAT1 ASAP
  • Watch videos of Kinect games/ other Kinect apps for inspiration

Mitigated

Low audio recognition accuracy

High

Medium

Do AEC Reduce reliance on voice commands

Mitigated

Technical Complexity

Technical complexity of the task/function/features shown below.

Task/function/features, etc Description % of Codes from API % of Self written code
Gestures
  • Ensure that all gestures work for all physical human figures and at a range of distance away from Kinect
  • Ensure that all chosen gestures are easy and intuitive enough to use
  • Ensure that all chosen gestures do not interfere with each other
0.1% 99.9%
Augmented Reality
  • Sync skeleton tracking with RGB video frames
  • Bind images to user’s skeleton joints and scale position of joints according to screen coordinates/dimensions
30% (Kinect Startup Tuts) 70%
Audio Beam Angle
Detect source audio angle & ignore background noise
? ?
ElementFlow
3D WPF graphics
50% 50%
Product Catalog Management
  • Create product categories as container of product items
  • Each category has one or more tabs
  • Each tab has one more fields
  • Each field can be single value or multi-value collection
  • Allow population & display of products
0% 100%
Kinect Page Management
  • Allow creation of different types of pages
  • Allow pages to be sub pages of other pages
  • Allow products to be tagged to pages
0% 100%
Facial Recognition (removed)
  • Detect and recognize face with Kinect RGB video stream
  • Save and train user’ face library
50% 50%

Quality of Product

Quality of code Description
Algorithm-based motion gesture detection
  • Instead of recording a primary user’s motion, use own algorithm to listen for gestures
  • Eliminate any data to host pre-recorded gestures
  • Eliminate need to compare current gesture with library of pre-recorded gestures in real-time
  • Work for all human physical shapes
  • Work at further distance away
3D Graphics in WPF for menus & product browsing
  • Allow different layouts: Slidedeck, coverflow, carousel, time machine and V-form
  • Sorting
  • Tie together with motion gestures
Dynamic page order/creation
Hierarchy and appearing order of Pages, e.g. menus can be configured
Dynamic tabs & fields for products
  • Allow different layouts: Slidedeck, coverflow, carousel, time machine and V-form
  • Sorting
  • Tie together with motion gestures
Tagging of products to multiple pages
User can determine which products appear on which page


Intermediate Deliverables

Stage Specification Modules
Project Management Meeting Minutes Team meetings: Minutes 1-12
Supervisor: Minutes 1-7
Metrics Schedule Index Metric
Maintainability Index Metric
Cyclomatic Complexity Metric
Lines of Code Metric
Requirements Mid Term Presentation Mid Term Presentation Slides
Analysis Use case Use case diagram & documentation
Business Process Diagram Diagram
Design Architecture System Diagram Diagram
ER Diagram Diagram
UAT 1 Documents UAT 1 Test Plan UAT 1 Test Plan
UAT 1 Test Introduction, Survey Questions and initial Test Case UAT 1 Test Introduction, Survey Questions and initial Test Case
UAT 1 Results and Analysis UAT 1 Results


Deployment

1. Our Web services are running on application backend server.
2. SQL 2008 Server database - our application backend server with access granted to the web services
3. Secondary backup web services/DB - running on Azure as precautionary measure
4. Local machine to run Kinect App with Kinect SDK installed, Kinect plugged in and output to 32” TV

User Acceptance Test 1

Our team's UAT 1 took place on 6/2/12 and ended on 9/2/12. A total of 107 testers participated in our UAT. In order to ensure that our test results are not affected by any biasness, our testers included students from different faculties, a handful of SIS professors and instructors. Our testers also include a mixture of both non-Kinect and Kinect users so that we can anticipate the general public's receptiveness to our application once it is launched.

UAT 1 Goals
Collect useful usability and gesture feedback from our testers to better understand their needs and improve our existing application

UAT 1 Objectives

  • Guided Test for all Users
  • Verify if the user finds it intuitive and easy to pick up hand gestures
  • Verify the usability and easy navigation of the application
  • Gather user opinion on Kinect Application feasibility in a retail setting


Testers Profile

Type Number Percentage
IS Students 73 68%
Non-IS Students 29 27%
Professors and Instructors 5 5%

Comments: Non-SIS students represent the user population from other faulties in SMU and their comments tend to be much less technical, reflecting most of the actual target public users. In addition, they also require much more guidance than SIS students, who have been experienced in application development. They provided us with an interesting dimension to the feedback collected, such as more of the business feasibility of the Kinect application, as compared to the SIS Students who will be more inclined towards the technology, and will tell more of which functions are more useful.

The professors and instructors on the other hand, are also very technical and provided us the best advice and opinions for a user to pick up gestures naturally, and how the application will be suitable for the public, based on their experiences with lots of applications.


Types of Test Cases

Comments: To ensure that our UAT1 meets our objectives in seeking feedback in mainly on the gestures, and the usability of the application, we made it a guided UAT. We wanted to verify if the users could pick up the gestures naturally and provide us which opinion on how to improve. Thus, as this stage, we do not need the users to do a test case to check the usage of each function.


UAT1 Outcome

Apart from quantitative results, our team has received very positive feedbacks and numerous suggestions on how we can improve our application. Most of the testers feel that the Kinect application is cool, interactive, and still room to improve in ease of use and ease of learning. They see a potential in this application but a minority still feel that the application is not very feasible int he retail setting, as only 1 user can use the application at one time.


Our team has prioritized a list of issues that our team will embark on before UAT2.


UAT Documents

For more information on our UAT 1, you can download our documents below:

Documents Link
UAT Plan download
UAT Introduction, Survey Questions and initial Test Case download
UAT Results/Analysis download

Reflections

Team Reflections

These are the skills that we had learnt so far from each iteration:

Iteration 1 and 2
Soft Skills Technical Skills
  • Project Management
    • How to communicate with teammates globally (initial stage)
    • Project Scheduling for Kinect Application Development
    • Allocation of Resources & Responsibilities
    • Tracking of Project Progress
    • Progress Reporting



  • Integration of Business & Technology
    • Costs & Benefit Analysis of Project
    • Understanding the whole SAP Process Flow
    • How to plan a system architecture solution
    • Photoshop Design
    • WPF App Development
  • Kinect Development
    • Facial Detection and Recognition
    • Writing Motion Gestures
    • Dealing with RGV Camera
    • Invoking online REST API
    • Use JSON, C# Development
    • How to build Kinect on a totally new platform
    • WPF App Development



  • System Analysis Design
    • Gathering Requirements
    • Architecture Design for Kinect Application

  • Project/Environment Setup
    • Setup Kinect SDK on Microsoft Visual Studio 2010 development environment
    • Setting up .NET Web Service on IIS7 with SQL Server 2008
    • Installing & Configuring IIS7 on Server 2008
    • Using Plugins in Microsoft Visual Studio 2010 development environment for Code Metrics
    • Using BugNet as Issue Tracker
Iteration 3 and 4
Soft Skills Technical Skills
  • Project Management:
    • Managing Project Risks
    • Prioritization of Tasks
    • Documenting & Managing Requirements We Set For Ourselves
    • Planning & Executing User Acceptance Tests
  • Kinect Development:
    • Kinect Gestures Algorithms
  • Back-end Web Application
    • Creating a web app to allow the management to customise their content


Individual Reflection

These are our group individual reflections:

Kiwie Reflection Alex Reflection
Bazinga - Kiwie.png
  • Learnt how to use Kinect SDK through research and coding it efficiently
  • Ability to communicate with team members and ensuring that the whole team is moving on the same pace
  • Learnt to start early on the learning phase for the development because it allow us to have more buffer time during actual development
Bazinga - Alex.png
  • Learnt how to manage and not underestimate all tasks that have been allocated with a certain time frame.
  • Ability to handle multiple tasks and workloads from different modules concurrently
  • Learnt that a small change on the front-end product will result to a ripple-effect to the back-end configurations such as to the server and database
Bevan Reflection Joy Reflection
Bazinga - Bevan.png
  • Learnt how to design UI that makes full use of the screen space and how to create effective videos
  • Getting useful feedback from the testers on how to improve the videos and other aesthetic features of the application
  • Improved on organizational skills and ability to manage document planning efficiently
Bazinga - Joy.png
  • Understanding each team members' strengths and using it to manage the project better
  • Manage all tasks that have been allocated with a certain time frame
  • Ability to handle change of project and task requirements, especially when we had a change of scope after our acceptance presentation
Carmen Reflection
Bazinga - Carmen.png
  • Ability to conduct and plan a large scale UAT without hindering the development progress
  • Importance of interacting with testers and analyzing their feedback to understand their perspectives and further improve our application
  • Ability to handle concurrent project tasks and requirements effectively