Saturday, 17 September 2011

My reflection on CS2103T project

In my opinion, it is impossible for a project not to possess any problems. For every team, regardless of the perfection of the team, there will definitely be challenges in order to deliver an extraordinary product. On the contrary, teams that find no problems with themselves are likely to have a big bang eventually. It is because when the problems are discovered, it is too late and likely to be unsalvageable. Therefore, the sooner the problem can be identified, the higher the chance to analyze and solve it. To emphasize, analyzing is definitely vital for figuring out the approach for the best solution.

In our project, To-Do Manager (TDM), one of the biggest and hardest problems we have encountered so far is implementing the multipurpose command bar (textual input) to facilitate the requirements. The problem started around week four when our team decided the architecture and the Application Program Interface (API) for our system. We have not realized the importance of having a well-implemented command bar. At the point of time, we just treated the command bar as a decorated feature for our fancy Graphical User Interface (GUI). Hence, we thought that implementation of the command bar was not a big deal despite that we were given target user Jim, an imaginary geek, who would rather type than use the mouse because of his fast typing speed.

The first part of the problem, which was facilitating requirements, kicked us in last week. After the fifth lecture of CT module, we realized that we had been really off tracked. Dr. Damith spent almost half an hour just to clarify and emphasize on the importance of a multipurpose command bar in the project. This devastating news implied that we have wasted two weeks in figuring out the software architecture that would need to be modified definitely. Moreover, as time went on, we noticed that the problem was not just that bad. The second part came right after discussions about refiguring out the project’s API. We eventually find out that the implementation of the desired multipurpose command bar, especially parsing–commands is extremely hard for us to solve ourselves.

The first cause of this problem is the lack of understanding on the requirements. We somehow shifted the main focus of the project from textual input to graphic interface during discussions. Another major cause is that many of us are perfectionists. We all aimed to build the best TDM with the most powerful multipurpose command bar ever. However, our ambitious goal is really a stumbling block in the implementation of our project.

The best solution for the problem at this point of time is try to find a suitable third–party library for the parsing–commands that can satisfy our requirements. Although using the external works is not encouraged, it is still a good opportunity for us to learn from how people handle the problem. Moreover, the library can be extended to be technically fit for our own project. Another possible solution is to scale down the goal and implement the slightly less ambitious multipurpose command bar, i.e. using flags to indicate transitions instead of users’ languages. Although the original goal has not been achieved completely, it is quite an acceptable solution to the hard problem that we have encountered.

Finally, it should be bear in mind that this is just the beginning stage; we still have a long way to go. Challenges are crucial for the success. I have a strong faint that we are capable of overcoming every single obstacle we face and our team can finally produce an outstanding product that can be applied in reality.

3 comments:

  1. The multi-purpose command bar is essential to fulfill the requirement for this project. The problem with this feature now is whether we want to make it to be very user friendly that users will just have to type in the command in their natural English language or we want to make it to be slightly not user friendly that requires the users to remember a few notations to indicate the kind of information they will be inputting. Both ways have pros and cons. The first one will make the Todo Manager a popular among the users, but it will be very difficult to code. The second one will make the Todo Manager seems ordinary, but it is as easy as pie to code. Given the time constraint, I personally think that we should stick to the second method.

    ReplyDelete
  2. I agree with you that the textual input part is quite important for a todo manager, especiall for the one we are going to made, because our target user is the geeks. Geeks prefer typing. So we need to analysis the textual input to find out the command and the information about the task.
    Unfortunately, all the third party libraries we found are not suitable for our Todo manager, which means we should code everything by ourselves.All of us know that it is a huge work, but we have no choice if we want to make our software outstanding. As the saying goes, what worth doing is worth doing best. Let's go for it!

    ReplyDelete
  3. The multi-purpose bar is actually the best feature we have now, and it fulfills requirements of CS2103T. The way we use is quite different compared with some other groups, and I really like our feature. With regards to your solutions, the first solution has just been proved hard to find one in the last meeting. After several days for searching individually, we did not find much useful third party libraries in the end. However, I think we may choose the second solution. The criteria we set can be scaled down a little by neglecting some uncommon typing habits, such as type date/month/year instead of the short form for each month followed by the date. It is really good to see that everyone really wants to make a difference. Let’s do our best!

    ReplyDelete