Showing posts with label MyIsern. Show all posts
Showing posts with label MyIsern. Show all posts

Sunday, December 9, 2007

MyIsern-Onyx-2.0 Review

Team reviewed: Onyx
Our team decided to break up the review into four parts and I was given the task to review their web application.

Installation:
Their distribution package is easily found on their hosting site. Downloading and extracting the file was easy and smooth. Installation went well as they have detail instructions on their wiki page and also in the readme file that come in the distribution package. After executing ant -f tomcat.build.xml, I was ready to navigate their site.

Web Design:
They done a good job with the login page. The login page is simple and very informative. Even before logging in, the user can get a comprehensive view of what the page does as a detail description is listed there.

They choose a very nice template which looks professional. The black background stands out nicely. However, as Professor Johnson mentioned during the presentation, the black background and the grey texts in the main body might be hard to see when projected on a projector. Although no

The color scheme was also very good. The white title is catchy against the black background. If the color of the sidebar, which is currently green, can match with that of the main title bar, everything should look even more organized.

Screen Real Estate:
On the whole, team Onyx did a good job in term of screen real estate. The space allocated for the main body text is wide enough. However, when the window is reduced to less than 1/2 of the monitor space, the side bars cannot be show and some of the main body text is also not visible. I have to scroll across the page in order to see all the text.

Quite often, I have to scroll down the page to see some content and I think that can be improved by several ways:
1. Make the title smaller. It is catchy now but it takes up quite a lot of space.
2. Put the Logout Sign on the same level as the title or on the main navigation bar. Right now, it is occupying a separate row at the top.
3. They are too much white space inside the sidebars. Minimizing those white space might be a good idea.

Overall:
I tried their webpage on both Internet Explorer and Firefox and both worked well. Therefore, their website is user friendly regardless of the browser the user is using. Overall, this is a very well designed webpage and as a user, I had an easy time navigating it.

Friday, November 16, 2007

29.MyIsern-1.3-review


Author reviewed: Team Brown

1. Installation Review:
It was very easy to find and download their project as Randy has posted an entry for myIsern-1.3 and the link for download is easily accessible there.
Installation was easy. They have an installation guide and the link to it is also incldued in the blog. By following the instructions there, installation went well. All QA tests passed except for junit.

2. Code format and conventions review:
They did a great job with code format. I couldn't spot any violation only a few minor ones find in the MyIsernActionBean.java which has uncommented prviate members and an irrevalant comment on line 51 from conflicted file during update. There are also some prviate members that are not commented in other files but other than these, everything is good.

3. Test Case Review:
Black box perspective:
Most of the Action Beans are tested throughly, but the model still needs more testings. In particalar, DataIntegrityReportBean is not being tested at all.

White box perspective:
Emma Coverage summary
class: 88% (15/17)
method: 83% (133/161)
block: 70% (1728/2473)
line: 72% (373.8/522)

The coverage is pretty good as almost all classes are tested.

Break da buggah:
The program crush when pressing the save button for the collabotation item. An error always occur there even if no data is changed for that item. Also, by declaring a new organization entry, the xml file would be corrupted. Only the first 4 entries remain while all the rest, including with the new entry created would be erased from the file.

4. User Interface Review:
The user interface was simple and concise. In turns of real estate, they have done a great job! It functions well even when the screen is reduced to a small size. However, it was purely text-based and using more graphic should make it more attractive and professional-looking.

5. Summary and Lessons Learned:
They have achieved a lot with only a week! After reviewing their code, I learned how to implement the login page using Security filter which our group was previously stuck in. Also, the installation guide was a great help to users and our group should include one too.

Monday, October 22, 2007

21.MyISERN-1.2

Link to our project page: http://code.google.com/p/myisern-1-red/
Project download: http://code.google.com/p/myisern-1-red/downloads/list

Tasks:
All tasks for this assignment are completed.

