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.
9/24/2008
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)