HeaderSIS.jpg

Difference between revisions of "IS480 Team wiki: 2013T1 ThunderBolt Final wiki"

From IS480
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 26: Line 26:
 
==<div style="background: #d5a10d; padding: 15px; font-weight: bold; line-height: 0.3em"><font color= #FFFFFF>Project Progress Summary</font></div>==
 
==<div style="background: #d5a10d; padding: 15px; font-weight: bold; line-height: 0.3em"><font color= #FFFFFF>Project Progress Summary</font></div>==
 
===Immediate Deliverable===
 
===Immediate Deliverable===
'''Click here [https://www.dropbox.com/s/w9o0v8jb8bgykqf/Team%20Thunderbolt_Midterm%20Presentation.pdf] download final presentation slides<br>'''
+
'''Click [https://www.dropbox.com/s/ayukval827x5z7i/Compiled%20v3.pptx here] download our final presentation slides<br>'''
  
 
Link to deployment server: http://bit.ly/is480-ss <br>
 
Link to deployment server: http://bit.ly/is480-ss <br>
Line 189: Line 189:
  
 
[[Image:Calintegration3.png|400px]]
 
[[Image:Calintegration3.png|400px]]
 +
 +
====Scalability====
 +
'''Concurrent Users'''<br>
 +
During User Testing 1, our application froze during frequent intervals as the number of database connections that could be created by our application was breached. We traced this problem to the use of the default connection pool provided as part of Hibernate, which is heavily discouraged for production use. To prevent this issue, we have implemented a production-ready connection pool that will enable our application to reuse connection objects across the application and allow up to a 150 connections to the database. Although such a large number is not required, this comfortably prevents connections to the database from becoming a limiting constraint for system performance.<br>
 +
 +
====Flexibility====
 +
After our initial client meetings, we came to realize that keeping things flexible is hugely beneficial to the system. Since then, one of our goals while building this system has been to minimize hard coding throughout the system.<br>
 +
Over the last few iterations, we have put in significant effort into making various parts of our system customizable as per our client’s requirements. Here is summary of the customizable components:<br>
 +
'''- Milestone Configuration:''' Administrators can create and edit the details for the different milestones in the system such as their name, order and required attendees.<br>
 +
'''- Schedule Constraints:''' For each milestone, the duration of the presentation can be set. In addition to this, the start and end times of days can be set for each schedule being configured. Lastly, the visibility of terms and individual milestone schedules can be controlled to prevent unwanted user activity.<br>
 +
'''- Faculty Booking Response Time:''' In order to be fair to all users, our system follows a system of automatic rejection to clear out bookings that haven’t been responded to in time.<br>
 +
'''- Email & SMS Reminders:''' Our system sends emails to faculty to remind them of their pending tasks and SMSs to all attendees before the presentation. The administrator can control the timing of these notifications. <br>
  
 
==<div style="background: #d5a10d; padding: 15px; font-weight: bold; line-height: 0.3em"><font color= #FFFFFF>Quality of product</font></div>==
 
==<div style="background: #d5a10d; padding: 15px; font-weight: bold; line-height: 0.3em"><font color= #FFFFFF>Quality of product</font></div>==
Line 286: Line 298:
 
==<div style="background: #d5a10d; padding: 15px; font-weight: bold; line-height: 0.3em"><font color= #FFFFFF>Reflection</font></div>==
 
==<div style="background: #d5a10d; padding: 15px; font-weight: bold; line-height: 0.3em"><font color= #FFFFFF>Reflection</font></div>==
 
===Challenges and Learning Outcomes===
 
===Challenges and Learning Outcomes===
[[Image:challengesandteamlearningoutcomes.PNG|200px]][[Image:challengesandteamlearningoutcomes2.PNG|200px]]
+
[[Image:challengesandteamlearningoutcomes.PNG|500px]][[Image:challengesandteamlearningoutcomes2.PNG|500px]]
 +
 
 +
===Individual Learning Outcomes===
 +
'''Prakhar:''' "Technical development, Importance of a proactive approach, Effective Communication both internally and externally, Embracing challenges"<br><br>
 +
 
 +
'''Xuling:''' "Though the FYP journey was long and tiring, I learnt many lessons along the way. Firstly, its difficult to manage expectations as different people want different things. Secondly, perseverance is important for ongoing faith. Finally, team dynamics determines the success of the project"<br><br>
 +
 
 +
'''Tarlo:''' "User tests feedback helps to understand and prioritize tasks to ensure the usability of a system. Being able to test on a live system and participate in the development process, I have realized the importance of the business-IT linkage value and stakeholder expectation management."<br><br>
 +
 
 +
'''Abhilash:''' "Having good quality code really helps. Following best practices like having code modularity made it very easy to manipulate logic and views when new requirements came in "<br><br>
 +
 
 +
