Hi Khaled,
findbugs is an eclipse plugin which looks for bugs in java code - a very useful tool for code reviews. i used it to as a sanity check before submission.
findbugs eclipse plugin intially i wrote a prototype app with no design and no junit test. this decision cost me about 1-2 months in terms of debugging and constantly changing my design code. after a break of 6 months (i moved house), i decided to go back to the project from first principles. i looked at the instructions and formulated a set of requirements. from these i derrived my use cases (i used a freeware app called
usecase maker. i then used noun analysis on the use cases to derrive the class names and verb analysis to get the operations.
i wrote junit tests for class except for the GUI (although you could use JFCUnit). i wrote 1 junit test per method in my DBMain interface. i made these junit tests as extensive as possible - testing boundary conditions, null parameters, exception handling - basically everything i could think of that would break. i created ant scripts to run these tests. once i had these in place, i found that i had the freedom to refactor knowing that i would detect any bugs introduced.
i wrote tests for each non-gui class written - some were more detailed than others - the RMI junits simply got the object from the registry and run a query.
i found testing the multithreading side difficult. i used a code sample i found in these forum's to run multiple threads and tailored it a bit.
i must admit, the best testing was done when i managed to rope in my work collegues (with the promise of buying them cream cakes!). i got them to concentrate on booking the same record simulataneously. this found a bug (a result from cut & paste from the prototype code) in my code that i am certain would have resulted in a failure. if you can prove that simultaneous booking the same record results in expected behaviour (i.e. one client books the record, the other receives are alert warning the user the record is already booked) then you can safely say the multithreading aspect works.
hope this helps,
Rory