Another one of the major project based courses at NTU, Software Engineering focuses on a group project aimed at developing either an Android or a web application accompanied with proper documentation which is actually the main focus of the project. At the end of the development stage, each group is tasked to present their work to their lab supervisors.
The course did not have much teaching in the sense that the lectures were highly theoretical and only talked about the procedures to be followed while creating the deliverables (documents only) and did not teach anything about the actual development to be done. Thus it was a very "do-it-yourself" type course which made it quite stimulating in terms of time management and learning new things.
My group and I decided to play to all our strengths and develop a web application. We came up with our website idea and had it approved by out supervisor. Our final plan was to develop a currency rates portal where users can see the past and current exchange rates of selected currencies, watchlist them as well as locate money-changers using the Google Maps API. Our most important feature was the prediction of future currency exchange rates using machine learning based models. Additionally, we had administrative features to support any database changes that cannot be done by a normal user.
The deliverables included various documents such as a project plan, work breakdown structure document, use-case diagram and use-case description document, overall class diagram and sequence diagrams for the major features. We also had to create a video to highlight our work, and of course the source code itself.
The first roadblock hit us during the very initial stages of discussion. I was strongly in favour of using the SpringBoot framework in Java because it is an upcoming and popular framework used in the industry. Though I had never used it before, I was confident that we would be able to pick it up given that we were all comfortable with Java. However, another member wanted to develop it using another framework because he was comfortable with it and confident at using it. This led to a slight conflict in the group as both of us were trying to push for our respective ideas.
Fearing this would lead to bad-blood in the group, we decided to present our ideas clearly to the other members and let them take the final decision. We proceeded with a small whiteboard presentation in front of the whole group and finally my idea was selected.
The technologies we decided to use are:
Once we had our tools in place, we divided the responsibilities and started work. Once we all knew what needed to be done everyone worked hard on their respective segments. I worked on the watchlist feature which involved all components of the MVC design pattern as well as using the database backend. Additionally, I created the video deliverable to explain the essential features and their working.
Apart from a few more small conflicts along the way, the project went smoothly. Though the final presentation had room for improvement in terms of explanation, I made the video clear enough to make up for it.
A part of everyone's grades were also determined based on group peer evaluations. However, since my group was quite friendly and we resolved conflicts quickly, I was not too worried on that aspect. All of us managed to get a good final grade for the course and we were all very proud of our work.
I think Software Engineering taught me more about web development and group work than the documentation which was supposed to be the focus of the course. I learned how to peacefully resolve conflicts without taking them too far and how a degree of willingness to accept other opinions is very important to work well in a group.