Saturday, March 31, 2007

I have made some small changes to my OO analysis writup on the website. I have come to part C. I am to discuss the advantages and disadvantages of the Structured analysis versus the Object Oriented analysis approach and suggest an approach to that could be used for large software systems.

First of all De Marco wrote about Structured analysis and published his book in 1979. Grady Booch wrote about Object Oriented analysis and published the second edition in 1994. This is a 15 year difference. The chronology of this history is important. De Marco talks about "Classical Analysis" as apposed to "Structured Analysis" and implies a waterfall model with a huge, as he calls it Victorian Novel, design document. In his book he talks about complexity and manageability just as Booch does. He talks about developing dozens or hundreds of mini-specifications rather than this large document, the Victorian Novel. On page 15 section 1.4.1 De Marco lays out his goals for Structured Analysis. "Problem size must be dealt with using effective methods of partitioning. The Victorian novel specification is out. Graphics have to be used where possible. We have to differentiate between logical and physical considerations, and allocate responsibility, based on this differentiation, between the analyst and the user. We have to build logical system models so the user can gain familiarity with system characteristics before implementation." Remember that the computer languages employed at the time were procedural in nature. Grady Booch wrote about C++ in a book in 1993 entitled Object Oriented Programming in C++. This is still 14 years after De Marco`s Structured Analysis book. Booch wrote an elaborate beginning to his book to support the notion that large non-trivial software systems are very complex. But, his vigor in explaining why software systems are complex does not actually confirm that object oriented methods are the best way to design software systems because of there complexity. I do not deny they software systems are complex. Four of the five attributes of a software system, the limitations of the human capacity for dealing with complexity, the notion that object oriented analysis and design reflects the topology of object oriented languages better is not at issue. It is the first of the five attributes of a complex software system that I am at odds with. Booch states: "Frequently, complexity takes the form of a hierarchy, whereby a complex system is composed of interrelated subsystems that have in turn their own subsystems, and so on, until some lowest level of elementary components is reached". Page 12 of object oriented analysis and design. I generally agree with this sentence but I am at odds with a mental leap of part of it. The crux of the issue is: There is an assumption made here that the important issue here is that the system being analyzed is hierarchical and that the issue is the central issue of analysis. First of all not all systems are hierarchical. That part is something easily seen. The second and more major issue is that: "ALL HUMAN BEINGS DOING ANALYSIS, ORGANIZE INFORMATION FOR ANALYSIS HIERARCHICALLY". This is false. I having a learning disability I know this intuitively as fact. I know that I have also read it in a book I think was called "The art of learning". I am still looking for the reference and I could be wrong about the reference. At any rate, not all humans organize things in chunks of information. Some organize data into lists and use chronology. i.e. more like Structured Analysis. Analysis of software systems is the assimilation of information about the system into our human understanding. The assumption of the structure of how things are organized should not be a determination on how to best do analysis. Storage, retrieval, and organization of information in the human mind is not a justification for how to do analysis because the assumption is made that all people think the same way...very presumptuous. The other issue is that the rest of the justification for object analysis methods are really based on when the book was written. I would need more space to explain this one. But, just a taste of that would be to say look when object oriented languages became mainstream.

It took me two days to get this entry ready. I find it hard to put this into the answer for part C of the OO versus Structured question. It does not follow what I would think would be a mainstream answer. I would expect that the testers want you to just take what Booch said and quote it in the answer. This would be easy to do if I thought that it was true. This question is not a PhD question. This question is a question for students who blindly believe what they read. A PhD should really question everything. This question is wrong on several levels. But, how do you ask questions for a test like this unless you generally take the accepted answer. I found the same problem with other exam subjects in this series of candidacy exams, especially the database exam. Being able to memorize the accepted answer is usually the one they want. If they have to think then it is wrong. If you think it is probably wrong. Use the generally accepted answer. I admit I have a better understanding for what Booch wrote given the time that I took to read this text for quotes. Don`t get me wrong the Yourdon text, the modern 2006 book on Structured Analysis called "Just Enough Structured Analysis", has problems too. Could Yourdon get some references that are not from the 70`s? Well anyway, he does have some good points and pokes fun at Booch in some ways.

I will now write part C of the Structured Analysis versus Object Oriented Analysis question. Could you hear the announcer voice I just used? It made me feel better, like this question was important.

Thursday, March 29, 2007

Yesterday was another waisted day for study. I got up at 2 am which was a bit early for me. I wanted to start at 3am. Well, my wife had thrown her back out. She is pregnant with our second. So she wasn`t sleeping. I gave her a massage and then laid down for a second. When I woke up it was already 5:20. I grabbed my stuff and went for a swim. I need to keep up the physical activity or other things break down. I already missed the Monday swim. I really needed to get this swim in or go at risk of some depression. So I decided to skip the study day. So today I got up at 4am. Later than I would have liked.

Today I got up the drawings for OO analysis. These drawings are pretty complete in themselves but if this were a real environment there would be an interaction diagram for each of the use cases. I only have one use case represented. This is why I think that it would be impossible to answer this question correctly in the 3 hour time limit. 3 hours is enough time to maybe get the domain model and part of the class model but to get all of the interaction diagrams no way. Even if you just did one for the high level domain model it would be tough. For the question if you went that route that would mean that there would be a great deal of overlap in the work products of the analysis. So the test question would not be a real world situation. How can you ask this question and get what you really want to know from the student? Do they really know how to do analysis or can they just do some nifty figures? Because, in the real world not all the diagrams are done by the same guy. Sometimes the class diagram is not even done by the guy doing the high level analysis. But, granted in some instance all the diagrams and use cases are done by the same guy. This kind of goes back to the architecture question and how do you do architectural analysis. So these questions kind of contradict each other. Ask everyone or ask no one....well what is it going to be? Do it yourself or get multiple people to do it because it is a big job..mmm...what`s it going to be. The test questions are not clear. What are they really trying to find out? I thought this question was to find out if you knew something about analysis. It looks like they are asking can you diagram in different notation. This is the same kind of mistake as on the architecture question where it looks like they are asking what are the two kinds or architectural analysis where one of the answers is actually 2 because it involves asking who you are questioning. It seems to me that it sound like they want a memorized answer and not knowledge of the question. Two times in different exams the question writer has ask questions that they really have never done and don`t really know much about. They have the flavor of the answer but not the real answer. I will give them what they want. I see that they are trying to be concrete and specific but in doing so they have been gray and misdirected. Why do I have to figure out what they want?