Difficulty:
There were several problems faced. Firstly, we were confused with how to implement the methods to edit current researcher, collaboration or organization. We come up with several possible implementation ideas and finally clarified with Dr. Johnson on what the users expects to do when editing information. However, the actual implementation was not as easy as we thought. We come into problems when we write these methods and checking the link is a particular one that gave us lots of troubles. We used httpunit to check and validate the links but it kept giving us various errors when we run the program. After spending a whole night on adding in more data checking and throwing in exceptions, this problem was finally solved. Secondly, there was the problem with displaying our data in the table. We used Swing to print out tables. It worked fine for printing the researchers and organization which has a relatively simpler structure than the collaboration data. However, when it came to the collaboration data, we have trouble with displaying some entries. For example, those with missing years cannot be displayed at all. Thirdly, when my groupmate Jared did the testing, he kept receiving error: “junit.framework.AssertionFailedError: Forked Java VM exited abnormally” which is probably due to the vast amount of data put into the heap. After trying other possible tests, in the end, he has to take out those tests as there was no way to get around the problem caused by limitation of memory available. Lastly, there is the problem with entering the data. I entered the collaboration data and it was quite tedious to figure out the collaboration data from the given pdf, there was a lot of missing data so a lot of guesses was put in to make it as complete as possible. However, this is not a big problem compared to coding and it gave a good taste of what it is in real life at work because the users won’t always give you every data or requirements you need and you have to be able to sort them out.

Group work:

This is a nice experience working with my groupmates Jared and Phuoc as we are all willing to help each other whenever needed. One problem we faced was the lack of overall coordination. We didn’t assign work explicitly to each member. We all just took up whatever work is not done at that moment and worked on it. If we faced problem as we worked on our tasks, we would bring it out and the other members would always be willing to help which is encouraging. However, we feel that it would be more efficient if we just break down the tasks and assign them to each member instead.

Improvement for next Milestones:
There is mainly two ways to improve the process and the project itself. Firstly, in terms of group work, we would improve the overall coordination by breaking down the tasks into smaller parts and assign them to each member instead of volunteering to take up whatever part is left undone. This should make this programming process more efficient. Secondly, we would consolidate the code. For example, we have separate methods for adding or editing researchers, collaborations, and organizations respectively. In these methods, there are all performing similar actions and these actions could possibly be simplified by grouping them as another method. Moreover, given this project has grown so much in size that we have thousands of codes now, there would absolutely be other places with reluctant codes. We would go through the code in details for our next milestone and sort these codes out.

Wednesday, October 17, 2007

22.MyISERN-1.1.Review


Author reviewed: Ben Karsin of team Ivory
This is the first time we can choose the author to review and so I chose a graduate student’s team to learn from them.

1. Installation Review:
I went to the project page listed on his blog and downloaded the package successfully. Installation was quick and easy. Verify passed indicating JUnit, Checkstyle, PMD, and FindBugs tasks all passed too. The program also enable the creation of a jar file upon typing “ant jar”.

It was very easy to figure out how to use their program as they provided a helpful list of queries upon typing in “java –jar myisern-ivory.jar”. It also listed the link to the user guide in case the user needs more instruction on using the program. I found this queries list very helpful and I always return to it when I was testing the program as it was hard to remember all the different combination of queries. However, there was a typo in one of the queries: “-listCollaboraitons -researcher ” where “-listCollaboraitons” is misspelled. Tables or descriptions are produced as desired. However, the tables are printed in a rather messy way and it was hard to read. Then I realize it might be the problem with the size of my command prompt. So I reset the size the command prompt from standard size to full-screen. This turned out to be quite complicated as I have to first select “property” and then reset the “screen buffer size” before I can maximize the command prompt to full-screen. After that, the tables are displayed nicely. It might be helpful to add a line to the queries list saying the tables are best viewed in full-screen command prompt.

2. Code format and conventions review:
They modularized their codes and so there are a number of files in this project. However, after going through all of them, only TestQueryParser.java contains some minor violations. All the codes are also commented well. They have done a good job on code format and conventions.












File Lines Violation Comments
TestQueryParser.java59,60,71,* EJS-7 Should include white spaces


3. Test Case Review:
Black box perspective:
The purpose of this program is to print out tables based on the input queries and they have done a lot of testing on the input. However, they have missed out testing the boundary cases for “-listOrganization”. Other than that, they have done a pretty good job on black box testing.

White box perspective:
Emma Coverage summary
class: 100% (12/12)
method: 89% (65/73)
block: 87% (2684/3091)
line: 85% (452.5/532)

