Thursday, December 24, 2009
Project management template for FREE download KOSTENLOSER Download: Projektmanagement Vorlage
German Planguage Concept Glossary
Saturday, December 05, 2009
Who is your hero systems engineer?
Nothing is a s practical as a good theory.
The Engineering Method (Design) is the use of heuristics to cause the best change in an uncertain situation within the available resources.
Saturday, October 03, 2009
Why High-level Measurable Requirements Speed up Projects by Building Trust
(Allow 5 minutes or less reading time)
Stephen M.R. Covey‘s The Speed of Trust caused me to realize that trust is an important subject in the field of Requirements Engineering.
Neither the specification of high-level requirements (a.k.a. objectives) nor the specification of measurable requirements are new practices in requirements engineering after all, just solid engineering practice. However, they both are extremely helpful for building trust between customer and supplier.
The level of trust between customer and supplier determines how much rework will be necessary to reach the project goals. Rework – one of the great wastes that software development allows abundantly – will add to the duration and cost of the project, especially if it happens late in the development cycle, i. e. after testing or even after deployment.
Let me explain.
If you specify high-level requirements – sometimes called objectives or goals – you make your intentions clear: You explicitly say what it is you want to achieve, where you want to be with the product or system.
If you specify requirements measurably, by giving either test method (binary requirements) or scale and meter parameters (scalar requirements), you make your intentions clear, too.
With intentions clarified, the supplier can see how the customer is going to assess his work. The customer‘s agenda will be clear to him. Knowing agendas enables trust. Trust is a prerequisite for speed and therefore low cost.
“Trust is good, control is better.” says a German proverb that is not quite exact in its English form. If you have speed and cost in mind as dimensions of “better,” then the sentence could not be more wrong! Imagine all the effort needed to continuously check somebody’s results and control everything he does. On the other hand, if you trust somebody, you can relax and concentrate on improving your own job and yourself. It’s obvious that trust speeds things up and therefore consumes less resources than suspiciousness.
Let‘s return to requirements engineering and the two helpful practices, namely specifying high-level requirements and specifying requirements measurably.
High-level Requirements
Say the customer writes many low-level requirements but fails to add the top level. By top level I mean the 3 to 10 maybe complex requirements that describe the objectives of the whole system or product. These objectives are then hidden somehow implicitly among the many low-level requirements. The supplier has to guess (or ask). Many suppliers assume the customer knew what he did when he decomposed his objectives into the requirements given in your requirements specification. They trust him. More often than not he didn‘t know, or why have the objectives not been stated in the requirements specification document in the first place?
So essentially the customer might have – at best – implicitly said what he wants to achieve and where he is headed. Chances are the supplier’s best guesses missed the point. Eventually he provides the system for the customer to check, and then the conversation goes on like this:
You: “Hm, so this ought to be the solution to my problem?”
He: “Er, … yes. It delivers what the requirements said!”
You: “OK, then I want my problem back.”
In this case he would better take it back, and work on his real agenda and on how to rebuild the misused trust. However, more often than not what follows is a lengthy phase to work the system or product over, in an attempt to fix it according to requirements that were not clear or even not there when the supplier began working.
Every bit of rework is a bit of wasted effort. We could have done it right the first time, and use the extra budget for a joint weekend fishing trip.
Measurable Requirements
Nearly the same line of reasoning can be used to promote measurable requirements.
Say the customer specified requirements but failed to AT THE SAME TIME give a clue about how he will test them, the supplier most likely gave him a leap of faith. He could then either be trustworthy or not. Assume he decided to specify acceptance criteria and how you intend to test long after development began, just before testing begins. Maybe the customer didn‘t find the time to do it before. Quite possibly he would change to some degree the possible interpretations of his requirements specification by adding the acceptance criteria and test procedures. From the supplier‘s angle the customer NOW shows your real agenda, and it‘s different from what the supplier thought it was. The customer misused his trust, unintentionally in most cases.
Besides this apparent strain on the relationship between the customer and the supplier, the system sponsor now will have to pay the bill. Quite literally so, as expensive rework to fix things has to be done. Hopefully the supplier delivered early, for more time is needed now.
So...
Trust is an important prerequisite to systems with few or even zero defects; I experienced that the one and probably last time I was part of a system development that resulted in (close to) zero defects. One of the prerequisites to zero defects is trust between customer and supplier, as we root-cause-analyzed in a post mortem (ref. principles P1, P4, P7, and P8). Zero defects mean zero rework after the system has been deployed. In the project I was working on it even meant zero rework after the system was delivered for acceptance testing. You see, it makes perfect business sense to build trust by working hard on both quantified and high-level requirements.
In fact, both practices are signs of a strong competence in engineering. Competence is – in turn – a prerequisite to trust, as Mr. Covey rightly points out in his aforementioned book.
If you want to learn more on how to do this, check out these sources:
- Measurable Value (with Agile), by Ryan Shriver.
- How to rewrite a requirement / How to make it measurable (See a live example of a bad and a good high-level specification), by Tom and Kai Gilb.
- How to Specify High-level Requirements (aka goals).
- Requirements Hierarchies and Types of Requirements.
Thursday, September 10, 2009
Quantum Mechanics, Buddhism, and Projects - Again!
Wednesday, July 29, 2009
Give Kelly Waters a Hand
Tuesday, July 28, 2009
Why it is stupid to write specifications and leave out background or commentary information
Refurbished: Non-Functional Requirements and Levels of Specification
- One school of thought describes requirements decomposition as a process to help us select and evaluate appropriate designs.
- The other school describes requirements decomposition as being a form of the design process.
Sunday, July 26, 2009
Intro to Statistical Process Control (SPC)
3. Cease dependence on inspection to achieve quality. Eliminate the need for inspection on a mass basis by building quality into the product in the first place.
Confident people are often assumed to be knowledgeable. If you want to be confident the easiest way is to miss out the 'Study' phase (of the Plan-Do-Study-Act-Cycle) altogether and never question whether your ideas are really effective. This may make you confident but it will not make you right.
Monday, July 13, 2009
Levels of Spec Principle, Non-Functional Requirements
Friday, July 03, 2009
A Quest for Up-Front Quality
- Why I wanted to have a rigorous QA effort for the first steps of a real-life project
- What I did to achieve this (Tom Gilb's Extreme Inspections, aka Agile Inspections, aka Specification Quality Control (SQC))
- What the outcomes were, in terms of both quality and budget (with detailed data)
- What the people said about the effort
- What the lessons learned are
Monday, June 01, 2009
History Repeating?, or A Case for Real QA
- Why do we put testing in the next time box? Because it consumes too much time.
- Why does it consume a lot of time? Because there is a significant number of defects to find and fix (and analyse and deploy and...), before we consider the product good enough for release.
- Why is there a significant number of defects to be found with the testing stage? Because the product brings a significant number with it.
- Why does the test-ready product have a significant number of "inherent" defects? Because we have not reduced them significantly them further upstream.
- Why didn't we reduce it further upstream? Because we think testing is very effective in finding all kinds of defects, so testing alone (or along with very few other practices) is sufficient for high defect removal efficiency.
Friday, May 22, 2009
Estimation with Use Cases: Deeper Thoughts
If you have ever tried estimation with use cases, you know that the various levels of decomposition encountered in the wild are troublesome. John does an excellent job in conceptualizing this problem.
The article seems to be from 1999, and I'm not sure whether John's ideas made it into the various estimation tools. For me, reading them brought a great deal of clarity in the levels-of-use-cases concept, so I think it's worth reading anyway.
Tuesday, May 05, 2009
Atomic Functional Requirements
Tuesday, April 28, 2009
Tweets from Rolf
Shall or must to markup mandatory requirements?
Writing Many High Quality Artefacts - Efficiently
Friday, April 17, 2009
Understanding the exponential function
Thursday, April 16, 2009
0-defects? I'm not kidding!
Monday, April 13, 2009
Value Thinking: Using Scalpels not Hatchets
Saturday, April 11, 2009
Extracting Business Rules from Use Cases
Monday, April 06, 2009
Rules for Checking Use Cases
For all readers who face the challenge to find a BA job, or at least a (second) job where BA skills are applicable, there's an interesting discussion going on at the modernAnalyst-Forum. I suggested to move to a QA perspective. This idea fits with the above Use Case Checking Rules.
Thursday, March 05, 2009
Update on Specifying Goals
- User does some inputs
- User "sends" the input, i. e. confirms his inputs
- System checks inputs against rules X and Y
- Systems shows an error message in case the checks fail.
- ...
- User does some inputs
- (System has to make sure rules X and Y are not broken)
- "I think I am an expert user."
- "I do these simple inputs. Damn I'm good!"
- "Now send the stuff to the stupid machine." *klick*
- "Ooops ... What the ...."
- "The stupid machine says I did it wrong?!"
- "Why didn't it prevent me from doing it wrong, is there anything this machine is useful for?"
Sunday, February 15, 2009
Do you care about your customer, every day?
Wednesday, February 11, 2009
7 Habits of Highly Effective Risk Managers
It is on effective risk management, titled "7 Habits of Highly Effective Risk Managers".
As you can expect from my material it is a set of rules, that risk managers can easily apply to their jobs. It might also help if you are NOT the risk manager in your endeavor, but want to help someone who is.
Here's the condensed version:
R1: Be responsible.
R2: Analyse in depth.
R3: Use hard facts.
R4: Do more than one thing.
R5: It's not fire and forget.
R6: Integrate.
R7: Don't change the scales of measurement.
In the blogpost itself I explain every rule/habit in detail. Thanks Dick Karpinski for nitpicking and thanks Mr. Covey for the title.
Enjoy!
Friday, January 30, 2009
Estimating with Use Case Points - FREE template
- An introduction to use case point estimation with good context for use case newbies
- A How-to for the final calculations
- The free template