I have yet to answer part C yet of the Software Analysis question. I will have to get to that tomorrow. I want to add references also. I think that it is important to all that read the answers.

Tuesday, March 27, 2007

I have started to review and put up the information for software analysis. I have reviews and put of the stuff for structured analysis and will do OO analysis next.

For the structured analysis I went back and did a decision tree so that all of my examples would come from the City of Plaistow question. I figured that it would not be as insightful if I just put up all of the study examples that I have done. I have developed a theme of doing just the questions and nothing more. I made an exception today because the Structured Analysis material is central to understanding the output for the question. So I added it. Otherwise unless you are familiar with the flavor of Structured Analysis I am doing the notation is a bit wishy washy. It is more concrete if I show that I got the notation from a respected source like Tom De Marco.

Yesterday I completed putting up the information about Concurrent Programming. I must have done the study for this question about 4 to 5 times over that last 5 years. It seems that the test graders always want something more. Deadlock is always a funny thing. Blocking is an OS thing so a deadlock being blocked is always a hard one to write that way. I think the graders expect you to talk about blocking when talking about deadlock. Being an embedded device developer I know about polling and callbacks. A deadlock can also be termed around polling or callbacks so blocking is not necessarily correct. But, I know that that is what the graders are looking for in an answer. So strictly speaking the 4 preconditions for deadlock are actually a little more complicated. These are simple answers for complex questions. I like that. :) Anyway that stuff is up. (See more on this later in this post)

I am still having some trouble with some kernel panics on my machine. I think it is that I tried to use MacFuse. I am not saying that I know this for sure but I think that iWeb has some sort of trouble with it.

As I look at this 2004 exam more I see that there are a number of questions I have to re-visit before the test. I am going to do my best to have visited all of them. Since I actually took that test I have visited them in study before. I have to go and dig them off of that disk volume but I have that stuff somewhere. Each time I have virtually started over on study. I want to make sure that I don`t continue to make the same mistakes again and again by using the same notes. So, each set of notes is a new set. I did give one of the questions from a prior study session to the study group but generally I have done each question again except for that one. The study group has only been helpful in identifying other areas that I may have missed. They have not told me any new information. Even when they are making mistakes I find it hard to tell them about it because I have a hard time articulating that they are wrong. The latest thing that they identified was the 4 preconditions for deadlock some months ago. I had read this in the past but dismissed it from the answer because of its simplicity in not telling the whole story. The paper I read was "The Classification of Deadlock Prevention and Avoidance is Erroneous" by Gertrude Neuman Levine. In this paper it talks about how the preconditions for deadlock avoidance are incomplete. Examples are given in the paper. I intuitively thought along the same lines. So I have generally left it out on answers on the test. I have put it in my web page because so many people think that this is the answer to the question. If this is what the graders want this is what the graders will get.

Today I also discovered some quips that I had designed for the test. They don`t find there way into my answers on the website. Below I have added them. They may find there way into the website in the future.

What is Formal Methods? Answer: Application of mathematical techniques to computer control systems.

Deficiencies of Conventional Methods? Answer: 1. Reliability 2. High Development Costs ???? 3. Poor Maintainability

What are the Potential Benefits of Formal Methods? Answer 1. Give a precise definition of the problem. 2. Eliminate ambiguity and inconsistency in the early stages. 3. Allow demonstration of the system before it is developed. 4. Semi-automatic synthesis of implementations from formal specification/models. 5. Maintenance and reuse at the specification/model level, instead of at the source code level. 6. Formal analysis that ensures that the implementation conforms to the specification. 7. Mathematically prove that certain properties hold.

Attributes of Formal Specification Models are: 1. Describe the composition and behavior of computer systems. 2. State what instead of how and allow implementation freedom. 3. Generally, non-executable.

Approaches of Formal Specifications: 1. Algebraic specifications that specify behavior of operations on input and output that are side effect free. 2. Model-Based specifications (state machines)

What are the Obstacles of Formal Methods? 1. Software developers usually do not have sufficient training. 2. Although it is relatively easy to master formal specification techniques it is much harder to master formal proof techniques. 3. Current theorem provers require extensive human guidance. 4. Most of the supporting tools, including automatic theorem provers, are experimental and primitive.

I don`t remember these little quips without a great deal of effort. I do remember parts of them on the test. It is the recall that is the problem. I do understand all of them and see them as part of definition of Formal Methods. I just have trouble recalling them when I need to. With a note card I could expound on any one of these areas. I find that this part of the test is frustrating. Because, after I write a quip I expect that anyone else who reads it understands that as the whole story. They should be able to expound on the quip. Now I know that that is not what the testers want. I also know that I can expound. But something in my brain says, "They should get it with one of my quips." Tangential exposition is not what makes a well organized answer. They should understand that and know that I get stuck in tangents and I have set myself up to avoid them. The best way of avoidance is to just stick to the quips.

Monday, March 26, 2007

Well did not get any study in on Sunday. I did some on Saturday morning before we left for the in-laws. Sunday kind of was not productive all around. It was the first review session for the study group. I totally missed it. A big breakfast was in full swing when the group was meeting. I found it difficult to say wait a minute I have to take an 2 and half hour phone call. So I just let it go. I had sent email to the group members telling them that I might miss it. There was a new dial in line anyway. I didn`t have the phone number nor an Internet connection to get it. I hate this kind of churn right before the test.

