HeaderSIS.jpg

Difference between revisions of "2011T2 Bazinga Final Wiki"

From IS480
Jump to navigation Jump to search
 
(26 intermediate revisions by the same user not shown)
Line 99: Line 99:
  
 
|width="300"| Kinect: Apply WPF Skin/Theme
 
|width="300"| Kinect: Apply WPF Skin/Theme
|width="240"| Complete with constant updates in each iteration, UAT1 done
+
|width="240"| Complete with constant updates in each iteration, UT1 done
 
|width="140" align="center"| 5
 
|width="140" align="center"| 5
 
|width="200" align="center"| Carmen & Joy
 
|width="200" align="center"| Carmen & Joy
Line 105: Line 105:
  
 
|width="300"| Kinect: Listbox scrolling with Kinect
 
|width="300"| Kinect: Listbox scrolling with Kinect
|width="240"| Fully deployed and tested 100%, UAT1 done
+
|width="240"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 7
 
|width="140" align="center"| 7
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 111: Line 111:
  
 
|width="300"| Kinect Gestures: Recognize Left and Right Swipes  
 
|width="300"| Kinect Gestures: Recognize Left and Right Swipes  
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 9
 
|width="140" align="center"| 9
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 117: Line 117:
  
 
|width="300"| Kinect: Implement ElementFlow
 
|width="300"| Kinect: Implement ElementFlow
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 8
 
|width="140" align="center"| 8
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 123: Line 123:
  
 
|width="300"| Kinect Gestures: Single Hand Scroll for Element Flow
 
|width="300"| Kinect Gestures: Single Hand Scroll for Element Flow
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 7
 
|width="140" align="center"| 7
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 129: Line 129:
  
 
|width="300"| Application Paging (get Root Page, page and MenuOptions)
 
|width="300"| Application Paging (get Root Page, page and MenuOptions)
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| Kinect: 3, Backend: 7
 
|width="140" align="center"| Kinect: 3, Backend: 7
 
|width="200" align="center"| Kiwie and Alex
 
|width="200" align="center"| Kiwie and Alex
Line 135: Line 135:
  
 
|width="300"| Kinect Gestures: Recognize Up Swipes
 
|width="300"| Kinect Gestures: Recognize Up Swipes
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 5
 
|width="140" align="center"| 5
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 141: Line 141:
  
 
|width="300"| Kinect: KinectListMenu (Template and Display Selected MenuOption Preview)
 
|width="300"| Kinect: KinectListMenu (Template and Display Selected MenuOption Preview)
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 5
 
|width="140" align="center"| 5
 
|width="300" align="center"| Kiwie
 
|width="300" align="center"| Kiwie
Line 147: Line 147:
  
 
|width="300"| Kinect: HalfCircleMenu (Template and Databind Menu Options to HalfCirclePanel)
 
|width="300"| Kinect: HalfCircleMenu (Template and Databind Menu Options to HalfCirclePanel)
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 6
 
|width="140" align="center"| 6
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 153: Line 153:
  
 
|width="300"| Kinect Gestures: Vertical Scrolling for HalfCirclePanel
 
|width="300"| Kinect Gestures: Vertical Scrolling for HalfCirclePanel
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 8
 
|width="140" align="center"| 8
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 159: Line 159:
  
 
|width="300"| Kinect: ElementFlow Product Browsing
 
|width="300"| Kinect: ElementFlow Product Browsing
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 8
 
|width="140" align="center"| 8
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 165: Line 165:
  
 
|width="300"| Kinect Gestures: 3D Two-Handed Scroll for Element Flow
 
|width="300"| Kinect Gestures: 3D Two-Handed Scroll for Element Flow
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 9
 
|width="140" align="center"| 9
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 171: Line 171:
  
 
|width="300"| Kinect: ElementFlowMenu (Template and Databind MenuOptions to ElementFlow)
 
|width="300"| Kinect: ElementFlowMenu (Template and Databind MenuOptions to ElementFlow)
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 7
 
|width="140" align="center"| 7
 
|width="200" align="center"| Kiwie
 
|width="200" align="center"| Kiwie
Line 177: Line 177:
  
 
|width="300"| View and Display Elements (tabs, prices, colors and features)
 
|width="300"| View and Display Elements (tabs, prices, colors and features)
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| Kinect: 3, Backend: 7
 
