IS480 Team wiki: 2012T2 Succinq Final Wiki

From IS480
Jump to navigation Jump to search
Succinq team banner.png
Final-Term Wiki Page

Project Progress Summary

Immediate Deliverables

  • Download the iOS Version through your mobile device: http://tinyurl.com/bvcfjnx, or search for "Humaneity" in the iTunes App Store on your iPhone.

  • Download the Android Version from Google Play through your mobile device: http://tinyurl.com/bquc2jb, or search for "Humaneity" in the Google Play Store on your Android device.

  • Download our Final presentation slides here!


Timeline succinq.png

Iteration Mobile Functionalities Backend/Admin Portal Functionalities Status
1 1. Integrating YouTube Playback with Titanium for Videos
2. Splash Screen Design
1. Setting up database and design user interface for backend portal
2. Create Articles Function
3. JSON implementation of REST service for articles
2 1. Displaying article feed
2. Integrating JSON article REST service
3. Request for selected article
1. Uploading and retrieving images
2. Delete and Update Articles Function in database
3 1. Facebook Login Function
2. Facebook Sharing Function
1. Create users table in database
2. Save users' facebook details in database
4 Exam Period Exam Period Exam Period
5 1. Design of commenting interface for articles
2. Post comments to database
3. Calling and display comments via web service
1. Create comments table in database
2. Save posted comments in database
3. Delete comments from database
6 1. Design of Quotes Interface
2. Take picture function via phone camera API
3. Submit Quotes to database(image and text)
4. Retrieve quotes via web service
5. Format quotes metadata for facebook sharing (image and text)
6. Commenting of quotes
1. Create quotes table in database
2. Manage quotes and quotes comments function (CRUD)
3. Integrating quotes function with application
4. JSON quotes feed
7 1. Heuristics Changes and Functional Modifications
2. Design interface for displaying of projects (Gives function)
3. Display project via web service
4. Post volunteer's details to database
1. Heuristics Changes and Functional Modifications
2. Create gives table in database.
3. Manage projects function (CRUD)
4. JSON project feed
5. Save volunteer's details to database
8 1. UT changes
2. Create Payment Mechanism (Paypal)
2. UT changes
2. Backend Portal functional improvements
9 1. Software Testing fixes 1. Fix Caching images issue
2. IPN Listener Integration
3. Save donations information in database
4. Create user demographics pie chart widget
10 1. Create Travel form
2. Create Travel details page
3. Post Travel form inputs to database
1. Create Travel details table in database
2. Create Travel form inputs table in database (CRUD)
3. Manage Travel details (CRUD)
4. Create JSON web service to display feed
5. Save Travel form inputs
Mission accomplished.jpg
11 1. Create link to Magazine Subscription form
2. Create Magazine Subscription form
3. Flagging Content (Quotes, Comments)
4. Ammado Integration 5. Implement Google Analytics tracking (content & visitors)
1. Create Flagging Mechanism for Comments & Quotes
2. Manage Flagging records (Tracking & Delete)
3. Ammado Query Listener
4. Control Panel/Options Widget
Mission accomplished.jpg
12 1. Voices Function
2. Post video to admin portal
3. Signature Mechanism
4. Google Analytics tracking (events)
1. Manage Voices Topics (CRUD)
2. Publish video to youtube
3. Google Analytics Integration
4. Widget Improvements
Mission accomplished.jpg

Project Highlights

S/N Issue Description Mitigation Plan
1 The rewards scheme functionality has been changed to Voice for a Cause functionality, where the user is able to sign in a petition for a cause put up by Humaneity. The user can choose to support or oppose the cause through a message or video. The team feels that the difficulty level for both functions are similar, and thus has replaced the rewards scheme functionality which was to be completed in iteration 10 to the Voice for a Cause functionality in the schedule. Voices function was developed in iteration 12 as appose to iteration 10 as the team was still gathering requirements about the functionality.
2 The volunteer and the donate function has been combined into one feature called Gives Back. The volunteer function and the donate function was split between 2 iterations, the volunteer function in Iteration 7 and the donate function in Iteration 8 respectively, and the Gives Back function was completed on time.
3 Flagging of Comments, Qutoes & Quotes Comments IOS app store requires user contents to have flagging capabilities. Scheduled task in iteration 11 which had significantly less task as previously scheduled.
4 Implementation of a second donation platform - Ammado Research and seek technological support from the people at ammado. Find workarounds so that integration would be seemless and less time consuming. Scheduled task in iteration 11 which had significantly less task as previously scheduled
5 Changed of focus from User Testing to Google Analytics Focused on google analytics instead of user testing because after 3 user tests, the team received similar results which were not significant enough for changes to take place. Replaced tasks from user testing to google analytics implementation/integration.