This morning I had planned for 3 but got up at 4. I could not get that extra hour needed. I was up at 3 but thought it better to stay in bed. Anyway, I got into finishing the last of the page on OCL from 2005 and 2006. On the 2006 exam one of the sub-questions was removed. I guess that either it was to difficult, not really, or that it was to long...more likely. The tool I use for the web page somehow presented a problem to me where it could not save my current page. There is a save option and a publish to directory option. I use the publish to directory like a save so that I can ftp the pages directly to the site. So I got it published once and then started having trouble. The page on the site had an image overlapping the text of one of the answers. I never ever ever have a problem with applications on my mac. This was truly a first of its kind. So from my windows experience I finally rebooted. The problem cleared up. Everything was fine. I am not sure what happened. I never ever ever have to reboot either.

This heart attack and eventual late solution caused me to miss my swim this morning. I have not missed in such a long time. This missed swim is going to mess up my entire day. It will be like my body timing will be off. I will think that it is Tuesday or something but, Monday it is. This kind of thing just kills my productivity. I don`t work out all of the built up toxins or something and it negatively affect my performance in everything that I do. Today will just be a day that I try to avoid a meltdown. The first avoidance was not to get upset that I could not publish my current work to the web. Now I just have to get blogged and try to jump into the routine as if nothing happened. That will be the key if I can get back on the days schedule. I have a schedule for each day of the week. Changes have to be planned in advance. I had a little change this morning with missing my swim. I have to get back to the order.

Just about 3 weeks left until the test. I am still going through the review. I have 3 pages up on the website of questions from the sample tests. They look pretty good. They may have minor bugs but I think that they are well done. I have made my references and anti-references in some cases. Equivalence Term Testing where are you really?

I have started on the question on Concurrent Software Design. It will be posted shortly.

Saturday, March 24, 2007

I have been working on putting the OCL question from 2006 up. I am finding that I have made some syntax mistakes in my early diagrams. These mistakes would be trivial but on the test I want to be above reproach. So I am going back and doing them again. This always creates a problem. I don`t ever remember which diagram is the correct one when spitting them out on the test. Was it the redone diagram or the diagram in the beginning. I think the problem is that the timeline is not attached to the memory or something like that. Anyway, I am redoing the diagrams and OCL expressions again.

Traveling to my mother-in-law`s house for the weekend. Got to take care of this family time. I am kind of upset but I am going to make the best of it. Study will be a wash. This close to the test I feel is not the time to be doing this. A business trip would have been better. At least I would not be disturbed during a study session. The least little distraction messes up anything that would have come out of it. Study while everyone else in the house is asleep is the only way. But, that means I sleep when they are awake. That is not a good situation when you are visiting someone. Effective transition of information on a page to main memory is not easily done in a car, in a foreign environment such as my mother-in-law`s house, or in a hotel. Tools are important and transporting them is just an additional hassle. The social aspects of getting through the techniques I need to do really diminish the capacity of the results.

Saw that Bill Gates will be getting his Harvard degree in the near future. He dropped out form Microsoft but is speaking at commencement so he gets an honorary degree. He has got to get some satisfaction out of this situation. I am not sure that I like that kind of satisfaction. It is sort of the revenge thing. I get satisfaction out of hard work. I have talked about in the past how peer review is not necessarily a good standard to be held. If you don`t help someone...love someone with results, then what good is it. Glorify God first. I suppose that Bill does not need any recognition to know what he has done with his life. I applaud him for his new philanthropy. His business practices have been less than worthy of my respect. Harvard probably does not see this as anything other than filling a spot with a big name. So what ever he says at commencement will be just words. You have to respect someone to hear a message. A man is not a profit in his own country. I am sure that the audience depending on there point of view may see things differently. Business graduates may see him differently than say PhD computer science graduates. I wonder. Anyway, Bill, keep up the good work with giving the money away. Make it right.

Thursday, March 22, 2007

Today I finished writing and publishing my notes to the web on the testing question. This included the cyclomatic complexity drawing and listing of the basis paths as well as a testing methodology associated with these principals. Glad to have this one done. It was a piece of archeology that I have now finished. It may be applicable to some part of development today but written from the point of view of structured programming rather than OO programming it is a bit far from reality. I found the Chidamber and Kemerer metrics more pertinent to the real world. Granted these metrics are used in different manners. McCabe is used after development while Chidamber and Kemerer are used during development. Chidamber and Kemerer can be distilled into to flavors of metrics. Those that indicate a possible greater defect level and those that indicate a level of reuse. Either can be associated with defects. Defect because, you know, defects ARE defects and reuse because a well tested reused module has less defects. Did you think it would be anything else? Avoid defects. Chidamber and Kemerer are just a little closer to reality these days. If a class is complex and well tested then it finds its worth through reuse and complexity is not an issue after it had been tested to a level of trust.

McCabe is trying to say something about testing for defects and how much testing will be needed for a complex piece of code. Chidamber and Kemerer are implying that there is a little more to defects than just complexity. Complexity without a factor of reuse has little baring on defect analysis except for the first testing cycle. A microchip is very complex and I use it in very complex ways all the time with my laptop. Through reuse of the processor I become more and more trusting. Do I need to continue testing the processor even though I write new code, No. In fact nearly all people trust the processor without any tests because they feel that someone before them tested it. McCabe`s metrics in a sense always start over at ground zero. In the real world we reuse stuff. So Chidamber and Kemerer metrics are a step beyond McCabe`s and more like what we do. The question is are they accurate in respect to what they are trying to predict. See the commentary on that one...LCOM1, LCOM2, LCOM3....

Granted, reuse could be done in a structured programming environment. That reuse would be probably reuse by copy which is a nightmare in maintenance causing more defect problems. It would not be like today with inheritance/subclassing, patterns, and object repositories where reuse is a forethought in the mind of the designer. So Cyclomatic Complexity may be good for some something but it is not the complete story in todays development environments.

Had a study group meeting yesterday. They are gearing up for the final push. We start the review on Sunday. I have already started my review.

Tuesday, March 20, 2007

Today I was working on re-writing my notes on the testing question that appear on the 2006 April exam. It involves definitions for several types of testing as well as a discussion on cyclomatic complexity. Since I had gotten the paper "A Complexity Measure by Thomas J. McCabe 1976" I started to review it. I found some problems with how I had learned cyclomatic complex and also discovered some other new tidbits on the topic. One of the problems is that I was not breaking the if statement in the code block into two ifs because of the and. So I went to work on re-defining my diagram. I found that in the paper it is stated that you should have unique entry and exit nodes. They way they are drawn in the paper a diamond is used for a branch point. I had not seen that in other places that I read about cyclomatic complexity. It seems that the difficulty in getting the paper makes others not want to read the original work. I am glad that I did. It also could be that people are not using this metric much because of the move to OO programming. Granted this stuff is still pertinent to the body of a code block. Compilers under the covers convert classes into subroutines of a sort. But generally this paper talks in terms of stuff that is better left as history. One of the sections is all about structured programming and how cyclomatic complexity can show you if your program is structured or not. By old definitions of structured programming OO programming is a completely new paradigm. In the paper a quote was made of Donald Knuth about the virtues of a GOTO. The author brings value to his method through justification of a GOTO and using his method to determine when to use it. So is cyclomatic complexity really adaptable today, probably in some smaller capacity. Please don`t think that I am supporting the virtues of a GOTO with that statement. Anyway, the examples are in Fortran on a PDP-10. It was kind of coincidental that today I read on slashdot that the "Father of Fortran had died at the age of 82". Funny also in an unrelated story that Yes...A patent was granted in 2006 for the linked list. Our patent system sure is broken. Open source all the way. Give it away and you won`t have to worry if someone is stealing it. Also, you won`t be tempted to try a patent on something just so you can litigate later. Back to cyclomatic complexity. I learned also from the paper that there is a region method. By counting the regions in a graph you can also get the same result as using the Edges - Nodes + 2 method. This is reasonable. It is a mathematical theorem..Euler maybe? It just brings a level of estimation and validation so that I cannot mess it up on the test. Having a quick estimation/confirmation is a good thing for me.

