HeaderSIS.jpg

IS480 Team wiki: 2011T1 TheTalkies Final

From IS480
Jump to navigation Jump to search

Project Progress Summary

Main wiki page

Mid-term wiki page

Project Highlights:

Changes in Application

  • Synchronous to Asynchronous

This is a major change occurred in system architecture after midterm stage. When the application was first designed, the components and functions of the application had been set to work synchronously with each other due to the interdependence of the outcomes between them. This system design caused a lot of issues on the performance and usability of the application. So we decided to change it to work asynchronously without waiting for the results of other components. A lot of logical changes have been done and when the components are able to work asynchronously, there is a massive boost in performance as we expected.

Changes in Scope

  • Dropped Friend Stream Function

We dropped the function "Friend Stream" which we assigned as optional feature in our proposal. The reason is mainly due to the existence of serious performance issue in the application. The application's failure to run seamlessly during midterm period caused a setback in team progress. So we decided to drop the non-compulsory function "Friend Stream" to focus more on the quality attributes such as performance, reliability, etc.

  • Dropped Mobile Version Feature

We decided not to implement mobile version of our application which is assigned as optional feature in our proposal. One of the main reason is GermaniumWeb doesn't support mobile operation systems yet. Since our application's essence lies in integration of Twitter with 3D models of SMU, we decided not to continue on this feature to focus on improving quality of existing features.

Project Challenges:

  • Familiarizing with Germanium API and 3D Modelling

We don't have any experience regarding to 3D Modelling. We started the project early to have enough time to learn 3D Modelling ourselves. Moreover, we divided the team into 3 groups in the way that one group will learn 3D Modelling, one group learn GermaniumAPI and the other for Twitter. After every meeting, we learn from each other. This definitely help the team to have stronger bonding and accelerate with specialization. Moreover, we had a few times of consultation and hand-on learning from GermaniumWeb Office for both Germanium API and 3D Modelling.

  • Learning Twitter API and filtering results

Connection with Twitter using OAuth is not easy initially because it involves a lot of steps going back and forth from Twitter Server and client side and involving session keys. Once we can connect to Twitter server, it is easy to use RESTful API because of its comprehensive tutorials and documentations. However, it may return the false dataset for geo-location . So, we have to implement another layer of filtering for geo-location result set.

Project Achievements:

  • Experimental scheduling style other than which was taught in class

When we were scheduling our project, we tried to plan it in such a way that the coding of functional requirements could be finished as early as prior to midterm presentation. We pushed all the bug-fix and performance-tuning tasks of each function to the iterations in post-midterm period. This approach clearly helps us in preventing our team from using "Waterfall Process" involuntarily in which we might never re-visit or revise it again when we finished a feature. The agile methodology we used not only forces us to go over to the features we previously developed for bug-fixing and backward compatibility checking but also gives the stakeholders (sponsor and users) an overview idea of how each of the features works and interrelations between them.

Project Management

Project Schedule (Plan Vs Actual):

After consideration of feedback from mid-term presentations and UAT 1, we decided to focus on usability and quality of the application. So, we decided to drop Friend Stream feature which is default and redundant feature of Official Twitter application and mobile version of the application which has a few technical and time limitation to implement. Our previous sponsor left the company and we have to contact with new sponsor. However, new sponsor is happy with our application and progress. So, we don't really need to change the scope. After Iteraion 8, the status of our development is completed successfully.

Iteration Planned Actual Comments
-
  • Buffer Period: 21 Sept - 4 Oct (Week 8)
  • Buffer Period: 21 Sept - 4 Oct (Week 8)
    • Bug fixing from UAT 1
    • Improve from mid-term presentation feedback

Some members went for trips. But we work on bugs and feedback as much as possible.

6
  • Period: 4 Oct - 17 Oct
  • Features
    • Logging
    • Performance Tuning
    • UI Revamp
    • Modelling SOA building
    • Friend Stream
  • Period: 4 Oct - 17 Oct
  • Features
    • Logging (as planned)
    • Performance Tuning (as planned)
    • UI Revamp (as planned)
    • Modelling of SOA builing (as planned)
    • Bug fixing from UAT 1
    • Improve from mid-term presentation feedback