|width="140" align="center"| Kinect: 3, Backend: 7
 
|width="200" align="center"| Kiwie and Alex
 
|width="200" align="center"| Kiwie and Alex
Line 183: Line 183:
  
 
|width="300"| View and Display Retailer-Generated Content
 
|width="300"| View and Display Retailer-Generated Content
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| Kinect: 3, Backend: 6
 
|width="140" align="center"| Kinect: 3, Backend: 6
 
|width="200" align="center"| Kiwie and Alex
 
|width="200" align="center"| Kiwie and Alex
Line 189: Line 189:
  
 
|width="300"| Web app: Manage catalog
 
|width="300"| Web app: Manage catalog
|width="245"| Fully deployed and tested 100%, UAT1 done
+
|width="245"| Fully deployed and tested 100%, UT1 done
 
|width="140" align="center"| 9
 
|width="140" align="center"| 9
 
|width="200" align="center"| Alex
 
|width="200" align="center"| Alex
Line 607: Line 607:
  
  
[[Image:bazinga_maintainability_metric_graph.png|700px]] <br /><br /><br />
+
[[Image:bazinga_maintainability_metric_graph.png|750px]] <br /><br />
  
 
[[Image:bazinga_maintability_metric.png|500px]] <br /><br />
 
[[Image:bazinga_maintability_metric.png|500px]] <br /><br />
Line 621: Line 621:
  
 
<br /><br />
 
<br /><br />
[[Image:bazinga_metrics_Data.png |800px]]
+
[[Image:bazinga_metrics_Data.png |800px]] <br />
 +
 
 +
We wanted to make sure we completed most of our development by Iteration 4 and hence, there is a steeper curve in terms of the lines of codes. As we got more familiar with Kinect development, the curve is not the steep from Iteration 5 onwards.
 +
 
 +
<br /><br />
  
 
===<font color = "#0164a6">Project Risks</font>===
 
===<font color = "#0164a6">Project Risks</font>===
 
<div style="width: 96%" align="justify">
 
<div style="width: 96%" align="justify">
 
====Summary====
 
====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.
+
Throughout the project, we have learnt that the impact and likelihood of certain risks as presented during the project acceptance presentation and did try to mitigate these risks. The greatest risk for us would probably be managing our project without a client and we tried to mitigate this risk by conducting rigorous testing to the best of our abilities, as seen from our 2 User Tests as well as our beta test at Glassroom Cafe.
  
 
<br>
 
<br>
Line 727: Line 731:
 
|
 
|
 
Mitigated
 
Mitigated
 +
|-
 +
|}
 +
 +
<br />
 +
 +
===<font color = "#0164a6">Risk Evaluation</font>===
 +
 +
{| border="1" cellpadding="1"
 +
|- style="filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#007fb1', endColorstr='#02507c'); background: -webkit-gradient(linear, left top, left bottom, from(#007fb1), to(#02507c)); background: -moz-linear-gradient(top,  #007fb1,  #02507c); color:White"
 +
|width="1000pt" colspan="2" |'''Developing Motion Gestures'''
 +
|-
 +
 +
|- style="filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4FA58', endColorstr='#FFFF00'); background: -webkit-gradient(linear, left top, left bottom, from(#F4FA58), to(#FFFF00)); background: -moz-linear-gradient(top,  #F4FA58,  #FFFF00); color:black"
 +
|width="500pt"|References
 +
|width="500pt"|Considerations
 +
|-
 +
 +
|width="500pt" valign="top"|
 +
* Popular successful Kinect games, e.g. Dance Central
 +
* Trends in other Kinect apps
 +
* User study in UT1 & UT2: Focus more on the “helpless” users
 +
 +
|width="500pt"|
 +
* Tradeoff  between Accuracy, Efficiency and Intuitiveness
 +
* Unintentional triggering of other gestures
 +
* Wanted to avoid using “Hover-over Cursor” as it introduces lag time
 +
|-
 +
|}
 +
 +
<br />
 +
 +
====Case Example: Horizontal Scrolling====
 +
<br>
 +
[[Image:Element Browser.png|500px]] <br />
 +
Qns: What gesture should be used to allow the user to scroll left/right?
 +
 +