So the page on the website will have to wait until I rewrite my hand written notes before I transcribe them into HTML. I don`t think any of you were holding your breath waiting for cyclomatic complexity were you?

Monday, March 19, 2007

I finished the CAD question. I have gone back to go over my notes and revisit the testing question from April `06. This is a question that has been on many past exams. I never actually finished looking at this question. I think the reason was that I was unable to find the papers needed to review the material and found problems in looking up things like "Equivalence Term Testing". See my previous blogs for what actually happened. I received the papers that I ordered from the DePaul Library some time ago. They are postmarked Jan 19th. It took months to get them. I now have the original paper "A Complexity Measure by Tomas J. McCabe." I can now review his examples to make sure that my second hand knowledge is correct. The other paper I got was "Hints on Test Data Selection: Help for the Practicing Programmer by Richard A. DeMillo, Richard J. Lipton and Federick G. Sayward" I don`t remember exactly why I got the second paper. It may be that I kept running across references to it.

So now I have started to review my notes. I have started to distill them down. It is always a risk because to distill notes means that there will in the end be less volume on the test but the content will be more precise and memorable. Testers don`t seem to like terse answers. So it`s a risk. I have adopted a new strategy for review. I am putting my notes into an HTML page. I plan on putting the page up before my test so that I will have something to show for my work if I have trouble with organization on the test. Maybe the testers will give me the benefit of the doubt if they see a web page with the work I did to study for the test. My endless composition notebooks with handwritten notes are never seen by others. The reason I distill notes is so that I don`t physically relive the frustration of searching for things like "Equivalent Term Testing." Don`t have a question if the answer cannot be found. History is dead if no one remembers it. Studying should not be archeology.

Sunday, March 18, 2007

Talked with the assistant director of the PLuS program last week while in lab. I sent an email to the director of graduate advisement and her when I had not heard anything on Saturday. The assistant director of the PLuS program did respond Saturday morning after my message to let me know she had negotiated with the administration the things we had talked about. She did this before leaving on vacation and returning slightly before the exam date of the 13th. I will get the test un-timed, with a private room at the PLuS facilities and with large writing areas for organizational purposes. I will be able to talk out all my questions.

I finished the CAD question today. I got some good references from Applying UML and Patterns by Craig Larman chapters 32, 33, 34 and Software Architecture in Practice by Bass, Clements, and Kazman Chapters 4, 5 and the introduction to Part III. The diagram is very busy and I would never wish this one on any of the developers that worked for me. It was a requirement to do all the classes in one diagram. It could never be an architectural diagram because of the low level of things like the GOF design patterns. I have a little trouble with this question because it mixes design with things that are called design patterns but the granularity is all wrong. It is because this question was written by someone that has never done any big systems or understands the significants in the age of the GOF book. Even though they are called design patterns they are really low level. Then there is a question about analysis of design that is really a system level question. These are incompatible questions.

One more complaint. The GOF book is written from an OMT/C++ point of view. I have had real trouble with this book. I avoid it actually. When I find an overloaded term it always causes a thrash in my head. I operate in concepts and not words. When I am ask to operate in words I use word associations. When a word is overloaded associations become broken. Questions become difficult to answer. I have difficulty picking things like this up from context. It would be good if test writers would make an effort to stick to a set of names rather than address two books with terms that are identical with different meanings. For instance. An adapter in the GOF is really a modern day interface but an interface in the GOF is really a method signature. It is just a rule I have to learn.

I did learn something today. I have been doing UML for many years. I never saw composition and aggregation as another form of association. They are associations with additional constraints but are the same in all other respects.

Friday, March 16, 2007

Yesterday`s post I talked about the answer to part C of the CAD architecture question. The answer seems to want you to talk about the two ways to do architectural analysis of questioning and measuring. Though I see this as the answer especially because of a comment I got from my adviser while going over a previous test I cannot pass over this question without a complaint. It seems that he implied an answer from the book "Software Architecture in Practice by Bass, Clements and Kazaman". The answer comes in the introduction to part III of the book. The questioning part of the answer seems to be incomplete. In this book the answer comes from the point of view of the Architectural Business Cycle or ABC. In other words you would be providing a questionnaire to your stakeholders and others involved in the project. I say the question on the test is incomplete because it affirms that the requirement is already concrete. The questioning technique described in this book happens early enough in the process that it could be that meeting this requirement mean not meeting it at all. An architect would talk to the stakeholder and discover that through push back with cost it is not really 3 seconds but longer is tolerable. Example: You would need a local workstation with replicated storage to be able to open any drawing within 3 seconds. We have decided to use centralized storage and allow for network latencies that would lead to longer than a 3 second retrieval time. Because of my learning disability I read this question literally. The answer type given above is not in my arsenal to answer the question. It is ruled out because the question is written affirming the concrete 3 second retrieval time. Also, experience plays a part in the previous answer type. This kind of experience, even hypothetically, I don`t have. This kind of architectural call limits my thinking for answering the test question. In the real world I would have to shift over to prototypes and measuring to really answer the architectural questions. As you know from previous posts I was not give credit for that kind of answer an previous tests even though I had a very complete mathematical derivation. Another type of questioning is internalized questioning. This was not implied as the correct answer by my adviser at our meeting. The reason I think this is that the implied answer comes from a different book mentioned above. This internalized type of questioning comes from "Applying UML and Patters by Craig Larman". This kind of internalized questioning is described in relationship to the UP process and how the Software Architecture Document would be done. The author talks about FURPS+. It is a mnemonic developed by Robert Grady while at HP. This mnemonic stands for Functionality, Usability, Reliability, Performance, and Supportability. The plus part is for Design Requirements, Implementation Requirements, Interface Requirements, and Physical Requirements. The questioning is done as an exercise in learning about the system. This kind of questioning helps to systematically go through parts of the system and make educated guesses about meeting requirements. Then after the guesses recording them in the SAD as risk and possible solution. The cost factors are also used in evaluation as above in the other type of questioning but the requirement is more concrete. Through iteration in the UP it may be revisited but the analysis is done and through educated guess you may be able to say if you can or cannot meet the requirement before implementation. I see differences in the approaches to questioning. Still neither is as concrete as measuring. They both take place it seems not in relationship to a concrete requirement as how the question was phrased on the test. So I am back to being stumped on how to answer the question. It seems as both are wrong in some way. In the real world you would either have an educated guess that would be supported by your man paying the bills or they would ask you to have more concrete metrics by measuring prototypes. The test writer needs to re-write this question.

Thursday, March 15, 2007

Yesterday I returned home. My stay was short because the test phone that we were using broke. It was supposed to go to customer acceptance testing in Dallas on Friday. So our host was glad that we found and exploited a bug but upset that we were not able to get out of it. Since we only had one of two test phones working we decided to leave as our host suggested. The phone is just so new. Our host only had it for a few days. They were the first to get them. I am not sure we could even have gotten one. They looked and felt just like our test phones but had different unstable guts. So...I am home now.

I went back this morning to the CAD architectural question. I also looked at what had been produced by the study group. I think that they have part C wrong. This is as I said in a previous entry. I presented a clear mathematical derivation of how I would solve the problem with prototypes. This is exactly what the study group came up with. My answer was actually more complete. They only had what they would do not how they would do it. I said how I had reviewed with my professor the answer and he had hinted at questioning and measuring techniques. This was the exact words used in the book Software Architecture in Practice by Len Bass, Paul Clements, and Rick Kazman. I think that this is the kind of answer that is looked for on the test. A clear writing that explains this point. But, this is also covered in Applying UML and Patterns by Craig Larman in chapter 32. Here it is talked about FURPS+ and the classifying of System requirements of which part C of this question falls into the F of FURPS+. I suppose that the technique discussed falls into the Questioning Techniques camp. The SAD (System Architecture Document) is talked about. It is a document where architectural decisions are recorded. It includes the technical memos and descriptions of the architectural views. One of the example artifacts contained in the SAD was a factor table. It was said that the use of this table was stylistic. The chapter goes on with an example of recording factors to achieve the goal of architectural analysis, which is understanding the influence of each factor on the architecture. So one other more complete answer may be to discuss the SAD and the process around it that promotes learning about the architectural issues by recording them and their impact on the system.

My thoughts on the defensibility and the risk of being able to organize an answer on the SAD on the test gets me upset. I understand the question and the answers but don`t see a clear discussion answer that is defensible. The key words Questioning and Measuring seem to be more defensible with a shorter answer and less need for an example as the SAD document would need. Coming up with an example on the test to demonstrate how SAD is done seems like a prone for error task. The possibility that the grader will have ever done a SAD document or know the finer qualities of it to infer a superior answer is slim. Also, FURPS+ is not really what the question is about. It is not worth putting it into the answer.

