Tuesday, November 13, 2012

The Final Stretch

The entire project was pretty nerve wracking for me since I feel that there were not a lot of project management and I was unfamiliar with game development. I felt lost for most of the project because I wasn't sure what I needed to do since we did not have detailed task assignment and I wasn't clear on which components needed what type of development. Thankfully Dan and Jeremy both had experience with game development from previous classes so they did the bulk of the development. I was able to contribute by creating stub classes, generating class diagrams from Visual Studio, and updated the team wiki.

I think in a real world scenario where multiple teams have to work together on a big project, there has to be more project management, planning, and coordination. I feel that with this project, there were not enough project management effort since the roles of each team member were not very clear and the task assignment was also unclear, so for team A, I felt that we lucked out in that Dan and Jeremy took the ownership of the development tasks and just did what needed to be done for the game. However, if we were to apply this same pattern for a commercial scale application, it would be a recipe for disaster with such little planning.

All in all, this was an interesting class. I think the point of these projects were to expose the issues that we face in global development and how we can potentially address them. It would be great if this class required Project Management class, then we have to apply more project management principles to the project. That way we get to apply what we learned in Project Management class on real projects instead of arbitrary projects.

Tuesday, October 30, 2012

Project 3 - Part A


This project requires the entire class to work together on the design and implementation of the Tetris game. At first it was a little unclear how we will organize the team and partition the work but a couple of people in the class took the intiative to start the discussion thread. One student started an email thread to get people engaged in the project. Another student took the first stab at creating a feature list in the project wiki page. I helped get the project rolling by putting together a first draft of the timeline for phase A and called for a Skype meeting.

Not everyone in the class were able to join the Skype conference, but we had at least 1 person from each team as the representative. We first discussed the overall objective of the project, then we discussed the immediate tasks required for phase A.  Our objective for the meeting were to identify the major components of the game and to assign component(s) to team. The meeting got off track a couple of times because some students wanted to go into more details of each component to evaluate the complexity of the component. Collision handling was the biggest concern for many students. By the end of the meeting, we were able to split up the components and assign them to team based on level of effort and the team's interest in working on the component.

Team A were assigned InputManager and ScreenManager. We had a Skype conference the next day to discuss our design. I have no previous experience in game development, luckily Dan and Jer on the team both had experience in this area. They walked me through the installation of XNA framework and an example code base of another game project from another class. The sample code base helped me a lot with understanding the basic setup of a game in .NET. We ended up modealing our class design after the example. I was not able to contribute a lot of input in the gaming aspect, but I was able to provide input in the code design area. After we were done with the first draft of the main classes, methods, and pseudo code design document, I took the design and created the stub classes in Visual Studio, then generated class diagram from the IDE. I feel it was the quickest and reasonable approach to creating class diagram. I could validate the syntax of the sample code, quickly create class diagram, at the same time getting a head start with the stub classes for when we are ready for implementation.

Overall it was a good experience working across teams. At first I was nervous about coordination among the team. However, for the most part each team had a good representative that were willing to lead discussion and effort to ensure the project is a success.

Tuesday, October 23, 2012

Project 2 - Part B

For this part of the project we are asked to do a couple of things. First, we are to hand over our design to team B for implementation. We are supposed to answer questions from implementation team and monitor their progress to make sure they are on track with our design. Secondly, we are also assigned to work on Bucket implementation based on design by team E.

As for supervising team B, we did not have much of a challenge. They did not have that many questions regarding the design and based on their progress in Perforce, it seems that the implementation is going well. I'd like to think that a majority of this success is based on the clear and well documented design that we have provided them. We have a couple of Skype session to clarify questions, but overall there were no major issue.

It is a whole different situation with our implementation for team E's design. We had an initial meeting with team E to go over the design which I was not able to attend which could contribute to our confusion at the end of how some of the methods were supposed to function. We were quite unorganized with our timeline and task assignment. Anisha took the first  initiative to put in the skeleton for the solution, then Dan worked on a majority of the functionality.  Thanks to him we had very little implementation work left to do. However, this presented a problem with project coordination and the team's overall understanding of what we were implementing. Last night, we were still having quite a few questions and we discovered a few bugs that could have gotten caught earlier had the team have gone through the design in more details and have a more open dialogue so that we all can be on the same page. We were also using the DEBUG section to test our code which could have been handled better if we just created unit test cases for them. Unit test cases would have provided clearer picture of code coverage.

