HeaderSIS.jpg

Difference between revisions of "Goodmix Final Wiki"

From IS480
Jump to navigation Jump to search
Line 98: Line 98:
 
<font size=3 color=#0000FF> Technical Complexity:</font>
 
<font size=3 color=#0000FF> Technical Complexity:</font>
  
GoodMix has ranked the technical complexity by functions:
+
We ranked the technical complexity by functions and provided a brief explanation for top 3 choices:
  
 
{|cellspacing="0" cellpadding="10" align="center" text-align="center" style="font-size:100%; border: 2px solid darkgray;"
 
{|cellspacing="0" cellpadding="10" align="center" text-align="center" style="font-size:100%; border: 2px solid darkgray;"
 
|-
 
|-
 
! style="background:#FFF8C6;border-bottom:1px solid darkgray;border-right:1px solid darkgray;width:30px;" align="center"|Rank
 
! style="background:#FFF8C6;border-bottom:1px solid darkgray;border-right:1px solid darkgray;width:30px;" align="center"|Rank
! style="background:#FFF8C6;border-bottom:1px solid darkgray;border-right:1px solid darkgray;width:200px;" align="center"|Function
+
! style="background:#FFF8C6;border-bottom:1px solid darkgray;border-right:1px solid darkgray;width:800px;" align="center"|Function
  
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 1
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 1
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Symbol Customization
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Symbol Customization with Icon List | 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 [[Requirement Specification#Color Randomization of Point Markers (function removed) | 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.
 +
 
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 2
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 2
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Layer Control Manager
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Layer Control Manager| 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.
 +
 
 +
 
 +
This function being one of the toughest is not just because our skills are not well developed then but also because it involves deep understanding of the concept of geometry in PostGIS. This concept is geospatial related and not many materials can be found online about the usage of it. Thus we have a hard time trying to figure this out which we also learned how to explode "the_geom" to load polygon layers.
 +
 
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 3
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 3
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Spatial Search
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]
 +
 
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 4
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 4
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Attribute Search
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Attribute Search
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 5
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 5
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Highlight
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Highlight
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 6
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 6
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Heatmap
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Heatmap
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 7
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 7
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Data Loading
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Data Loading
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 8
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 8
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Dynamic Legend
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Dynamic Legend
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 9
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 9
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Area Calculation
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Area Calculation
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 10
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 10
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | User Interface
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]User Interface
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 11
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 11
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Map Export to Images (Snapshot)
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Map Export to Images (Snapshot)
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 12
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 12
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Distance Calculation
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" |[[Requirement Specification#Spatial Search | Spatial Search]] Distance Calculation
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 13
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 13
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Find Coordinates
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Find Coordinates
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 14
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 14
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Navigation Pack
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | [[Requirement Specification#Spatial Search | Spatial Search]]Navigation Pack
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 15
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 15
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Map Scale
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" |[[Requirement Specification#Spatial Search | Spatial Search]] Map Scale
 
|-
 
|-
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 16
 
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" align="center" | 16
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" | Map Provider
+
| style="border-bottom:1px solid darkgray;border-right:1px solid darkgray;" |[[Requirement Specification#Spatial Search | Spatial Search]] Map Provider
 
|}
 
|}
 
However, we feel that the ranking is largely affected by time:
 
 
The time that it is expected to be delivered the time that the team decided to work on the function and the time that the request is made. For example, Layer Control Manager might have ranked lower if the team is to develop this function later in the project when our skills are cultivated. This is because our skills improved, tools are more familiarized and schedule changes over the months.
 
  
 
== Quality of Product ==
 
== Quality of Product ==

Revision as of 22:40, 14 November 2010

Main Page: IS480 Team wiki: 2010T2 Good Mix

Project Progress Summary

Project Highlights:

This section is about sudden requirement changes or requests since midterm which we took up. More information on how requirement changes are handled here.

S/N Event Evaluation Action Result
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 consulted sponsor with the following options:

1. Implement change but outcome is not the responsibility of Goodmix

a. Might have major bugs that cannot be solved and have to revert

b. Less time to work on existing bugs but able to pass UAT

2. Do not implement change and focus on debugging

Sponsor chose option 1.

Team split into coding team (Bernard, Shazlee and George) and project management team (Naresh and Jess) to work concurrently.

Scenario 1(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 tight deadline is a challenge 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 the 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.


Project Challenges:

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 deliverable

Other than FYP milestones, there are biweekly sponsor meetings and client usability sessions where different deliverable for RIBA is expected. “Just keep going” attitude to deliver what is expected to our best. 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. With many milestones, we are able to keep our schedule on track regularly.


Project Achievements:

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 logics to integrate them with functionalities. When the libraries cannot perform what we hope they will, we modify them or seek other alternatives such as using PostGIS functions.


To make RIBA interactive and getting the architecture right, it takes a lot of planning, research, learning, explorations and testing at the backend.

Project Management

Project Schedule (Plan vs. Actual):

Changes to project schedule were elaborated up to midterm. Therefore comparison of the plan and actual schedule will start at phase 6.


Although there are many changes to the requirements, schedule is well on track. Most of the time, while we include change to the requirements, we also removed some that got prioritized lower after the change request. Hence, the net effect is neutralized.


table here


Project Metrics:

There are 3 metrics that Goodmix use: requirement evaluation metric, risk assessment and bug tracking.

Technical Complexity:

We ranked the technical complexity by functions and provided a brief explanation for top 3 choices:

Rank Function
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.

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.


This function being one of the toughest is not just because our skills are not well developed then but also because it involves deep understanding of the concept of geometry in PostGIS. This concept is geospatial related and not many materials can be found online about the usage of it. Thus we have a hard time trying to figure this out which we also learned how to explode "the_geom" to load polygon layers.

3 Spatial Search
4 Spatial SearchAttribute Search
5 Spatial SearchHighlight
6 Spatial SearchHeatmap
7 Spatial SearchData Loading
8 Spatial SearchDynamic Legend
9 Spatial SearchArea Calculation
10 Spatial SearchUser Interface
11 Spatial SearchMap Export to Images (Snapshot)
12 Spatial Search Distance Calculation
13 Spatial SearchFind Coordinates
14 Spatial SearchNavigation Pack
15 Spatial Search Map Scale
16 Spatial Search Map Provider

Quality of Product

Project Deliverable:

Stage Specification Modules
Project Management Minutes 123
Metrics Bug metrics
Requirements Story cards crud, trend analytics
Analysis Use case 123
System Sequence Diagram ssd
business process Here
Screen Shots CRUD Customer, Trend Analysis
Design er diagram 1, 2, 3
class diagram 123
Testing Test plan 123
Handover Manuals User tutorial, Developer manual, Setup manual
Code client server
deployment diagram 123

Quality:

Deployment:

Testing:

Reflection

Team Reflection

Benjamin Gan Reflection


Jess:

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.


Personally, I try to help out as much as I can in project development too. This is because I have been through GIS course and I wanted to learn more about Flex and Geospatial functions. Having done user interface works for GIS project, I focused more on database connection and PostGIS functions for FYP project to diversify my learning. It was a great sense of achievement as I grow to be better skilled in these aspects.


All in all, this FYP allows me to take a peak of how the real world project is like since we are working with real clients. With multiple stakeholders, requirements can be a real headache because some are contradictory, some are tedious and others can be too difficult. We are lucky to have our sponsor, Dr Kam, as our requirement source which filtered most of the requirements and get us to do those that are critical, impressive and/or manageable ones.


Naresh:

123


Bernard:

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.


As the team has adopted a new development framework, more usability tests were conducted before the final UAT as our application is more user-centric and therefore we would constantly need to get feedbacks from our users with regards to our application. In this way, we were able to cater to their needs and wants with the notion that the basic user requirements were still intact. Therefore when the final UAT was conducted, we achieved good results and expectations from the users. Through the numerous usability tests conducted with the users, I understood what they really want and we try our best to give them what they want but sometimes, some of the stuffs we are not able to comply due to the time constraints we have.


Shazlee:

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.


Due to the nature of our project, we had lots of usability tests with our users. This was an eye-opener as we had to constantly tweak our user interface to meet their demands. But this was beneficial as the users would be able to own something that they would actually be comfortable in using.


George:

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.


Sponsor Comment


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