HeaderSIS.jpg

Mid-term wiki

From IS480
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.
Step 3: Download sample data file from the site

To general users, please use the following credential:
Username: guest@smu.edu.sg
Password: guest$1

Project Highlights

  1. Project scope is extended with new functionalities.
    1. Login function was implemented - the reason for implementing the login feature was to allow each user to have their own copy of simulation settings. Previously, without this feature, users who uses the system will end up overriding each others settings.
    2. User management - Management of the user includes creating a new user, deleting a user and editing a user. This feature was added because we wish to empower our user to have control.
    3. Seeds configuration - Seeds played a big part in any simulation software as it affects the reproducibility and fairness of simulation results. With the seeds currently being hardcoded, providing this feature allows extra flexibility for our users who have the use case for changing seeds.
  2. 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.
  3. 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.
  4. Implementation of speed toggling for simulation with animation.
  5. Behind schedule for reporting module
    1. only 2 out of the 4 charts was implemented. The other 2 charts was pushed back.

Project Management

Schedule

Planned Vs. Actual project plan.

PlanVactual-project.jpg
Legend-project.png

Project Iteration Overview.

Project Iteration Overview.png

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

Project-schedule-sample.jpg

Metrics


Schedule-table.png



Schedule-metrics.jpg



Bugs-metrics.png



Bug-explain.png



Bug-breakdown.png



Raci-metric.jpg


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

After User test,new functionalites and ideas were suggested to us by both student testers,professors and healthcare practitioners.The team used its change management process to validate each function and ranked them.We met our client (kar way) to validate our priority against hers and decided to include the following functions into our project scope.

Change-management.jpg

We had difficulties evaluating the two pending functions and consulted our supervisor for advice.He acknowledged the complexity involved and advised us to make a decision after getting a good understanding and more details of them.We will spend some time discussing the feasibility with relevant stakeholders after midterms and make a decision.As of the now,the pending functions are not included in our project plan.

Risk Assessment & Mitigation

Past Risk


The team faced several challenges over the course from Acceptance to Midterms and was put to the test of managing both identified and unidentified risks.

Identified risk 1: Unable to acquire data for predictive modelling
As expected due to strict PDPA controls over sensitive data,our client was not able to provide us with the huge chunks of data for analysis purposes.Because we already forecast this possibility,it enabled us to quickly drop the predictive model and move onto prescriptive models which we had brainstormed to cover our scope in the event of no data.

Identified risk 2: First hand experience on building simulator
The team faced problems debugging errors the simulator was producing.Uncle google was not able to provide us with much help ,hence the team relatively took more than planned time to.

Identified risk 3: No prior knowledge on MongoDB
We allocated a team member to research on MondoDB before implementation period.While implementating this team member was able to share his expertise and mentored fellow team members.Despite this effort,this new unexplored database took us more than the planned time causing the iteration to delay.

Identified risk 4:New semantic UI
Initially the team was skeptical with Semantic due to its low maturity,but the library was powerful enough to support us with the functions we needed.

Unidentified risk 5:Tasks were not assigned based on competency and availability
Even though the team members were taking 4 modules in average,some members had other commitments such as Inter-University sports competition.This ate into their time and as a result hindered them from completing thier tasks on time.Also,team members were not able to cope with the complexity involved in their assigned task.To tackle this,a informal dialogue chat is held at the start of every meeting to update PM on their personnal schedule and preference.This helps the PM to allocate task more appropriately.

Future Risk


Future risk cb.jpg

(More explanation on future risks)

Risk 1: We have been getting alot of suggestions from healthcare practitioners and the team wants to use this suggestions to improve the projects.The team is overwhelmed with ideas and has the tendency to attempt implementation of such ideas since its coming from the industry.However,the team has to discuss with the client and implement those within its capacity.

Risk 2: The team came out with ideas to implement subsets of a complex model due to time constraints.However,such a model might not meet user needs and the feature might not be worthwhile the effort.

Risk 3: The client needs a playback function that will enable to fast forward and backwards her simulation.Again this domain is unexplored and team might struggle with the complexity.