<br />
 +
 +
{| class="wikitable"
 +
|-
 +
! width="200"|'''Idea No.'''
 +
!width="300" align="center"|'''Description'''
 +
!width="150" align="center"|'''Pros'''
 +
!width="150" align="center"|'''Cons'''
 +
|-
 +
 +
|width="200" valign = top|<div style ="margin:6px" align="justify"> 1st Idea: Single Swipe Scroll (Two hands)</div>
 +
|width="300"|<div style ="margin:6px" align="justify">
 +
* Scroll left/right:
 +
** Swipe left/right hand once to scroll left/right by one item
 +
 +
* Speed Control: None
 +
 +
*Outcome: '''Rejected'''
 +
 +
</div>
 +
|width="150" align="left"|
 +
* Intuitive
 +
* Accurate
 +
 +
|width="150" align="left"|
 +
* Inefficient
 +
* Swipe of left hand reserved for going back
 +
* Interferes with AR
 +
 +
|-
 +
 +
|width="200" valign = top|<div style ="margin:6px" align="justify"> 2nd Idea: Extend Arm Continuous Scroll (Two Hands)</div>
 +
|width="300"|<div style ="margin:6px" align="justify">
 +
* Scroll left/right
 +
** Extend either arm to left/right for continuous scrolling
 +
 +
* Speed Control: Distance of arm away from body
 +
 +
* Outcome: '''Rejected'''
 +
 +
</div>
 +
|width="150" align="left"|
 +
* Intuitive
 +
* Efficient
 +
|width="150" align="left"|
 +
* Low accuracy
 +
* Hard to select item
 +
* Interferes with AR
 +
 +
|-
 +
|width="200" valign = top| <div style ="margin:6px" align="justify">3rd Idea: 3D Continuous Scroll (Two Hands) = Used in UT1</div>
 +
|width="300"|<div style ="margin:6px" align="justify">
 +
* Scroll left/right
 +
** Put both hands in front and move 1 nearer to Kinect to move in one direction
 +
 +
* Speed Control: Distance of hands from each other
 +
 +
* Outcome: '''Rejected'''
 +
</div>
 +
|width="150" align="left"|
 +
* Efficient
 +
* No overlap with other gestures
 +
|width="150" align="left"|
 +
* Low accuracy
 +
* Not intuitive
 +
|-
 +
 +
|-
 +
|width="200" valign = top| <div style ="margin:6px" align="justify">Final Idea: Modified 3D Continuous Scroll (Two Hands)</div>
 +
|width="300"|<div style ="margin:6px" align="justify">
 +
* Scroll left/right
 +
** Put both hands in front and move 1 nearer to Kinect to move in one direction
 +
 +
* Speed Control: One-by-one slow scroll or Continuous fast scroll by extending hand to side
 +
 +
* Outcome: '''Accepted'''
 +
</div>
 +
|width="150" align="left"|
 +
* Efficient
 +
* No overlap with other gestures
 +
|width="150" align="left"|
 +
* Not intuitive
 
|-
 
|-
  
 
|}
 
|}
 +
 +
<br />
 +
 +
[[Image:Demo_DoubleHandScroll.png|500px]]
 +
<br>
 +
This is the final form of scrolling the team decided on based on the following factors:-
 +
<br>
 +
* Continuous vs Non-continuous scrolling:
 +
** Efficiency vs Accuracy
 +
 +
<br>
 +
* Extending arms to sides:
 +
** More intuitive
 +
** Unintentional scrolling in AR
 +
 +
<br>
 +
* Objectives:
 +
** Isolate gestures for slow & fast scroll
 +
** Avoid unintentional gesture triggering
 +
 +
<br />
  
 
===<font color = "#0164a6">Technical Complexity</font>===
 
===<font color = "#0164a6">Technical Complexity</font>===
Line 912: Line 1,055:
 
<div style="width: 96%" align="justify">
 
<div style="width: 96%" align="justify">
  
1. Our Web services are running on application backend server.  
+
KinectifyWeb is a web-based ASP.NET application running on IIS 7. It is currently deployed on Windows Server 2008 machine within the Undergraduate Project Labs. KinectifyWeb is responsible for administrating the data which is used to display the content on our Kinectify front-end interface. It serves the content over SOAP based XML web services which is then consumed by our Kinectify client application. Our data is currently residing at two locations, Microsoft SQL Server 2008 within the same UPL machine and Windows Azure SQL acts as a back-up copy used for collaboration purposes.
 +
 
 
<br />
 
