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.