My overall impression of iteration one was that it went well! The design process that we were trying to implement went smoothly for my partner and me. When we first started we needed to plan it out. We discussed what we needed and how we possibly could get there and implement it. Obviously during the actual coding part of the iteration we ran into difficulties that we did not foresee, but by planning first it helped to set the organization of the structure that our program would eventually take. Having this organization helped the design process go through what seemed like a checklist of things to do. We divided the project into multiple methods that we could test individually and see if they worked. Once we were finished with a certain method we could then either move onto the next one or move onto integrating the methods into the overall program. There were bugs during the integration and testing, but by splitting it up the way we did, I think that it ended up being a lot less debugging than if we did not organize it first.
The way my partner and I worked together was actually very efficient and effective. We usually did all of the coding on the project together. That way there was always someone else there to bounce ideas and problems off of during the programming. We did not necessarily work together at the same computer, but instead we worked on separate parts of our program on different computers that were next to each other. Whenever it was necessary, we then updated the working copies of our code by using subversion. Having another person to work on this project with was very helpful. It sped up the process in many ways including the debugging, planning and writing of the actual code. Although working with an extra person does incur conflicts with merging the two working copies of code, I thought that subversion worked very nicely in countering it if we were ever to work on the code individually.
Some parts during the iteration did not go so well as the rest of the project. When we passed arguments from method to method (and class to class), we ended up getting a lot of pointer errors. Most of these were not bad to fix but one we found to be impossible given the time constraints. When we tried to associate a token with its regular expression, we wanted to initially make a loop that did that for us given a list of regular expressions and a list of token keywords; however, after many problems and errors regarding pointers, we decided to then use an approach that requires more upkeep than our original tactic. We made a switch statement that associated the two for us. In future implementations of our code if we have to change the keywords at all, our code needs to change to compensate. This is not optimal, but it did get the job done for this iteration and allows for future improvement. Another struggle that we encountered was writing test cases. It was hard to get into the habit of writing them. Because we did not have enough test cases that adequately tested our code, when our scanner tried to do the iteration one tests, it failed some of them. Having to track down where in our code it failed took more time than it would have needed if we had just written better test cases during the process.
For iteration two, the main change that I would like to make is to start earlier. Although the programming itself was not too difficult, the amount of work in iteration 1 was a lot. I believe that the quality of mine and my partner's work could have been much better if we had started just a week before we actually did. My partner and I also must make more test cases as we develop the methods and functions in our programs. It will make integration easier and just make us more confident that a piece of code does as it should. I do, however, like how my partner and I worked together. Programming at the same time was productive and I learned a lot more of what my partner did in the code if he had just did it by himself. This way I have a much better understanding of the entire program. Hopefully this iteration goes easier than the first one.