<br />
2. SQL 2008 Server database - our application backend server with access granted to the web services
+
 
 +
Here’s a list of features our back-end application supports: <br />
 +
* Bootstrap system from zip file containing CSV data
 +
* Switching between UPL and Azure databases
 +
* Creating Kinectiplates
 +
* Establish links between Kinectiplates
 +
* Creating material categories, tabs and fields
 +
* Administrate material details
 +
* Managing augmented reality anchor points
 +
* Managing store locations for the Kinect Map
 +
 
 
<br />
 
<br />
3. Secondary backup web services/DB - running on Azure as precautionary measure
+
 
 +
[[Image:Bazinga backend.png|600px]]
 +
<br>
 +
This is how our backend home page looks like.
 +
 
 
<br />
 
<br />
4. Local machine to run Kinect App
 
with Kinect SDK installed, Kinect plugged in and output to 32” TV
 
  
 +
[[Image:Bootstrap.png|600px]]
 +
<br>
 +
This is how our bootstrap looks like.
  
 +
<br />
 +
Deployment link to our backend system: [http://10.0.106.15/ Kinectify Web]
  
 
=<div style="width:1000px;  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#37ab4d', endColorstr='#00922b'); background: -webkit-gradient(linear, left top, left bottom, from(#37ab4d), to(#00922b)); background: -moz-linear-gradient(top,  #37ab4d,  #00922b); padding:7px; margin-top: 35px; line-height: 1.4em; color:white"> Reflections </div>=
 
=<div style="width:1000px;  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#37ab4d', endColorstr='#00922b'); background: -webkit-gradient(linear, left top, left bottom, from(#37ab4d), to(#00922b)); background: -moz-linear-gradient(top,  #37ab4d,  #00922b); padding:7px; margin-top: 35px; line-height: 1.4em; color:white"> Reflections </div>=

Latest revision as of 01:41, 21 April 2012

Main Wiki Page   Project Management   Project Metrics   Technical Complexity & Deployment   User Test 2   Beta Test   BP Tech Fair   Team Reflections


Bazinga final wiki.png

Project Progress Summary

Summary Overview

Since 23 February, we have gone through 7 iterations with the assigned functionality being completed timely every iteration. During these 1.5 months, our team accomplished the following:

  • Designed and planned the blueprint for our Kinect Application
  • Delivered a working Kinect application from 5 initially to 7 amazing functionalities
  • Conducted User Testing 2 with a total of 35 testers that allowed us to gather very useful quality feedback.


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 Improving overall User Experience

Through our survey results and after interacting with the testers from our first User Test, we realised that most of them do not have any prior experience in using the Kinect before. Thus, it was really difficult for the users to know how to navigate through our Kinect application easily. Thus, we placed a high priority in improving the overall user experience by having good tutorial videos and an improved user interface to guide them through the application.

Over the past two months, our group has gone through several iterations to create better and improved tutorial videos for different features. We kept trying to look for the best practices of other Kinect applications, such as the Kinect Sports Season One. We tried to understand their tutorial videos.

Two weeks before our User Test 2, we kept reviewing the video internally to ensure that we have made the tutorial as easy as possible to comprehend and to follow. Even during our second User Test, we tried to improve the videos after hearing feedback from our testers.
2 Beta Testing

Beta Testing was the first time that our team collaborated with a real client. It was truly a great experience for us to be able to collaborate with the cafe Glassroom, located at SMU School of Information Systems. We created an application that could allow their customers to browse through images and select the one they preferred for a free virtual photo shoot. Many customers came up with their friends and tried out the different photos available.

We started by showing them the capabilities and features of our application. We then gathered feedback from them on what they were very interested in. They showed a strong interest in the Augmented Reality function. Thus, we decided to incorporate both the Augmented Reality and browsing of images for their application. Firstly, they gave us both their menu and marketing collaterals. After our User Test 2, we immediately started on our Beta Testing. ver a period of 5 days, we completed the application. However, there were some unforeseen delays as we required more time than expected to finish the augmented reality application. We had to push back our application launch at Glassroom by 2 days. We informed them of the issue early and they had no issues with the delay.

3 User Testing 2
Despite our busy and hectic schedule, we managed to get the functions, video tutorials, test instructions, procedures and survey questions ready for our User Test 2. We had a total of 35 testers who spent at least 15 to 25 minutes each. Different from our first User Test, we did not offer any help to them and asked them a 'Quest', where they to complete a set of tasks based on the instructions that we have given to them. They did not receive any help from us at all. If they required any help, they would ask the Kinect for help by either the voice command or the help gesture. The application has a total of xx tutorials, all for the different functions.

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, UT1 done 5 Carmen & Joy
Kinect: Listbox scrolling with Kinect Fully deployed and tested 100%, UT1 done 7 Kiwie
Kinect Gestures: Recognize Left and Right Swipes Fully deployed and tested 100%, UT1 done 9 Kiwie
Kinect: Implement ElementFlow Fully deployed and tested 100%, UT1 done 8 Kiwie
Kinect Gestures: Single Hand Scroll for Element Flow Fully deployed and tested 100%, UT1 done 7 Kiwie
Application Paging (get Root Page, page and MenuOptions) Fully deployed and tested 100%, UT1 done Kinect: 3, Backend: 7 Kiwie and Alex
Kinect Gestures: Recognize Up Swipes Fully deployed and tested 100%, UT1 done 5 Kiwie
Kinect: KinectListMenu (Template and Display Selected MenuOption Preview) Fully deployed and tested 100%, UT1 done 5 Kiwie
Kinect: HalfCircleMenu (Template and Databind Menu Options to HalfCirclePanel) Fully deployed and tested 100%, UT1 done 6 Kiwie
Kinect Gestures: Vertical Scrolling for HalfCirclePanel Fully deployed and tested 100%, UT1 done 8 Kiwie
Kinect: ElementFlow Product Browsing Fully deployed and tested 100%, UT1 done 8 Kiwie
Kinect Gestures: 3D Two-Handed Scroll for Element Flow Fully deployed and tested 100%, UT1 done 9 Kiwie
Kinect: ElementFlowMenu (Template and Databind MenuOptions to ElementFlow) Fully deployed and tested 100%, UT1 done 7 Kiwie
View and Display Elements (tabs, prices, colors and features) Fully deployed and tested 100%, UT1 done Kinect: 3, Backend: 7 Kiwie and Alex
View and Display Retailer-Generated Content Fully deployed and tested 100%, UT1 done Kinect: 3, Backend: 6 Kiwie and Alex
Web app: Manage catalog Fully deployed and tested 100%, UT1 done 9 Alex
Kinect: Instructional Video Fully deployed and tested 100%, UT2 done 10 Bevan
Kinect: Capture and Display of User Analytics Fully deployed and tested 100%, UT2 done 4 Alex and Kiwie
Kinect: View Geographic Map Fully deployed and tested 100%, UT2 done 6 Alex and Kiwie
Kinect: Loading Screens Tutorials Fully deployed and tested 100%, UT2 done 6 Kiwie
Kinect: Review Kinect Navigation and View Element Fully deployed and tested 100%, UT2 done 3 Kiwie
Web app: Enter Geographic Data Fully deployed and tested 100%, UT2 done 2 Alex



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 21/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 04/02/12
Web app: Manage Catalog 01/02/12 04/02/12 Web app: Manage Catalog 01/02/12 06/02/12 Still need to touch up on UI
Kinect: Augmented Reality 06/02/12 07/02/12 Added a special function to justify use of Kinect
5 Kinect: Tutorial Videos 23/02/12 27/02/12 Kinect: Tutorial Videos 23/02/12 09/03/12 Kinect tutorial videos took more time than expected
Web App: Capture Usage Analytics 27/02/12 02/03/12 Web App: Capture Usage Analytics 27/02/12 02/03/12
Web App: Display Usage Analytics 23/02/12 01/03/12 Web App: Display Usage Analytics 23/02/12 01/03/12
Kinect: View Geographic Map 01/03/12 04/03/12 Kinect: View Geographic Map 01/03/12 04/03/12
6 Kinect: Loading Screens Tutorials 05/03/12 09/03/12 Kinect: Loading Screens Tutorials 05/03/12 10/03/12 Kinect loading screens tutorial videos took more time than planned
Kinect: Review Kinect Navigation 05/03/12 07/03/12 Kinect: Review Kinect Navigation 05/03/12 07/03/12
Kinect: Review View Element 07/03/12 09/03/12 Kinect: Review View Element 07/03/12 09/03/12
Web app: WS: Enter Geographic Data 09/03/12 12/03/12 Web app: WS: Enter Geographic Data 09/03/12 12/03/12
7 Kinect & web app: Revise Codes with UAT2 Feedback 21/03/12 23/03/12 Kinect & web app: Revise Codes with UAT2 Feedback 21/03/12 23/03/12
Kinect & web app: Integrate & Test 23/03/12 25/03/12 Kinect & web app: Integrate & Test 23/03/12 25/03/12


Project Metrics

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


Project Management Metric

Schedule Metric

Bazinga schedule metric graph.png

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. As a result, the team managed to complete the tasks assigned ahead of schedule during Iteration 4.

In Iteration 5, the team experienced the most delay as we underestimated the amount of time required to create tutorial videos to include in the application. However, we used this experience to help us adjust the scheduling of the task "Create Loading Screens tutorials" in Iteration 6. As such, we were able to complete Iteration 6 on time.

For Iteration 7, we managed to complete ahead of schedule and took the time to go down to BP Tech Fair.



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?



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 be used together with cyclomatic complexity and lines of code metrics 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

We wanted to make sure we completed most of our development by Iteration 4 and hence, there is a steeper curve in terms of the lines of codes. As we got more familiar with Kinect development, the curve is not the steep from Iteration 5 onwards.



Project Risks

Summary

Throughout the project, we have learnt that the impact and likelihood of certain risks as presented during the project acceptance presentation and did try to mitigate these risks. The greatest risk for us would probably be managing our project without a client and we tried to mitigate this risk by conducting rigorous testing to the best of our abilities, as seen from our 2 User Tests as well as our beta test at Glassroom Cafe.


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)
  • Also conducted a pre-survey to understand the market