User Test

User 2 documents at [Main wiki]

Goals of User testing 2:
1) Functionality test to validate systems parameters
2) Usability test to get feedback on the flow of events and intuitiveness.
3) Feedback/comments on the practicability of the system


Some of our participants:

Student Testers!
Student Testers!
Prof Wee leong!
Not able to disclose identity of our industry practitioners!

User test 2 was conducted mainly between 3 groups of users.This were the main results from the test.

Group of Users Profile Type of testing Main feedback
Students Consists of smu students from SIS and business Students were tasked to complete a simple task and were asked stress test the system.(in other words crash the system) 1. System error on input of special characters
2. System not able to react to decimal inputs
3. Back button was not functioning
4. Error output not obvious
5. Empty rows are not validated
6. Unlimited length of input for fields
Domain Experts Consists of healthcare practitioners whom have prior knowledge. Testers were asked if the system is capable of assisting them in decision making in the future. 1. The idea of editing data in text file is a minus
2. Simulation is slow and there is a need for playback control.
3. KPI weighted score to reflect simulation performance
Non-Domain Experts Consists of professors whom have no prior knowledge. Generic feedback on system's usability 1. visualization tools to drill down to the profile of patients.Ex.80% of patients whom did not meet target were more than 80 years old
2. Can the system simulate my current resources and prescribe me a better solution?
3. Re-entrant emoticons are misleading.

Click here for detailed user results

Follow up actions

Name? Changes Prototype
Table view form User will get to upload text file and will be able to get data table view to edit figures.This enables them the change the no of doctors allocated on a day to day basis.
Change3 cb.jpg
Change in flow To relocate the animation mode buttons for intuitive navigation.Users were unsure if the 'no animation' would really mean no animation.In actual fact,they can backtrack and view animation if they want to.
Change5 cb.jpg
Change of Re-entrant icons The current re-entrant emoticons are misleading and giving users a wrong impression..The changed emoticons will allow users to intuitively relate to it.
Change1 cb.jpg
Display of real time simulation information Several counters will be added onto the simulation screen to monitor the movements of patients.This counters will help users track the no. of exits and their statues.
Change2 cb.jpg
New performance indicator To include a KPIs weighted score for each simulation run to enable users to easily gauge the strategy's performance.While this may not be good indicator,users would like them to give a rough idea.
Change4 cb.jpg

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 - It was under my impression in the past that javascript was only capable of doing client-side validation, like what it was used for during our software engineering module. But after this project experience, it has allowed me to see endless possibilities of what I could do with javascript.

Faris - I always believe there are always alternative solutions to a problem. As long as we do not stop exploring, we will find out there are vast resources and information that could help one in their problem. When we talk about data visualization, one of the most commonly tools that is associated to it will be D3.js. One of the problems that i faced with D3.js was the steep learning curve. It seems that i would require three times the time assigned to me just to pick this up. However, after spending some time researching and consulting, there are other data visualization tools that are much simplified. After trying out and testing some tools, we find something that fits our competency. That's how we ended up with C3.js.

Nigel - Uncertainties are the only constant in this project. Be it in the development or project management phase, we all have to deal with it. I believe that i am coping much better with uncertainties compared to day one of this project. i think we have managed to mitigate some of these uncertainties by being extremely critical and reviewing our project frequently from the perspectives of our clients and other stakeholders.

Clarice - I hope that with our application, our sponsor’s research thesis would be easier for hospitals to understand, and eventually it can be fully developed and used by practitioners

Syafi - I’m amazed at how a project can grow and develop in ways which we never really anticipated as a team. So many angles to consider in terms of the project’s business capabilities! I look forward to finding ways to improve our application better so that it will be of relevance to both our clients as well as future users .

Basith - It’s heartwarming to see how the how the project has progressed over the past 7 weeks.Our aim was actually to build a visualization tool but it’s now crossed over to abit of decision support tool. We hope to push on and exceed our client’s expectation.

X-FACTOR

Our-X-factor.png