Difference between revisions of "IS480 Team wiki: 2017T2 Bare Code Wiki Finals"
|Line 229:||Line 229:|
: We adopted the MVC architecture for the iOS app. The model files have been replaced by core data after implementing the Core Data model. Core Data drastically decreases the amount of code you write to support the model layer, which decreases potential errors. It ensures sophisticated query compilation. Instead of writing SQL, you can create complex queries by associating an NSPredicate object with a fetch request.
We adopted the MVC architecture for the iOS app. The model files have been replaced by core data after implementing the Core Data model. Core Data drastically decreases the amount of code you write to support the model layer, which decreases potential errors. It ensures sophisticated query compilation. Instead of writing SQL, you can create complex queries by associating an NSPredicate object with a fetch request.
: We modified the codes in the API and Controllers to ensure that they connect to the data model instead of connecting to the API directly as before. The codes are now reusable as they follow a standard format, and we also added comments for easier maintenance in future, wherever needed.
We modified the codes in the API and Controllers to ensure that they connect to the data model instead of connecting to the API directly as before. The codes are now reusable as they follow a standard format, and we also added comments for easier maintenance in future, wherever needed.
Revision as of 12:36, 4 April 2018
- 1 Project Progress Summary
- 2 Project Management
- 3 Quality of product
- 4 Reflection
Project Progress Summary
- Please see deployed site link here:
- Please see presentation slides here:
- MSL @ NP is now available for download on Apple App Store!
- Please see our other deliverables here
Progress Update :
- As of 4 April 2018, MSL @ NP is 100% completed.
- As of 2 April 2018, 3 UATs were conducted with a total of 53 students for the iOS application.
- MSL @ NP has gone live on Apple App Store on 15 March 2018
- Priorities were changed based on midterms feedback and sponsor's preference
- Added mobile features to the application (e.g. upload photos & location-tagging)
- Added an offline function to facilitate learning-on-the-go
- As a result, the team dropped the "Survey Module" to work on the two above-mentioned functions
- Added mobile features to the application (e.g. upload photos & location-tagging)
- Took 3+ weeks to learn and develop offline function on iOS
Describe areas of the project that were particularly difficult and how they were dealt with, whether successfully or not. Again, a few sentences are enough. If there are no challenges, remove this section.
- Loss of 33% of task force: Coping with the reduction in team members was difficult, especially when the remaining team members had no experience in coding iOS. Consulting friends, books, video tutorials and putting in the extra coding hours helped in delivering the mobile application.
- Software Maintenance: With the change in roles, the new developers had difficulty reading and understanding and trying to incorporate codes by the previous developers, especially when there was no documentation or comments in the code.
- Acquisition of new skills within a short period of time: As 2 of our key developers left the group, we had to take over their codes as quickly as possible to ensure that disruptions to our project timeline, despite not having prior experience
- Communication (or lack thereof): Despite the stress we faced from taking over our new roles, we struggled to communicate with each other and grew distant from each other. We mitigated this through having a couple of honest F2F talks to sort things out. This cleared this air and allowed us to speak our minds, and that kept the team going till now, illustrating the importance of proper communication.
- Server Faults: A "Service Unavailable" fault surfaced during our presentation rehearsal at midterms. With the help of others, we realised that it was due to the low performance capabilities from the free tier we were using. We also clicked "Submit" on the web app multiple times, causing a long queue, then subsequently crashing the server. We overcame this by upgrading our instance to t2 small.
- App Crashes To implement the Offline Function, the iOS App crashed frequently as the architecture was not suitable. We then changed the architecture of the app to correctly incorporate the core data model.
- Achieved our initial scope set as a 6-men team, despite having to downsize unexpectedly to a 4-men team.
- Application successfully deployed to Apple App Store
- Focusing on the experience rather than the outcome also helped alot in relieving stress for the team, which translated into better productivity and morale
- To ensure everyone is on the same page after every meeting, each member is assigned a role in minutes taking. E.g. Cheryl takes minutes, Ailin will vet through Supervisor Meeting Minutes, Grace will vet through Client Meeting Minutes & Pei Jia will vet through Team Meeting Minutes.
Provide more details about the status, schedule and the scope of the project. Describe the complexity of the project.
Project Schedule (Planned Vs Actual):
The team had 5 revisions to the project schedule since the start of the project.
Timeline 1: Pre-Acceptance
Timeline 2: Post-Acceptance
Timeline 3: After change in team structure
Timeline 4: Post Midterms
Timeline 5: After Change in Priorities
Please see all 5 versions of the project schedule here.
Planned Project Schedule (based on midterms feedback):
Actual Project Schedule (after change in priorities):
The project plan during midterms did not include "Offline Mode", "Mobile Features", and "Security Module", but the "Offline Function" and "Mobile Features" portions were added based on feedback the team obtained from midterms.
1. Initially, the team had doubts about delivering the product with a fully-functional "Offline Mode" function, and decided to prioritise the "Mobile Features". However, after several internal discussions, the team decided to implement the "Offline Mode" function to boost the application as a tool that allows for learning-on-the-go. The supervisor and sponsor were also supportive of the move. Hence, to cope with the new additions, the team decided to drop the "Survey Module" as it provided the least value to the sponsor amongst all three features (Offline, Mobile, Survey). The team also decided to add the "Security Module" as a security feature since the project deals with confidential information like passwords.
2. The schedule during midterms only allowed for 3 UATs to be conducted, but post-midterms, the timeline has allowed for an additional UAT to be conducted on 5 April 2018.
The team had 3 revisions to the project scope since the start of the project.
Scope 1: Pre-Acceptance
Scope 2: After change in team structure
Scope 3: Post Midterms
Please see all 3 versions of the project scope here.
From Phase 1 to Phase 2:
We changed the way our scope was named, based on acceptance & supervisor's feedback. The new scope had features named in modules, and sorted by user type, which was a lot clearer than the initial scope that we wrote. We took a closer look at our scope and realised our good-to-have function of "Analytics" could value-add our sponsor more than the ability to collate assessments via iOS, which was parked under Secondary functions. After guidance from Prof Rafael, we decided to swap these two over, such that collating assessments via iOS became a good-to-have function, while moving "Analytics" to our secondary functions. It was also during this time where 2 of our group members left and dropped the project on us. Hence, after speaking to the sponsor and supervisor, we managed to scope down. By scoping down, we dropped all the good-to-have functions, and took out the interactive elements parked under "iOS Accessibility" Module . The "iOS Accessibility" was initially a core function of the project, but due to the sudden reduction in manpower, we had to take it out to complete the project on time. We also dropped our he sponsor was agreeable to our request.
From Phase 2 to Phase 3:
We obtained feedback from midterms that our application was lacking the mobile aspect, and the reviewers recommended that we included some mobile-only features to the application. We took up their suggestion and implemented the "Camera" function and "GPS" function. The decision to implement these 2 mobile functions were based on how much value they would add to our sponsor, how frequently the intended users will use the functions, how beneficial it would be to them while they use the app for Service Learning purposes, as well as the team's capability to manage the addition. The team also discussed among ourselves and decided that having an "Offline" function for the mobile application would value add the project a lot more, as an app that provides learning-on-the-go capabilities. Hence we decided to put it into the scope. To cope with the new changes in the mobile portion, the "Survey Module" was dropped as the team realised that the value that the "Survey Module" provided to sponsor paled in comparison to the "Mobile Features" and "Offline" Function.
On the web application, the team decided that we needed to include a security feature that would encrypt confidential information like passwords. As the web part was relatively stable, we did not have to make major changes to the timeline to accommodate this addition.
At this point, it is imperative to highlight that the team has completed the project with the initial scope when decided as a 6-men team, despite downsizing to a 4-men team. While we dropped the "Survey Module", the team has included "Peer Evaluation Module" and "Security Module" which provided more value to the sponsor. This was agreed upon with the sponsor as well as our supervisor.
Please see our metrics here
Please see our risks here
Describe and list the technical complexity of your project in order of highest complexity first. For example, deploying on iPhone using Objective-C, customizing Drupal with own database, quick search for shortest flight path, database structure, etc.
Quality of product
Provide more details about the quality of your work. For example, you designed a flexible configurable system using XML.config files, uses Strategy Design Pattern to allow plugging in different strategy, implement a regular expression parser to map a flexible formula editor, etc.
|Project Management||Minutes||Team, Supervisor, Sponsor Meetings|
|Metrics||Bug Metrics, Task Metrics, Wellness Metrics|
|Diagrams||ER Diagram||ER Diagram|
|Use Case||Use Case Diagram|
|Design||Persona & Scenarios||Persona & Scenarios|
|Prototypes||Low Fidelity Prototypes, High Fidelity Prototypes|
|System Architecture Diagrams||iOS|
|Testing||User Testing 1||User Testing 1|
|User Testing 2||User Testing 2|
|User Testing 3||User Testing 3|
|User Testing 4||User Testing 4|
- Though there is no confidential information in our database yet, the team has accounted for future users, and have developed the app such that all passwords will be encrypted when we bootstrap the lecturers and students.
- Our current instance also addresses reliability as we ensured that the server will not be unavailable by upgrading the instance.
- We separated all our folders for the backend codes and organized them by DAO, controller, service, model, constant so that our codes can be more easily maintained and changed (upgrade or fixing). We also designed our project such that the front end is separated from the backend such that it only uses a script to call the API to retrieve the contents to display on the web app.
(Refer to Figure 1): We adopted the MVC architecture for the iOS app. The model files have been replaced by core data after implementing the Core Data model. Core Data drastically decreases the amount of code you write to support the model layer, which decreases potential errors. It ensures sophisticated query compilation. Instead of writing SQL, you can create complex queries by associating an NSPredicate object with a fetch request.
(Refer to Figure 2): We modified the codes in the API and Controllers to ensure that they connect to the data model instead of connecting to the API directly as before. The codes are now reusable as they follow a standard format, and we also added comments for easier maintenance in future, wherever needed.
In an iterative approach, ready to use system should be available (deployed) for client and instructions to access the system described here (user name). If necessary, provide a deployment diagram link.
Describe the testing done on your system. For example, the number of user testing, tester profile, test cases, survey results, issue tracker, bug reports, etc.
Please click here for more details on the UATs.
|User Testing||Date||Venue||Number of Testers|
|User Testing 1||6 November 2017, 1130AM - 230PM||Ngee Ann Polytechnic||8|
|User Testing 2||13 February 2018, 430PM - 715PM||Ngee Ann Polytechnic||20|
|User Testing 3||14 March 2018, 4PM - 8PM||Ngee Ann Polytechnic Bus Stops (ID: 12101 & ID: 12109), Beauty World MRT stations, King Albert Park MRT Station, Sixth Avenue MRT Station, Tan Kah Kee MRT Station||27|
Compile common lessons and reflection for the team and for each team member. Be brief.
Key lessons learned – indicating where the team improved, or would do things differently next time. You may refer to the learning outcome summary in your proposal. A very short checklist style will suffice. It would be very convincing if the knowledge is share at the wiki knowledge base and linked here.
Describe in a paragraph, the key areas of learning or improvement. These should be personal areas of growth or learning. Each individual should list his/her effort, responsibility, actual contributions and personal reflection. Do not repeat team project contributions or member roles. Link if necessary.
Cheryl Lee Sze Min:
The whole IS480 has been a roller-coaster journey. It started off where everything was peaceful, on a plateau. We climbed and got to a high when we made it through acceptance. Everything was good until our first dip, and it was a deep plunge when we had 2 of our key developers choosing to leave. The climb up was then arduous, fraught with plenty of further dips, then slight climbs when our app part works, then dips again, especially closer to the midterms. While we kept our morale high, there was an obstacle called “Stress” that we had to overcome, because failing the midterms meant having to start from scratch. We were determined not to make that an option for us. Again, midterms ended on a high and then we plunged again when we had to develop more functions that were foreign, but would add immensely to the value of the project. Our cart went forward, dipped when there were problems, but the climbs this time were higher. Every positive step we made went a long way, and we're glad this roller coaster ride is almost over.
What I’d like to say is that I’ve learnt to pick myself up from “failure”. And failure is in quotes because it’s really not a failure. Coming this far has been a great achievement for a handicapped team. I used to term ourselves “handicapped”, in this sense, it's “a circumstance that makes progress or success difficult” but looking back, I can proudly say the team made this work for ourselves.
During the journey, I saw the team standing by 3 principles: 1. The first step is always the most difficult 2. Be afraid, but do it anyway 3. Things always seem impossible until its done
What I took away from the project is a whole bout of grit and lots of positivity. How can you keep your team’s morale high when you’re not positive? And of course, friends. I think bad circumstances have bonded us, giving us the opportunity to learn from each other and I’m glad it was a positive kind of bond.
Apart from guidance in terms of steering the project, I think Prof Raf has also given us plenty of life advice. Concepts like sharpening the saw, how to approach things without a fear of failure, his zest for improving education were a fresh sight in SIS. I took away more than just knowing how to mange stakeholder expectations and a team. I took away relevant life lessons which has aided me, and will continue to aid me as I approach bigger things in life.
Cheau Nor Ailin:
Being able to have made it this far has truly been a huge achievement for myself and the team. I remembered how we struggled so badly at the start of the year and how much we wanted to give up so badly because we thought we weren't good enough. We really thought we would fail but when we talked to Prof Rafael and Prof Ben, everything just did not sound as bad anymore. And that kept us going all the way till midterms which we were truly proud to have reached! And even after midterms when we struggled because we had to do 2 new functions that we weren't familiar with, we still persevered with the help of our wonderful supervisor! He gave us good insights on what can be done for analytics and also gave us a boost of confidence. He told us this term called "Sharpen The Saw" which helped us to take a step back and look through the fundamentals to see what was lacking instead of trying & trying with a blunt blade. I remembered before that meeting, Pei Jia was so stressed about not being able to finish the offline function and how she was worried she might pull us down. And we stood outside the gantry talking to each other for an hour, telling her to look at how far we've gotten and if we could get through all that, we can get through this as well! And she persevered and we were so proud of what she has achieved now without any prior knowledge! It has truly been an amazing journey with the team through our ups and downs. And I'm really proud of how much we have all grown and how much we have learnt throughout this whole process. I was also thankful to have gained a whole lot of new friends from all the problems I had such as "service unavailable", "api calls", and even "s3 storage". It was through these struggles that we truly managed to learn and grow from them. And it is with all these experiences that we can now look forward in life, believing that we can achieve much more even if we have any setbacks by not giving up and sharpening the saw.
Grace Foo Huan Ting:
Lee Pei Jia:
I felt a lot of stress when I was first entrusted with the role of iOS developer, because I’m afraid that I will fail to deliver since I have no prior knowledge in Swift at all. However, I'm thankful that I have friends who care more about my well-being than their grades, as they told me that I can just do my best, and they are ok with any grade we get. To be honest, I'm really very touched, not by what they said, but because I feel that all 3 of them are being genuine when they said that. FYP is not just a module to me, but I've learnt many things beyond textbook materials. I learnt about how the real society works, where people come and go; the Sharpen-Your-Saw concept, and it also helps me to know myself better. I came to the conclusion that your only limit is yourself. People always think that they can only do this much. However, when you really go all out and force yourself to level up, you will be surprised at how much you can achieve. With this group of friends and my supervisor Rafael, I find more confidence in myself, and I believe I will have more faith in the things I do in future.
I feel that I gain more than what I lost in this FYP. New genuine friendships, and more resilience and I believe I have a “stronger’ heart now. No matter what our final grade is, I'm already very proud of what the 4 of us have managed to overcome and achieve together.
Sometimes, the client writes a report to feedback on the system; this sponsor report can be included or linked from here.