See all our pre-survey results here: Pre-Survey Results

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


Risk Evaluation

Developing Motion Gestures
References Considerations
  • Popular successful Kinect games, e.g. Dance Central
  • Trends in other Kinect apps
  • User study in UT1 & UT2: Focus more on the “helpless” users
  • Tradeoff between Accuracy, Efficiency and Intuitiveness
  • Unintentional triggering of other gestures
  • Wanted to avoid using “Hover-over Cursor” as it introduces lag time


Case Example: Horizontal Scrolling


Element Browser.png
Qns: What gesture should be used to allow the user to scroll left/right?


Idea No. Description Pros Cons
1st Idea: Single Swipe Scroll (Two hands)
  • Scroll left/right:
    • Swipe left/right hand once to scroll left/right by one item
  • Speed Control: None
  • Outcome: Rejected
  • Intuitive
  • Accurate
  • Inefficient
  • Swipe of left hand reserved for going back
  • Interferes with AR
2nd Idea: Extend Arm Continuous Scroll (Two Hands)
  • Scroll left/right
    • Extend either arm to left/right for continuous scrolling
  • Speed Control: Distance of arm away from body
  • Outcome: Rejected
  • Intuitive
  • Efficient
  • Low accuracy
  • Hard to select item
  • Interferes with AR