'''Suresh:''' "Although it was a great avenue for gathering user feedback, live deployment was challenging to handle at later stages of the project."<br>

Latest revision as of 10:51, 26 November 2013

Wikiprofilepic.png

Home

  Mid-Term Wiki   Final Wiki


Project Progress Summary

Immediate Deliverable

Click here download our final presentation slides

Link to deployment server: http://bit.ly/is480-ss
Link to live server : http://202.161.45.168/is480-scheduling/login.jsp

Our Key Accomplishments

- 99% of the project completed
- Completed 12 iterations
- Conducted 3 User Tests with key users
- Live system first deployed on 26 Sept, followed by second deployment on 22 Oct and last deployment on 21 Nov

Project timeline overview

Final timeline.png.PNG


Click [1] to view our full project schedule.

Project Highlights

Video Pitch

Click here to watch the video!

Videopitch.png


Project Poster

ThunderboltPosterSmall.PNG

Project Management

Project Status

We have completed all core, secondary and additional functionality of the system and its fully functional now
Click here to see more detail of our project status.

However, there are still some improvements that we would like to make after our final presentations:
- UI improvements as per our sponsors request
- Allow admin to change type of presentation
- Customize SMS to supervisors
- URL pointing to live server in emails should be configurable
- Allow the user to download an ICS file from the website

Project Schedule (Plan Vs Actual)

Click here to see plan vs actual schedule

Project Metrics

Schedule Metrics

The chart below shows the overview of schedule metrics for our entire project
Click here to understand how we derive our metrics and what are the action plans to each metric.

Schedule metric chart.PNG















Bug Metrics

Click here to find out how we calculate our bug score and what are the respective action plans for different category of score.
Click here for detailed bug log:
Figure 1 shows the distribution of bug severity
Figure 2 further elaborate figure 1 by breaking down bug severity distribution over iteration
Figure 3 shows an overall bug score for our system as of now
Overall bug severity distribution.PNGBug severity distribution over iteration.PNGBug score.PNG
Bugs logged here were discovered during internal testing which carried out at end of each iteration based on the test cases we created.Regression testing methodology was used to conduct internal testing.


Technology

Technical Complexity

Time-based View Selection

The problem with the IS480 schedules on the IS480 Wiki is that it is difficult to find exactly which one you are involved in. If you are a user of Term 1, and scheduling of the Acceptance presentations, the default top most item you can find on the IS480 Main Page would be Term 2. Finding which term you belong to, and the most important milestone, requires some effort.

Therefore, we have implemented an algorithm that does this work for you. The algorithm is as follows:

If there is only one term, the most important milestone is shown you. The default milestone is determined by, in descending order of importance:

Default Milestone
  1. The current time is within the range of dates of the milestone
  2. The current time is before the start date of the upcoming milestone
  3. The current time has passed the end date of the last milestone

Timebased1.png

If there are multiple terms, before the default milestone selection logic, the default term selection logic is determined by, in descending order of importance:

Default Term
  1. If you are a user of multiple terms, and the current time is at a point where both terms overlap, the earlier term is the default term because it is not complete yet.
  2. If you are a user of multiple terms and there are more pending bookings in the later term, the later term is the default term because it is more active.
  3. If you are a user of a future term and not the current term, the default term is the future term.
  4. If you are a non-user of any term and the current time is at a point where both terms overlap, the default term is the earlier term.
  5. If there is no current term and there are multiple future terms, the default term is the earliest future term.
  6. If there is no current term and there were multiple terms in the past, the default term is the latest past term.

Timebased2.png Timebased3.png


Usability

The Calendar Interface

We have adopted the ever-familiar calendar interface present in the most popular calendars out there: Microsoft Outlook Calendar, Google Calendar, and Apple iCal.

Our old calendar interface:

Calendar1.0.png

Our new calendar interface:

Calendar2.0.png

Multifunctional Calendar

There are 5 different roles in the IS480 course - Course Coordinator, Administrator, Faculty (Supervisor/Reviewer), Student, and TA. We have developed a calendar interface that caters to each role in terms of visuals and functionality.

Multifunctional.png

The functions of each role are listed below. New functions implemented since Midterm are marked in green.

Course Coordinator
  • View a dashboard showing which teams haven't booked
  • Override the entire booking approval process
  • Book on behalf of teams
  • Update bookings by Drag-N-Drop
  • Invite SMU students and faculty
Administrator
  • Track TA presentation sign ups
  • Email TAs to sign up for a slot with a single click
  • Do everything the Course Coordinator can do
Faculty
  • View a dashboard showing which teams haven't booked
  • Approve or Reject bookings
  • Cancel bookings
  • RSVP to presentations
  • See only bookings that matter
  • Indicate availability