After this phase, we all agree that going forward for future project we will need to have a better timeline of how we will divide the tasks and how we will communicate with fellow team members. Our plan going forward is since most of the assignment are assigned Tuesday, we agree that we will review the assignment by Thursday night and have task assignment and timeline for completion by Friday night. We will also have a scheduled Skype session on Sunday evening to make sure a majority of the tasks are completed.

Sunday, October 14, 2012

Project 2 - Part A

For this project we have to work as a design team to create design documents for a Spin List. The requirement is that we have to design a linked list that can be spun. The tricky part about the requirement is that this list can be very large with thousands or even millions of nodes and we cannot use any of the packaged .NET list data structure.

I am the team lead for this project. At first it was a little difficult to get everyone's time to meet and discuss the design because of schedule conflict. We finally were able to meet via Skype without one team member on Saturday for a brainstorm session. We first tried to understand what the requirement were asking us to do. After that, we reviewed the assignment requirement itself to see the type of documents we were required to submit. We then broke down the major tasks that were needed in the design phase then assign it to team member as we see fit.

I got assigned with the design document along with Dan and Task List for Implementation. To come up with the design, Dan and I reviewed the requirement in more details to understand the major functionality that the Spin List needs to have and potential approach to solving those requirements. We used Google Drive  for real time collaboration, since we are able to see and make changes to the same document.

It was a, enjoyable experience being to collaborate with a fellow student. I learned quite a few things from him. We are almost finish with the design document. Next, I will be working on the Task List for Implementation.

Monday, October 8, 2012

Project 1 - Part B - Unit Testing

For this part we did not have to do as much coordination with fellow team members as the last part. For the most part, we each just wrote the unit test cases for the methods that we selected and checked into Perforce. The most challenging part for me was getting myself familiar with the code base and trying to test private method or method that did not return any value.

I saw quite a few questions about how to write unit test for these situations, and there were some people mentioned way to expose the private members but I was reluctant to do that because I believe in the principal of only testing the public interface. I ended up getting around the issue by setting up test scenario where the private method will get invoked based on the condition without making direct call to the private methods.

I used Visual Studio to generate class diagram, find references, and call hierarchy to methods to understand the code base more. These tools were really helpful to provide a clearer picture of relationship and interaction among the classes. I also noticed that the code base severely lack comments explaining what each class, method does, how it should be used, and what is the reason behind a certain piece of code.

Overall, it was a challenging assignment. A lot of the time were spent not on the technology side but on trying to understand what the code does. This does reflect the challenges of global software development, because a lot of times, developer are thrown into supporting or extending legacy code where there are little to no documentation and the original developers are not available for questions and answer.

Tuesday, October 2, 2012

Team Project 1 - Part A

For Team Project 1 - Part A we have to coordinate communication in the team and come up with a plan to write unit test cases. We started out by sending email to people in the group to get the communication going. There were not a real plan at the beginning. We just wanted to get everyone on the same page of what needed to be done and what each person's background is.

Dan took the first initiative to create the team wiki page and the Unit Test Project for the solution. We each updated the wiki with our pick of unit test cases that we want to work on. I took the first stab at gathering information and updating the wiki with the team's general plan.  Other people on the team also helped pitch in to finalize the plan. We decided that Dan is the team lead and Anisha is the reporting person.We now have a good plan to accomplish the tasks needed for Part B.

Monday, September 17, 2012

HW1

HW1

For HW1 we have to set up our environment which includes joining the class Wiki, Discussion Forum, Perforce Forum, create a blog,  install Visual Studio 2010 and Perforce P4V, and write a C# program to calculate Fibonacci number based on user input sequence number.

Overall the installation piece was relatively easy since I am already familiar with C# and other source control software. The most challenging part was the joining the different discussion forum and making sure I completed everything the assignment requires. I ran into permission issue after joining the discussion forum. The issue was resolved by professor approving my registration.

Since I only use Java for school,  in previous classes, a majority of the challenges were the environment setup for Java. I am happy in SE511 we get to use Visual Studio and C# which I am very familiar with.  I'm hoping there will be no issue with the environment setup going forward so I can spend my time and energy focusing on other exciting stuff.