Dropped Friend stream feature.

7
  • Period: 18 Oct - 31 Oct
  • Features
    • UI Revamp
    • 3D Compilation
    • All-time users and trends
    • Mobile Interface
  • Period: 18 Oct - 31 Oct
  • Features
    • UI Revamp (as planned)
    • 3D Compilation (as planned)
    • All-time users and trends (as planned)

Dropped mobile interface.

8
  • Period: 1 Nov - 14 Nov
  • Feature
    • House keeping
    • Documentations
    • UAT 2
    • Bug fixing from UAT 2
  • Period: 1 Nov - 14 Nov
  • Feature
    • House keeping (as planned)
    • Documentations (as planned)
    • UAT 2 (as planned)
    • Bug fixing from UAT 2 (as planned)

Completed as planned.

Project Metrics:

Schedule Metric Details

Goal: To ensure that all the assigned tasks are finished on time. (Productivity Index >= 0)

Calculation for Productivity:

Schedule cal.png

Bugs Tracker Details

Goal:

  • To keep track of unsolved bugs
  • To ensure quality of the Web Application
  • To let the team knows which function has more bugs

Calculation for Severity Level:

Severity levl.png

Technical Complexity:

  • Creating dynamic placemarks on 3D Models
  • Gliding to respective placemarks
  • Using external API (GermaniumWeb and Twitter)
  • Developing simplified models of SMU

Quality of product

Project Deliverables:

Note: Documents in deliverables are submitted to our supervisor. If you are interested to take a look, please contact to our supervisor or our team members directly.

Stage Specification Modules
Project Management Meeting Minutes
  • Supervisor Meetings
  • Sponsor Meetings
  • Team Meetings
Metrics
  • Bug tracker
  • Schedule Metric (last sheet)
  • Schedule Metric Mitigation plan
Schedules Details schedules
Design Mock Up Screenshot folder
Design Screenshot folder
Development System Architecture System Architecture Diagram
3D Modelling Flow Modelling Flow Diagram
Testing Test plan Test Plan Instructions
UAT 1
  • UAT 1 Test questions
  • Initial Report
UAT 2
  • UAT 2 Test questions
  • Initial Report
Handover Manuals Developer's code organization manual
Code Hosted on Client's PHPFog server
Poster Low-res Poster

Quality:

Performance and Scalability

Although it is a web application, 3DSocializer does most of its functions at client side using client side scripting technology such as Javascript. So the major part of application will not burden much on the server resource which adds scalability in terms of server resources. However, it has a limited scalability on the number of tweets that it can handle in a period of time. The issue is identifiable when a large amount of tweet feeds are returned from twitter in a very short period of time, the application in user's browser will have some slow responses. This scalability issue is mainly due to processing in some resource intensive components such as 3D which is not easily solvable by the team.

Configurability

Some of the configurable parameters of the application are defined in an XML formatted config file.

Maintainability

A code organization guide is documented for easier maintainability of the source codes in the future.

Deployment:

Application has been deployed at 3DSocializer. Architecture Diagram can be downloaded here.

Testing:

We do testing with the test plan after every iteration. Found bugs are put into Bug Tracker. Assigned developers are required to solve those bugs before the provided deadline. If a bug doesn't affect other parts of application, we don't set the deadline for the bug. In that case, developer can focus on the assigned tasks for the current iteration.

We did first UAT before the mid-term presentation and second UAT before the final presentation. Second UAT is done before the at the beginning of the Iteration 8. We took feedback and solved the found bugs from UAT 2 in Iteration 8. Details of the test plan, UAT questions and results can be downloaded from above Deliverables section.

Reflection

Team Reflection:

  • We improved the following skills.
    • IT architecture, design and development skills
    • Project management skills
    • Learning to learn skills
    • Collaboration (or team) skills
    • Communication skills
  • We believe teamwork is the most important aspect of the project. So, next time, we would like to focus more on Teamwork and collaboration skills.

Individual Reflection:

" Let everyone involves in making the decisions and everyone will have sense of ownership and responsibility, for example LostAndFound Feature. This is the only way I can push all members to participate and contribute in every part of the application. Learning a new language and a new tool should never be underestimated. It takes more than 1 month to learn 3D modelling. Sharing of texture resources in 3D modelling needs a lot of coordination as they use the same map ID. There is always a risk when we decided to use external API such as Twitter and GermaniumAPI. No matter how popular the external API is, we need to plan for the cases external API downtime and failure to desired respond. "
~ Aung Myint Thein (Project Manager)

" It all started as a simple web application which we focused on integrating all the features together and working first. As the iterations went by and after every UAT, I, as a lead designer, got to learn a lot of things on usability of the application and making interactive to the users. For eg., firstly, we were just using a simple CSS and JQuery for the navigation and for the functions in our application. Then, we found out a new technology from Twitter called Twitter Bootstrap, which a CSS library for web designers and as a lead designer, I got to learn how to use a new technology to transform our application to a neater, nicer and more user-friendly application compared to early stage. Moreover, also as a programmer who got to work with Germanium API, I am lucky to learn a lot on working with a completely new API in which during the progress, I learnt so much on integrating tweets with 3D Buildings, customizing the EYE CONTROL of the 3D, creating placemarks on 3D and lastly creating the navigational controls for the complete 3D Building for the users which I learnt to make use of my designing skills together with 3D. To be honest, working with Germanium API was a big challenge for me as I got to learn on myself reading the API Documentation, looking at the interactive demos and live applications. However, because of our helpful sponsor and my teammates, I had this great chance to learn on working with and integrating different APIs and various technologies. "
~ Kyaw Moe Hein (Lead Designer)

" FYP is exactly the kind of course which has minimum teaching yet maximum learning. There was no guideline provided to us how to build an application; we were on our own and we had to make loads of planning and decisions. In the progress, we got many thing right but we also made a lot of mistakes and bad plans. As a system admin and architect of the project, one of the many things that I learned through mistake is that we should have at least abstract, if not detailed, architectural planning at the beginning of the project so that the flow of the codes would be correct which obviously was not our case. However, we could minimize the faults in the halfway through the project and corrected most of the architectural and logical problems. Architectural planning which would take care of both functional and non-functional attributes is as important as technologies used and project management in software development cycles. ‘Do architecture at the beginning and never stop improving it’ becomes one of the biggest things we have learned in this project. "
~ Soe Thet Aung (System Administrator and Architect)

" Having been working for around 6 months on this project, as a developer, I acquired the experience of the programming with Twitter API and learned how to make the product to be a real business-qualified product. Moreover, as our product is social-networking application, I learned that the users or customers have a variety of expectations on our products which are quite different from our team's opinions. So, I realized that in the real business world, to produce a quality product has to go through a lot of testings. Furthermore, I understood that talking management is easy but managing it practically is not as easy as I expected. Every member has numerous works to do apart from this project so stress management as team bonding/welfare is a very crucial thing."
~ Phyo Wint Wint Tun (Lead developer)

" Integration among different features using 2 APIs is an art of our application. Setting placemark on 3D Model is linked with other features, such as Timeline, Trend, LostnFound, and sometimes I need to make modifications in my module in order to have consistency. Whenever we have miscommunication issues, we try to be straightforward with each other and clarify the doubt. "
~ Thandar Tun (Database Administrator)

"How precision and attention to details matter, especially when it comes to drawing 3D model since we have to make sure every point we draw in floor plan has to have the same z-coordinate. Clear and concise communication is the key to effective collaboration and not being afraid to ask for help and ideas from team members is the key to manage a good project."
~ Khaing Pwint Wah (Chief Tester and PM's assistant)

"I am very impressed with the team’s
1. Focus. They knew what they wanted to achieve, and set out to do it.
2. Ability to get things done. In a real-world project, it is a given to expect the unexpected. The team’s ability to discover hidden issues early (such as the Twitter API’s limitations, performance and stability issues) and to workaround them bodes well for their future projects."
~ Ian Loh (Senior Product Manager, Germanium Platform, G Element Pte Ltd)