Student
  • RSVP to presentations
  • Book with a single-click
  • See only bookings that matter
  • Invite SMU peers and faculty
  • Have a visual trail of their booking history
TA
  • Swap slots with other TAs
  • See TA statistics
  • RSVP to presentations
  • See only bookings that matter
  • Sign up for filming


User Management

Since the IS480 Matching System Team was not able to create their IS480 user management system, we had to implement our own. Some of the features of the system are:

  • Database-like interface that is inter-linked between tabs
  • Assignment of teams
  • CRUD of all 5 roles
  • Overview of faculty's teams

Manageusers.png

Personal Calendar Integration

We have considered that most users like to use their own personal calendars on their computers or mobile phones. Therefore, in every email that is sent from the system, an ICS file is attached. The iCalendar protocol (ICS files) is a standard calendar protocol that is compatible with many popular calendar clients. So far, our ICS files have been tested and supported on Microsoft Outlook Calendar, Google Calendar, and Apple iCal.

When a new booking is created, a Request email is sent with an ICS attachment. The tentative event would look like the following:

Calintegration1.png

When it is approved, an Approval email is sent with the updated ICS attachment, which would updated the tentative event to a confirmed event:

Calintegration2.png

If the booking details such as time and venue are updated, an Updated Booking email is sent with the updated ICS attachment, which would update the time and venue of the same event:

Calintegration3.png

Scalability

Concurrent Users
During User Testing 1, our application froze during frequent intervals as the number of database connections that could be created by our application was breached. We traced this problem to the use of the default connection pool provided as part of Hibernate, which is heavily discouraged for production use. To prevent this issue, we have implemented a production-ready connection pool that will enable our application to reuse connection objects across the application and allow up to a 150 connections to the database. Although such a large number is not required, this comfortably prevents connections to the database from becoming a limiting constraint for system performance.

Flexibility

After our initial client meetings, we came to realize that keeping things flexible is hugely beneficial to the system. Since then, one of our goals while building this system has been to minimize hard coding throughout the system.
Over the last few iterations, we have put in significant effort into making various parts of our system customizable as per our client’s requirements. Here is summary of the customizable components:
- Milestone Configuration: Administrators can create and edit the details for the different milestones in the system such as their name, order and required attendees.
- Schedule Constraints: For each milestone, the duration of the presentation can be set. In addition to this, the start and end times of days can be set for each schedule being configured. Lastly, the visibility of terms and individual milestone schedules can be controlled to prevent unwanted user activity.
- Faculty Booking Response Time: In order to be fair to all users, our system follows a system of automatic rejection to clear out bookings that haven’t been responded to in time.
- Email & SMS Reminders: Our system sends emails to faculty to remind them of their pending tasks and SMSs to all attendees before the presentation. The administrator can control the timing of these notifications.

Quality of product

Intermediate Deliverables

Stage Specification Links
Project Management Metrics
Minutes
Requirements Change Requests Log
Prototype
Analysis Use Case
Design System Architecture Diagram
Testing Internal Testing Test Plan
Internal Testing Test cases and results
User Testing 1
User Testing 2
User Testing 3

Deployment

System was first deployed on 26 Sept, followed by second deployment on 22 Oct and final deployment with full functionality on 21 Nov 2013

Deployment phases.png.PNG





















Testing

Internal Testing

Internal Testing was conducted at end of each iteration. Total of 12 internal testings were carried out.
Click here for internal testing test plan
Click here for internal testing test cases by iterations

User Testing

3 User Testings were conducted with key users of the system
- 1st User Testing: 2 Sep
- 2nd User Testing: 4 Oct
- 3rd User Testing: 18 Nov

Click here to find out more about our User Testing

Reflection

Challenges and Learning Outcomes

Challengesandteamlearningoutcomes.PNGChallengesandteamlearningoutcomes2.PNG

Individual Learning Outcomes

Prakhar: "Technical development, Importance of a proactive approach, Effective Communication both internally and externally, Embracing challenges"

Xuling: "Though the FYP journey was long and tiring, I learnt many lessons along the way. Firstly, its difficult to manage expectations as different people want different things. Secondly, perseverance is important for ongoing faith. Finally, team dynamics determines the success of the project"

Tarlo: "User tests feedback helps to understand and prioritize tasks to ensure the usability of a system. Being able to test on a live system and participate in the development process, I have realized the importance of the business-IT linkage value and stakeholder expectation management."

Abhilash: "Having good quality code really helps. Following best practices like having code modularity made it very easy to manipulate logic and views when new requirements came in "

Suresh: "Although it was a great avenue for gathering user feedback, live deployment was challenging to handle at later stages of the project."