Final wiki

From IS480
Revision as of 02:43, 20 November 2014 by Abdulbm.2011 (talk | contribs)
Jump to navigation Jump to search
Code Blue 1.jpg
Home The Team Project Overview Project Management Project Documentation Project Resources

Project Progress Summary

Download our mid-term presentation slides: midterm slides

Step 1: Go to deployed site: dynamicqueuemanagement-smusis.rhcloud.com/
Step 2: Login to the site with your given credential.

Project Highlights

  1. Following are the summary of the new scope added during the course of project.
    1. Login function was implemented - the reason for implementing the login feature is to allow each user to have control over their setting and data. Previously, without this feature, users of them system ended up overriding previous settings.
    2. User management(admin) - Management of the user includes the basic CRUD features(Create,read,update and delete). This feature is to allow our client to give access to users whom are interesting in the product.
    3. Treatment Configuration(admin) - This is allow the admin to key in the tests that will be populated in user's dropdown as well as to select the tests that he/she wants to appear as default in user's profile.This is to ensure users do not re-enter tests name and legitimate tests.
    4. Datatable view of text file -
    1. Seeds configuration checkbox - Seeds played a big part in simulation as it affects the reproducibility and fairness of simulation results. With the seeds currently being hardcoded, this new feature gives users to fix/unfix random seeds.
  1. Significant time spent in database changeover and in exploring visualisation libraries
    1. Database was changed from MySQL to MongoDB - the reason for this changeover was we realised the bulk of the data we are storing are non-relational in nature, and therefore, it does make more sense in using a document-oriented database over a relational database. In addition, as the amount of data that will be stored are large, there is also the significance performance saving in terms of each write and read operations.
    2. Due to the steep learning of D3 data visualization library, team explores other alternatives such as Highchart, Chart.js, nvd3, Google Chart before finally settling on C3.js for data visualization.
  2. Overhaul of Simulation interface
    1. Based on the user testing prior to acceptance, common feedbacks was the main interface showing the simulation animation was unable to display all information in a screen (without scrolling), therefore, effort was put in to re-structure the layout of the elements.
  3. Implementation of speed toggling for simulation with animation.
  4. Behind schedule for reporting module
    1. only 2 out of the 4 charts was implemented. The other 2 charts was pushed back.

Project Management


Planned Vs. Actual project plan.

Project Iteration Overview.

Below is a screenshot of the detailed project schedule (our current iteration in progress). Click on the link to view our full project schedule .


RACI metric - we use this metric so that every member in the team is in-charge-of at least one major module or task throughout the entire project. This helped to organise the way we keep one another updated with our progress and be more efficient during meetings. How it helps us to be more efficient is when, we can work simultaneously in smaller groups on tasks categorised by the modules in the table.

Refer to the first responsibility in the table:
For example, Basith as the Project Manager is responsible for organising meetings with supervisor, sponsor and industry users for application testing. Clarice will assist him in checking the internal deadlines for the project. And he will have to consult Chun Yang, our lead developer, if our development progress is good before we present our work to the stakeholders. Syafi, who is the business analyst needs to make make sure our application on production side is running well (90% bugs free). Not forgetting to always involve everyone in the team, Nigel and Faris will be kept in the loop, while they can still focus on their coding tasks.

Change Management

Risk Assessment & Mitigation

User Test

Technical Complexities

Java to JavaScript

One of the requirements for this project is to have a real-time animation visualization of the simulation run, similar to what most commercial simulation software is capable of providing. As the team has decided our project output is going to be a web-based simulator, we decided to leverage the capabilities of SVG for the development of the real-time animation visualization.

Therefore, it is impractical for the team to continue with the inherited simulation model written in Java, as rendering of the animation visualization would require constant communication with the server. With that, the team decided to re-write the entire simulation model using JavaScript, which would run on the client’s browser.

This further adds on to the challenges that the team has as not only do we have to understand how does the simulation model was programmed with the current codebase architecture currently, we need to implement it using Javascript. It was a difficult task as most of us are not well-versed with the scripting languages, and our only experience with it was utilizing it for client-side validation. In order to develop a simulation model with it, the team needs to understand how prototypal pattern works, how can we emulate “class” like what we have in Java, even though it is a classless language.

In addition, similar to writing codes in Java, there is also the issue of how do we structure our javascript code to have it maintainable. As all javascript code is included on the same page, we also have to be careful of not polluting the global namespace, which may cause naming conflict and cause code to break. The usage of module pattern (component-based development) is also a first-hand experience for many of us.

Lastly, as JavaScript is slow in nature, we also need to explore ways where we could optimize our javascript code to have it performance-friendly. In doing so also requires the team to have an understanding of how javascript variable scoping and lookup works.

Synchronize patient’s current X and Y position between events’ tween

Animation of the patient follows the following steps:

When an event is triggered, get the tween to move the patient to a particular destination. For e.g. A StartConsult event will animate the patient to a particular doctor’s room.

    a.Get the patient current X and Y position.
    b.Calculate the dX and dY using destination’s coordinates and patient’s current X, Y.
    c.Construct the tween using the dX and dY calculated.
    d.Add the tween into the patient timeline for execution.

The issues arose when intervals between 2 events are too close; the reason for it is because the simulation clock is always running faster than the animation clock

Simulation Time Event Triggered Function Call what does it does?
20 StartConsult Get tween method is called Animation clock start, takes 3 seconds to complete. Gradually change patient X and Y to destination coordinates.
30 EndConsult Get tween method is called Get wrong current X and Y coordinates as previous tween is still altering the coordinates.

The solution here is to construct a tween object with no dX and dY value, and making use of an undocumented attributes and callback in the GreenSock library, we calculate and update the current X and Y before the tween is executed.

Learning Outcome

Chun Yang - This project provided me the platform to further develop as a developer as I had the opportunities to try out various new technologies to build onto the development capabilities that I am already possessed with. The "simulation' nature of this project was different from what we were taught and that gave me a tough yet good experience

Faris -

Nigel -

Clarice -

Syafi -

Basith-Project management is not just about having a good plan, proper metrics and deadlines.Apart from keeping your supervisor and client happy,one has to make sure the team is happy ,driven and motivated as well. Practice flexibility,give them the space and breaks and most importantly read between the lines.After all,like machines humans can break down too!!