Project Management

Project Status


Feature Status Comments
Articles 100% developed and deployed Mobile and Admin Portal features completed
Videos 100% developed and deployed High Quality YouTube videos available for Android
Gives 100% developed and deployed Now supporting both PayPal and Ammado, donation records synced with Admin Portal
Quotes 100% developed and deployed Flagging of Quotes and Comments to comply with App Store requirements
Voice for a Cause 100% developed and deployed Video upload from device to Admin Portal, upload from Admin Portal to YouTube & playback of video responses
Travel 100% developed and deployed Manage travel applicants from Admin Portal
Magazine Subscription 100% developed and deployed Function can be switched on or off from the Admin Portal
Google Analytics 100% developed and deployed Tracking content and events on device, analyse traffic demographics and app content viewership from Admin Portal
Submit Feedback 100% developed and deployed Give device specific feedback, view feedback in Admin Portal

Project Schedule (Planned VS. Actual)

For a more comprehensive understanding of our project schedule, please download Project Schedule.

Iteration Tasks Planned Actual Comments
7 Develop Gives back function 7 Jan 2013 14 Jan 2013 Rescheduled Gives back function in place of heuristic evaluation modifications
8 Integrate PayPal module 14 Jan 2013 31 Jan 2013 Moved integration of PayPal module from Iteration 7 to Iteration 8 because preparations for User Test 1 took longer than expected
8 Backend Improvements to articles function and data analytics NA 28 Jan 2013 Since the Paypal module function needed more testing and cannot integrate with the backend yet, the team inserted improvement tasks that was recommended by the client (refer to additional feature metric).
9 IPN Listener integration with backend function 28 Jan 2013 7 Feb 2013 This task had to be rescheduled because software testing for the PayPal module did not meet the expected result
10 Voices for a cause 26 Feb 2013 NA There is a change in user requirements and Voices for a cause has replaced the Rewards Scheme functionality. The function has been moved (reason for move is due to the client's current business situation) from Iteration 9 to Iteration 10
11 Flagging of Content NA 4 Mar 2013 IOS app store requires user contents to have flagging capabilities. Inserted task in remaining iterations that had the least task
12 Travel Function 18 Mar 2013 Iteration 10 - 26 Feb 2013 Still collecting user requirements about voices function. Push forward development of travel function

The rest of the tasks progressed smoothly as per planned.

Project Metrics

Schedule Metric Score
Schedulemetric succinq.jpg

The overall team’s schedule metric score over the past 9 iterations has been quite consistent maintaining within the healthy range of between 0.9 and 1.1. We have so far managed to meet most of individual tasks deadlines as well as allocating tasks for testing and functional improvements.

Schedule Highlights

Iteration Description/Mitigation
5 We had a few tasks that were delayed such as system integration of articles comments in iteration 5. However, the delay of tasks did not affect the schedule substantially as each iteration, there is a 2 days of buffer time in the event where a delay of tasks are present. With the help of the buffer days we were still able to complete the scheduled tasks within that iteration.
7 & 9 The giving back project feature was delayed in Iteration 7 due to the preparation of our first User test 1 also conducted in Iteration 7. Similarly, it did not affect the schedule much as we had 2 days of buffer time which still enabled us to complete our tasks on schedule. As such, the team learnt from this experience and so in Iteration 9, and began preparing for User test 2 in advance as well as allocating one specific resource to handle all User test 2 administrative work. As compared to Iteration 7 where all of the resources were activated, it was a much more efficient method. With the use of this mitigation strategy, we were able to improve the process of managing the user test as well as assigning the right amount of resources to avoid overloading on each member. As a result, the iterative score in Iteration 9 improved significantly as compared to Iteration 7.
11 Iteration 11 was task intensive as new features of flagging comments (Quotes & Comments) and ammado integration was being developed. These tasks were new in nature and had not be done before which explains the slight spike/delay in the iteration score.


Bug Metric Score

Bug Highlights

Iteration Description/Mitigation
6 There is a substantial increase in the number of bugs in iteration 6 as we conducted our first Heuristics evaluation. Bug fixing tasks were scheduled in Iteration 7 to resolve all bugs. All 6 bugs found in this iteration were resolved in Iteration 7.
7 The number of bugs caught remained the same in Iteration 7 as we conducted our first user test 1. Bug fixing tasks were scheduled in Iteration 8 to resolve all bugs. All bugs found in this iteration were resolved in Iteration 8.
8 In Iteration 8, 8 bugs were caught as we conducted more rigorous software testing with more functionalities completed. Bug fixing tasks were scheduled in Iteration 9 to resolve all bugs. All bugs found in this iteration were resolved in Iteration 9.
9 In Iteration 9, the number of bugs caught dropped significantly. This could be due to the extensive testing that we carried out for the past 3 iterations. We conducted a second user test 2 as well as another software test in preparation for deployment to the app store. Bug fixing tasks were scheduled in Iteration 10 (this iteration) to resolve all bugs. All Bugs found in this iteration were resolved in iteration 10
10, 11 & 12 In iteration 10,11 & 12, we caught a steady amount of bugs. Most of these bugs were of class A and not critical in nature. We also conducted software testing for each iteration


Quality of Product

Final Deliverables

Stage Specification Modules
Project Management Methodology
Meeting Minutes
Requirements User Interface Mockups
User Interface Storyboard
Analysis Use Case Diagram
Design ER Diagram
Architecture Diagram
Deployment Diagram
Testing Software Testing
User Testing


  • Staging & Development Environment: The application is compatible for Android Versions from 2.2 to 4.2.1. iOS minimum version compatibility is 4.3 to 6.1.2
  • Database: It is currently in MySQL which is hosted on Humaneity's Server.
  • Web Services: Facebook, YouTube, PayPal, Ammado RESTFUL webservices
  • Web Links: View our Deployment Diagram Here!

Technical Complexity and Challenges

Task Description
YouTube API Integration What is this feature about?

The Global Forum feature allows users to upload videos of their views on a certain raging topic of concern. Users will upload their videos via the mobile application and then it would be stored at the Administrative Portal to await vetting by the Humaneity Administrator. Once approved, the video would be automatically uploaded to the YouTube channel, which ensures that the Humaneity database would not need to store the videos. In addition, the team is able to stream high quality MP4 videos for the Android section for the videos section, which is mentioned during the Mid-Term presentation.

How is it complex or challenging?
The Voices Global Forum was implemented to allow users to actively participate and discuss the latest humanitarian and social responsibility topics. In order to accommodate a wide pool of video responses, videos uploaded from the user's device would have to be uploaded to YouTube and removed from Humaneity's server in order to maximise system storage capacity. The Zend framework was chosen as it allowed for seamless communication with Google's APIs including YouTube, instead of using PHP curl calls to communicate with YouTube. The end result is a cleaner and more maintainable code base that has configurable access to YouTube and other Google APIs.

Google Analytics Integration What is this feature about?

Google Analytics allows the Humaneity team to track page views of the mobile application and as well as track user behaviour in terms of scrolling or navigation. The team can also analyse interesting information such as user demographics, the differences in usage between the iOS and the Android applications etc. With the help of Google Analytics, they could integrate all these information with the Administrative Portal as a dashboard for better viewing and analysis.

How is it complex or challenging?
The mobile version of Google Analytics was not a viable option to implement due to the use of the Titanium framework which is based on JavaScript. Instead we have used an open-source JavaScript module that allows Titanium applications to utilise the Web version of Google Analytics within iOS and Android applications. Configuration had to be made so that the mobile applications could simulate web pages. For example, in the Android app, a view (e.g. StoriesView) would represent a single page in a website, while on iOS, a window (StoriesWindow) would be tracked instead. Custom events were also configured to track in-app user behaviour. WIth the Zend framework, it was also possible to access the Google Analytics data collected from the admin portal and to display the desired metrics on the portal's dashboard.

Full server backup for Admin Portal What is this feature about?

In the event of a server crash and prevent losing all critical information, the team created a function for the Humaneity Administrator to be able to constantly save information of the entire Administrative portal. Be it the SQL database, source code, and all images, stories, videos etc zipped and downloaded locally as backup. It would be an easy migration to the new server with instructions provided on how to deploy the portal on a word document. Minimal configuration is required on the Humaneity Administrator's end to re-deploy the portal.

How is it complex or challenging?
This feature had to be carefully planned and implemented in order to ensure that the system is not affected by the snapshot and SQL extraction. The solution features a custom PHP script that also zips all of the admin portal's resources into a single zip file while maintaining the directory structure of the application.

Multiple Donation Options What is this feature about?

Due to a change in business requirements, the client hoped that our application would be able support Ammado (Another type of payment gateway) on top of PayPal for our donation functions.

How is it complex or challenging?
Unlike PayPal, it was more complicated in trying to integrate Ammado for both our mobile application and as well as our Administrative Portal. There is no mobile compatible plugin or module that we could utilise for Titanium and there is no instant payment notification mechanism for us to record the donation transaction in our Administrative Portal. As a result, the team has to custom-build a work around solution with Ammado RESTFul APIs in order to make it work. The team also used HTTP querying of the Ammado Payment status to simulate the instant payment notification, so that payment information could be updated in the Administrative Portal. As of now, for both PayPal and Ammado Payment Gateways, it is now standardised to be a single selection for the donation amounts for both Android and iOS. For PayPal in Android however, we still utilised the in-app PayPal module available for Titanium and for iOS, it remained as a browser based donation method due to Apple's guidelines. For Ammado, it is a browser based donation method for both platforms.

PayPal Integration (from Mid Term) What is this feature about?

This feature is for users to donate their desired amount to fund the projects they chose. The team needed to manage the donation process across the backend, administrative portal, iOS and Android systems. In this case, Paypal's IPN(Instant Payment Notification) is required for server-to-server communication of PayPal donation transactions.

How is it complex or challenging?
The team then created a server-side IPN solution for our backend and administrative portal. It was developed in PHP and hosted on Humaneity's server. It was a multi-stage process that firstly, reads the PayPal payment data posted to the server. It then posts the data to PayPal for validation and finally processing and storing validated IPN data in the backend. The stored donation data can then be used to generate donation statistics on the administrative portal.

In addition, there are differences in trying to integrate PayPal with the Android and iOS platforms. For Android, donations can be made in-app, via the PayPal Titanium module. iOS however, donations must be made via an external call to Safari, i.e. cannot be made in-app due to Appstore's app guidlines.

High Quality YouTube Video Playback on Android (from Mid Term) What is this feature about?

Previously due to the inability to embed YouTube HTML5 player in Titanium for Android, we could only use RTSP(Real Time Streaming protocol) to stream 3gp (video file format) from YouTube API. As such, the quality of the video could only be 240p 3gp format, which was very pixelated. On top of that, there is a blocking of RTSP on some networks, for eg. WLAN-SMU.

How is it complex or challenging?
Our developer came out a solution which was to stream MP4 from a generated URI. We would first get a temporary download of get_video_info text file of the chosen video. We would then send send the text data to custom node.js webservice to generate the URI of the HQ mp4. Finally, we would use Titanium's built in video player to stream the video in-app. As such, both problems in terms of quality and the blocking of RTSP issue were solved.

Google Charts API Integration (from Mid Term) What is this feature about?

By integrating the Google Charts API with our administrative portal, we are able to generate user statistics in graphical representation for viewing.

How is it complex or challenging?
We initially had difficulty integrating data from our database with Google Charts as there is no clear solution to read data dynamically. As such, we custom coded a solution required for dynamic statistical reporting. It involved an Asynchronous querying of data using AJAX, reformat the queried data into a JSON so as to be compatible with the Google Charts API.

Quotes Submission (from Mid Term) What is this feature about?

Submission of quotes onto the mobile application either by using an existing picture from the phone's gallery or taking a new picture with the phone's camera. On top of that, user will also be able to put some text over the image before uploading on to the mobile application's server. As with all pictures, they come in portrait or landscape orientation, the complexity here is to retrieve the orientation of the picture so that we can correctly display the picture in its aspect ratio.

How is it complex or challenging?
Capturing of the aspect ratio of the picture was complex, Titanium handles images by using an image blob and we were not able to retrieve the blob's attributes and properties. With much effort, we discovered the work around to be - assign the blob to display on an image view, the image view will assume the height and width attributes of the blob. Only having done this can we retrieve the attributes of the image so that we can display the images in their original orientation and accurate aspect ratio.


Heuristics Software Testing and Results (Mobile and Administration Portal) User Test

Heuristics Evaluation

Area Details
  • Functional prototype given to heuristics experts to critique and give usability feedback
  • Evaluation is unstructured and unguided
  • Assistance given to evaluators by team members when required
  • Jakob Nielsen's 10 Heuristics
  • 3 SIS Evaluators
  • 3 External Evaluators (technical advisers with Humaneity)
  • SIS Building
  • External location (Red Dot Cafe)
  • Inconsistency of navigation (swiping vs. scrolling)
  • Users do not know how to proceed once a view is displayed
  • Quotes feature is confusing

User Test 1

Area Details
  • Laboratory usability testing
  • Test script given to participants
  • Participants to give subjective feedback after all tasks completed
  • Observations recorded by team member conducting the test
  • Ease of navigation and intuitiveness of buttons
  • Subjective feedback from users
  • Observation by team members
  • 19 student participants from SIS
  • SMU SIS Seminar Room
  • Android
    (a) Swiping up and down for quotes does not seem intuitive to users
    (b) Users cant seem to find the comments functions due to its location
  • iOS
    (a) For quotes, users not sure where to look for camera function button
    (b) Users seemed to have clicked buttons but no response from system (Buttons too small)

User Test 2

Area Details
  • Unchanged from UT 1
  • Unchanged from UT 1
  • 12 student participants from SIS
  • SMU SIS Seminar Room
  • Android
    (a) Some users did not know how to return to the previous menu (Usage of back button)
    (b) Some users did not know that they could swipe from screen to screen rather clicking on tabs
  • iOS
    (a) Users never clicked the preview button to view the image they were uploading for quotes
    (b) Some users tried to scroll up and rather from side to side for the articles, quotes and give back

User Test 3

Area Details
  • Laboratory testing similar to UT 1 and 2
  • Timing of tasks to validate changes from previous UTs
  • Stopwatch timing of time taken to complete each predefined task
  • Subjective feedback from participants
  • Observations taken by team member conducting the test
  • 18 SMU students
  • Mix of SIS and non-SIS students
  • SMU Seminar Room
  • Android: no major issues with UI, minor navigational issues
  • iOS: accessing Travel was not intuitive

UI Change Validation with Google Analytics

Area Details
  • Tracking of in-app user behaviour with the aid of Google Analytics event tracking to validate changes made
  • Swipe and click events with specific labels fired to Google Analytics
  • Collected data analysed using Google Analytics Dashboard
  • Number of specific types of events collected
  • Ratio of expected to unexpected events
  • Users who have downloaded the application
  • Not relevant to the outcome of the exercise
  • Observations from previous user tests were validated
  • Android users used a combination of physical device button and icon touches, therefore app needed to cater for both

Learning Outcomes

Team Member Reflections
Chevy This experience has taught me patience, perseverance and more importantly the camaraderie that my group mates and I share. I thoroughly enjoyed myself throughout the process and my group mates have certainly made my life a whole lot easier as project manager. I’m really proud to be part of this team/experience and am thankful to God who has placed me here.
Boon Liang Even though our client was not around to guide us most of the times, the team still must step up ourselves and ensure that we deliver a quality product and satisfy the business requirements. I was mainly in charge of testing for our application, and getting users to come and test our application without any incentive is a real pain. We needed a minimum number of testers in order to make our results significant enough to make any changes, and it was really difficult to co-ordinate everyone’s schedules. On a side note, it had been a long 14 weeks of development and many many weeks before of planning and prototyping etc. Finally, Team Succinq can finally heave a sigh of relief that WE ARE DONE!
Willis I identify each and every one of us as an integral role in making this project a success and that we fortify one another's role in the team. Roles changes over time from insignificant to crucial, but even the insignificant role cannot be missing. I recognise the efforts that each of us makes throughout my fyp journey as not one of them is redundant in making this an eventful journey.
Vijay From this FYP, I leave with 3 important lessons. Firstly, things don’t go always to plan. Many a time during our project we would plan for something and it would be pushed back due to unforeseen circumstances. Secondly, the project manager plays a essential role. Without our PM’s guidance and constant push, we would not have got as far as we have today. Finally, team dynamics can decide whether you succeed or fail in whatever you set out to do.
Andrew I have learned that communication and mutual respect is essential in any team project. Without these, the project would have been a much heavier burden for all of us. Also, resourcefulness and creativity are required when faced with set-backs. Finally, it has been extremely satisfying to see the fruits of our labour, from conceptualisation to countless iterations and the successful deployment of the admin portal and mobile apps.

Overall Team Reflection

Team succinq.jpg