One reason why some coverages are not 100% is they forgot to check “-listOrganiztion” as indicated above. The TestXmlQuery.java was supposed to test all the methods in XmlQuery.java but they have left out this one.

Break da buggah:
They have done throughout testing and managed to catch most of my incorrect/invalid queries. However, upon typing “java -jar myisern-ivory.jar -describe -researcher PhilipJohnson” it returns the NullPointerException.

Similar errors also with “-describe –organization < uniqueID>” and “-describe –collaboration < uniqueID>” occur upon typing in anything other than a valid < uniqueID> that exists in the database.

4. Summary and Lessons Learned:
Overall, this program is pretty well-written. One thing I learned from Ben’s team is how to modularize a program. When I first imported the project into Eclipse, I was overwhelmed by the long list of java file there are and didn’t know where to start. It was a big difference from our team’s project which only comprises of two file and all the methods are put within MyIsernXmlLoader.xml. However, once I started going through their project, I was impressed with how organized the codes are. They broke down everything and put them into separate classes which makes it very easy to locate a particular method and to make changes. Given MyIsern is such a big project, I can see how modularization will be especially useful. This is something that my team is going to work on in the next milestone.

Sunday, October 14, 2007

18. MyISERN-1.1

All tasks for this assignment are completed.

Our team's project page is http://code.google.com/p/myisern-1-red/ and the source code can be downloaded here.

Assignment difficulty:
This assignment is more difficult than the first one. One of the problems encountered is how to obtain the collaboration from a given researcher. There were some confusion at the beginning but thanks to the discussion group, we found the clarification by the professor and the problem is solved. Another problem is conflicts during commits. I encountered several unsuccessful commits or updates due to these conflicts and merging the changes are usually quite complicated. Other than these, there are just some minor problems such as if we should use httpunit to validate the links and implementation detail of the method.

Problems encountered with group working:
It has been a very pleasant experience working with my groupmates Jared and Philip. We didn't encounter much problem with group working. However, sometimes it is a bit unclear as of who is working on which part. So one time I was working on a method but when I was almost done, I finally realized that my group mate has already started working a long way on that. So there was some communication problem but other than that, everything was great. I learned a lot from them, especially Jared who is a very good programmer and can always use the minimal lines of codes to achieve the same purpose. He has made our program very concise and easy to read.

Future improvements:
The issues have been a useful tool as it gives a clear outline of what else are yet to be done. I will stick to it in my future projects and I think breaking down the issues into more details might be more efficient and easier to assign work to members.

Overall, this is not a very hard assignment but writing out good methods is another thing. There are many way to implement a method and we sometimes have to switch from return different type. I feel that we could have saved time if we agreed in the beginning what return type to use.

This time, our group practiced pair programming for the first time and I found it very effective. My groupmates can spot my mistakes immediately and they pointed out errors in my Eclipse setting which I never recognized before. I come to appreciate pair programming as I never thought that having someone to watch me program would be so productive. If time allowed, I would love to practice more pair programming.

Tuesday, October 9, 2007

16. MyIsernReview


Author reviewed: Chiao-Fen Zielinski

1. Installation Review:
I downloaded the package from the link provided in her blog successfully. Installation went well. There was no instruction on how to execute the program but I was able to invoke "ant jar" from the command prompt to produce a jar file. After that, it wasn't difficult to figure out how to run the program as I could execute the program by "java -jar MyISERN-1-Orange.jar". The tables are produced as desired. Verify passed indicating JUnit, Checkstyle, PMD, and FindBugs tasks all passed too. Her team also achieved 100% Emma coverage. Good job!

2. Code format and conventions review:
There are a few violations in the code:






















File Lines Violation Comments
MyIsernXmlLoader.java 48,49,50 EJS-38 Document all private memberss
MyIsernXmlLoader.java206, 207, 208 EJS-36 Use one-line comments to explain implementation details
TestMyIsernXmlLoader.java51 EJS-7 Extra blank line between methods


3. Test Case Review:
Black box perspective:
Since the purpose of this assignment is to print out the tables based on data given in the 3 xml files, they have fulfilled this requirement. However, they seem to have misinterpreted the data in the colaborations.example.xml as there is only one collaboration item but they split up some data such as "collaborating-organizations" in two separate rows. This would cause confusion as users might mistake the second row as a separate item with missing fields. Since this is a mistake based on misinterpretation of data, even writing test cases could not have spotted that. Other than this, as printing out the data correctly is the only objective, I can't think of other test cases.

