HeaderSIS.jpg

IS480 Team wiki: 2015T2 Period Finals

From IS480
Jump to navigation Jump to search
Phome.png Home Poverview.png Project Overview Pmanagement.png Project Management Pdoc.png Documentation Pteam.png The Team
Mid Term Wiki

Powerpoint Slides

Please find our mid terms presentation slides here.

Project Progress Summary

Current Iteration: 10 (13/04/15 - 24/04/15)

  • Overall Project Progress: approx 90%
  • Currently performed 2 User Tests
  • In the midst of attaining approval from app store

Project Highlights:

  • Performed user test 2
  • Uploaded app to app store for vetting 3 times

Difficulties Faced

  • Uploading our app the the Apple app store required our app to comply to many various rules. As a result, we failed on 3 attempts.
  • Duration of vetting by Apple takes approximately 1.5 weeks each time we uploaded our app to the app store.
  • <zach calendar>

Project Management

Milestone schedule

MidTerms
Milestone Schedule v4.png
Finals
Milestone Schedule v6.png

Timelines

Planned
Planned Timeline.png

Actual
Actual Timeline.png

Project Schedule (Plan Vs Actual):

Iterations Planned Actual Comments
1 2 Sep 2014 - 3 Oct 2014 3 Sep 2014 - 9 Oct 2014 -
2 6 Oct 2014 - 5 Nov 2014 6 Oct 2014 - 5 Nov 2014 -
3 10 Nov 2014 - 5 Dec 2014 10 Nov 2014 - 5 Dec 2014 -
4 8 Dec 2014 - 9 Jan 2015 8 Dec 2014 - 11 Jan 2015 -
5 12 Jan 2015 - 23-Jan 2015 12 Jan 2015 - 13 Feb 2015 Delay due to complexity in building calendar module
6 26 Jan 2015 - 6 Feb 2015 26 Jan 2015 - 6 Feb 2015 Reduced scope for Profile development to focus on completing calendar
7 09 Feb 2015 - 20 Feb 2015 15 Jan 2015 - 22 Feb 2015 Used buffer time to catch up on functionality builds
8 23 Feb 2015 - 6 Mar 2015 23 Feb 2015 - 13 Mar 2015 -
9 9 Mar 2015 - 20 Mar 2015 13 Mar 2015 - 10 Apr 2015 Delay due to Calendar Module
10 Apr 2015 - Apr 2015 Apr 2015 - Apr 2015


Schedule Metrics

Schedule Metrics Iter9.png

Iteration 8:

  • Delay caused in finishing build of calendar in order to upload to app store
  • Delay due to rectifying changes from comments during Mid Terms, integration issues


  • Iteration 9:
  • Delays caused by issues that require rectification
  • Code clean-up to continue in iteration 10

Bug Metrics

Project Risks

Technical Complexity

Swift
Swift.png
Swift is a new language for building iOS applications. We chose to build in Swift to keep up with new trends. However, learning and developing in Swift pose a challenge due to the limited resources available.



Keyboard Algorithm
During the development process, we realised that at some of the views, the keyboard will cover some of the text entries. This will be especially true for iPhone 4S because of the different aspect ratio (iPhone 4S uses 3:2 while iPhone 5 onwards use 16:9). In order to mitigate this problem, instead of just removing the development entirely for iPhone 4S, we developed an algorithm to allow the top of the keyboard to reach the bottom of the text field.

The process in developing the algorithm:

  • Find the height of the screen.
  • As the keyboard is defaulted, there is no way to change the animation of the keyboard, as such, the only way is to shift the background.
  • As such, the amount to shift depends on a key ratio.
  • To calculate the key ratio, we have to conduct the following mathematical study of the different screen sizes

KeyBoardAlgo.png
To calculate the amount to be deferred, the universal formula that we derived is Screen Height/The y-coordinate of the active text field. After translating the algorithm to codes:
Keyboard algo.png


Period Forecast Algorithm

  • To forecast when is the next period, using the most recent period data will be most appropriate.
  • We used a simple weighted moving average formula to forecast the next period
  • The formula uses the 3 most recent period data, the most recent one has a weight of 0.7, second most recent one has a weight of 0.2 and the 3rd most recent one has a weight of 0.1
  • Our algorithm also removes all the outliers within the data. In this case, the outliers are cycle lengths which are <25 and >40

Forecast algo.png

Cycle Stage Algorithm

  • To know which cycle stage the user is currently in, we need a algorithm to be able to calculate. The algorithm is explained using the table below, accompanied by 2 scenarios

Cycle stage algo.JPG

Auto Layout feature

  • Designing for different screen sizes poses a great challenge to all mobile developers. In iOS, we are required to use the 'Auto Layout' feature which uses 'Constraints' to position the various elements to fit different screen sizes.
  • Unlike a web platform, we are unable to specify the height for a particular element to be for example 50% of the screen. Therefore, we need to create our own grid system, which is customized for different views of the application
  • To create a proper grid in a view, we have to use constraints to set it in the way we want it to be. After which we can then put in our elements.
  • The picture below shows a rough guide on how to define the grid, putting in the elements after that, as well as the constraints that we need to create in order to create the view.

Autolayout.png

Reflection

Team Reflection:

As Swift is a very new language, the team had a tough time trying to find the proper resources to learn from and to find out the 'right' practices. In order to fully understand the code and framework, the team took an entire winter break to learn more about Swift. Two of the more reliable sources that the team was studying from is provided by Stanford University and Apple's Developer Guide.

Gabriel Reflection:

  • Learned the importance of understanding technical tasks and planning according to its complexity
  • Have a better gauge of how long to plan for various activities for a more accurate schedule
  • Had a first hand experience of the effectiveness of managing stakeholder and changes through formal means

Teng Yu Reflection:

  • It is extremely important to plan, even though nothing goes according to plans.
  • As a team, when problems kick in, we need to ensure that the mitigation plans kick in and someone will be there to cover for the other member. There is no such thing as “this is not my job”.
  • Code as though the users know how to code.

Terence Reflection:

  • In a project with a huge scope such as IS480, it is equally important to pay attention to the larger picture such as project management on top of the smaller tasks
  • Designing an iOS app possess a different challenge compared to a web application. In particular, designing for different screen sizes and managing the huge amount of interactions between the user and the application

Zachery Reflection:

  • Coding in both Swift and Objective C and bridging both languages together
  • Understand and learn more about the Cocoa Touch Framework

Zhizhong Reflection:

  • Always be ready for changes and bugs because no application is perfect. There will always be room for improvements
  • Though documenting is tedious, it is essential to ensure that the team stays on track and that functionalities are aligned with the client’s requirements
  • Be critical and constructive. That is the only way to improve