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.