The answer to this question seems a little unfair if my study group pals and I both will/would have answered it in the same manner. It seems to me that this is a question of knowing how to answer and not what to answer. This is not a good thing for tests.

Tuesday, March 13, 2007

It is still early on the West coast. Somehow the reports of the lab on Friday made it look like problems were our fault. We did not have RF nearly the entire day. I am going to have to stand up and get people to stop bickering. Anyway we arrived late yesterday for lab hear in Redmond. The objectives are getting a little muddy. We will see if we stay the entire week.

Got an urgent message from the plus program yesterday during our lab session. It was a fluke that my email program got the email requesting my attention immediately. So I called the PLuS program. It was difficult to get my party. I was hoping just to say that I would call back in the morning here. Well instead I had to lay out my story in front of my lab workers. It was kind of difficult. I had to talk in a non-secure area. Well that is how this thing goes. The whole world needs to know your business. I was a little upset at first but this thing needs to get done. The PLuS program agent needs to be able to discuss my case with the DePaul administration to be able to get me special treatment. So I let this thing go. Talking to me during work in a load lab setting was a must this time. Standing in front of my co-workers talking about my life is just something I had to do.

Study has been difficult. I brought both laptops. After using the one I use for study yesterday I found out that I did not bring the power cord. Bummer. So I only use it for short burst and then turn it off. I would much rather use it to study with. It has all my tools that I need for study. I am making do with my lab laptop. I copied all of my needed files to a 60Gb thumb drive that I have. After that I am using emacs on my lab laptop to write notes etc. No acrobat and I have all my documents in PDF. Lucky cygwin has xpdf installed. It will have to do. Old school tools sometimes just save your life. I am not able to put my notes on my iPod. That is going to make it difficult to listen or read them off of it. The plane ride is a wash. I though I could do some review. I have my hand written notes but they are not as big a help as my study laptop and my iPod. Some people would be complaining about the small keyboard. That is the lest of my problems.

