tag:blogger.com,1999:blog-88293732762061038632009-07-13T07:54:43.828+01:00Clear Conceptual ThinkingNo fluff, just stuff: Rolf Goetz' engineering blog on requirements, projects and systemsRolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.comBlogger127125tag:blogger.com,1999:blog-8829373276206103863.post-29697530671556615622009-07-13T07:49:00.006+01:002009-07-13T07:54:43.838+01:00Levels of Spec Principle, Non-Functional RequirementsFollow me on Twitter: @rolfgoetz<div><br /></div><div>Just a quick remark: I <span class="Apple-style-span">added a grammar representation to the <a href="http://planetproject.wikidot.com/nonfunctional-requirements-and-level-of-specification">"levels of specification principle</a>" on PlanetProject. For those of you who like precision. </span><div><div><span class="Apple-style-span">If my boss sees this, he again will call me a "theorist." :-)</span></div></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-2969753067155661562?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-56411782504248346422009-07-03T11:46:00.006+01:002009-07-03T12:15:38.845+01:00A Quest for Up-Front QualityToday I'd like to point you to the presentation slides of a talk I gave at this year's Gilb Seminar on Culture Change in London. <div><br /></div><div><span class="Apple-style-span" style="font-weight: bold;">You'll find the file if you go to </span><a href="http://planetproject.wikidot.com/10-critical-requirements-principles-for-0-defects-systems"><span class="Apple-style-span" style="font-weight: bold;">this PlanetProject page on Zero Defects</span></a><span class="Apple-style-span" style="font-weight: bold;">, navigate to principle P6 and click the link titled "presentation".</span></div><div><br /></div><div>The title was "A Quest for Up-Front Quality".<div>Short outline:</div><div><ul><li>Why I wanted to have a rigorous QA effort for the first steps of a real-life project<br /></li><li>What I did to achieve this (<a href="http://gilb.com/Inspection">Tom Gilb's Extreme Inspections, aka Agile Inspections, aka Specification Quality Control (SQC)</a>)<br /></li><li>What the outcomes were, in terms of both quality and budget (with detailed data)<br /></li><li>What the people said about the effort<br /></li><li>What the lessons learned are<br /></li></ul></div><div>If you want to see <span class="Apple-style-span" style="font-weight: bold;">truely amazing results</span> for one of the most effective methods of software development history, don't miss the slides. Any questions? Just ask!</div><div><br /></div><div>The talk was warmly welcomed by the great Value-Thinkers of the seminar, special thanks to <a href="http://theagileengineer.com/">Ryan Shriver</a>, <a href="http://www.allankelly.net/" title="http://www.allankelly.net/">Allan Kelly</a>, <a href="http://www.giovanniasproni.com/" title="http://www.giovanniasproni.com">Giovanni Asproni</a>, <a href="http://www.malotaux.nl/" title="http://www.malotaux.nl/">Niels Malotaux</a>, <a href="http://www.internalcontrolsdesign.co.uk/icdpicturepage.html">Matthew Leitch</a>, <a href="www.Int-IOM.org">Jerry Durant</a>, <a href="http://www.construx.com">Jenny Stuart</a>, <a href="www.ljungberg-quality.com">Lars Ljungberg</a>, <a href="www.gddeventer.com">Renze Zijlstra</a>, <a href="http://www.osel.co.uk/" title="http://www.osel.co.uk/">Clifford Shelley</a>, <a href="http://objectivedesigners.com/" title="http://objectivedesigners.com/">Lorne Mitchell</a>, <a href="http://infolab.stanford.edu/people/gio.html" title="http://infolab.stanford.edu/people/gio.html" s="">Gio Wiederhold</a>, <a href="http://www.pan-metron.com/marilyn-bush.htm" title="http://www.pan-metron.com/marilyn-bush.htm">Marilyn Bush</a>, <a href="http://www.arpitha.com/yazdi.html" title="http://www.arpitha.com/yazdi.html">Yazdi Bankwala,</a> and all others I forgot to mention. </div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-5641178250424834642?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-80394793927410805062009-06-01T11:47:00.007+01:002009-06-01T12:02:44.464+01:00History Repeating?, or A Case for Real QA<span class="Apple-style-span" style=" line-height: 18px;font-family:Helvetica;font-size:14px;"><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">Jeff Patton of <a href="http://agileproductdesign.com">AgileProductDesign.com</a> has an <a href="http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html">excellent article on Kanban Development</a>. He does a great job in explaining the kanban idea, in relation to the main line of thinking in Agile. The article is about using a pull system rather than a push system like traditional (waterfall) development or agile development with estimation, specification and implementation of user stories.</span></span></div><div> </div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">Reading the first couple of sections got me thinking about another topic. Isn't this agile thing "history repeating"?</span></span></div><div> </div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">First of all, I'd like to question how common agile development really is. It's clear that the agile community talks a lot about agile (sic!), but what does the numbers tell us? I don't have any, so I'm speculating. Let's assume the percentage of agile developments is significant. (I don't want to argue against Agile, but I want to know if my time is spent right ;-)</span></span></div><div> </div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">Jeffs writes:</span></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-style: italic;">"Once you’ve shrunk your stories down, you end up with different problems. User story backlogs become bigger and more difficult to manage. (...) Prioritizing, managing, and planning with this sort of backlog can be a nasty experience. (...) Product owners are often asked to break down stories to a level where a single story becomes meaningless."</span></span></span></div><div> </div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">This reminds me so much of waterfall development, a line of thinking I spent the most of my professional career in, to be honest.</span></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">First, this sounds a lot like the initial point of any requirements management argument. You have so many requirements to manage, you need extra discipline, extra processes, and (of course ;-) an extra tool to do that. We saw (and see) these kind of arguments all over the place in waterfall projects. Second, estimation, a potentially risky view into the future, has always been THE problem in big bang developments. People try to predict minute detail, the prediction covering many months or even years. This is outside most people's capacity. Third and last, any single atomic requirement in a waterfall spec really IS meaningless. I hope we learn from the waterfall experience.</span></span></div><div> </div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">Jeff goes on:</span></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-style: italic;">"Shrinking stories forces earlier elaboration and decision-making."</span></span></span></div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;">Waterfall-like again, right?</span><br /></div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div> </div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">If user stories get shrunk in order to fit in a time-box, there's another solution to the problem (besides larger development time-boxes, or using a pull system like Jeff has beautifully laid out): not make a user story the main planning item. How about "fraction of value delivered" instead, in per cent?</span></span></div><div> </div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">Jeff again:</span></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-style: italic;">"It’s difficult to fit thorough validation of the story into a short time-box as well. So, often testing slips into the time-box after. Which leaves the nasty problem of what to do with bugs which often get piped into a subsequent time-box."</span></span></span></div><div><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">This is nasty indeed, I know from personal experience. BTW, the same problem exists, but on the other side of the development time-box, if you need or want to thoroughly specify stories/features/requirements. Typical solution: you put it in the time-box BEFORE.</span></span></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">Let's again find a different solution using one of my favorite tools, the 5 Whys.</span></span></div><div><ul><li><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;">Why do we put testing in the next time box? Because it consumes too much time.</span><br /></li><li><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;">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. </span><br /></li><li><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;">Why is there a significant number of defects to be found with the testing stage? Because the product brings a significant number with it.</span><br /></li><li><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;">Why does the test-ready product have a significant number of "inherent" defects? Because we have not reduced them significantly them further upstream.</span><br /></li><li><span class="Apple-style-span" style=" ;font-family:arial;font-size:16px;">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.</span><br /></li></ul></div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">It is not. Period.</span></span></div><div> </div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">From an economic standpoint it is wise to do proper QA upstream, in order to arrive at all subsequent defect removal stages (including testing) with a smaller number of defects, hence with fewer testing hours needed. This works because defects are removed cheapest and fastest as close as possible to their origin.</span></span></div><div> </div><div><span class="Apple-style-span" style="font-family:arial;"><span class="Apple-style-span" style="font-size:medium;">What do I mean by proper upstream QA? Well, I've seen personally that inspections (on requirements/stories, design, code, and tests) deliver jaw-dropping results in terms of defects reduced and ROI. I'm sure there are a couple more, just ask you metrics guru of choice. The point is, see what really helps, by facts and numbers not opinions, and make a responsible decision.</span></span></div><div><br /></div></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-8039479392741080506?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-2968793379021312172009-05-22T09:20:00.003+01:002009-05-22T09:32:55.185+01:00Estimation with Use Cases: Deeper ThoughtsI came across a thought provoking white paper written by John Smith of Rational Software. It's on <a href="http://www.cs.buap.mx/~dpinto/semadoo/finalTP171.PDF">Estimation of effort based on Use Cases</a>.<br /><br />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.<br /><br />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.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-296879337902131217?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-65318237432581292492009-05-05T14:33:00.002+01:002009-05-05T14:41:28.489+01:00Atomic Functional RequirementsThe <a href="http://tynerblain.com/blog/2009/04/22/dont-use-shall/">discussion on shall vs. must</a> at <a href="http://tynerblain.com/blog/">Tyner Blain</a> , on which I have <a href="http://clearconceptualthinking.blogspot.com/2009/04/shall-or-must-to-markup-mandatory.html">blogged recently</a>, triggered me to wrap up what I have learned about atomic functional requirements over the years. <div>See 3 principles and 4 rules on <a href="http://planetproject.wikidot.com/writing-atomic-functional-requirements">PlanetProject</a>. Feel free to do responsible changes.</div><div>The article  explains how to write atomic functional system requirements so that the spec is easy to read, and ambiguity is kept to a minimum.</div><div>Note that it is NOT about the even more important (non-)functional user requirements here, in a sense of what a stakeholder expects from the system, which problems shall be solved, what shall be the inherent qualities of the solution etc. I do not intend to argue that any spec must include atomic, functional requirements. But sometimes setup is so that it must. Don't forget to establish the context first.</div><div>Now enjoy the article on <a href="http://planetproject.wikidot.com/writing-atomic-functional-requirements">how to write atomic functional requirements</a>. Thanks for your comments.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-6531823743258129249?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-47547243983485433862009-04-28T15:38:00.001+01:002009-04-28T15:39:48.897+01:00Tweets from RolfJust in case you're interested and did not notice, you can follow me on Twitter using http://twitter.com/rolfgoetz<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-4754724398348543386?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-62605420366276287902009-04-28T15:07:00.002+01:002009-04-28T15:36:02.223+01:00Shall or must to markup mandatory requirements?Generations of Business Analysts before me had to decide which auxiliary verb to choose in a mandatory system requirement. "Shall", like in "The system shall..." is probably most widely used in the English spec-writing world. But is it a good idea?<div>Scott Selhorst of <a href="http://tynerblain.com/blog/">Tyner Blain</a> did <a href="http://tynerblain.com/blog/2009/04/22/dont-use-shall/">some research</a> using a novel research method on how ambiguous <span class="Apple-style-span" style="font-style: italic;">shall</span> and <span class="Apple-style-span" style="font-style: italic;">must</span> are. The bottom line: if for any reason it might not be clear to some reader that <span class="Apple-style-span" style="font-style: italic;">shall</span> means mandatory, use <span class="Apple-style-span" style="font-style: italic;">must </span>(consistently throughout the spec, of course, and put the convention in your requirements management plan).<br /><div><br /></div><div>I think the <span class="Apple-style-span" style="font-style: italic;">shall</span> (as opposed to <span class="Apple-style-span" style="font-style: italic;">must</span>) dates back to the old MIL-STD 498, or even DOD-STD 2167A.  And anyone who "grew up" BA-wise in the military or air traffic control fields like me, is very accustomed to the <span class="Apple-style-span" style="font-style: italic;">shall</span>, and <span class="Apple-style-span" style="font-style: italic;">must</span> might sound too harsh. But, hey, here's my favourite answer to that: "You're writing a spec, and you're not gonna win the literature Nobel prize for it!"</div><div><br /></div><div>Interesting enough, as Scott points out in his <a href="http://tynerblain.com/blog/2009/04/22/dont-use-shall/">article</a>, in many languages other than English <span class="Apple-style-span" style="font-style: italic;">shall</span> is not really used for the meaning of mandatory. In German, for instance, the meaning of <span class="Apple-style-span" style="font-style: italic;">shall</span> is much closer to <span class="Apple-style-span" style="font-style: italic;">should</span> than <span class="Apple-style-span" style="font-style: italic;">must</span>.  And we all know what happens in waterfall projects when acceptance testing is due and the developer has implemented only half of the <span class="Apple-style-span" style="font-style: italic;">should</span> requirements...</div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-6260542036627628790?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-4356240647126460752009-04-28T11:00:00.003+01:002009-04-28T11:08:03.552+01:00Writing Many High Quality Artefacts - EfficientlyI finished a <a href="http://planetproject.wikidot.com/writing-many-high-quality-artefacts">process description on writing many artefacts</a>, like use cases, requirements, book chapters, test cases, in high quality with the least effort possible. Please have a look, I'm eager to see your comments. After all, it's a <a href="http://planetproject.wikidot.com/start">Planet Project</a> wiki article, so if you feel like it, just edit.<div><br /></div><div>This, again, is on evolution, or learning by feedback. Makes heavy use of inspections. Inspections BTW, are one of the most effective QA methods known in software engineering history, according to metrics expert Capers Jones.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-435624064712646075?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-91004686139505059282009-04-17T10:50:00.004+01:002009-04-17T11:01:20.750+01:00Understanding the exponential functionI was pointed to a set of videos that explores the exponential function and what most people think about its consequences. Seems to be a boring topic.<div>It isn't. I watched the first 10 minutes, only to realize my jaw has dropped to the floor. This is stuff I knew and didn't grasp at the same time. I strongly suggest you invest the ∼75 minutes and <a href="http://www.youtube.com/view_play_list?p=6A1FD147A45EF50D">watch it</a>.</div><div>It hit me two days after I started to drivel about me liking sustainable solutions. I wasn't up to all my senses, obviously. ;-) </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-9100468613950505928?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-54748503783243190912009-04-16T18:04:00.003+01:002009-04-16T18:32:55.794+01:000-defects? I'm not kidding!<div>Today <a href="http://www.targetprocess.com/blog/2009/03/zero-defects-are-you-kidding-me.html">a post by Michael Dubakov</a> at <a href="http://www.targetprocess.com/blog/">The Edge of Chaos</a> provoked some thoughts. He basically argues, that a zero-defect mentality causes several unpleasant effects in a development team:</div><div><br /></div><div>- Not enough courage to refactor complex, messy, buggy, but important piece of code.</div><div>- Can’t make important decision, instead make less risky, but wrong decision.</div><div>- Do everything to avoid responsibility, that leads to coward and stupid behavior.</div><div><br /></div><div>Well, I guess the solomonic answer to this critique is 'it depends'. Actually, I'm quite enthusiastic about the zero-defects thought. However, I also know that zero-defects are extremely hard to attain, or can easily be attained by chance ;-)</div><div><br /></div><div>You maybe remember the post where I detail <a href="http://planetproject.wikidot.com/10-critical-requirements-principles-for-0-defects-systems">10 Requirements Principles for 0-defect systems</a>. Therefore I posted the following as a comment to Michael's post, argueing</div><div>- that we should not call defects 'bugs', </div><div>- that zero-defects can be attained by using principles that have almost nothing to do with testing, but with requirements, </div><div>- that testing alone is insufficient for a decent defect removal effectiveness.</div><div><br /></div><div>Hi Michael, </div><div><br /></div><div>thanks for another thought-provoking post! i enjoy reading your blog.</div><div><br /></div><div>Hmm, several issues here.</div><div><br /></div><div>1) First of all I think we should come to a culture where we do not call more or less serious flaws in IT systems 'bugs'. To me, it does not make sense to belittle the fact. Let's call them what they are: defects (I'm not going into the possible definitions of a defect here).</div><div>This said, look <a href="http://tr.im/iY1X">here</a>:  scroll down a bit, and laugh.</div><div>And here's <a href="http://xkcd.com/319">a funny cartoon.</a></div><div><br /></div><div>2) A couple of years ago I had the luck to be part of a team that delivered (close to) zero defects. I wrote down the 10 principles we used from a requirements perspective. See </div><div> the <a href="http://tr.im/iXZF">short version</a> on <a href="http://PlanetProject.wikidot.com">PlanetProject</a>, more or less uncommented, or <a href="http://tr.im/iYj9">Part 1</a> and <a href="http://tr.im/iYlZ">Part 2</a> of </div><div>a longer version on <a href="http://www.ravensbrain.com/">Raven's Brain</a>. </div><div>Interesting enough, only 1 out of the 10 principles is directly related to a defect-finding activity. We had a 'zero defect mentality' in a way that we all seriously thought it would be a good idea to deliver excellent quality to the stakeholders. Fear or frustration was not at all part of the game. Mistakes were tolerable, just not in the product at delivery date. Frankly, we were a bit astonished to find out we successfully delivered a nearly defect-free non-trivial system over a couple of releases.</div><div><br /></div><div>3) While it seems to be a good idea to use the different strategies that you proposed in the original post, I'm missing some notion of how effective the various defect-reducing strategies are. The only relevant quantitative research I know of come from metrics guru Capers Jones. If I remember correctly he states that each single strategy is only about 30% effective, meaning that you need to combine 6-8 strategies in order to end up with a 'professional' defect removal effectiveness. AND you cannot reach a net removal effectiveness of, say, 95% with testing alone. From an economic standpoint it is wise to reduce the number of defects that 'arrive' at testing in the first place, and this is done most effectively by formal inspections (of requirements, design and code).</div><div><br /></div><div><br /></div><div>Greetings!</div><div><br /></div><div>Rolf</div><div><br /></div><div>PS: if you find a defect in my comment, you can keep it ;-)</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-5474850378324319091?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-67602603510527109592009-04-13T15:43:00.003+01:002009-04-13T15:54:22.856+01:00Value Thinking: Using Scalpels not HatchetsRyan Shriver, managing consultant at Dominion Digital, has put out an <a href="http://www.gantthead.com/content/articles/248232.cfm">excellent article on Value Thinking</a>. I think his views are extremely relevant, as we see cost reduction programs all around the IT globe. I can't tell you how much Ryan is spot on, considering the organization I work for (sorry, can't tell you more in public).<div><br /></div><div>The article is short, gives ample information on the WHAT and (more importantly) the WHY.</div><div>Ryan writes in due detail about 4 policies and 5 practices, his advice to struggling IT shops and IT departments.  Thanks Ryan!</div><div><br /></div><div>It's on <a href="http://www.gantthead.com">gantthead.com</a>, and I recommend signing up if you aren't already, it's free.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-6760260351052710959?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-69945796913901516542009-04-11T15:16:00.002+01:002009-04-11T15:29:57.845+01:00Extracting Business Rules from Use CasesA while ago I posted a process for Extracting Business Rules from Use Cases, on <a href="http://clearconceptualthinking.blogspot.com/2007/09/improve-reusability-of-use-cases-by.html">this blog</a> and on <a href="http://planetproject.wikidot.com/improve-reusability-of-use-cases-by-extracting-business-rule">PlanetProject</a>. I'm proud to announce an article on the very same subject. While the original form was quite condensed, the new version has more background, and examples. It has the core process of course. Find it at <a href="http://www.modernanalyst.com/Default.aspx">modernAnalyst.com</a> as a <a href="http://www.modernanalyst.com/Resources/Articles/tabid/115/articleType/ArticleView/articleId/880/Use-Case-Recycling-by-Extracting-Business-Rules.aspx">featured article</a>.<div>I'd be happy to discuss the topic here, <a href="http://www.modernanalyst.com/Resources/Articles/tabid/115/articleType/ArticleView/articleId/880/Use-Case-Recycling-by-Extracting-Business-Rules.aspx">there</a>, or work with you on improvements on <a href="http://planetproject.wikidot.com/improve-reusability-of-use-cases-by-extracting-business-rule">PlanetProject</a>.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-6994579691390151654?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com2tag:blogger.com,1999:blog-8829373276206103863.post-50014614794630298492009-04-06T11:49:00.000+01:002009-04-06T12:24:47.219+01:00Rules for Checking Use CasesA couple of months ago I assumed the role of a quality manager for one of my projects. I learned that document quality control requires a set of defined rules to check documents against. Because the documents to do quality control on were 90% use cases, I defined a <a href="http://planetproject.wikidot.com/rules-for-checking-use-cases">set of 8 rules for checking use cases</a>, working with authors and checkers, as well as subject matter experts (read: customers). you can find them on <a href="http://planetproject.wikidot.com/">Planet Project</a>.<br />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 <a href="http://www.modernanalyst.com/Community/Forums/tabid/76/forumid/20/threadid/3016/scope/posts/Default.aspx">interesting discussion </a>going on at the modernAnalyst-Forum. I suggested to move to a QA perspective. This idea fits with the above <a href="http://planetproject.wikidot.com/rules-for-checking-use-cases">Use Case Checking Rules</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-5001461479463029849?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-60513218889918277532009-03-05T16:07:00.003Z2009-03-05T16:29:15.212ZUpdate on Specifying GoalsI updated the <a href="http://planetproject.wikidot.com/">Planet Project</a> article on <a href="http://planetproject.wikidot.com/specifying-goals">Specifying goals,</a> using some of Tom Gilb's approaches and recent experience with the topic from one of my projects.<div>In this project, we struggled somewhat to explain to our subject-matter experts the importance of beginning with the (ultimate) end in mind. They thought they had to describe every little step, every button and every view of an IT application down to the smallest detail.</div><div>My favorite example was the following sequence (from a use case description), repeated a hundred times within the requirement specification:</div><div><ol><li>User does some inputs<br /></li><li>User "sends" the input, i. e. confirms his inputs</li><li>System checks inputs against rules X and Y</li><li>Systems shows an error message in case the checks fail.</li><li>...</li></ol>I finally got them with suggesting an alternative solution, roughly like this:</div><div><ol><li>User does some inputs</li><li>(System has to make sure rules X and Y are not broken)</li></ol>I guess the key was to make up a scenario which used quite a lot of sarcasm:</div><div><ol><li>"I think I am an expert user."</li><li>"I do these simple inputs. Damn I'm good!"</li><li>"Now send the stuff to the stupid machine." *klick*</li><li>"Ooops ... What the ...."</li><li>"The stupid machine says I did it wrong?!"</li><li>"Why didn't it prevent me from doing it wrong, is there anything this machine is useful for?"</li></ol>:-D</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-6051321888991827753?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-16064897551664873352009-02-15T12:38:00.004Z2009-02-15T12:43:52.181ZDo you care about your customer, every day?There's a wonderful parable on real customer satisfaction on the <a href="http://joshuahoover.com/2009/02/14/the-customers-disappear-right-before-our-eyes/">"i must be an acrobat" weblog</a> by Joshua Hoover.<div><br /></div><div>He compares eating out in a restaurant with inattentive waiters to developing software without delivering real results to a customer.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-1606489755166487335?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-39983434049321472252009-02-11T08:20:00.004Z2009-02-11T08:30:12.752Z7 Habits of Highly Effective Risk ManagersI'm proud to announce that Raven, author of the wonderful <a href="http://www.ravensbrain.com/">Raven's Brain weblog</a> published another guest post of mine.<br />It is on effective risk management, titled "<a href="http://www.ravensbrain.com/2009/02/7-habits-of-highly-effective-risk.html">7 Habits of Highly Effective Risk Managers</a>".<br /><br />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.<br /><br />Here's the condensed version:<br /><br />R1: Be responsible.<br />R2: Analyse in depth.<br />R3: Use hard facts.<br />R4: Do more than one thing.<br />R5: It's not fire and forget.<br />R6: Integrate.<br />R7: Don't change the scales of measurement.<br /><br />In <a href="http://www.ravensbrain.com/2009/02/7-habits-of-highly-effective-risk.html">the blogpost itself </a>I explain every rule/habit in detail. Thanks <a href="http://nitpicker.pbwiki.com/">Dick Karpinski</a> for nitpicking and thanks Mr. Covey for the title.<br />Enjoy!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-3998343404932147225?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-13560781599970408182009-01-30T06:44:00.005Z2009-01-30T07:16:33.797ZEstimating with Use Case Points - FREE templateBeing lazy, I was looking for a free, read-made, comprehensive and easy-to-use spreadsheet template for estimating project effort with use case points. I needed it for one of my current projects, in which we are writing 200+ use cases (sic!, see my remark below), and prepare a project proposal for senior management. <div>I came across <a href="http://tynerblain.com/">Scott Selhorst</a>'s material on Use Case Point Estimation. Very useful!</div><div>Check out:</div><div><ul><li><a href="http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/">An introduction</a> to use case point estimation with good context for use case newbies<br /></li><li><a href="http://tynerblain.com/blog/2007/02/19/software-cost-estimation-ucp-6/">A How-to for the final calculations</a><br /></li><li><a href="http://tynerblain.com/blog/2007/02/20/software-cost-estimation-ucp-7/">The free template</a><br /></li></ul></div><div><br /></div><div>The template can also be googled and found at <a href="http://www.modernanalyst.com">modernAnalyst</a>, another useful source of information for business analysts and such folk.</div><div><br /><div><span class="Apple-style-span" style="font-style: italic;">Note on the large number of use cases: I personally think they are no real use cases. It's quite close to a functional decomposition done in use case form. I expect the system to arrive at about 8000 Function Points, but estimates range from 1.000 to 15.000 as of now :-)</span></div><div> </div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-1356078159997040818?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-91673013718278493922008-12-25T09:22:00.005Z2008-12-25T10:13:18.857ZSoftware Development Practice in the 21st (22nd?) CenturyA couple of months ago I published an article about <a href="http://www.ravensbrain.com/2008/08/10-critical-requirements-principles-for.html">10 Critical Requirements Principles for 0-Defects-Systems</a> (on <a href="http://www.ravensbrain.com/">Ravens Brain</a>). Anecdotal evidence on how I once achieved zero defects in one of my projects.<div><br /><div>If you like the thought of reliable software (sic!) you might as well like <a href="http://www.fastcompany.com/magazine/06/writestuff.html">Charles Fishman's article</a> on the On-Board Shuttle Group, the producer of the space shuttle's software. Yes, they have a lot of money to spend, but many lives and expensive equipment are at stake.</div><div><blockquote>This software never crashes. It never needs to be re-booted. This software is bug-free. It is perfect, as perfect as human beings have achieved. Consider these stats : the last three versions of the program -- each 420,000 lines long-had just one error each. The last 11 versions of this software had a total of 17 errors. -- Charles Fishman on the software product the Group puts out</blockquote><br /><br />BTW, they seem to use three key pracices: very <a href="http://planetproject.wikidot.com/avoid-requirements-related-defects-in-it-systems">detailed requirements</a>, <a href="http://gilb.com/Inspection">inspections</a> and <a href="http://gilb.com/Project-Management">continuous improvement</a>. </div><blockquote>The way the process works, it not only finds errors in the software. The process finds errors in the process. -- Charles Fishman on the On-Board Shuttle Group's process</blockquote><div>Happy New Year! (Note that 2009 is a year of the 21st century. Can't we do any better?)<br /><br />PS: I'm going to go on vacation from Dec 28 to Jan 20. More interesting topics still to come, please be patient.<br /><br /></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-9167301371827849392?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-90364653297581355912008-12-22T13:49:00.003Z2008-12-25T10:08:46.997ZLewin on TheoriesJust this cute little quote here, for all of you who need to be assured of their "sometimes too theoretical work": <div><br /><blockquote>There's nothing as practical as a good theory. - Kurt Lewin</blockquote></div><div><div><br /></div><div>Merry Christmas, and sorry for all the clutter around short posts ;-)</div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-9036465329758135591?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-24050549863917374812008-12-22T11:50:00.002Z2008-12-22T11:59:10.040ZNews in the Field of Systems EngineeringFor a VERY comprehensive monthly newsletter on Systems Engineering go to the <a href="http://www.ppi-int.com/newsletter/systems_engineering_newsletter.php">Project Performance International</a> website. A quote from the site:<br /><blockquote>Project Performance International is proud to produce a monthly Systems Engineering newsletter, named "SyEN". The newsletter presents in-depth coverage of the month's news in systems engineering and directly related fields, plus limited<br />information on PPI's activities and relevant industry events.</blockquote><br />The nice thing is, advertising is REALLY limited. I find the newsletter do be both interesting and easy to read. They will send you and E-Mail with an table of contents, and you can then go to the website and read it. PDF format ist also provided.<br />From this months contents:<br /><ul><li>Featured Article: The ISO Way - Alwyn Smit</li><li>Featured Society: Association for Configuration and Data Management (ACDM) </li><li>Systems Engineering Software Tools News</li><li>Systems Engineering Books, Reports, Articles and Papers</li><li>Conferences and Meetings</li><li>Education</li><li>People</li><li>Related News</li><li>Systems Engineering-Relevant Websites</li><li>Standards and Guides</li><li>PPI News</li><li>PPI Events</li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-2405054986391737481?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-80974548829927814022008-12-21T11:20:00.006Z2008-12-21T12:16:19.099ZWhy Re-work isn't a Bad Thing in all Situations.Software Development has many characteristics of production. I'm thinking of the various steps that as a whole comprise the development process, in which artifacts are passed from one sub process to another. Requirements are passed on to design, code is passed on to test (or vice versa, in test driven-development), and so on.<br /><br /><a href="http://alistair.cockburn.us/">Alistair Cockburn</a> wrote an <a href="http://www.stsc.hill.af.mil/crosstalk/2009/01/0901Cockburn.html">interesting article</a> on what to do with the excess production capability of non-bottleneck sub-processes in a complex production process. In the <a href="http://www.stsc.hill.af.mil/crosstalk/2009/01/index.html">Crosstalk issue of Jan 2009</a>, he explores new strategies to optimizing a process as a whole. One idea is to consciously use re-work (you know, the bad thing you want to avoid like the plague) to improve the quality of affairs earlier rather than later.<br /><br /> <blockquote>In terms of what to do with excess capacity at a non-bottleneck station, there is a strategy different from sitting idle, doing the work of the bottleneck, or simplifying the work at the bottleneck; it is <span style="font-weight: bold;">to use the excess capacity to rework the ideas to get them more stable so that less rework is needed later</span> at the bottleneck station.</blockquote><br /><br />Mark-up is mine. You see the basic idea.<br />In conclusion he lists the following four ways of using work that otherwise would have spent idling around, waiting for a bottleneck to finish work:<br /><br /> * Have the workers who would idle do the work of the bottleneck sub-process.<br /><br /><span style="font-style: italic;">Note: Although this sometimes is mandated by some of the Agile community, I have seldom seen workers in the software industry that can produce excellent quality results in more than one or two disciplines.</span><br /><br /> * Have them simplify the work at the bottleneck sub-process.<br /><br /><span style="font-style: italic;">Note: An idea would be to help out the BAs by scanning through documents and giving pointers to relevant information.</span><br /><br /> * Have them rework material to reduce future rework required at the bottleneck sub-process.<br /><br /><span style="font-style: italic;">Note: See the introducing quote by A. Cockburn. Idea: Improve documents that are going to be built upon "further downstream" to approach a quality level of less than 1 major defect per page.</span><br /><br /> * Have them create multiple alternatives for the bottleneck sub-process to choose from.<br /><br /><span style="font-style: italic;">Note: An example would be to provide different designs to stakeholders. Say, GUI designs. This can almost take the form of concurrently developing solutions to one problem by different engineering teams, for the best solution should be evaluated and consciously chosen.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-8097454882992781402?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-68235320604698567212008-12-13T07:45:00.005Z2008-12-13T08:16:17.698ZLack of Engineering Practices Make 'Agile' Teams Fail<a href="http://jamesshore.com">James Shore</a> wrote a <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html">blog post</a> that is among my TOP 5 in this quarter. Go <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html">read it</a>! He argues that the industry sees so many agile projects fail because most teams that call themselves 'agile' mistake the real idea with the wrong set of practices. Maybe this quote says best what his article is about:<br /><blockquote>These teams say they're Agile, but they're just planning (and replanning) frequently. Short cycles and the ability to re-plan are the <span style="font-style: italic;">benefit</span> that Agile gives you. It's the <span style="font-style: italic;">reward</span>, not the <span style="font-style: italic;">method</span>. These psuedo-Agile teams are having dessert every night and skipping their vegetables. By leaving out all the other stuff--the stuff that's really Agile--they're setting themselves up for rotten teeth, an oversized waistline, and ultimate failure. They feel good now, but it won't last.</blockquote><br />This speaks from my heart. It's exactly what happened when I tried to turn a project 'agile' in a super waterfall organization (picking up this metaphor I'd say it's an <a href="http://en.wikipedia.org/wiki/Angel_falls">Angel Falls</a> organization). We will have technical debt to pay off for at least a decade. However, we found that out quite quickly ;-)<br />If you're looking for some method that is strong both in the management and engineering field, check out <a href="http://www.gilb.com/EvoExperience">Evo by Tom Gilb</a>. I know I recommended Mr. Gilb's work over and over again in the past 2 years, and it almost seems ridiculous. Be assured, I'm not getting paid by Tom :-)<br />To get a very clear perspective on iterative planning check out <a href="http://www.malotaux.nl/nrm/pdf/TimeLineRoma.pdf">Niels Malotaux' Time Line.</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-6823532060469856721?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-43658383771036615202008-12-10T17:59:00.002Z2008-12-10T18:06:55.262ZUse Case Content Patterns UpdatedMartin Langlands incorporated "my" DESTRUCTOR pattern into one article, now version 2 of his Use Case Content Patterns description. Have a look <a href="http://planetproject.wikidot.com/use-case-content-patterns">here</a>, the whole thing is easier to handle now.<div>Hint: Click 'files' at the bottom of the wiki page to see the pattern file. Sorry for the inconvenience!</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-4365838377103661520?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-83060171565462842212008-12-01T14:46:00.003Z2008-12-01T14:51:56.377ZPatterns for Use Case CONTENT, anyone? Yes, finally!While modelling use cases, have you ever thought 'I have modelled something very similar before.'? Here's a solution to re-occuring modelling tasks. Martin Langlands has developed a bundle of patterns for the content of use cases. He developed these with an extensive backround in banking and insurance systems. After reading his well written article it I found myself in a very different field but still the patterns were applicable, to say the least. I think they are ready to use in most areas of concern, and the idea should set the use case modelling world on fire!<br /><br /><a href="http://planetproject.wikidot.com/">Visit Planet Project</a> to see <a href="http://planetproject.wikidot.com/use-case-content-patterns">the respective Process</a>.<br /><br />Note: I proudly contributed the idea of another pattern to Martin's, the DESTRUCTOR pattern ;-) <a href="http://planetproject.wikidot.com/use-case-content-patterns">Go have a look</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-8306017156546284221?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com0tag:blogger.com,1999:blog-8829373276206103863.post-71284694350701814692008-11-27T18:15:00.000Z2008-11-27T18:17:00.936ZFailure by delivering more than was specified?I stumbled upon a puzzle. Please help me solve it.<br /><br />It strikes me as odd, but there might be situations where a provider fails (i.e. the system will not be accepted by the customer), because he delivered MORE than was specified. I'm not talking about the bells and whistles here, that (only) wasted resources. <br /><br />Imagine a hard- or software product that is designed to serve more purposes than required by the single customer. Any COTS product and any product line component should fit this definition. <br /><br />Which kind of requirements could be exceeded, scalar and/or binary requirements? I think scalar requirements (anything you can measure on some scale) cannot be exceeded, if they do not constrain the required target on the scale on two sides. Haven't seen that (It's always "X or better", e.g. 10.000 transactions per second or more. <br />Even if it was constraint on two sides, this simply would mean a defect. <br /><br />But there can be a surplus of binary qualities, i.e. functions. A surplus function can affect other functions and/or scalar qualities, I think. <br />Say, as a quite obvious example, the system sports a sorting function which was not required. A complex set of data can be sorted, and sorting may take some time. A user can trigger the function that was not required. <br />- This might derail overall system availablity (resonse time), a user required quality. <br />- It might open a security hole. <br />- It might affect data integrity, if some neighboring system does not expect the data to be sorted THAT way. <br />- It might change the output of another function, that was required, and that does not expect the data to be sorted THAT way. <br />(First fantasy flush ends here.) <br /><br />So, if you find a surplus function in a system, what do you do? Call it a defect and refuse to accept the system? <br /><br />Eager for your comments!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8829373276206103863-7128469435070181469?l=clearconceptualthinking.blogspot.com'/></div>Rolfhttp://www.blogger.com/profile/16327210436812276291noreply@blogger.com9