3rd Idea: 3D Continuous Scroll (Two Hands) = Used in UT1
  • Scroll left/right
    • Put both hands in front and move 1 nearer to Kinect to move in one direction
  • Speed Control: Distance of hands from each other
  • Outcome: Rejected
  • Efficient
  • No overlap with other gestures
  • Low accuracy
  • Not intuitive
Final Idea: Modified 3D Continuous Scroll (Two Hands)
  • Scroll left/right
    • Put both hands in front and move 1 nearer to Kinect to move in one direction
  • Speed Control: One-by-one slow scroll or Continuous fast scroll by extending hand to side
  • Outcome: Accepted
  • Efficient
  • No overlap with other gestures
  • Not intuitive


Demo DoubleHandScroll.png
This is the final form of scrolling the team decided on based on the following factors:-

  • Continuous vs Non-continuous scrolling:
    • Efficiency vs Accuracy


  • Extending arms to sides:
    • More intuitive
    • Unintentional scrolling in AR


  • Objectives:
    • Isolate gestures for slow & fast scroll
    • Avoid unintentional gesture triggering


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-12
Requirements Final Presentation Final Presentation Slides
Analysis Use case Use Case Diagram & Documentation
Service Diagram Service Diagram
Design Architecture System Diagram System Architecture
ER Diagram ER Diagram


Deployment