White box perspective:
They achieve 100% Emma coverage in all four areas, indicating that all codes has been covered at least once. They also have tests to make sure that the lists are returning the correct value which is nice.

Break da buggah:
The methods to print out the tables are entirely tailored to the data given in this set. If the xml files are revised, such as by adding more items to the collaboration file, the table would fail to print out the new data.

4. Summary and Lessons Learned:
Writing test cases are useful for catching a lot of errors but they still have their limits. In this case, the problem is caused by misinterpretation of data which cannot by spotted by tests. This is when reviewing by another person is especially useful. Through this exercise, I learn about how useful it is to have someone review your code as sometimes you are limited by your perspective and cannot spot some trival minor errors. Also, by comparing their codes with my group's, I learn more about ways to test the main methods as I am quite clueless whenever it comes to writing tests for void methods. On the whole, her team did a good job on this assignment.

Monday, October 8, 2007

15. MyIsern-1.0

This task was completed successfully and the link to the project page can be found here

JAXB
This is the first time I work with JAXB and I was confused by it at the beginning. The idea of converting XML data into java codes and vice versa is brilliant. A large portion of time I spent on this project was on reading about JAXB and XML so that I understand the idea of unmarshalling and marshalling. After knowing how JAXB linked XML and java, it was not difficult to come up with the methods to extract the data from XML and turn them into java tables.

XML
Compared to JAXB, I found XML schema easier to understand. It is basically the language for XML which allows user to define the structure and data types for XML files. However, for this assignment, I focused on learning about JAXB and haven't explored it in detail yet. Hopefully, as we move on with this MyISERN project, I will have more chances to work with it.

Table implementation
At the start of the project, I expected the extraction of data from XML files would be the hardest part of this assignment but it turned out not as difficult as implementing a table in Java. Our group started out with no idea on implementing the table and decided to use JTable after doing some research online. The good thing about using this class is that GUI interface is possible which produced nicer result than simply printing out in text form. However, as we started implementing methods to print out JTables, we were presented with several problems such as table overriding each other. By doing some research online again, we were able to solve these problems and we are much more familiar with using JTable and its related classes now.

Jar file compiling
I didn't know how to enable a file to compile using command prompt before and thought it would be a difficult task. However, after reading through the build.xml from previous assignment I found that it is quite easy. I am comfortable with implementing it in my future assignments.

Emma
For this assignment, the data are given and we can not do anything to change them. As a result, a couple of try-catch and if statements can not be covered at all. We spent a while on figuring out how to get around this problem but concluded that there is nothing we can do without modifying the given data. Besides, I found myself more unwilling to spend time on Emma when it comes to testing void methods. This is because I don't see how useful it can be with assignments like this one where there are a lot of such methods. We can cover a large portion of the code by simply running the main method which is virtually doing no constructive testing at all.

SVN
I enjoyed using SVN in this project a lot. It is very convenient and efficient. However, I do encountered problems with it at the beginning when I updated the code. My group member was implementing the print table method in a very different way as mine. As a result, when I updated the code, I got a warning saying "one or more files are in a conflicted state." I have to go through quite a lot of troubles with merging the changes. Some parts of the codes cannot be merged without going through a lot of revision. In the end, I decided to follow my group member’s way to construct the method so that the conflict can be resolved. Other than that, my experience with SVN was pleasant.

Google project hosting
This is a powerful free service provided by google. I never imagined sharing a project to be so easy. I will absolutely stick to this project hosting service in the future.

Group software development
Working in a group is easier than working alone. Our group couldn't meet in person everyday but meeting online served the purpose well already. We were able to work on the code on our own, ask questions once we get into trouble instead of wasting a lot of time to figure it alone. Besides, working in group makes sure that there's someone to review your work and I learned most from it, especially by comparing my codes with theirs. For example, the way I generated the table was a bit complicated and my group member was able to come up with a simpler one. All in all, this is a nice group working experience. I guess the most important thing is making sure everyone is on the same pace so that we can work on the project together steadily.