Not Only Software Engineering

17 Dec 2019

Today is the last day of my final project for ICS 314, Software Engineering. I’m excited that all the efforts my team has made will be presented to the world. Thanks to my professor Dr. Johnson and my TA Branden. I admit that I have spent a lot of time in this course, and I have learned a lot as well. I think I’ve gained significantly more understanding about this course from an actual group final project, Beyond the Library. (Here is a link to my project for more details) Agile Project Management and Testing are the two major tools I kept in mind during the development.

Agile Project Management

We used Agile Project Management to organize and arrange all the group works for each individual. For my final project, we made three milestones, which were the goals with specific ending dates and expectations.

During the first milestone, we grouped up and brainstormed all the ideas and discussed features we wanted to implement for our project. We started designing with paper and pens. I sketched a user interface of the management page of study spots. I designed an alternative card pattern for this page so that the user can manage all the spots quickly. I think the users should have limited control of the site; therefore, I added a “status” attribute to each spot. I also designed a similar page for the administrator; the administrator has more power to edit and manage all the spots from other users’ contributions. With my sketch, making the UI mockup for these pages became much easier.

One of the critical aspects of Agile Project Management was that each member could have only one issue in progress. Issues were the specific and realistic tasks we wanted to finish by the end of a milestone. With this aspect, we didn’t have to worry about if two members were doing the duplicated work. Besides, we could have a more precise idea about what was going on next.

Testing

During the development, the thing I did most was testing. Each time after I added a new feature to the project, I would test all the other modules that were related to the change to get rid of potential problems. It took a lot of my time, but it was worth it. I could image how frustrated my user would be if our final version still had those bugs. From testing, I also found many features I could add; for example, I found it was tedious to click on the navigation bar. Therefore, I added many links that could help users directly enter another page.

Another testing was to find other students to use our project and give us feedback. Based on their feedback, I added more links and instructions for the users. For example, the Add Spot page was overwhelming: the user was asked to fill in the URL of the image and the GPS coordinates of a spot. To deal with that, I asked one of my teammates to write some instructions on the FAQ session. Besides, I spent some time and used a tricky way to make the form to be three-steps. I hid the most challenging parts to the end so that the user won’t give up too early.

More than Coding

Agile Project Management and Testing are just small parts of what I have learned in this class. There are many other vital aspects I’ve learned for my future career. For example, the coding standard helps me write more readable codes, and ethics in Software Engineering helps me know what the creed of computing professionals is.