KinectifyWeb is a web-based ASP.NET application running on IIS 7. It is currently deployed on Windows Server 2008 machine within the Undergraduate Project Labs. KinectifyWeb is responsible for administrating the data which is used to display the content on our Kinectify front-end interface. It serves the content over SOAP based XML web services which is then consumed by our Kinectify client application. Our data is currently residing at two locations, Microsoft SQL Server 2008 within the same UPL machine and Windows Azure SQL acts as a back-up copy used for collaboration purposes.


Here’s a list of features our back-end application supports:

  • Bootstrap system from zip file containing CSV data
  • Switching between UPL and Azure databases
  • Creating Kinectiplates
  • Establish links between Kinectiplates
  • Creating material categories, tabs and fields
  • Administrate material details
  • Managing augmented reality anchor points
  • Managing store locations for the Kinect Map


Bazinga backend.png
This is how our backend home page looks like.


Bootstrap.png
This is how our bootstrap looks like.


Deployment link to our backend system: Kinectify Web

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
Iteration 5 and 6
Soft Skills Technical Skills
  • Project Management:
    • Managing the inclusion of a Beta Test
    • Prioritization of Tasks
    • Planning & Executing of User Test 2
  • Kinect Development:
    • Kinect Tutorial Videos
  • Back-end Web Application
    • Creating a web app to display of geographic data
Iteration 7
Soft Skills Technical Skills
  • Project Management:
    • Managing the execution of a Beta Test
  • Kinect Development:
    • Modifying the code slightly to accommodate for the beta testing
  • Back-end Web Application
    • Creating a database for Glassroom
    • Linking the uploading of photos to Facebook


Reflections as a team

Reaching a common agreement on our features
With the absence of a client, we had been refining our features and objectives over the past 15 weeks. It was truly an eye opener for us as we are like the pillars of this application – the owners who gets to decide what functions would be useful. The best feedbacks we could get were our testers and their feedback played an important role in enabling us to decide the functions and gestures we should keep. We spent countless number of hours discussing and reviewing our application features. It took sometime before all of us agreed on the same features.

Believing in our project and product
As pioneers of this application, we need absolute faith in the application as we are the ones who made created these features from scratch. If we do not believe in the application, then no one will. Although we do not know how successful this application may be in the future, we had this strong burning confidence inside of us over the past 15 weeks. Despite the long meeting hours three times a week, we have gone a long way since week 1. We are sure that this application will be succeed, it is just a matter of time.

Learnt the importance of technology fairs
Through BP’s tech fair, we realized that there are a lot of opportunities to collaborate with others who are interested our application. They may also provide other sources or contacts that can help us in our application. This is a great avenue for us to explore in the future.

Importance of Usability Testing
Testing has allowed us to know how to improve our application, and know what testers are looking out for. A clean UI, easy gestures and tutorial videos available will make it easier for them to use the application. We only made such improvements after we interacted with the testers and got their valuable feedback. The unguided UT has made it even more realistic- enabling us to know what are the issues people faced when they are alone and are using the application for the first time.


Individual Reflection

These are our group individual reflections:

Kiwie Reflection Alex Reflection
Bazinga - Kiwie.png
  • Know what I don’t know, need to know and whom I can find out from
  • Thank you SIS for IS481 – Gained so many skills outside lectures – Make it compulsory ;)
  • Cut down on talking, be succinct
Bazinga - Alex.png
  • Let the product do most of the talking
  • It’s all about creating the user experience, less about creating the product
  • Venturing into the unknown may be challenging, but that’s where all the potential is.


Bevan Reflection Joy Reflection
Bazinga - Bevan.png
  • Creating kinect-based tutorials is a whole new challenge but the journey was edifying
  • Ensuring usability for kinect application is something that requires a lot of observations and understanding how users move
  • Challenges faced and overcome to create a commercial-ready aapplication was thought-provoking and interesting


Bazinga - Joy.png
  • Dealing with uncertainties like scope changes and inclusion of beta testing
  • Learning how to estimate and allocate tasks to teammates based on their strengths
  • Learnt how to analyse and observe people’s behavior in detail so to pick up trends


Carmen Reflection
Bazinga - Carmen.png
  • Time Management – learnt the importance of good time coordination for this project
  • User Testing process – experienced and created a user test from scratch
  • Teamwork – good communication and collaboration is important in a team. I am glad that I have experienced working in a great and cohesive team