I have suspended the look at the architecture question. I have gone back to review the Chidamber and Kemerer paper question on OO metrics. I always have trouble remembering these guys names. They don`t rhyme with anything and I am having trouble with the word associations. I have rewritten my notes this morning and I have noticed I botched the LCOM metric. I think that I got it right now. relearning this one may be hard. I learned it wrong the first time. It was a good catch. It is a shame to spend so much time learning something and then think you have it but then have it wrong. Glad I had this experience with moving things around on different computers. It made me look at this stuff again and I found and error.

LCOM - Lack of cohesion in methods Lack of Cohesion in Methods. This is best illustrated with an example. Say we have three methods M1, M2, and M3. The instant variables used by the class methods are this I1={a,b,c,d,e} I2={a,b,c}, I3={x,y,z}. The intersection of I1 and I2 is non-empty but the intersection of I1 and I3 and the intersection of I2 and I3 are empty sets. The interaction between instance variable sets is termed the similarity between the methods. The larger the number the more cohesive the class. The count of the number of methods pairs whose similarity is 0 minus the count of the method pairs whose similarity is greater than 0 is LCOM. So in this case LCOM=2-1=1. LCOM is a measure of cohesion. A small number indicates greater cohesion of methods. Cohesion is desirable because it promotes encapsulation. Lack of cohesion implies a need to split the class into sub-classes. Low cohesion increases complexity, thereby increasing the likelihood of errors during the development process.

The part I got wrong was whether it was a high or low number that was desirable. I think I got it right now.

One month until the test assuming that I take it on the same day as the others.

Saturday, March 10, 2007

Well Lucent lab went badly yesterday. We could not get the cell to work. Then for the brief moment we did have RF I botched the PPP password for the handset. After that we could not get service. It was a complete waisted day. I did not get a chance to call the PLuS program. I will have to call from Seattle next week. The BS about negotiating with the administration for special accommodations for the test is always painful. I guess if you want to succeed you have to do it. I think that I could succeed without such accommodations if the tests were better written. None of the information on the test is difficult to learn. There are no complex algorithms. There is a great deal of notation. I always hear in my head how if Archimedes had Gausses notation he would have been able to solve more problems. Archimedes was a greater mathematician than Gauss. Gauss just had better tools...notation to solve problems. I guess it is good that I learn this notation. I continue to work on the CAD system in UML and architecture question. I have got the notation down. Next week I am planning to work on this question more. I don`t know if I will have Internet access from my hotel. Most probably I will. The lab hours are from 9-5 which will force me to not work 15 hour days like I do when I go to Kyocera. I am taking my shoes so that I can run on a treadmill in the hotel. It is an uneasy uncertainty that I can squelch out if I just plan to run on a treadmill. A pool is almost always not an option. Hotel pools are not meant for swimming they are meant for wading. I will take 2 laptops next week so that I can study.

I got the splash page of my web space up and the way I want it today. This is a terrible time sink. I think that I won`t be going very much farther with it. This may let the administration know about what I am doing but it has too big an impact on my study time. Once they know me they will see why a web page is a worthless piece of communication that I am only doing for them. I hope that they see that it does not aid in any academic sense. I don`t do publications. A simple list on a website would do anyway. I have turned it in to a way for people to have visibility into the program and not visibility into any research. My work research is not something that can be shared. They need to realize that. This web page will fulfill a requirement and give them a sense of how hard this thing is and not for the reasons they think. They want this thing to be hard but the hardness comes from stuff that has nothing to do with academics. I am not talking about my learning problems. I am talking about other factors. Factors that should have nothing to do with a PhD but that impact this degree and the way people execute it. Things that all players have to deal with when doing a "DePaul" PhD and not necessarily a PhD itself. Now granted I have never done a PhD somewhere else. But, If these problems exist in other programs then the programs are wrong and should be fixed. Politics and hardness by obscurity are two such factors I can think of. These should never be part of a PhD. They are not part of research. I know, I do research. They are part of business but not part of research. I do deal with them but just not as part of the technology.

Friday, March 09, 2007

It was a little upsetting to learn this week that I will not be dealing with the director for the PLuS program at DePaul leading up to my test. I learned this fact from the director of graduate advisement and not from the PLuS program itself. The director of advisement informed me that the PLuS program director would be gone for a while and that I should get in touch with this new woman. I really had no introduction to her. For me I have learned to tolerate these kinds of changes but for others with my learning disability it would be devastating. I see change as reason to do some thrash thinking about something. It is a kind of problem that needs attention and I cannot take care of anything else until this is accomplished. What I mean by tolerate this kind of thing is I live with a feeling of uncertainty all the time. It is similar to paranoia except the problems are closing in on you and not the people. It was compounded by a last minute business trip to Seattle, Wa. I was ask to go into the Cingular/At&t labs and work on a new technology. It is really new. It was implied that there is no one else doing this. I will be the first. I have a hardware guy going with me. I leave on Monday and return on Friday. The problem is that I setup to talk with the PLuS program surrogate next week. It turns out from my own digging that she is the assistant director of the PLuS program. So a week of disrupted study, with a week of uncertainty about my accommodations for the test, mixed with a week of new excitement in my job. Gosh could you give me any more to thrash about. Concentration is difficult. It is more difficult with so many things to task switch over. Thrash, thrash, thrash,...Thrash, Thrash. Here we go. I have to give some of it over to God to worry about. One more thing doesn`t daylight savings time mean that my 5am on Monday will actually be 4am when the cab picks me up. I will have to take time out from Lucent lab today and call the PLuS program. Almost an impossible feat. Next I will take some of my books and 2 laptops next week to Cingular. One laptop for development and one laptop for study at the hotel. I have most of what I need on my personal laptop. I won`t be able to take very many of my books with me....bummer. We`ll just have to deal with the uncertainty associated with a week away from home. My wife is getting better at taking care of things here with my son and the house. We are expecting a baby in August and she does have a lot to do with appointments and such in addition to our busyness with my son. I wonder if I have left any of my concerns out. To stop and be able to write them down helps. Right now my brain is like a rapidly skipping DVD. I hear and see little bits of possible life scenarios over the next week. Good little daydreams and bad ones accompany points I know that I will have to deal with. Phone calls, cab rides, doctor appointments I will miss, packing, studying...It all comes out in little 1 second clips with sound as I rush over them trying to plan, solve, prepare what ever the case may be. I get really tired. It is amazing I have learned to sleep with so much happening. My blog may be interrupted next week. This may be my last post for several days.

Thursday, March 08, 2007

Today I finally got up my web space. The site was a ding on my last test. They said that they knew nothing about me because I had no web space. I have prepared a space to put up that is interlinked with this blog. I am still remaining anonymous. I put a an explanation on the space. It was pretty difficult to find a free space but fateback.com seems to be a good place. So visit my space at thestudent.fateback.com. I plan on putting up some of the materials that I have talked about in previous blogs. I will put up UML diagrams etc on that blog. I have decided not to put up the questions on the sample tests because they are not offered by DePaul. I will try and provide context for my answers so that others who have access to the questions can be clued into the correct context. Be patient while I put things up. Currently my focus is the test and not the web space. I am sure that I will be dinged because I am yet unpublished but the time it takes for me to prepare for tests makes that point mute. Being published in this phase of the PhD really means that you had time on your hands to do it. I don`t. Maybe someone else that is brilliant could do more in less time than I. I am kind of like Kepler and the laws of planetary motion. I am slow and methodical and maybe not as smart as others. But, you should expect great things because of my hard work.

