HeaderSIS.jpg

WRESSENCE Midterm Wiki Page

From IS480
Revision as of 08:10, 23 February 2012 by Yihui.lee.2009 (talk | contribs)
Jump to navigation Jump to search

Back to WRESSENCE PROJECT PROGRESS PAGE

Team WRESSENCE
Project Progress Summary


Progress Description


Our team is progressing quite slowly due to the high complexity of our web-based calendar application. We have been facing difficulties in conceptualize the processing logic of a calendar as there are several factors to be considered. One of the major issues faced will be the rendering of our calendar which has resulted in us having to reschedule the development of some features.

Up till now, we have got a working calendar with the basic functionalities as well as the location-based features out. Moreover, we have also placed our web application under stress test in order to test the stability.


Project Highlights


  • After facing some major difficulties in using plug in for building our web-based calendar, we have decided to build our own calendar from the scratch.
  • We have made a major change to the architecture of our web application after considering the future scalability and complexity of the web application
  • We have presented a simple prototype of our web application to several developers to showcase the usage of new technology in developing this project
  • The amount of major bugs that we have encountered so far is more than we have expected
  • The team has spent a much longer time in developing the basic of our calendar than planned which resulted in us having delayed task completions



Team WRESSENCE
Project Management


Project Status

Features Status
Account Registration Completed
Account Login & Logout Completed
Events Creation Completed
Edit Events Completed
Events Deletion Completed
View Event Completed
Venue Suggestion 80% Completed
Write Venue Reviews 90% Completed
Read Reviews 90% Completed
Edit Profiles 90% Completed
Social Media Platforms Posting Not Started
Reminder for Upcoming Events Not Started
Synchronization of Different Calendar Platforms Not Started
Public Feeds & Events Not Started
Import Birthdays Not Started
Quick-Add Event Not Started


Project Metrics

The Schedule Graph
Metric Type Link
Schedule Metric Detailed Summary
Bug Metric Detailed Summary


Risk Analysis

Project Management Risks
Risk Rating Risk Description Impact Level Likelihood of Occurrence Mitigation Strategy Impact of Strategy
A Unable to complete all the defined additional functionalities in time High High
  • Development team to set clear target in order to complete tasks on a daily basis
  • Re-assignment of manpower to tasks that are delayed
  • Prioritize functionalities to drop those with low priortization when necessary
  • Team members may need to compromise their time spent on other work for FYP
  • Tasks completion on a daily basis are easier to track
  • Coding tasks can be done in a more systematic way with prioritization
  • Duration of delay can be shortened


Technical Risks
Risk Rating Risk Description Impact Level Likelihood of Occurrence Mitigation Strategy Impact of Strategy
A Inexperience in making architecture decisions that is sustainable High High
  • Pair team members up to research on architecture requirements and aspects pertaining to our features
  • Carefully conceptualize architecture as a team before development of each feature to consider all possible constraints
  • Additional time will need to be used on doing research
  • The possibilities of having to make huge changes to the architecture for before developing each new features is minimized
  • The sustainability and quality of architecture is improved


Technical Complexity

    1. Handling different browser compatibilities
      • JavaScript event object model is differently supported in different browsers. Different versions of dedicated codes are required to achieve one functionality.
      • Myo1.JPG
      • Nested functions are not supported in browsers like Mozilla Firefox, adding extra complexities in debugging process when we were quite inexperienced.
    2. Client side event handling
      • Unnecessary event bubbling propagates events such as mouse clicks to all the elements lying under the mouse, adding more difficulty for us to accurately identify the intended html element below.
      • To access controls from C# code behind, ASP.Net requires us to use ASP.Net controls which make form submissions mandatory and user experience intermittent. To circumvent the issue, we use page methods and web service.
      • Myo2.JPG
    3. Dependence on external services
      • Facebook keeps changing its API and client-side errors occur at times out of nowhere, making debugging process difficult.
      • Myo3.jpg
      • Facebook, Twitter & Google login apis create separate pop-up windows that browsers prevent by default, making user experience not as smooth which is out of our control.
      • Myo4.jpg
      • Functionalities offered by external services add UI elements and controls dynamically during page load, and change properties at will during run time, making us difficult and sometimes impossible to track them and apply our own properties to them to suit our UI.
      • Myo5.jpg
      • External web services return JSON/XML data in inconsistent formats having certain nodes one time and not including them in the next service call. For example, Google Maps API returns phone number for certain locations only.
    4. Server side linkages using Ajax and PageMethods
      • Streamlining web-based calendar means reducing page refreshs. The solution is to retrieve data from server side using Page Methods and Ajax.
      • Our UI side requires systematic breakdown of pages using master page feature of ASP.Net. However, master pages do not support Page Methods. To resolve the issue, we had to use Base Page feature of ASP.Net.
      • Ajax methods and web service could not handle the speed of user consecutive commands, especially when server is overloaded and we had to use try/catch methods to contain null errors.
    5. Working with external APIs for social media login
      • At first, we faced a steep learning curve in understanding how to implement external APIs for our social media logins but we managed to grasp the concepts quickly. These were the APIs that were used:
        • Facebook Login: Facebook Graph API (with OAuth 2.0 for authentication and authorization)
        • Twitter Login: Twitter Platform REST API (with Oauth 2.0 for authentication and authorization)
        • Google Login: Google API (with Oauth 2.0 for authentication and authorization)
      • For every social media login method,  OAuth 2.0 authentication was used. There were always 3 steps involved in the OAuth 2.0 process:
        • user authentication
          • User authentication ensures that our users are who they say they are.
        • app authorization
          • App authorization ensures that the user knows exactly what data and capabilities they are providing to Wressence app.
        • app authentication.
          • App authentication ensures that the user is giving their information to your app and not someone else.
          • This is a screenshot of the javascript we used to performed oAuth2.0 authentication
          • John1.JPG
          • This is a screenshot of the ASP.NET codebehind to perform oAuth2.0 authentication for Facebook Login
          • John 2.JPG
      • Once these steps are complete, a user access token is issued that enables Wressence to access the user's information and take actions on their behalf.
