Tuesday, February 27, 2007

I have gone back to studying OCL. From looking at the "City of Plaistow" question I saw where I needed to review. OCL dynamic and optional multiplicities, Or constraints, cycles in class diagrams and derived classes are the areas I am going back over. I have noticed that the guys in the study group are using some of those bad tools that do not stick to the letter of the UML syntax in diagrams etc. OCL is not usually a component of these tools. I was an architect for one of the largest banks in the world doing design and using UML. I rarely saw OCL in this organization. When I did see it nobody understood it. I think that the test requires sticked syntax. It feels as if these guys think that if a tool fudges the syntax so can they on the test. I thought this way also on past exams and I failed. I tried to ask they guys about this. I mentioned how if you stick to the correct syntax and make your diagrams unambiguous with OCL the time it will take you may be longer than you have to do the test. Ha Ha...I sound like a statement about cryptography. I find this funny...OCL is kind of cryptic. Anyway, They point to the notion that the question only states the word analysis and not the word design. The guys were critical of my answers because they said that I went to far into design and did not stay in the analysis phase like the question asked. This analysis / design boundary is one that really puzzles me. I will have to look into this further. It would certainly make the test easier. At first glance I think that it would be very difficult to answer the question and get precise answers covering all the use cases without a detailed class diagram representing the OCL constraints. You would either not have OCL in your use cases and be imprecise or have OCL in your use cases and need a class diagram to explain all of the associations completely. A slipper slop completeness or ambiguity. Again, I was dinged last test for not being complete. But, complete means a long answer destroying your strategy for maximizing total test points across all 4 answered questions on the test. Here I go again into a thrash. It is funny how one stop condition like the previous statement can get your brain out of so many recursive calls with stack exhaustion, a thrash ending in a human deadlock condition. Woops, I used the deadlock version that does not fulfill the classic 4 preconditions of what a deadlock is. Remember this test wants the deadlock version that uses those preconditions: Mutual exclusion, no resource preemption, hold and wait, circular waiting. My human example is not exactly correct. No one has mutual exclusive access to the answer. There just isn`t an answer. We have virtually unlimited stack space so this problem proceeds without bound until you stop it. This mechanism is broken in people who have my type of learning disability. I continue and continue and continue. I only stop when I have something else to do and that thing cannot be completed until the first thing is done because I thrash back to the problem from the second repeatedly. I return only to get caught in the same loop. Therefore the answer here is I must be complete. A test with umlimited time to complete an answer so that it is complete makes it possible to go on to a second and third question. A test that is timed is unfair for people like me. To be precise OO analysis will drift into design for completeness of the analysis.

In looking over the OCL stuff again I have found that the best way to understand a diagram is to copy it. You really don`t understand a diagram until you can explain in your head why you are making every mark on the page. I must have copied every diagram in this book so far. I have made notes and the notes are vast. I remember them by recording my own voice as I speak them when writing. The act of writing actually teaches me. I am reaching the end of the pertinent parts. I will go back and work the diagrams one more time for the example test questions to make sure that I have all of the correct components. We will worry about getting that information to the test later.