Difference between revisions of "Goodmix Final Wiki"
|Line 382:||Line 382:|
* '''Making our Clients Happy!'''
* '''Making our Clients Happy!'''
===<font size=3 color=#0000FF> Benjamin Gan Reflection </font>===
===<font size=3 color=#0000FF> Benjamin Gan Reflection </font>===
Latest revision as of 01:25, 28 November 2010
Main Page: IS480 Team wiki: 2010T2 Good Mix
- 1 Project Progress Summary
- 2 Project Management
- 3 Quality of Product
- 4 Reflection
Project Progress Summary
RIBA is a highly interactive and robust geospatial application!!!
|1||User request customizing symbols by choosing from a list of images||Impact: high as it affects many other functionality
Difficulty: high as no research about this is done before.
|Team decided to implement this although it affects our schedule because it helps to bring user experience to another level by adding fun elements to RIBA. We would also like to stretch our abilities and push ourselves for this FYP.
Thus we communicated the possible outcomes to our sponsor and gave ourselves 1 full week to get it up:
a. Might have major bugs that cannot be solved and have to revert
b. Accomplished with slight delay to schedule
|Team split into coding team (Bernard, Shazlee and George) and project management team (Naresh and Jess) to work concurrently.
Scenario (b) occurred.
|2||New “find coordinates” function requested on 8th November to be up by 10th November for UAT||Impact: low because it is a standalone function
Difficulty: low because similar techniques are used before
|Went ahead with the request but deadline is tight although it did not affect our schedule. So, collaboration is critical. Bernard had to finish the coding and UI before passing it to Naresh to update Test Plan and Shazlee to update User Guide.||Request completed and RIBA tested before UAT|
|3||Client failed the spatial error handling for the UAT conducted on 10 November 2010.
If this is not addressed, it means that our UAT failed.
|Impact: low because it does not implicate other codes
Difficulty: medium as previous attempts to give specific errors had failed.
|Team is offered 2 options from sponsor
1.Fix it 2.Not fix it and write a statement as explanations which will be submitted back to the client who graded fail for approval.
|Jess thought of an idea and managed to accomplish the specific error handling.|
1) Expectations of end users from different departments in biodiversity center
Even though our source of requirements is our sponsor, we attended all usability study sessions to get direct feedback from them. This means indirectly managing users’ expectations which can be different and sometimes contradictory. After each usability study sessions, we will discuss with our sponsor during the next meeting to prioritize the changes requested for the next deliverable. We also make use of our project metrics to help us evaluate the requests. This plan had worked well for us.
2) Managing many milestones and deliverables
Other than FYP milestones, there are biweekly sponsor meetings and client usability sessions where different deliverables for RIBA is expected. “Just keep going” attitude is the attitude we adopt to deliver what is expected with our best effort. We will first meet our sponsor to show him what we have done before he organizes the usability study sessions with KOOPrime and National Parks. This is both a challenge and a benefit for GoodMix. Our project metric had helped us to determine internal deadlines to cope with these milestones and communicate with our sponsor so that he knows what to expect at each session. Conclusively, we feel that having many milestones also helps to keep our schedule on track regularly.
Scheduling the project is the most complex task for this project. Due to the nature of our development process, we design our own method to mitigate the disadvantage of adopting this process which we called it dynamic scheduling. This method was effective as it successfully helped us overcome many milestones to satisfy our stakeholders.
Although we make use of external libraries, we create methods to access them and integrate them with our functionalities i.e. our codes are customized to model each functionality. We do modify the libraries or seek other alternatives such as using PostGIS functions when we discovered that the external libraries are not what we want.
For example, although Flex has draw circle function and modestmap has draw great circle method, they do not do what we want to achieve for spatial search. We wanted to allow users to draw buffers base on their specified radius and markers indicated on the map. These buffers should be drawn in accuracy to the map measurements too i.e. they should minimize and maximize in size as user zooms in and out because the map measurement changes as user zooms. We discovered after much research that PostGIS has the best function for this highly customized function. We designed the whole logic and integrate PostGIS functions into our entire modularized code design. In the end, we did an in-depth study of geospatial terms such as "geometry", "projection" and used a span of programming languages- PHP which returns XML, actionscript and mxml to achieve this function.
To make RIBA interactive and getting the architecture right, it takes a lot of planning, research, learning, explorations and testing at the backend.
Project Schedule (Plan vs. Actual):
Changes to project schedule were elaborated up to midterm. Therefore comparison will start at phase 6 where we face some of the most turbulent phases. However, even with many changes to the schedule, we are on track!
Phase 6 has a total of 12 changes which is more than the usual. This increase is actually a good news for us. It indicates that our users are getting more familiarized with RIBA and know what they want better.
In this phase, we increased our “working hours” during midterm break where we met up on weekdays from 10am to 6pm. Although the last usability session is delayed and pushed to phase 7, it allowed us accomplish new requirements on top of the existing ones and even brought some activities forward. Thus, we ended this phase on time.
In phase 7 we have slightly less changes which is 10 of them but is one of the most turbulent phase for 2 main reasons!
1) The sponsor UAT was delayed by a week to give us time to implement feedback from the usability session which was delayed in phase 6 and polish up RIBA.
2) The sudden request resulted in a 5 days delay for phase 7 but was spilled over to phase 8 because we decided to regard it as part of the buffer we catered for phase 8.
Thus we divided ourselves into project development and project management teams so that we’re able to do both type of tasks concurrently.
Here, there is a significant drop in changes as we’re approaching closure. Our buffer for this phase is not much utilised except for the 5 days spilled over from phase 7 for the sudden request and “find coordinates” function which we implemented because it can be done without affecting our schedule and improve user experience further. Now, RIBA is prepared and ready for handover.
You can download our latest detailed Gantt Chart here.
We decided to include this section in our final wiki because this is a process which we innovated for our FYP. We hope that any future groups who requires user-centric design development process and is adventurous to try our new things can adopt our development process and dynamic scheduling :)
1. We selected the user centric development process.
2. We gathered project requirements during the Taking Off phase which is before we implement this dynamic scheduling. We ranked them from Basic to Advance functionality.
3. We decided to factor in the major FYP milestones, namely the acceptance, midterm and final presentations.
4. We also decided on having 8 uability sessions with our clients which seems a lot but is part of our schedule mitigation. In this way we get to maximize the amount of interactions with our end users and clients too. This is important as they are truly the ones who know what is user experience.
5. Steps 4 and 5 will translate into the total number of phases for the project with is 9 phases including the Taking Off phase with different durations.
6. last but not least, we spread the functionalities in a linear format:
This tactic allows us to have buffer time at every phase to cater for change requests. At phase 7 & 8, we should focus on documentation and final presenation while channeling more effort into packaging RIBA and get it ready for handover.
There are 3 metrics but this section only covers the special metrics which we created after midterm to help us cope with an increase of change requirements.
We call this the Change Evaluation Metric!
We first gather all the feedbacks from usability study sessions and filter out contradictory feedbacks because the net user experience is neutralized. E.g. the officer from informatics will prefer us to retain attribute search results to use it for spatial search while the officer from biodiversity is satisfied with these functions separated for ease of use.
Impact here refers to the impact on RIBA architecture and difficulty refers to technical difficulty such as if any prior research was done before.
We find this metric very helpful in 3 main areas:
1. Work allocation
This is where change requests with high scores of 6 and 9 will lead to pair programming for change implementation.
2. Better estimation for internal deadlines
This is important to allow us to achieve intermediate stable RIBA versions during each meeting with our sponsor especially during usability study session with our client and end users.
3. A good communication tool
This is mainly with our sponsor who is our source of requirements where we are able to evaluate the situation of the change requests better. This can be observed in our project highlight section.
This is our informal way of implementing this metric during one of our meetings:
All the change requirements from midterm onwards (phase 6 - 8) are being mapped onto the grid for easy viewing:
- Yellow boxes = change requests for UI
- Green boxes = change requests for search functions
- Dark purple boxes = change requests for other functions
This also explains the evaluation column at the project highlight section. As you may observe, the symbol customization has the highest impact and difficulty which we decided to push ourselves for it.
We ranked the technical complexity by functions and provided explanations for top 3 choices:
|1|| Symbol Customization
This is the most technical component for us because attempts to customize the symbols of the layers with color picker was made before but failed. This is why we modified it to become randomized color symbols and no prior research was done specific to this function. Furthermore, this feature affects most of the functionalities since they were built on top of the marker population algorithm. Achieving dynamic icon list where administrators just need to upload icons to the symbol folder is one of the most satisfying feeling.
|2|| Layer Control Manager
This function is considered a basic feature but it is one of the most difficult function particularly trying to implement this in the early stages. This means that if we don't get this feature out in time, it will be a critical bottleneck for the rest of RIBA development. This feature is also the one that morphed the most throughout the project - from changing UI to changing logic.
|3|| Spatial Search
Spatial search is both difficult and special at the same time. Through our usability sessions, our end users seem to be most awed by this function. This is also another function that transformed a lot through the phases - from single point buffer to multiple point buffer to polygon buffers. A lot of hiccups were met during the development of this function. As this is a geospatial concept search, a lot of careful considerations and revisions are made for its UI.
|11||Map Export to Images (Snapshot)|
Quality of Product
|Project Management||1) Minutes
|Client, Sponsor, Supervisor & Internal|
|Analysis||Use Case & Description||Use Case Materials|
|Design||1) System Architecture
2) UI Design Changes
3) Database Schema
Media:DataSchema.pdf of NParks_DB
|Testing||UAT||Test Plan & UAT Details|
|Media:User Guide.pdf for National Parks, Deployment Guide for KOOPrime
On Test Server
We've built RIBA that strives to be dynamic not just for usage but also for deployment and ease of maintenance. For example, clients request for icon customisation for different data layers. Instead of asking them to add codes, all the administrator has to do is drop the icons into the icon folder.
For coding wise, external libraries are clearly separated from our codes which are modularized into different classes. This is also applied to PHP which can be as seemingly trivial as having a configuration file so that password change is only required once. Comments are done in details for all methods that we built.
We've also designed the database architecture which our administrators must use it for RIBA to function and for them to maintain geospatial layers.
Deployment was done on a test server instead of the client server. We tried our best to get RIBA deployed on our client’s server but they could not confirm this possibility by week 11. However, as RIBA is a flash enabled application, a successful deployment to test server meant that it is possible on client server.
For this FYP, GoodMix tries to model the project such that it is as dynamic and close to the will-be live project as possible. In the upcoming demonstration during presentation, we will be accessing a URL that contains the IP address of the test server remotely. A step-by-step deployment guide is created just for our client to build, deploy and maintain RIBA. It comes together with an installation guide pack containing all the codes and installers.
Navigate to this page for deployment materials: Deployment Details
Bug reporting was significantly improved after our midterm feedback that we might be under reporting the bugs. As we get more alert, members took turn to do debugging to test and report RIBA bugs to bug tracking document immediately.
On top of bug tracking, we've also done UAT. We achieved all passed for the UAT except a section from an end user on the spatial error handling. He felt that the error is not helpful enough for the users. Our team has rectified this and sent him the end product for his approval. Once he approves, we will achieve 100% UAT pass :)
This is our team reflection to conclude our project:
- Understanding what the Client wants
This is also in relation to helping them know what they want to. Thus, we gained the real life experience and witnessed how our users grow to be more expectant of RIBA which in turn makes us happy as we know we are building a helping tool for them and not a hassle-to-use tool.
- Relating it from Business Problems to IT Solutions
When designing IT solutions, it is important to keep in check that the functions we plan to build helps to solve their business problems. Otherwise the function will be left idle or even reduce user experience. For example, we wanted to put animations when RIBA plots the point layers. However, we discovered that it slows down performance and as user gets familiar with RIBA, the animation might even irritate them especially when the researchers just want the results fast.
- Managing Risk in the best possible way
When managing risk, the mitigation strategy has to be carefully thought through without jeopardizing the overall schedule. For example, we decided to have a maximum of 8 sessions with our clients because upon mapping out the schedule, the legth of each phase is reasonable to cope (each phase is about 2 weeks which is our bi-weekly meeting with sponsor too)
- User Experience is vital to any IS Project
This is particularly true to our project because RIBA is built with the intention to be user centric - high user interactivity and robust.
- Matching Technology needs
Knowing that they are looking for geospatial application, we recommended our architecture and the related software and open source that will best serve their needs.
- Making our Clients Happy!
Benjamin Gan Reflection
As project manager, in terms of schedule, I am lucky to have our developers helping out in managing the deliverables, particularly in the project development aspect. On top of this, FYP is probably the longest project, about 6 months, for SMU undergraduates so sometimes, the team does get tired or less motivated. However, I truly experienced the spirit of “keep moving on” from this team which enabled us to deliver what we were set out to. To me, this is a journey of stamina, management and motivation.
This FYP has been a remarkable journey. 6 months thru good and bad times and finally we came thru. During this period, I have learnt how it is to embark on a IS project dealing with real people who are your clients and inevitable changes that will keep bouncing to and fro. Change is the only constant in Life. As such so is our project, though I recognized much changes was needed in our project to give the client, the "user experience". Working on a project that looks into HCI, User Experience is very important and viral. How many clicks, does the name make sense, where the function is placed at, the buttons used..etc As much as possible, we should make it easy and intiutive for end users to use at their comfort.
Initially in our team, only Jess and George are exposed to Flex coding while the rest (Bernard, Naresh and Shazlee) do not have any background knowledge about it. Therefore, the initial learning curve is extremely steep for me but with the help of reference books and examples from the web, and slowly I come to terms with Flex coding. Then for the rest of the coding of the project, it would be basically more of reading what each APIs can do and applying programming logic into it. Besides Flex coding, I also has to understand PHP programming as well as using APIs from our PostGreSQL database in order to achieve some of the spatial functions (spatial query, area calculation and etc) in our project. All in all, through this project, I have been exposed to several programming languages and also the interaction between each phase of our architecture.
After a grueling 6 months, the FYP is finally coming to an end. It has been a long and tough journey, especially having to juggle other modules, external classes and work. Personally, I feel that the challenge in this project is the new programming language of which made it hard to search the Web for information on it. That aside, having to handle the client’s request proved to be a challenge as well. Due to the various constant changes requested, it was hard having to keep up with it. Something which I loved about this project was coming up with some of the algorithms to make it work. I felt a sense of completion seeing some of the things work in the project such as the randomization of color for the markers, which unfortunately was removed after one of the usability session with the end user.
I personally think that IS480 is a good educational channel for me to experience a real project life cycle, from gathering requirements to project management and to completion. As an educational environment, I have a chance to learn from my mistakes and amend from it, so that I am more prepared when I enter the business world. Apart from the technicality aspect of our application, the takeaways from this project are mostly the soft-skills that I learnt; managing stakeholders’ opinions, addressing internal conflicts, and how we can convey our ideas more effectively. I have also learnt how to advice stakeholders by presenting different outcomes from various implementations and our recommendations, balance tough decisions and strive for a win-win situation. I would like to thank our project sponsor and supervisor for giving me keen insights in project development and management.
Disclaimer: All images and content on this page are done by Good Mix and should not be published without their permission.
Main Page: IS480 Team wiki: 2010T2 Good Mix