Sunday, December 9, 2007

33.PrimeDirectivesRedux

1. Interactive Development Environments (Eclipse, VisualStudio, etc.)
An IDE for developer to read code clearly and provide syntax error notification, auto connect wrong syntax. Reduce code mistake of developer made . For Eclipse is integrate junit test that provide test result for developer, so IDE would be Prime Directive 3.

2. Coding Standards and Coding Standards Compliance Tools (Checkstyle, etc.)
Each developer has their coding standards, but some of them may using a same language, so how can we make code organize and follow the same rules when coding. checkstyle provide test for checking it have a same documentation style. Since, checkstyle has standardize the code that would be Prime Directive 3.

3. Build Systems (Ant, Make, etc.)
Build system provide one step testing for developer that to build entire project include code testing and code compile. Also it is a great tools when developer developing a big project, it could be gather all source file and compile at one time. Seem build system is only for developer, so it would be Prime Directive 3.

4. Automated Quality Assurance Tools (PMD and FindBugs, etc.)
Automated Quality Assurance Tools will find some code invalidation which the developer didn't realize or aware on it. This tool make the code standardize, for small project this tool is passive, because who care about Automated Quality of "Hello world" program, but it is helpful of build a large project, same with above tools it related to coding that's mean related to develop, so this is Prime Directive 3.

5. Black and White Box Testing
Black box testing seem to be relate to developer and user, because sometime developer cannot find bugs after release the system, but user can do it. Also, black box testing has not relate to coding or viewing code, so black box testing is Prime Directive 2 and 3.
White box testing is only for developer who read the code to evaluate what good or bad in code. so it may be Prime Directive 3.

6. Automated Testing Tools (JUnit, HttpUnit, etc.)
Automated Testing is developer write some code to test the system status, it is work or not. which situation may crash the system which may not etc. Running this tool may test the system coverage status, then provide result to developer how to improve their code. so it is Prime Directive 3.

7. Configuration Management (CVS, SVN, etc.)
For the big project, we require many developer to build the system build how can they marge their codes when they are works alone, so Configuration Management tool can provide a feature about keep track every single time who change the code.
so this one is Prime Directive 3.

8. Issue Driven Project Management
When every developer work on their own part that they have to commit their work so how can they organize their work, so that Issue Driven Project Management can help them to solve this kind of problem, it is a documentation of which part they working on. It only develop can access to make issue statement so it is Prime Directive 3.

9. Use Cases
Use Case is a fundamental design for user guide, it is a documentation of how to fulfill the user requirement when the system released. It related to general system design, so it is Prime Directive 1.

10. Software Review
Software Review can be other developer who working on the same project but they work on different way or other developer who familiar with this area or user who want to give some feedback about system operation, then they may do software review. So it is Prime Directive 2 and 3.

11. Agile Methods (XP, Scrum, etc.)
Agile Methods is two or more developer coding on one computer that is the way to communicate with each other, also talk about how to make the system work better. It is Prime Directive 3

12. Open Source Licenses (GPL, CPL, etc.)
Open Source Licenses is free charge product and we can download it from web and get fully support. Since everyone can download the distribution online, so it is Prime Directive 2.

13. Online Hosting Services (Google Project Hosting, SourceForge, etc.)
Online Hosting Services provide a free storage and workspace to developer to build their own project or company project that share out to world for someone who interested with to download the distribution. Since most of then using this Online Hosting Services is developer, so it is Prime Directive 3.

Myisern 2.0 Review

Reviewed Team: myisern-pink
Source Code: Here


Tool installation : (for me only)

-Apache Derby database.

-Environment variable "DERBY_HOME"

Testing :

verify.build.xml -- fail
Stop at junit test, since it got an error on testLoginActionBean and testLogoutActionBean.
Please see the error below:

junit.build.xml -- fail








checkstyle.build.xml -- Okey
findbugs.build.xml -- Okey
pmd.build.xml -- Okey
emma.build.xml -- sametime is work, sometime it doesn't
[concat] Emma Coverage summary
[concat] class: 67% (10/15)
[concat] method: 30% (76/256)
[concat] block: 32% (3843/11954)
[concat] line: 32% (860.4/2730)
The only problem is when I run junit firsta and run emma right after that the heap space must running out, then I need to restart Tomcat again to run emma. I try many time and many time it happen. The emma test I did successful is running checkstyle, findbugs, pmd for each single time then I run emma after that is successful, but not run junit in front of emma.
I think there are some improvement for on make junit test first, then worry about emma coverage after that, since your coverage is too lower, so I think you need write some test case for improve that.
Black Box Perspective:
For basic operation, add, edit and delete has success operated.
There are few thing I suggest to add on your project:
-I suggest that add some back button or redirect link to previous page when you finish each operation.
-Add some description on first or main page.
-Add picture on researcher page.
-Add confirmation message on delete operation.
-Make edit operation as separate page.
White Box Perspective:
The code look organize, and create different action files.
What I suggest is make some derby test case, and collaboration, organization and researcher action bean test case too.
I think if you make some improvement on this area that it can be bring up emma coverage, by that time, make sure no error on test case, otherwise it won't pass junit test and httpunit test.
Break da buggah:
when I logout system, then I use back button on browser that still can access any item on the page. I think you need to work a little bit more on session register. To block access without logon to system.
Summary and Lessons Learned:
implement Java derby is totally different to implement PHP + MySQL. For my own, MySQL is better than derby, since it use common SQL statement for insert, update and delete. But I learn a lot in this project is not about this, is how to use framework to test PHP project, the stuff we learn for entire semester is really apply to other language and make more easy to test where we doing wrong. It is helpful for implement framework to other different language like ASP.NET, PHP, Ruby etc.