Team WRESSENCE
Product Quality


Deliverables Status

The Quality


Deployment

A working copy of our Wressence web-based calendar has already been deployed successfully onto our server.

Deployment


Testing


Our team had done first round of User Acceptance Test with close to 50 test users. The web application is deployed onto the our server and put under stress test. This can allow us to better understand how our web application will actually perform under realistic environment.

UAT

View summary of our User Acceptance Test 1 here



Team WRESSENCE
Reflections


Yi Hui

I have always thought being a project manager is all about managing my team in terms of ensuring allocated tasks are completed on time. However, this FYP experience has given me a new perspective towards this important role.


Other than keeping track of schedule, one crucial role of project manager that I realized through this FYP is to manage the different expectations of each team members within the team. When differences in expectations are not properly handled, it can easily cause conflicts within the team which was what happened to our team previously. Thus, I have learnt the importance of being firm to set common standards for all to follow and ensure there is an opportunity for each of them to voice any unhappiness in order to better align their expectations.


So far, it has been a great experience being a project manager in this team!


Johnathan

Since day one, I have been very excited about learning acquiring new technical skills as well as management skills through this BIG project. As far as I am concerned, I always believe in self learning in which I will find answers to my doubt when it comes to learning new things. This was how I code using the new programming language adopted for your FYP in the initial stage. However, after having several knowledge sharing sessions with the team to discuss technical issues, I have come to realize that it is much more efficient when someone with that particular technical knowledge can bring about enlightenment for me much more effective than learning myself.


Thus, I strongly think that it is really essential for everyone in a team to share their skills and knowledge to bring about greater efficiency in project development as well as increasing the motivation of team members since the learning culture is a good one.


Darren

Taking up the role of system architect in this team has been a challenging task for me. I have met with problems in regards to attain common understanding among the development team of the architecture I proposed. Each of our team members has their own understanding in developing their specific system parts and this caused us to have serious issue when integrating, Thus, one key takeaway is that ensuring common understanding of what is being developed and how it will be developed will determine the success of a project.


Furthermore, having this common understanding will minimize the possibilities to do unnecessary work.


Myo

My passion for IT stemmed from curiosity and spontaneity in that I attribute my operational style for IT-related projects to be that of ‘Hopper’ and ‘Perfectionist Plus’ according to Sunny Schlenger and Roberta Roesch’s book “How to be organized in spite of yourself”. I usually involve myself in deciding/discovering which technologies to be used and figuring out how to achieve the desired result. Although a certain level of planning is involved, I never tire myself down with planning in details. Instead, I let the machine handle what would work and only take care of what would not. This operational style has been serving me well for a number of projects I have done, most of which I handled alone and some, with a few team members.

However, when I joined WRESSENCE, I realized this operational style did not fit in due to the many components involved in calendaring which are complex and fragile by means of programming logic, requiring comprehensive and well-thought-through architectural design that covers every little possibility and loophole. Once, the product went through serious bugs that one way or the other, could be attributed largely to my experimental way of handling the codes.

I was very appreciative of the fact that our team members guided each other along and pointed me out what they thought would be improvements I could make in context of this project. I took in the comments and changed for the better. Now, I am finding that the work I deliver is more reliable and developer friendly. I took a lot of learning points from my team members in working under defined sets of protocols that other members can relate to as well. That way, we eliminated a lot of unnecessary debugging and integration issues and made our working environment very efficient.

This is only even up to the mid-term and we, as a team, have enriched ourselves with valuable experiences from various areas. As a team member, I really look forward to another half of rewarding experiences and fun doing FYP. All the best, Team WRESSENCE!


Xue Ling

Being the Visual Developer in this team has enabled me to do what I like. I am a visual person and I like to see beautiful things. Thus, having the opportunity to design and beautify the user interfaces of our system in this project is totally my thing to start with.


Through the experience of building the designs of user interfaces in the past weeks, I have learnt to appreciate beautiful things more as I know it is not easy to attain it. Behind the beautiful product is the hard work and the considerations being put in to make things work. This is what I would not have understand if I were not given the chance to take up this role. I must say, it is really a good experience for me to learn how to balance expectations as well as constraints.