I fixed Stack so that now Emma shows its coverage is 100%. However, some developers say it still possibly have bugs. This time, I try to put a bug in the code and still make it to have 100% coverage.
Insert a bug
After thinking for a while, I found out that I am able to do it by changing "this.top();" to "this.pop();" inside "getTop()". Emma still shows its coverage is 100%, but logically it returns different object.
Conclusion
I successfully inserted a bug in the code, yet Emma shows its coverage is 100%. This means that we are not able to think the code has definitely no bugs even the coverage is 100%. It is true that Emma help us a lot to detect what we didn't test yet or which part possibly have bugs, but we will need to do final check manually in order to make a reliable and secure system.
The code with a bug can be downloaded from here.
10/01/2008
Testing with Emma + JUnit
In the previous entry I fixed various errors to pass Checkstyle, FindBugs, JUnit, and PMD, so that I got verified. However, if I take a look at the report of Emma, it says the coverage is still 82% for method, 72% for block, and 80% for line. This time, I will try to fix even more so that its line coverage is going to be 100%.
Adding Test Cases
On the report, red background specifies I haven't tested that part. It was shown that I didn't test methods such as toString, getTop, and etc. To fix it, I wroite a test case for those using methods such as "assertEquals()" or "testIllegalTop()".
While I was writing test cases, I also checked javadoc of JUnit and it helped me understand what the method is doing. There are a lot of methods that look useful, so in the future I will try those to test my code in various ways. On my PC, javadoc was located in the following address.
file:///C:/000/eclipse/tools/junit4.5/javadoc/index.html
Conclusion
Emma is a useful tool that let us know where we didn't test and allows us to fix it. By doing it we are able to improve the quality of the system and make it more reliable.
The fixed code can be downloaded from here.
Adding Test Cases
On the report, red background specifies I haven't tested that part. It was shown that I didn't test methods such as toString, getTop, and etc. To fix it, I wroite a test case for those using methods such as "assertEquals()" or "testIllegalTop()".
While I was writing test cases, I also checked javadoc of JUnit and it helped me understand what the method is doing. There are a lot of methods that look useful, so in the future I will try those to test my code in various ways. On my PC, javadoc was located in the following address.
file:///C:/000/eclipse/tools/junit4.5/javadoc/index.html
Conclusion
Emma is a useful tool that let us know where we didn't test and allows us to fix it. By doing it we are able to improve the quality of the system and make it more reliable.
The fixed code can be downloaded from here.
9/24/2008
Automated QA vs. manual QA
Overview
My task is to get used to various tools which is helpful in software development. Those tools include Ant, FindBugs, Checkstyle, and PMD. Then I need to think about pro and cons of automated QA and manual QA.
Checkstyle
I got 382 errors on my CodeRuler project, but errors from MyRuler.java are 17 and rest of them is from IBM. It says that MyRuler.java misses some Javadoc comments, and '}' should be alone, and we should use "{}", and so on. Most errors for IBM are about using tab character. Reviewer of my code also found those errors, but it would be fast if we use checkstyle. I think some of them can be fixed easily by using format feature of Eclipse.
PMD
There was 11 violations, and some of them says "avoid if(x != y)...; else...;" or "Avoid using if... else statement without using curly braces." Reviewer of my code also indicated those errors.
FindBugs
There was 1 warning, which was saying "Method MyRuler.initialize() uses the same code for two branches." Reviewer of my code did not indicate this. To check the content, it might be better to use this tool.
Conclusion
In terms of quality assurance, automated QA will be faster and more accurate than manual QA. However if we need to think about the logic of the program, we will need to think about it manually.
My task is to get used to various tools which is helpful in software development. Those tools include Ant, FindBugs, Checkstyle, and PMD. Then I need to think about pro and cons of automated QA and manual QA.
Checkstyle
I got 382 errors on my CodeRuler project, but errors from MyRuler.java are 17 and rest of them is from IBM. It says that MyRuler.java misses some Javadoc comments, and '}' should be alone, and we should use "{}", and so on. Most errors for IBM are about using tab character. Reviewer of my code also found those errors, but it would be fast if we use checkstyle. I think some of them can be fixed easily by using format feature of Eclipse.
PMD
There was 11 violations, and some of them says "avoid if(x != y)...; else...;" or "Avoid using if... else statement without using curly braces." Reviewer of my code also indicated those errors.
FindBugs
There was 1 warning, which was saying "Method MyRuler.initialize() uses the same code for two branches." Reviewer of my code did not indicate this. To check the content, it might be better to use this tool.
Conclusion
In terms of quality assurance, automated QA will be faster and more accurate than manual QA. However if we need to think about the logic of the program, we will need to think about it manually.
Stack
Overview
My task is to use various tools and fix Stack.
Task 1: Installation
I think installation was the hardest part of this assignment. After all I realized everything was explained in class, but it took me around 3 hours to setup all. I thought I should pay attention in class and take notes more. Below is the list of what I did to make it work. I often forget these kind of things so I write as a reminder.
1. Download Files
2. Set path for those tools
3. Create environment variables for those tools
4. Create an environment variable, JAVA_HOME
5. Restart PC
Task 2: Use Stack to create new project.
I just followed the instructions and everything went well.
Task 3: Fix the problems.
Since many useful tools told me where the error is, it didn't take a while to fix it.
Conclusion
I thought these tools are really useful in software engineering. It told me many errors and warnings that compiler never told me. It was a good opportunity and from now on I will take advantage of these tools when I develop software.
Zip File: Fixed Stack
My task is to use various tools and fix Stack.
Task 1: Installation
I think installation was the hardest part of this assignment. After all I realized everything was explained in class, but it took me around 3 hours to setup all. I thought I should pay attention in class and take notes more. Below is the list of what I did to make it work. I often forget these kind of things so I write as a reminder.
1. Download Files
2. Set path for those tools
3. Create environment variables for those tools
4. Create an environment variable, JAVA_HOME
5. Restart PC
Task 2: Use Stack to create new project.
I just followed the instructions and everything went well.
Task 3: Fix the problems.
Since many useful tools told me where the error is, it didn't take a while to fix it.
Conclusion
I thought these tools are really useful in software engineering. It told me many errors and warnings that compiler never told me. It was a good opportunity and from now on I will take advantage of these tools when I develop software.
Zip File: Fixed Stack
9/15/2008
CodeRuler Review
Overview
My task is to take a look at source code of other group "lau-sanchez", and check violations of Java coding and documentation standards. I should also take a look at how they implemented their strategy.
I run the code several times and their strategy was doing well against opponents. They won almost all. After reviewing their source code, I found some violations of Java coding standards.
Summary
Although their JavaDoc is not perfectly accurate, there are enough comments and organized structures that make me understand what they implemented. I also thought their strategy is effective.
Following coding style takes some time but it is also important, because in a real software engineering many programmers work together and if they do not follow it, it will be hard to do maintenance later.
Fortunately, now we have a useful tool such as format function of Eclipse. Some violations will be fixed with that. Eclipse also has a plug-in called Checkstyle, and it will help us follow coding styles more.
My task is to take a look at source code of other group "lau-sanchez", and check violations of Java coding and documentation standards. I should also take a look at how they implemented their strategy.
I run the code several times and their strategy was doing well against opponents. They won almost all. After reviewing their source code, I found some violations of Java coding standards.
| File | Lines | Violation | Comments |
| MyRuler.java | 1 | ICS-SE-Java-1 | All code should be within the package hierarchy "edu.hawaii". |
| MyRuler.java | 4 | ICS-SE-Java-2 | Wildcard "*" is used in import statements. |
| MyRuler.java | 7,15 | ICS-SE-Java-6 | JavaDoc is separated in two parts. |
| MyRuler.java | 7,8,42,* | ICS-SE-Java-6 | JavaDoc is not accurately written. |
| MyRuler.java | 83,87,90 | ICS-SE-Eclipse-2 | There are 3 spaces instead of 2. |
| MyRuler.java | 96,97,98,* | ICS-SE-Eclipse-2 | There should be indent. |
| MyRuler.java | 101,102 | EJS-2 | Curly brackets should be used. |
| MyRuler.java | 111,142,169,* | ICS-SE-Java-6 | Beginning of the sentence should be capitalized. |
| MyRuler.java | 159 | EJS-9 | Meaningful name should be used. |
Summary
Although their JavaDoc is not perfectly accurate, there are enough comments and organized structures that make me understand what they implemented. I also thought their strategy is effective.
Following coding style takes some time but it is also important, because in a real software engineering many programmers work together and if they do not follow it, it will be hard to do maintenance later.
Fortunately, now we have a useful tool such as format function of Eclipse. Some violations will be fixed with that. Eclipse also has a plug-in called Checkstyle, and it will help us follow coding styles more.
9/08/2008
Lessons learned from Code Ruler
Overview
CodeRuler is a game program from IBM, but it if different from ordinary games because we are able to control our force only with Java code. This program was made for students to let them practice Java. My task is to work with John Ly and beat sample Code Rulers.
My Group Members:
John Ly
Yasu Kaneshige (me)
Source Download:
Source
Results:
Lessons Learned:
Working with other team member takes a little more time because we need to discuss everything we have on our mind. However once we do it, we are able to split our work and have more ideas about the program.
For the Eclipse, it was good experience because now I know how to use plugin. I also got used to using its features such as auto format or making projects.
I think CodeRuler is a good program for exercise, because it reminds me basic materials like how to use interface or extend. Also there is infinity number of strategy that we can implement and we should think about what is the best way. It made me write pseudocode, which is also an important step when writing a program.
CodeRuler is a game program from IBM, but it if different from ordinary games because we are able to control our force only with Java code. This program was made for students to let them practice Java. My task is to work with John Ly and beat sample Code Rulers.
My Group Members:
John Ly
Yasu Kaneshige (me)
Source Download:
Source
Results:
| Sample Ruler | Game | My Ruler | Opponent | Migrate Ruler | 1 | 477 | 5 | Migrate Ruler | 2 | 656 | 0 | Migrate Ruler | 3 | 565 | 10 | Gang Up Ruler | 1 | 634 | 36 | Gang Up Ruler | 2 | 536 | 119 | Gang Up Ruler | 3 | 549 | 54 | Split Up Ruler | 1 | 444 | 48 | Split Up Ruler | 2 | 571 | 77 | Split Up Ruler | 3 | 556 | 108 |
Lessons Learned:
Working with other team member takes a little more time because we need to discuss everything we have on our mind. However once we do it, we are able to split our work and have more ideas about the program.
For the Eclipse, it was good experience because now I know how to use plugin. I also got used to using its features such as auto format or making projects.
I think CodeRuler is a good program for exercise, because it reminds me basic materials like how to use interface or extend. Also there is infinity number of strategy that we can implement and we should think about what is the best way. It made me write pseudocode, which is also an important step when writing a program.
9/01/2008
The Open Source Software Experience
Overview
My task is to evaluate Java-based open source software which is available at "sourceforge.net". I chose an application called "XML Interactive Slide Show", which is a program to generate html and css files for slide show. Users will be able to upload those files and share it with others on the web.
XML Interactive Slide Show
http://sourceforge.net/projects/xiss-web/
Prime Directive 1 - The system successfully accomplishes a useful task.
I tried to make slide show with my own photos, and this program successfully made corresponding html and it worked as slide show. I also tried to experiment with large number of files, so I put 40 pictures and it still worked well.
Prime Directive 2 - An external user can successfully install and use the system.
To download and install this application was simple. To use this application, I need to read documentation a bit, otherwise I do not know how to create slide show. The good aspect of this application is users can customize the result with xml file. However it requires some knowledge of xml, therefore it would be better if users are able to customize using GUI.
Prime Directive 3 - An external developer can successfully understand and enhance the system.
Although there is a large documentation about how to use the software, there is relatively few comments and I did not see instructions of how to compile the source code. If the original developer could include those information, other developers will be able to enhance this software more effectively.
Subscribe to:
Posts (Atom)