I continue work on the design patterns question that has the hidden architecture questions wound into it. I started the class diagrams for the design patters. I think that it will be easiest if you choose Iterator, Aggregator, and Strategy as the design patters. These can be found in about every design. If you can draw them you can apply them to about any question. I will be working these into a single class diagram as the question asks. I have it started. I expect it will take some time. I will add OCL to the diagram to make it complete. Lets see how long this takes. On the test you only have 3 hours....to short for a real diagram. Can it up.

Tuesday, March 06, 2007

I have been working on this question for about 3 days now. The question is the first one on the April 2005 exam. Part C goes like this: "One of the system requirements for the autocad system specifies that “The system must be able to render a typical model within 3 seconds.” “Typical” is defined according to the number of el- ements in an average sized model. As a designer of this system explain how could you evaluate the ability of your design to meet this response time requirement prior to its implementation?" It is a question that is really about architecture. Funny how that word is never used. These words are all so confusing. I need a better way to clue me into the information they want to know on the test. I know this information but to attach it to this question is very hard. Even when I have read this same question on multiple tests I still don`t get clued into the correct information each time. The data is committed to memory. In fact I use this kind of information every day. When I worked as an architect in the past this was just part of the way I did my work. So the problem here is the inability for the tester to clue me in to the right information to spit out on the test. I am working on getting a better clue.

At any rate the answer for this question comes from "Software Architecture in Practice Second Edition" by Len Bass Paul, Paul Clements, and Rick Kazman. They even talk about the problems in nomenclature on page 23. How architecture and design are kind of linked but in ways that are only understood by a software engineer in the community. They say that you should be able to talk about this stuff but I have the same problem with their definitions. I have this kind of information in my head but articulating it in a way that sound coherent to others is difficult.

Part C of this question starts in chapter 5 on page 265. Read the entire chapter. This chapter is about how the architect achieves software qualities in a design. The "tactics" for achieving software qualities is what we are interested. The example given in the book is: A business goal might be to create a product line. A means of achieving that goal is allow for variability in the particular classes of function. Prior to deciding on a set of patterns to achieve the desired variation, the architect should consider what combination of tactics for modifiability should be applied, as the tactics chosen will guide the architectural decisions. An architectural pattern or strategy implements a collection of tactics.

These answers to this question require performance tactics. The goal of performance tactics art to generate a response to an event arriving at the system within some time constraint. In this question it is request/response of a typical drawing in 3 seconds. The latency is the time between the arrival of an even and the generation of the response. We must minimize the latency to under 3 seconds for a typical drawing. Some tactics would be: Resource consumption must be managed efficiently, the blocking of requests must be minimized, Resource management - introduce concurrency.

After coming up with an architecture and scenarios of use the architecture must be evaluated. Generally there are 2 types of architecture analysis questioning techniques, like the ATAM and CBAM described in the book and measuring techniques which rely on quantitative measures of some sort.

In Part III the section before chapter 11 page 265 the commentary on how to do architecture analysis is presented. While the answers that measuring techniques give are in some sense more concrete than the questioning techniques, they have the drawback that they can be applied only in the presence of a working artifact. That is measuring techniques have to have something that exists that can be measured. Questioning techniques, on the other hand, work just fine on hypothetical architectures, and can be applied much earlier in the life cycle. Both use scenarios as the vehicle for asking probing questions about how the architecture under review responds to various situations. Other questioning techniques include checklists or questionnaires. These are effective when an evaluation unit encounters the same kind of system again and again, and the same kind of probing is appropriate each time. All questioning techniques essentially rely on thought experiments to find out how well the architecture is suited to the task. A successful evaluation will have these properties: 1) Clearly articulated goals and requirements for the architecture, Controlled Scope, Cost Effectiveness, Key People availability, Competent evaluation team, managed expectations.

I think that this is the kind of answer wanted. The reason I think so is that I was clued in when going over my last test with my adviser. He said of my mathematical analysis: "So you would use a `Measuring Technique`." I think that he would have used different words if this was not the answer he was looking for. The fact is that I know this kind of stuff. My work requires it. I would not have articulated it this way. This is a "How to answer the question answer" not a "What to answer with answer" This is an unfair question in the way that it is worded.

I had a boss once that said, "I don`t want to hear about problems I just want to hear solutions to problems." I don`t have a good answer to how to make this question better. The answer is time based also. In a few years there may be ways of doing this that are better. What then? This stuff is from an SEI book. Do I really think that because it is formal it is better? Do I really think that CMM level 5 organizations develop better software than the open source community? Rant, rant,...rant...rant....rant. I have an answer for the test. I can recall it. I just need to work out when to recall it.

