Forums Register Login

Passed Urlybird 1.3.3 with 377/400!

+Pie Number of slices to send: Send
Hi,

Just found out I have passed with 377/400!! Many thanks to all who have posted on this forum - I found the posts absolutely invaluable.

My results were:

Section Summary:
General Con: 100 98
Documentation: 70 70
OOD: 30 30
GUI: 40 27
Locking: 80 80
Data Store: 40 32
Network Server: 40 40
Total: 400 377

I used eclipse with "checkstyle" and "findbugs" plugins. I wrote extensive junit tests which were invaluable and I can't emphasise enough the importantance of these.

I think I dropped points on the GUI because of an issue when I used JFormattedTextField to validate the customerID (as an 8 digit number) - the text field did not reinitialise properly. Other than that, I kept the gui very simple. I coded for the 48hr in the GUI. The search/getall functionality got all the records in the database.

I used a semaphore's to handle the locking (1 write and 20 reads). Each client had its own Data instance (to ensure that only the client that locked a record could unlock it). Locking was the responsibilty of a LockManager. It also handled the acquiring/releasing of the read/write semaphores.

I am not sure what I dropped points on the data store - I implemented equals() and hashCode() on my value object.

I used the following books:

Head First Object-oriented Analysis and Design
Head First Design Patterns
SCJD Exam with J2SE 5
Writing Effective Use Cases
Effective Java

Thanks,

Rory
+Pie Number of slices to send: Send
Congratulations
+Pie Number of slices to send: Send
Congratulations.
Can you please tell us more about the findbugs plug-in.I am also interested to know more about the JUnit tests you wrote and for which part of the system you used them??
[ April 09, 2007: Message edited by: Khaled Mahmoud ]
+Pie Number of slices to send: Send
Hi Khaled,

In my case I only write Junit for Controller, and Server side.

I know that you can write Junit for Gui parts. Since I am not familiar how to do that, I do not write any Junit for GUIs.
+Pie Number of slices to send: Send
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
+Pie Number of slices to send: Send
Hi Rory,

Nice score.

Do you have compilation warnings ? (you know type safety, serialization, etc)

Regards M
+Pie Number of slices to send: Send
Hi Mihai,

I am not sure what you mean. I used generics fully for each collection I used. I serialized what I needed to (value object, Data, DBSchema & LockManager).

I implemented all the exceptions - RecordNotFoundException and DuplicateKeyException (an attempt to create a record that already exists). I subclassed RuntimeException to throw IOExceptions etc.

I wrote a DAO as a wrapper around Data - not sure if it should have been an Adapter but I didn't seem to be marked down for using it.

Hope this helps,

Rory
+Pie Number of slices to send: Send
Rory

my question was generics related, thanks for the answer.

Regards M.
My name is Inigo Montoya, you killed my father, prepare to read a tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 1187 times.
Similar Threads
Cleared SCJD (UrlyBird 1.3.3) with 381
Passed 377/400
You guys are great! I passed!
B&S Passed 95%
URLyBird: Passed with 377
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 03:07:50.