Monday, March 05, 2007

Had my study group meeting yesterday. We ended up going over OCL again and it took kind of longer than I expected. We reviewed the questions again. One of the other guys was sick. They believe that they are pretty much done and are ready to start a review. I think there are still things left to go over. Anyway I turned my attention to the architecture and design questions. I am still not comfortable about the formal specifications question on the April 2005 test but I expect to go back and review it again this week. But, in moving forward to new material and looking at the architecture questions I am troubled by the lack of indifference in the way the questions are worded in comparison of the works architecture and design. I have never seen them as the same. The questions seem to ask the questions in that manner. The question asks: "As a designer of this system explain how could you evaluate the ability of our design to meet the response time requirements prior to its implementation?" I think that you have to venture into architecture to answer this one but it seems as if that is not the words the test writer chose to use in the question. They chose the words design. The book on the reading list has quite a section on this. The authors talk about how architecture is not design but some parts are? I will elaborate later as I go through this section. Looks like they are looking for justification. I think that this is another question that I am going to have trouble with and have to "can" an answer.

Tried to get into getting some free web space to post my answers to the test exam questions. I have yet to get this setup.

Saturday, March 03, 2007

Today I spent 3 or 4 hours trying to get my scanner to work so that I could send in my candidacy exam application. It is actually due on March 16th but I thought that I should just get it out of the way. I have done this process in the past where I fill out the form and email it to my adviser. This time was no different. It just took longer to get an image of my signed form. I finally had my wife take a picture of it with her digital camera so that I could mail the image. I copied the director of the plus program and the director of academic advisement. The last time my adviser in inadvertently lost my application the director of graduate advisement had to remind him where it was. This time I put him on the copy-to list.

My latest rant about the test is that it seems as if they may be migrating away from zed, which is good. The problem is that OCL is on the sample test but there is no reference in the reading list or in any book on the reading list to OCL. I looked again to day to see if the reading list had been updated. It has not been updated since 2002. The formal methods section is all out of wack. I see that OCL could be associated to more than one question but how would you even learn it if you only had the books from the reading list. I looked at the lecture notes for one of the classes that touches on OCL. With the information given in the notes for that class you would not be able to complete any of the questions that require OCL to answer. It is even worse if you were to try and answer them with ZED. So, read the book: "The Object Constraint Language Second Edition". If you don`t you cannot possible answer these questions. Also, if you only do UML and OCL and not UML2 and OCL2 your answers could be wrong.

I am going to revisit the questions on patterns. These questions I will apply the reviewed information on OCL2. I think that it is important to draw accurate diagrams with proper syntax. Without good diagrams I will not be showing what I know. Damed the time limit. I think that the plus program plans on lobbying for an unlimited timed test for me and my learning disability. So maybe the point about a time limit is not so significant.

Thursday, March 01, 2007

Bad weather again. I heard thunder, hail, hard rain, wind and there is still snow and ice on the ground outside. Weird weather. I got up really early this morning and started studying. I went through section building models with OCL this morning. I am starting to realize that if you use OCL2 and UML2 there are diagrams that you just cannot build with most tools. I have been using dia drawing tool and can make a good deal of headway because it works very similar to MSVisio. So my diagrams are accurate but I don`t actually gain anything from the tool except very pretty pictures. The tool doesn`t help very much with the semantics of UML, especially if you are using some deep constructs. An example would be generalization of an association. Just like an association where the association is a class the generalization or sub classing of an association is not in most tools. It is stated in the UML Modeling Language Reference Manual that this kind of usage should be avoided because it is not well specified in the UML2 specification. But, the fact is that real world drawings have a high probability of having such an association. You could use OCL to represent the associations and leave the out of the diagram but this is stylistic in nature. Having said that you probably would not be able to add the OCL constraints to your diagram anyway. At least you would not have syntax help from any tool out there. At least tools that are readily available to people doing real work. MDA-MDD is far away these days. So I wonder. I wrote UML diagrams at several jobs in the past and used UML in real world situations. Can I expect to see questions on the test that deliberately push you toward a solution that cannot be diagrammed by most tools. I would say that people today depend on tools. These tools have way less than perfect syntax. If the syntax is so bad and you use it as a crutch to communicate ideas I think your designs can only be as good as that crutch. This means that UML and OCL are not hitting the mark in real world settings. Well, it could also mean that UML and OCL are overkill and we are getting by with far less. Am I a victim of my own environment here. Is it different in other parts of the world. I cannot believe with outsourcing etc that my country is keeping pace with the rest of the world. Maybe I have limited knowledge of how things are used. I would expect having worked in environments that are global entities I would have experienced the best that CS has to offer. At least I would have come in contact with the very best people. I did talk with vendors from all over the world and had contractor`s working for me or my group from all over the world. The test seems to be focused on UML2 and OCL2. I have noticed that a number of questions can be helped by doing diagrams in your answer. I have also noticed that a few questions are deliberately designed to avoid parts of OCL2 pertaining to diagramming and go for answers that are OCL expressions without diagrams. It states in the books I am learning from that the choice of going with expressions or augmented diagrams with OCL is strictly a style issue. It seems that the test designer expects you to be able to do all styles. Hmmmm, I get it depth and breadth. You will have to read lots of books to get enough information to cover the depth parts. Only one paragraph in the whole book talked about this. How would anyone know except through experience that this is how things are done? I think it is funny that we can be tested over material for being an expert but some material you can only gain proficiency through experience. That is my complaint with zed being on the test. Zed is dead. You will not find anyone in this country doing Zed except in academia. Also, you could learn OCL from a book but you would not have proficiency in it because of the nature of the penetration of OCL2 and UML2 into tools and the companies in this country. Isn`t there something in the requirements about equivalent work experience, maybe not. I am frustrated of the state things. I have learned OCL2 and UML2. I will be able to do the test. After all I have been doing UML and OCL for 7+ years just not the UML and OCL that these guys want me to know.