<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rational Scrum &#187; Quality</title>
	<atom:link href="http://www.rational-scrum.com/category/quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rational-scrum.com</link>
	<description>Making Scrum work: informal discussions on process improvement</description>
	<lastBuildDate>Tue, 22 Jun 2010 17:21:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=9037</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why Agile isn&#8217;t enough (and why it doesn&#8217;t work)</title>
		<link>http://www.rational-scrum.com/2010/04/why-agile-isnt-enough-and-why-it-doesnt-work/</link>
		<comments>http://www.rational-scrum.com/2010/04/why-agile-isnt-enough-and-why-it-doesnt-work/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 03:38:46 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Rational]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Things that Matter]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile methodology]]></category>
		<category><![CDATA[agile software development]]></category>
		<category><![CDATA[Beedle]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[process improvement]]></category>
		<category><![CDATA[Rational Scrum]]></category>
		<category><![CDATA[Rational Unified Process]]></category>
		<category><![CDATA[Schwaber]]></category>
		<category><![CDATA[software development methodology]]></category>
		<category><![CDATA[software development process]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software project management]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/?p=223</guid>
		<description><![CDATA[Agile methods are powerful tools when used properly -- but as with all tools, they can be misused. The critics of agile methods are many and vocal, calling Agile a poorly thought-out “shortcut” that fails to get the job done. And with 90% of projects failing to meet objectives, the criticism is valid. So is Agile just hype or is there something to it? And if there is, why are project success ratios so abysmal? Here's the scoop on why Agile doesn't work and what to do about it.


Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/01/making-scrum-work-common-failings-in-adopting-scrum/' rel='bookmark' title='Permanent Link: Making Scrum work: Common failings in adopting Scrum'>Making Scrum work: Common failings in adopting Scrum</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/scrum-is-not-an-agile-methodology/' rel='bookmark' title='Permanent Link: Scrum is not an agile methodology'>Scrum is not an agile methodology</a></li>
<li><a href='http://www.rational-scrum.com/2010/05/common-oversights-in-choosing-methodology/' rel='bookmark' title='Permanent Link: Common oversights in choosing methodology'>Common oversights in choosing methodology</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Agile methods are powerful tools when used properly &#8212; but as with all tools, they can be misused. The critics of agile methods are many and vocal, often looking at agile as a host of poorly thought-out and incomplete “shortcuts” that fail to get the job done. And with <a href="http://www.rational-scrum.com/2010/01/why-projects-fail-101/">90% of projects failing to meet objectives</a>, the criticism is valid.</p>
<h3>So is Agile just hype or is there something to it?</h3>
<p>There are strengths to the agile way of thinking, and many of them bring useful perspectives to software and systems development that are new and even revolutionary. Here are some of the things that work &#8212; and, potentially, that radically change our old-world practices.</p>
<p>Whereas most legacy methods stem from industrial process &#8212; that is, assembling a product using a set of defined, predictable steps &#8212; the agile method is empirical. It recognizes that development is more like invention and research, more akin to scientific study, than assembly. This empirical nature is at the heart of the agile mantra: Deliver, measure, adjust and repeat. The strength of this approach often bears itself out in fantastically hyperproductive teams that deliver working product far more quickly than legacy methods, such as waterfall, could ever achieve.</p>
<p>Agile does this by cutting through complexity. Every agile-based methodology focuses on simplification of otherwise complicated problems. For example, XP and Scrum both emphasize development of near-term, complete deliverables. This means carving out tangible and reasonably independent pieces of work, focusing on that work, and then &#8212; at least as much as possible &#8212; moving on to other work. This approach requires that large, complex problems are broken down into manageable pieces and thought of on a micro-deliverable level. Likewise, this approach minimizes ceremony and eschews as much procedure as possible. Some agile methods go to extremes in this regard, focusing entirely on delivering work product and not at all on procedure. This translates into minimizing complexity on a large scale.</p>
<p>Closely related to eliminating complexity is agile’s focus on progress measurement. Most agile methods measure progress chiefly, if not exclusively, in terms of delivered work product. Most methods also are quite stringent in defining progress only when finished work is delivered, which means you can’t work for nine months on a single big feature. Instead, micro-deliverables target key features, deliver those features into the customer’s hands, then moving on to new features. This can be a huge strength because the customer gets working product in-hand to review early, and often. It involves the customer early in product evolution, leading to a host of benefits including better product targeting, prioritized development and improved quality.</p>
<p>These characteristics of agile methods combine to fundamentally change the way software and systems development is practiced. Agile also empowers individuals to become stellar performers. In fact, all forms of agile rely on this to some degree &#8212; with more lightweight agile methods being completely dependent on individual empowerment. The idea is that an empowered team will leap over constraints to get the job done, no matter how “out of the box” the thinking needs to be. It’s a refreshing concept and one that can indeed be supremely successful, but it does require the team to embrace the idea wholeheartedly.</p>
<p>Another benefit, at least in some situations, is the creation of self-organizing teams. Partly because of the light ceremony, the fast pace, and the penchant for empowerment and accountability, teams become self-organizing. This works when the team has the right make-up, as individuals step up to take on tasks best suited to individual skills. Self-organized, empowered teams become very powerful and very productive, provided that the team members are up to the job.</p>
<p>There is absolutely no doubt that agile methods make it possible to get things done quickly. That’s what it’s all about, after all. The real question to me is how much of this tradeoff is really desirable? How often do we want to eschew process and maturity in favor of getting things done quickly?</p>
<p>More importantly: Can we effectively merge the best attributes of Agility with the most valuable benefits of established processes and standards?</p>
<h3>Why Agile doesn’t work</h3>
<p>When an agile project fails, it generally does so spectacularly and predictably. The common failings of agile-based projects are just that… common. We see the same problems over and over again, and this has become the basis for many critiques of agile methodology. After all, if we keep seeing the same problems crop up again and again, isn’t this proof enough that the process is flawed? This becomes clear in hindsight, so why do we continue to see 90 percent of projects missing the mark?</p>
<p>The fact is, agile by itself is just one tool in the toolbox that should be applied with other implements of the trade. In my experience, the problem comes in most often because small- and mid-sized organizations experience brilliant success with agile and then assume it can work everywhere. They throw out the toolbox (or perhaps never buy one in the first place). Yes, agile can succeed. Yes, it can deliver fantastic productivity and stellar results. But not always &#8212; in fact, I will go so far as to say not often.</p>
<p>This isn’t because of agile’s limitations. Instead, it’s because of overconfidence by those putting it to use, and the mistakes an immature organization makes as it grows and applies it inappropriately.</p>
<p>Immature companies and teams are cutting their teeth, again and again, on the limitations of agile.</p>
<p>All agile methods make it easy to oversimplify complexity. In fact, agile’s strength of eliminating complexity might be better stated as “ignoring complexity.” There are appropriate situations for this but, more often than not, ignoring complexity leads to problems. Most business cases don’t call for undefined delivery dates or loosely changing requirements and partial deliveries. These are risks that most business models are incompatible with. If the risks aren’t something that your business can sustain, adopting a purely agile process is taking a huge gamble.</p>
<p>Likewise, focusing on the near-term is an agile attribute that introduces a lot of unknowns into the business-end of an equation. Few people will contend that agile is appropriate for mission critical efforts such as, say, launch vehicle development, as sometimes requirements need to be set in stone before anyone starts development. But what about situations where some degree of fuzziness is acceptable or even beneficial? Agile advocates compatibility with change, sidestepping change control procedures that would otherwise place tight controls over requirements. Requirements change carries with it a heavy burden, particularly when it comes to the cross-organizational impact to marketing, budget, quality management and the customer. However, cutting change control, requirements management, and configuration management from the process can lead to long-term disaster that the short-term perspective of most agile methods will overlook.</p>
<p>This theme of reducing structure and control has cut out many waterfall-origin processes. The danger often manifests as small-scale agile projects are successful, leading to wider-scale adoption of agile. But, as the projects grow in complexity and criticality, major missing components in the process become evident. For example, no agile methods today integrate comprehensive quality assurance procedures (in fact, thanks to some early mistakes, such as MIL-STD-498[<a href="http://www.stsc.hill.af.mil/crosstalk/1995/02/MILSTD.asp" target="_blank">#</a>], most people think quality assurance is software testing &#8212; <a href="http://www.rational-scrum.com/2010/02/what-do-you-mean-sqa-isnt-testing/">it’s not</a>). Structured software testing often becomes an afterthought, and risk management programs tend to be regarded as “fuzzy disciplines.” Yet, these are the processes that successfully put man on the moon, that develop health care and financial services systems, and ensure that nuclear plant regulatory systems don’t fail after delivery. Of course, there is a cost to each of these processes, and every business needs to weigh the cost-benefit of adopting more process against cutting those processes. This needs to be an on-going evaluation, made as projects, organizations, and teams evolve &#8212; it’s not a decision that stands alone.</p>
<p>From a purely hands-on, management level, agile methods pose “people problems” as well. The strong emphasis on self-organization and empowerment can easily backfire. The former relies heavily on people that are capable of self-management and self-direction. Not everyone can live up to that expectation. The latter, delivering empowerment to the team and individual, can lead to a <a href="http://www.rational-scrum.com/2010/02/why-heroes-are-bad/">hero mentality</a> and silo’d teams that refuse to play well with others. As projects grow in size, complexity, and dependency on other teams and resources, these characteristics become the drawback of an immature organization.</p>
<p>Almost all agile methods oversimplify valuable processes. In some situations, the project survives the oversimplification. Sometimes the business is tolerant of the fallout. In every case, agile methods expose the project to risks that stakeholders should be &#8212; and often are not &#8212; aware of.</p>
<h3>What to do about it</h3>
<p>We need to be cognizant that one solution does not fit all problems. While an agile method such as XP or Scrum may have led to success in one project, this doesn’t make it a foregone conclusion that it will do so again. Each project is different, and organizations evolve over time. Adopting one process to solve all problems is a sure recipe for failure. On the other hand, having a well-versed team that can draw on several methodologies, as appropriate for the job, is a recipe for success.</p>
<p>If your organization is looking for the one-size hammer to hit every nail, make sure it’s as configurable a hammer as possible. Don’t choose something that is either too lightweight, such as XP, because many projects will overreach the capabilities of such a lightweight process. Likewise, don’t try to implement a full-on waterfall style methodology either because, while definitely thorough and capable of getting the job done, it’s just overkill for many smaller projects. If you must choose a single process, pick one that’s efficient, borrows from both agile and waterfall, and is highly configurable, such as <a href="http://www.hyraxintl.com/products/rationalscrum/" target="_blank">Rational Scrum</a> or <a href="http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process" target="_blank">the Rational Unified Process</a>. Both of these have the maturity to deliver large-scale projects, but also support starting small and adopting minimum ceremony.</p>
<p>A better awareness of what specific agile practices can and cannot accomplish is key. For example, <a href="http://www.rational-scrum.com/2010/03/scrum-is-not-an-agile-methodology/">Scrum is not a development methodology</a>, and it cannot effectively deliver software or hardware projects unless it wraps itself around one. Yet today many organizations are employing Scrum as if it were a development methodology. I’ve even seen an organization of several hundred developers “force fed” Extreme Programming from the top down. The outcome of that particular operation: Mid-level management hid the fact that they didn’t use XP from top-level management after everyone realized what a mistake it was. Perhaps we’ll have to wait for mature standards in education and certification to evolve, but personally I’m not sitting idly by.</p>
<p>One of my personal pet peeves in the technology industry is a relative lack of standards and qualifications. Would you go to a doctor that didn’t have a medical degree? Would you hire an architect that didn’t have an appropriate engineering degree? Yet we hire software professionals (much less often hardware professionals) without adequate education, current qualifications, or meaningful certifications. For that matter, the proliferation of <a href="http://techrepublic.com.com/5208-12848-0.html?forumID=102&amp;threadID=277912&amp;messageID=2632563" target="_blank">meaningless qualifications</a> (such as <a href="http://jamesshore.com/Blog/Why-I-Dont-Provide-Agile-Certification.html" target="_blank">Scrum Master certification</a>) continues to weaken the industry. In the long run, we need better standards regarding education, accreditation and certification.</p>
<p>Understand agile methods for what they are. Keep in mind that lightweight process carries risk. Use the right tools in the right situation.</p>
<h3>Coming full circle</h3>
<p>If we add all of these things to agile methods, won’t we just end up using waterfall process all over again?</p>
<p>I don’t think so. Waterfall-based process, the original behemoth processes born out of industrial process, are widely recognized as inefficient. There are tremendous advantages to pressing forward with a merger between waterfall practices and agile practices. I hope the end result is a new generation of software and hardware development methodology &#8212; a generation that we’re just starting to see as processes such as <a href="http://www.hyraxintl.com/products/rationalscrum/" target="_blank">Rational Scrum</a> come to the fore. It’s time for development methodologies to evolve, and there’s no holding that back.</p>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/01/making-scrum-work-common-failings-in-adopting-scrum/' rel='bookmark' title='Permanent Link: Making Scrum work: Common failings in adopting Scrum'>Making Scrum work: Common failings in adopting Scrum</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/scrum-is-not-an-agile-methodology/' rel='bookmark' title='Permanent Link: Scrum is not an agile methodology'>Scrum is not an agile methodology</a></li>
<li><a href='http://www.rational-scrum.com/2010/05/common-oversights-in-choosing-methodology/' rel='bookmark' title='Permanent Link: Common oversights in choosing methodology'>Common oversights in choosing methodology</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2010/04/why-agile-isnt-enough-and-why-it-doesnt-work/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fix your boss (or, reduce risk to quality using a matrix approach)</title>
		<link>http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/</link>
		<comments>http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 01:17:30 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Things that Matter]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile methodology]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[bottleneck]]></category>
		<category><![CDATA[critical decision]]></category>
		<category><![CDATA[critical risk]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[hero culture]]></category>
		<category><![CDATA[inefficiency]]></category>
		<category><![CDATA[internal chaos]]></category>
		<category><![CDATA[leading for success]]></category>
		<category><![CDATA[process improvement]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[project quality]]></category>
		<category><![CDATA[Qualitative research]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[return on investment]]></category>
		<category><![CDATA[whole teams]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/?p=199</guid>
		<description><![CDATA[How do you ensure that one person doesn't derail your entire project? Most of us have been there before. Maybe it's a co-worker who doesn't work well with the team. Maybe it's your boss, who has to oversee every single decision even though he's an overtasked bottleneck. Either problem poses a critical risk to your project: Delays, mistakes and rework because one person isn't part of a streamlined effort. Learn how the situation can be improved, realizing positive gains in this habitually entrenched process.


Related posts:<ol><li><a href='http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/' rel='bookmark' title='Permanent Link: Quality assurance as a way of life'>Quality assurance as a way of life</a></li>
<li><a href='http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/' rel='bookmark' title='Permanent Link: Exposing the enterprise to risk: Who decides what not to test?'>Exposing the enterprise to risk: Who decides what not to test?</a></li>
<li><a href='http://www.rational-scrum.com/2010/02/why-heroes-are-bad/' rel='bookmark' title='Permanent Link: Why heroes are bad'>Why heroes are bad</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>How do you ensure that one person doesn&#8217;t derail your entire project? Most of us have been there before, unfortunately. Maybe it&#8217;s a co-worker who doesn&#8217;t work well with the team. Maybe it&#8217;s your boss, who has to oversee every single decision even though he&#8217;s an overtasked bottleneck. Either problem poses a critical risk to your project: Delays, mistakes and rework because one person isn&#8217;t part of a streamlined process.</p>
<p>Probably the most difficult situation is the latter &#8212; a boss that&#8217;s too hands-on, or perhaps an external resource that is too busy, yet absolutely must approve every decision. The story usually goes something like this: He&#8217;s a great guy, pretty easy to get along with when it comes right down to it &#8212; but he&#8217;s also insufferably &#8220;hands-on.&#8221; He&#8217;s just got to review every critical decision, contributing, fine-tuning and tweaking until it&#8217;s just right. This micro-managing mentality is causing all kinds of bottlenecks: Decisions are held until the last moment, changes are made late in the game, and your entire department suffers &#8212; staying late to &#8220;catch up&#8221; after your boss delivers his final word on any given issue. But here&#8217;s the real kicker: He&#8217;s good at what he does, and even though it creates internal chaos the finished product <em>is</em> that much better for his input.</p>
<p><a href="http://www.rational-scrum.com/wp-content/uploads/2010/03/spike-1.png" rel="lightbox"><img class="alignright size-full wp-image-209" title="spike-1" src="http://www.rational-scrum.com/wp-content/uploads/2010/03/spike-1.png" alt="" width="351" height="265" /></a>Consider the image to the right: A critical &#8220;quality spike&#8221; representing the single project resource that is overloaded. This resource does raise project quality, but the spike also represents a huge bottleneck to the project.</p>
<p>Your department has tried everything: Getting him involved earlier in the game (it doesn&#8217;t work, his schedule is booked and it always presses to the last moment); Involving other review sources so your boss&#8217; input is minimized (that helped a bit, but the other sources don&#8217;t like it when your boss overrides their contribution); You tried publishing the &#8220;departmental cost&#8221; figures that show all this inefficiency (but the powers-that-be seem to feel this is &#8220;just the cost of doing business&#8221;).</p>
<p>This is not a simple problem. It gets right to the root of the dynamics created in working teams. How can the situation be improved, realizing positive gains in a habitually entrenched process that some recognize as painful, but overall is regarded as good enough?</p>
<p>There are really two issues that need to be dealt with here. One is obvious, one perhaps a little bit less so. Most strategies up until now have focused chiefly on the primary goal:</p>
<blockquote><p>&#8220;How can we minimize the negative impact of a critical resource (our &#8216;hands-on boss,&#8217; for example) that doesn&#8217;t work efficiently with your team?&#8221;</p>
</blockquote>
<ul>
</ul>
<p>The problem with this approach is that it attacks an entrenched problem head-on, and often does so using a single head-on approach to solve the problem. When an attempt fails, that approach is discarded and another tried. The principle flaw here is that each attempt to solve the problem is, in and of itself, not effective enough to get the job done. A secondary flaw is that each separate attempt tends to get lost in the chaff of day-to-day operations. We all know there&#8217;s a problem, but nobody is really tasked with studying it, compiling the entire scope of the problem and its impact, and somehow bringing about a solution.</p>
<p>For example, when your department produced some figures on costs to the organization, those figures clearly showed that, through inefficiency, rework, and last-minute changes, your team suffered. You even went so far as to tie it to actuals, a dollar figure that represented all that overtime and rework &#8212; but, it was accepted as &#8220;the cost of doing business.&#8221; Since it didn&#8217;t work, it was discarded &#8212; but the fact is, it&#8217;s only part of the overall puzzle.</p>
<p>So the head-on solution won&#8217;t work. Let&#8217;s consider a more subtle approach to the problem:</p>
<blockquote><p>&#8220;How can we make the critical resource less critical?&#8221;</p>
</blockquote>
<p>This would achieve the same result, but it&#8217;s really an entirely different problem &#8212; one that can be attacked somewhat obliquely. Rather than focusing on how to change the way your boss works (aka &#8220;the critical resource&#8221;), try focusing on changing <em>what your boss needs to work on</em>.</p>
<p>The first step toward a solution is realizing that solving this problem is a project, just like any other. It needs a project lead and sponsor. It needs to be handled as an iterative project, and the team needs to recognize that incremental improvement toward an ideal is acceptable. You aren&#8217;t going to discover a single silver bullet that solves the whole problem &#8212; that&#8217;s just not the nature of human team dynamics.</p>
<h3>Make it a project initiative</h3>
<p>Once your &#8220;quality improvement project&#8221; is up and running it will snowball. Here are a few steps that will get the ball rolling:</p>
<ol>
<li>Initiate the project. Don&#8217;t think of this as a &#8220;workplace problem&#8221; that needs to be fixed in the short term. Instead, create a project initiative around it and get some mindshare going. Someone is going to need to lead the project, even if it&#8217;s unofficial &#8212; that person will keep the forward momentum.</li>
<li>Focus on making many small improvements across the board. For example, in the case I described above, consider how involving other review sources did in fact help, but not always. That&#8217;s an incremental improvement, and it raised the quality of the project a little bit.</li>
</ol>
<p><a href="http://www.rational-scrum.com/wp-content/uploads/2010/03/spike-2.png" rel="lightbox"><img class="alignright size-full wp-image-210" title="spike-2" src="http://www.rational-scrum.com/wp-content/uploads/2010/03/spike-2.png" alt="" width="351" height="265" /></a>Now, consider the impact of this approach over time. If numerous improvements can be implemented, and each one raises project quality just a little bit, it has an inevitable outcome: Your boss is going to have less to worry about, and less to be involved in. This is shown visually in the second image &#8212; as the overall quality matrix delivers improvement across the project, the &#8220;critical spike&#8221; that represents your boss&#8217; workload <em>begins to shrink</em>. This is a quality matrix at work.</p>
<p>The goal is simply this: Dilute the need for your boss to be involved in every decision, by raising the bar in as many places as possible. You will gain a &#8220;double whammy&#8221; by not only reducing the amount of work he needs to contribute to, but also by increasing his own efficiency since he&#8217;ll have less to worry about. The bottleneck will begin to dissipate.</p>
<h3>Assemble your team</h3>
<p>Get involvement from everyone that&#8217;s affected by the problem &#8212; your team, your peers, other departments that might be affected. Of course, part of the finesse in this kind of project is to make it clear exactly what problem you are solving without making the project sound subversive or offending the wrong people. Your boss may be a terrible bottleneck, but also remember how valuable he or she is &#8212; this isn&#8217;t about cutting him out of the picture, going around him, or changing policies you don&#8217;t like. It&#8217;s much better to focus on things like qualitative improvement, streamlining projects to avoid inefficiency, or developing lean principles. Make it positive, in other words.</p>
<h3>Identify key risks</h3>
<p>Your probably already know what the main pain points are. Your team experiences them all the time: Loss of productivity, overtime, last minute changes, introducing new errors, reworking something that could already be finished. These are the lesser symptoms of an endemic problem: What are the potential risks if the problem goes unaddressed? Certainly continued loss of efficiency, higher expenses to the company and lower employee satisfaction come to mind. Perhaps there&#8217;s even a trend of some team members transferring out of the department to find a better working environment. More dramatic effects can include missed product deadlines, problems with released products or lowered perception of the department&#8217;s attention to quality. All of these can have a real financial impact on the company.</p>
<p>Identify those risks that are most significant. Those should become the focal point for initial improvement. This is a &#8220;risk driven&#8221; model, where high risk is identified &#8212; in other words, the most painful or potentially painful result of the problem gets the most attention as early as possible. Generally it&#8217;s best to tackle a few things at a time. While the list of risks could be very long, if you try to solve every problem at once it&#8217;s going to be overwhelming.</p>
<h3>Mitigate</h3>
<p>Once you&#8217;ve identified the top few risks, pull together your project team and identify candidate solutions. You&#8217;re designing something new here, so it&#8217;s going to seem like brainstorming &#8212; which is exactly what it is:</p>
<ol>
<li>Can more attention from outside experts improve the overall product, lowering your boss&#8217; need to be involved?</li>
<li>Would the quality assurance organization be a helpful partner in achieving this?</li>
<li>Could changes in the project timeline better accommodate your boss&#8217; hectic schedule? Perhaps driving for earlier involvement (or longer project schedules) would help.</li>
<li>Can the team multitask, effectively putting several critical paths into play so that if one gets stalled waiting for your boss, the others move forward?</li>
<li>Would better tracking systems and information management help solve the problem? Perhaps your boss would benefit from a system that brings more organization and immediate answers directly to him.</li>
<li>Perhaps greater visibility into the project timeline and reasonable deadlines would both improve responsiveness and provide some firm schedule guidance. </li>
<li>Information radiators (such as task boards, timelines and assignment lists) might help keep people up to speed on overall project status (and what has moved from &#8220;medium&#8221; to &#8220;high&#8221; priority).</li>
<li>A widely accessible system that assigns tasks and prioritizes those tasks would increase visibility of current goals as well as get everyone united about what needs attention first.</li>
</ol>
<p>Every organization is going to discover different solutions that help its specific situation. It will likely take time to hit on the first few steps that move in a positive direction &#8212; but those are the ones you want to hang on to.</p>
<h3>Include a quality improvement element</h3>
<p>Organizations that have the benefit of a formal quality assurance and improvement group should try to leverage the group&#8217;s knowledge. Quality assurance is about auditing and measuring progress toward improvement. Most quality assurance groups tend to be very good at measuring improvement over time, and putting that knowledge to use will help in gathering metrics and identifying what&#8217;s working, and what isn&#8217;t.</p>
<h3>Track your progress</h3>
<p>Measure, act, measure again, and adjust. This is the heart of most agile development methodologies &#8212; and most scientific methods.</p>
<p>The most important thing to do is realize when improvement has taken place. That means tracking information &#8212; metrics &#8212; about your organization&#8217;s efficiency. This can seem pretty amorphous when dealing with a problem such as this. Remember that it comes down to improved efficiency of individuals. Some teams will have simple metrics that are easy enough to track, such as number of projects completed on a monthly or quarterly basis, or number of cases filed. When all else fails, the number of hours committed to rework is a great metric, because it tracks directly to risk identification and mitigation up front. That is, if you properly identify a risk and mitigate it early in the project, the amount of time spent in rework related to that risk goes down.</p>
<p>This is one reason it&#8217;s important to have everyone affected by the problem involved: It&#8217;s going to require everyone to look for these signs of improvement. It might even require tracking hours spent in rework. Fortunately, with the goal in sight (less time spent reworking and fewer overtime hours) it shouldn&#8217;t be too hard to commit people to some moderate tracking.</p>
<p>Gather metrics on what works and what doesn&#8217;t work. Emphasize incremental improvement as a desired outcome: Track the results of each effort, and keep the best practices. The important thing here is to demonstrate improvement over time, so that everyone sees each action as contributing to the solution, not as a failure in delivering the end result.</p>
<p>One of the most important goals in creating a project mentality is the positive group effect. Seeing each practice as part of a solution keeps it alive &#8212; as opposed to trying something and perceiving failure. As the team, department or company works together to deliver a solution it becomes a self-reinforcing effect. Even your boss might notice, and actively start to take part.</p>
<ul>
</ul>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/' rel='bookmark' title='Permanent Link: Quality assurance as a way of life'>Quality assurance as a way of life</a></li>
<li><a href='http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/' rel='bookmark' title='Permanent Link: Exposing the enterprise to risk: Who decides what not to test?'>Exposing the enterprise to risk: Who decides what not to test?</a></li>
<li><a href='http://www.rational-scrum.com/2010/02/why-heroes-are-bad/' rel='bookmark' title='Permanent Link: Why heroes are bad'>Why heroes are bad</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What do you mean, SQA isn&#8217;t testing?</title>
		<link>http://www.rational-scrum.com/2010/02/what-do-you-mean-sqa-isnt-testing/</link>
		<comments>http://www.rational-scrum.com/2010/02/what-do-you-mean-sqa-isnt-testing/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 18:56:20 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Rational]]></category>
		<category><![CDATA[Things that Matter]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[process improvement]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[structured software testing]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/?p=164</guid>
		<description><![CDATA[Software Quality Assurance (SQA) and Structured Software Testing (SST) are completely different fields. Every single book on the topic (textbooks, course materials, you name it) make this clear. In fact, most emphasize how important it is that these fields be completely separate. Consider:

Quality Assurance is responsible for auditing and ensuring all aspects of work meet [...]


Related posts:<ol><li><a href='http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/' rel='bookmark' title='Permanent Link: Exposing the enterprise to risk: Who decides what not to test?'>Exposing the enterprise to risk: Who decides what not to test?</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/scrum-is-not-an-agile-methodology/' rel='bookmark' title='Permanent Link: Scrum is not an agile methodology'>Scrum is not an agile methodology</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Software Quality Assurance (SQA) and Structured Software Testing (SST) are completely different fields. Every single book on the topic (textbooks, course materials, you name it) make this clear. In fact, most emphasize how important it is that these fields be completely separate. Consider:</p>
<ol>
<li>Quality Assurance is responsible for auditing and ensuring all aspects of work meet agreed upon quality standards.</li>
<li>Therefore, if QA is also responsible for Structured Software Testing, who is going to audit the testing team for compliance and quality of deliverables?</li>
</ol>
<p>Quality assurance is the &#8220;cop&#8221; that makes sure we all do our job right. It has the authority to say &#8220;hold it, something&#8217;s not right.&#8221; Testing is the organization that performs regression analysis on a product to see if it works right. The skills required for these two disciplines are dramatically different &#8212; as much as business management and programming.</p>
<p>The value in a QA organization is that it is independent. It focuses entirely on ensuring quality across the organization. Would you want development, project management, requirements management, configuration management, verification &amp; validation, customer service or any other project discipline to report to QA? Why should testing be any different? The bottom line is simply that if testing reports to quality assurance its independence is compromised &#8212; the organization becomes vested in representing testing in the best possible light and, just possibly, taking shortcuts or letting a few things slide.</p>
<p>I realize that a large segment of the industry seems to use a different terminology, lumping testing under quality assurance. It&#8217;s unfortunate, because doing so handicaps both organizations. It&#8217;s important to realize the difference between the activities of ensuring quality in a project (largely focused on standards of process), and fault testing (activities that perform hands on fault detection and diagnosis).</p>
<p>The activities of quality assurance focus on things like quality assurance plans, project audits, requirement audits, checklists, enforcing standards and process, checking the results and deliveries of different teams, and discovering discrepancies between requirements, project artifacts, and functional goals. Quality assurance, as a general rule, spends more time looking at what the project teams are doing, performing audits on the work generated by each team, and figuring out what hasn&#8217;t been done according to agreed upon standards.</p>
<p>Testing, on the other hands, focuses on test planning and management, test case development, test execution, regression analysis, performance testing and defect diagnosis. These are &#8220;hands on the software&#8221; activities and much more akin to programming than auditing. Indeed, with today&#8217;s testing tools and complicated programming environments it can be a very &#8220;in the code&#8221; experience.</p>
<p>Keep your organization healthy and your teams focused on their competencies. Don&#8217;t disregard the value in centralizing authority for specific roles with specific teams &#8212; it lets them do their job well, without distractions and without muddying the water with conflicting interests.</p>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/' rel='bookmark' title='Permanent Link: Exposing the enterprise to risk: Who decides what not to test?'>Exposing the enterprise to risk: Who decides what not to test?</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/scrum-is-not-an-agile-methodology/' rel='bookmark' title='Permanent Link: Scrum is not an agile methodology'>Scrum is not an agile methodology</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2010/02/what-do-you-mean-sqa-isnt-testing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Not a panacea, but trying: Comindwork is attractive</title>
		<link>http://www.rational-scrum.com/2010/02/easy-to-use-project-management-tools/</link>
		<comments>http://www.rational-scrum.com/2010/02/easy-to-use-project-management-tools/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:30:26 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Things that Matter]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile methodology]]></category>
		<category><![CDATA[collaboration tools]]></category>
		<category><![CDATA[project dashboard]]></category>
		<category><![CDATA[project management software]]></category>
		<category><![CDATA[project management tools]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/?p=114</guid>
		<description><![CDATA[Management tools probably don&#8217;t bring to mind excitement and visions of &#8220;getting things done&#8221; the agile way. Nevertheless, it&#8217;s an important aspect of running any project &#8212; whether agile or not &#8212; and there are some tools, believe it or not, that are easy to use, hugely helpful in managing a project and sometimes even [...]


Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
<li><a href='http://www.rational-scrum.com/2010/04/why-agile-isnt-enough-and-why-it-doesnt-work/' rel='bookmark' title='Permanent Link: Why Agile isn&#8217;t enough (and why it doesn&#8217;t work)'>Why Agile isn&#8217;t enough (and why it doesn&#8217;t work)</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/whole-teams/' rel='bookmark' title='Permanent Link: Whole teams'>Whole teams</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>Management tools</em> probably don&#8217;t bring to mind excitement and visions of &#8220;getting things done&#8221; the agile way. Nevertheless, it&#8217;s an important aspect of running any project &#8212; whether agile or not &#8212; and there are some tools, believe it or not, that are easy to use, hugely helpful in managing a project and sometimes even a little bit of fun.</p>
<p>One such tool is <a title="Comindwork" href="http://www.comindwork.com/" target="_blank">co<strong>mind</strong>work.com</a>, a fabulously rich project management <em>software as a service</em> (SaaS) site. While not right for everyone or for every situation it&#8217;s definitely worth taking a look at.</p>
<p>Co<strong>mind</strong>work combines over 250 project management related capabilities under one roof, yet does it with a web interface that is, by and large, a breeze to use. Some of the strengths of the service include traditional project management tools, knowledge management, collaboration tools, information sharing and versioning, and both agile and traditional waterfall management tools (e.g.: think Gantt).</p>
<p>The entry point is easy, and that&#8217;s another strength for co<strong>mind</strong>work: A small team can get started for somewhere around $20 a month (for teams of 10 or fewer, it&#8217;s $1 per day <em>that you actually use the service</em> &#8212; if nobody logs in, it&#8217;s no charge). This offers up a wealth of really advanced tools at a fraction of the cost of most large scale management infrastructure. For companies that don&#8217;t have a system in place, it&#8217;s easy to give co<strong>mind</strong>work a spin.</p>
<p>Here are a few of the things I like about co<strong>mind</strong>work.</p>
<p>It all starts with the personal dashboard. I&#8217;m a huge believer in personal (meaning, customized and personally relevant) dashboards, especially if they follow the basic principle of &#8220;<a title="GTD" href="http://www.43folders.com/2004/09/08/getting-started-with-getting-things-done" target="_blank">Getting Things Done</a>&#8221; methodologies. Distraction is bad, focus is good:</p>
<div class="captionfull"><img class="alignnone" src="http://www.rational-scrum.com/wp-content/uploads/2010/02/201002041521.jpg" alt="201002041521.jpg" width="480" height="416" /></div>
<p>With the project dashboard, you can:</p>
<ol>
<li>Get a bird-view on all activities where you are involved, see who changed what and when</li>
<li>See your nearest milestones</li>
<li>Check team members&#8217; status and mood</li>
<li>Easily access detailed project-specific dashboards</li>
</ol>
<p>It offers both traditional (meaning, typically, &#8220;large scale&#8221;) project management and agile management philosophies living under one roof. At first glance I was taken aback by any system that can claim to offer this mix of tools, but co<strong>mind</strong>work manages to pull it off. On the traditional side, there are Gantt charts and round-trip import and export of Microsoft Project files, not to mention a whole host of reporting capabilities. On the agile end of the spectrum, to-do lists, tasks and very easy time tracking support simple progress monitoring. Unfortunately, burndown charts have yet to make an appearance, although there&#8217;s enough information available that they may not be entirely necessary.</p>
<p>Knowledge management and collaboration are central to the product. Blogs, to-do lists, milestones and business wiki support which codify and share tacit knowledge are tightly integrated into the project. In fact, one of co<strong>mind</strong>work&#8217;s strengths is that so many services are so tightly integrated. For example, linked business wiki entries, tasks and time commitments can be shared and kept up-to-date, with progress being reflected in round-trip Gantt tracking in Project. Notifications of all activity take place automatically, sending out instant email messages or daily digests that summarize project activity.</p>
<p>One of the problems I&#8217;ve run into with customers that have no pre-existing system is simply keeping track of all the project artifacts and versions of each. With email flying everywhere, documents being authored, and half the team not knowing how to use source management repositories, how can you hope to keep track of every artifact the team produces? I like to implement a policy of &#8220;email doesn&#8217;t exist,&#8221; but this means you need a tool that&#8217;s going to support the policy.</p>
<p>In other words, if someone wants to get something done, it should be in a <em>system</em>, not flying around in email. The idea of half a dozen versions of a document living on everyone&#8217;s desktop is just unacceptable to me. Co<strong>mind</strong>work provides file versioning and drag-and-drop upload. This makes it possible to implement the &#8220;email doesn&#8217;t exist&#8221; policy, and co<strong>mind</strong>work does a great job of delivering an easy to use tool:</p>
<div class="captionfull"><img class="alignnone" src="http://www.rational-scrum.com/wp-content/uploads/2010/02/201002041446.jpg" alt="201002041446.jpg" width="480" height="223" /></div>
<p>Having a convenient and ubiquitous place to store project artifacts makes it easy for the team to share, manage, and collaborate. Co<strong>mind</strong>work put enough effort into the interface that it&#8217;s not painful:</p>
<ol>
<li>Create a convenient tree-structure of your documents</li>
<li>Make common actions on a set of files (mass-delete, mass-move)</li>
<li>Provide comments to any file version</li>
<li>Versions are stored automatically whenever you upload a file with the same name. Check all revisions and easily revert if required</li>
<li>Use drag &amp; drop area for native multiple files upload</li>
</ol>
<p>You can even email files directly to a folder in your co<strong>mind</strong>work project.</p>
<p>For more demanding projects, you can design custom workflows to support the security, policies and customer demands of the project. This is an essential tool in my mind. Any project management solution needs to be able to grow with the project. Custom workflow makes it possible:</p>
<div class="captionfull"><img class="alignnone" src="http://www.rational-scrum.com/wp-content/uploads/2010/02/201002041515.jpg" alt="201002041515.jpg" width="480" height="255" /></div>
<p>You can create graphical representation of your business process, modify the process with appropriate business rules and make sure your project is enforcing necessary policy:</p>
<ol>
<li>Define, control and track states and transitions in your business process</li>
<li>Encourage process automation and standardization</li>
<li>Break your business process into easy to follow step-by-step workflow diagram</li>
<li>Reconfigure your business process as needed</li>
<li>Clearly define your business process and avoid miscommunication and inconsistency</li>
</ol>
<p>If you&#8217;ve been casting about looking for how to get project tracking off the ground, <a title="comindwork quick tour" href="http://www.comindwork.com/Quick-Tour" target="_blank">take the quick tour</a> and see what you think. It&#8217;s not a panacea that will fit all project&#8217;s needs, but it is a very solid tool that&#8217;s been seeing a lot of success lately.</p>
<p>If you decide it&#8217;s not for you, take a look at <a title="JIRA" href="http://www.atlassian.com/software/jira/">Atlassian&#8217;s JIRA</a> too. JIRA is by far my favorite project management tool, especially if you&#8217;re agile-oriented. It requires a bit more of an up-front investment to get off the ground (both in terms of deployment and financial cost), but in my opinion, it&#8217;s one of very few first-rate tools available today. I&#8217;ve been trying to finish a detailed article on JIRA for some time now, so check back in a bit.</p>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
<li><a href='http://www.rational-scrum.com/2010/04/why-agile-isnt-enough-and-why-it-doesnt-work/' rel='bookmark' title='Permanent Link: Why Agile isn&#8217;t enough (and why it doesn&#8217;t work)'>Why Agile isn&#8217;t enough (and why it doesn&#8217;t work)</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/whole-teams/' rel='bookmark' title='Permanent Link: Whole teams'>Whole teams</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2010/02/easy-to-use-project-management-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exposing the enterprise to risk: Who decides what not to test?</title>
		<link>http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/</link>
		<comments>http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:59:31 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Things that Matter]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[risk management]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[structured software testing]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/</guid>
		<description><![CDATA[Testing, testing, testing. In a recent article by John Parkinson (Strong Signals, CIO Insight magazine) the value of testing is raised on par with the activity of design and coding itself:
Testing is becoming as necessary a profession as design and coding. Skills and experience matter. Process matters. Tools matter. Let the tests begin.

Our systems are [...]


Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/02/what-do-you-mean-sqa-isnt-testing/' rel='bookmark' title='Permanent Link: What do you mean, SQA isn&#8217;t testing?'>What do you mean, SQA isn&#8217;t testing?</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/' rel='bookmark' title='Permanent Link: Quality assurance as a way of life'>Quality assurance as a way of life</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Testing, testing, testing. In a recent article by John Parkinson (<em>Strong Signals, CIO Insight magazine</em>) the value of testing is raised on par with the activity of design and coding itself:</p>
<blockquote><p>Testing is becoming as necessary a profession as design and coding. Skills and experience matter. Process matters. Tools matter. Let the tests begin.</p>
</blockquote>
<p>Our systems are becoming more complex &#8212; in fact, logarithmically so. Not long ago, entire projects were conceived, designed and coded entirely in-house. Projects were measured in thousands of lines of code, perhaps hundreds of thousands for large scale projects. Everything was created &#8220;<em>here</em>,&#8221; so to speak, and it was conceivable to understand and test the entire system. Not necessarily so in today&#8217;s world.</p>
<p>Today, most of the code in our projects is written by someone else. We integrate third-party libraries, both commercial and open source. We use code repositories that were written by co-workers no longer with the company. As Parkinson points out, testing projects in this environment becomes a far more complex task:</p>
<blockquote><p>Modern code has millions (perhaps billions) of possible execution paths and program states, and we cannot test every unique combination. So we have evolved as an industry, consciously or unconsciously, toward a testing strategy based on a combination of materiality and risk.  &#8230; But to do it right, you have to do it consciously. And I suspect that in some shops this isn&#8217;t always the case.</p>
</blockquote>
<p>Despite this, testing continues to fall under scrutiny and remains one of the first programs to suffer budget cuts or face time constraints. This is evidenced by strategies that balance &#8220;materiality and risk.&#8221; Stated another way, testing programs are routinely under tight constraints to reduce cost and &#8220;get out the door faster.&#8221; Consequently, testing program managers are pressured to focus efforts in high-risk areas, choosing which areas to test knowing that comprehensive testing is not possible.</p>
<p>Is an increased need to focus testing on high-risk areas a sign of the times, or a sign of system complexity, or a sign of poor understanding of the software process? Granted, vastly more complex systems are more difficult to test &#8212; but does this justify a reduction in the quality of our testing efforts? Isn&#8217;t it more logical to conclude that more complex systems require more rigorous, more thorough testing programs?</p>
<p>After decades of experience we&#8217;ve learned that it is far more costly to correct defects <em>after</em> they enter an operational phase than <em>before</em>. Finding and fixing a software defect after delivery is often as much as 100 times more costly than finding and fixing the problem during requirements or design (according to Boehm, Software Engineering, IEEE Computer Society, 2007).</p>
<p>By trading-off testing activity in return for lowered up-front costs, we run the constant risk of introducing more defects and facing dramatically higher defect-correction costs down the road. Weighing materiality and risk becomes a slippery slope &#8212; one that a strong quality assurance organization will keep an eye on. Of course there are reasonable levels of risk, but the analysis of what is acceptable risk cannot lie with the testing team or quality assurance team. Risk must be clearly and concisely presented to the business. The decision to trade thorough testing for market-based and consumer-based risk should only be made by the business unit.</p>
<p>Placing the responsibility for this decision with the business unit ensures adequate communication of the issues at hand, and also assures that the potential risk will correctly be weighed against long-term cost. With luck, the business unit will make the right risk versus reward decisions &#8212; or, at the very least, learn from its mistakes in relatively short order.</p>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/02/what-do-you-mean-sqa-isnt-testing/' rel='bookmark' title='Permanent Link: What do you mean, SQA isn&#8217;t testing?'>What do you mean, SQA isn&#8217;t testing?</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/' rel='bookmark' title='Permanent Link: Quality assurance as a way of life'>Quality assurance as a way of life</a></li>
<li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Formal inspections: An introduction</title>
		<link>http://www.rational-scrum.com/2008/05/formal-inspections-an-introduction/</link>
		<comments>http://www.rational-scrum.com/2008/05/formal-inspections-an-introduction/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 03:47:43 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[project dashboard]]></category>
		<category><![CDATA[project management tools]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[risk management]]></category>
		<category><![CDATA[software development methodology]]></category>
		<category><![CDATA[software project management]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/?p=16</guid>
		<description><![CDATA[The price of software problems is very high: As much as 50% of development and 100% of all maintenance costs can be attributed to software defects. Often, this price becomes apparent late in the software life cycle—quite often after the software has reached its operational phase (after the software ships)—as previously undetected defects are discovered [...]


Related posts:<ol><li><a href='http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/' rel='bookmark' title='Permanent Link: Quality assurance as a way of life'>Quality assurance as a way of life</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/dont-ship-broken-software/' rel='bookmark' title='Permanent Link: Don&#8217;t ship broken software'>Don&#8217;t ship broken software</a></li>
<li><a href='http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/' rel='bookmark' title='Permanent Link: Exposing the enterprise to risk: Who decides what not to test?'>Exposing the enterprise to risk: Who decides what not to test?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The price of software problems is very high: As much as 50% of development and 100% of all maintenance costs can be attributed to software defects. Often, this price becomes apparent late in the software life cycle—quite often after the software has reached its operational phase (after the software ships)—as previously undetected defects are discovered to be the root cause of incomplete function or poor reliability in the product. On top of this we see that $100 spent to find and fix a defect during the requirements phase corresponds to $10,000 to find and fix the same defect during the operations phase (based on Boehm, 1981).</p>
<p>It turns out that <em>when you search</em> for defects determines how much it costs to identify and fix those defects. The formal inspections process emphasizes discovering defects early in the software life cycle. This is reflected in the average industry costs associated with defect resolution:</p>
<ul>
<li><strong>Without formal inspections:</strong></li>
<li style="list-style-type:circle">50 defects found at testing stage</li>
<li style="list-style-type:circle">10 defects found after the project ships, at operations phase</li>
<li style="list-style-type:circle">Average industry cost: $700,000</li>
<p></p>
<li><strong>Using logic and code inspections <em>only</em>:</strong></li>
<li style="list-style-type:circle">35 defects found in logic and code stage</li>
<li style="list-style-type:circle">25 found at testing stage</li>
<li style="list-style-type:circle">5 found during operations</li>
<li style="list-style-type:circle">Average industry cost: $525,000</li>
<p></p>
<li><strong>Using requirements, design, logic and code formal inspections:</strong></li>
<li style="list-style-type:circle">16 defects found in requirements and design stage</li>
<li style="list-style-type:circle">30 found in logic and code stage</li>
<li style="list-style-type:circle">13 found in test stage</li>
<li style="list-style-type:circle">1 found in operations stage</li>
<li style="list-style-type:circle">Average industry cost: $300,000</li>
</ul>
<p>Attaining such drastic reduction in defect prevention costs did not become possible overnight. Looking back over the history of software development and quality assurance methodology there are clear evolutionary breaks that have fueled strides toward better, more efficient defect prevention. Early efforts in the software industry focused on process definition as a primary means to eliminate defects. By the 1970&#8217;s, efforts in process measurement and improvement, combined with formal defect detection techniques, made significant strides in software quality possible. It wasn&#8217;t until the 1980&#8217;s that defect prevention techniques—such as formal inspections and unit testing frameworks—began to evolve.</p>
<div class="captionfull"><a rel="lightbox[inspections]" href="http://weblog.bosslogic.com/wp-content/uploads/2007/07/evolution-of-software-quality.png"><img src="http://weblog.bosslogic.com/wp-content/uploads/2007/07/evolution-of-software-quality.png" border="0" alt="Evolution Of Software Quality" hspace="0" vspace="0" width="459" height="461" /></a></div>
<p>Formal Inspection refers to a structured process of trying to find defects in development documents, programming code, specifications, designs and others artifacts during various phases of the software development program. Sometimes called a &#8220;Fagan inspection,&#8221; after Michael Fagan who is credited with being the inventor of formal software inspections, the process has a dramatic effect in reducing defects early in the project life cycle. This of course translates into dramatic project cost reduction and more reliable schedule projections.</p>
<p>In fact, according to a JPL Executive Briefing given to NASA in the late 1980&#8217;s, NASA&#8217;s projected budget for the International Space Station software program without the use of formal inspections would top $6 billion—compared to a revised budget of $4 billion after applying the formal inspection process.</p>
<div class="captionfull"><a rel="lightbox[inspections]" href="http://weblog.bosslogic.com/wp-content/uploads/2007/07/inspections-comparison-fagan-1986.png"><img src="http://weblog.bosslogic.com/wp-content/uploads/2007/07/inspections-comparison-fagan-1986-tm.png" border="0" alt="Inspections Comparison, Fagan, 1986" hspace="0" vspace="0" width="504" height="409" /></a></div>
<p>So, what are formal inspections and how can they improve your projects?</p>
<p>Formal inspection is a defect detection, removal and correction verification <em>process</em> carried out by a small group during the pre-test phases of the development life cycle. It involves the interaction of the following five components of the software life cycle:</p>
<ul>
<li>Well-defined inspection steps</li>
<li>Well-defined roles for the participants of the inspection (moderator, reader, recorder, author, inspector)</li>
<li>The software product subject to inspection</li>
<li>An infrastructure that supports the formal inspections</li>
</ul>
<p>The primary objective of formal inspections is to remove defects as early as possible in the development process. Formal inspections achieve this objective by:</p>
<ul>
<li>Identifying potential defects during individual preparation</li>
<li>Verifying that identified defects are actual defects</li>
<li>Recording the existence of defects</li>
<li>Providing the code author with a list of defects to fix</li>
<li>Ensuring that fixes are performed and are correct</li>
</ul>
<p>Formal inspections were designed to help organizations involved in software projects develop better products. While its primary focus is on software quality there are a number of peripheral benefits—dramatic budget benefits being the most obvious. The overall software life cycle cost is lower since defects are found early and are easier and less expensive to fix. By introducing formal software review and testing steps early in the software development life cycle a more technically correct architecture is developed and tested earlier. This fuels improved component reuse and drives development efficiency up. The effectiveness of the testing process and closely-related software quality assurance processes are improved because testing begins early, as well. This generally means that less time needs to be devoted to testing processes on a recurring basis. Another benefit of formal inspections is the immediate feedback on the software from a group of peers and target users. This creates a support loop that integrates well with modern ideas of <em>iterative development</em> and creates an environment where agility and end user feedback become a target of the development cycle.</p>
<p>There is a significant emphasis on the &#8220;formal&#8221; part of the inspection process. Formal inspections, while designed to be effective without impacting team schedules heavily, are more rigorous and well-defined than other peer review techniques such as pair programming and walkthroughs. Because of this they are significantly more effective, but they do not take the place of milestone reviews, progress reports, status review, testing or walkthroughs. Also, the process clearly defines phases of the software life cycle at which the inspections should take place.</p>
<p>Inspections must be carried out by peers representing the areas of the life cycle affected by the material being inspected. The team should be limited to six or seven people at most, and <em>everyone</em> participating should have a vested interest in the work product. This is a particularly important requirement of the process. Also, inspections must not be used to judge the quality of the software work product or the authors that developed the product. For this reason managers should not be present in the formal inspection itself; findings should be presented to management statistically or as a group of work product findings. This will demonstrate the value of the inspection process without singling out any individual author. Using the inspection to judge the capability of authors may result in less than honest and thorough results: If coworkers feel their efforts could result in a poor performance review for the team they may be reluctant to identify defects.</p>
<p><strong>The Formal Inspection Team</strong></p>
<p>Every formal inspection is carried out by a team of <em>inspectors</em>. The inspection team consists of four to seven individuals, and no more. In fact, the team should be kept as small as possible and yet be able to complete the job at hand. The goal of keeping the team small is to keep decision making and process to a minimum. It is also important to minimize impact to the overall development life cycle—superfluous involvement ultimately means time taken away from productive work on the project.</p>
<p>The inspection team consists of a moderator, a reader, a recorder, the software author and other inspectors. Each team member has a specific, defined role to fulfill. In addition to each individual role, it is everyone&#8217;s job to find and report defects; all team members are considered inspectors in this regard. Where necessary, more than one author will be involved in the inspection, although it is best to keep the inspection focused to an area that involves a minimum number of authors.</p>
<p>The moderator&#8217;s primary role is to achieve a good inspection. This includes planning the inspection, assembling the team and managing the overall process from beginning to end. The reader&#8217;s responsibility is to guide the inspection team through the work product being inspected (keep in mind that &#8220;work product&#8221; can include specifications, designs, actual software code or functioning software). The recorders job is essentially to record every discovered defect. The author&#8217;s job is to answer questions throughout the process, present the work product as needed by the inspection team and, ultimately, to correct the defects. In addition, larger projects may require support from the project librarian in keeping track of status, statistics and overall progress of the formal inspections throughout the development life cycle.</p>
<p>The most important guidelines to keep in mind when creating the formal inspection team are:</p>
<ul>
<li>Use a fair and unbiased moderator</li>
<li>Keep inspection team size reasonable (between 4 and 7 individuals)</li>
<li>Select inspection team members who have a vested interest in the work product</li>
</ul>
<p>This last point is a particularly important one. Only those individuals that care about the project will be invested in the inspection process. Team members should be close to the project; peers working in the same life cycle phase, authors of the relevant specifications or code, direct users of the work product, product quality assurance and testing personnel are all excellent candidates.</p>
<p><strong>Supporting Roles</strong></p>
<p>Formal inspections are an organization-wide activity. As such there are several supporting roles that are essential to assure success from the process.</p>
<p>Most visible is the need for support at the Project and Program Management level. This means that the appropriate manager needs to establish a schedule that allows adequate time for all stages of the inspection process. This includes monitoring the inspection process and making sure that there is sufficient inspection preparation time, that individuals are not over-burdened with tasks and that all team members understand the critical nature of the inspection process. Ensuring that all team members are properly trained in the formal inspection process will help in maintain the schedule and making sure that everyone is prepared for an inspection in the alloted time. After the formal inspections have taken place, managers must meet with the moderator and author to review open items and rework estimates. The project manager will likely review inspection summary reports for defect trends and perform defect trend analysis.</p>
<p>Organizations may also find a need for a Chief Moderator. The Chief Moderator will chair monthly meetings of all inspection moderators and guide the evolution of the inspection process, forms and checklists, and information gathering. The Chief Moderator may also analyze the effectiveness of inspections across participating projects, provide support in the form of guidance and answers to questions and keep current on recent information and developments in the formal inspection arena.</p>
<p><strong>Stages of a Formal Inspection</strong></p>
<p>The formal inspection process is broken into seven stages, although two of these are optional and can be excised from the inspection process on a case-by-case basis, at the moderator&#8217;s choice. These stages are:</p>
<ul>
<li>Planning—The period of time used to determine whether the product to be inspected meets the entry criteria, set the inspection schedule, plan the inspection itself, select a team of inspectors and assign respective roles, and prepare and distribute the inspection materials. This is when the moderator decides whether an overview will be necessary, as well.</li>
<li>Overview—An optional stage in the inspection process. The overview provides the inspection team with background information for the inspection. This stage may not be necessary if the team is already intimately familiar with the work product being inspected.</li>
<li>Preparation—A critical stage during which each member of the inspection team individually prepares for the inspection. It is crucial that individual inspectors be given adequate time to prepare, otherwise the inspection process will not be efficient and may well fail to identify defects that could otherwise be discovered. Each team member prepares for the inspection by reviewing and finding potential defects in the product being inspected before the inspection meeting. Potential defects are then discussed during the inspection meeting as a group.</li>
<li>Inspection Meeting—Meeting in which team members, as a group, review the product to discover, categorize and record defects. Defects are not resolved during this meeting.</li>
<li>Third Hour—Literally, a third hour to the inspection meeting (the formal inspection meeting is limited to two hours). This is an optional additional time that can be used to discuss, possibly solve or further investigate defects that have already been discovered during the Inspection Meeting.</li>
<li>Rework—The period of time that the author uses to correct identified defects.</li>
<li>Follow-up—A short meeting between the author and the inspection moderator used to determine if the defects found during the inspection have been corrected and to ensure that no additional defects have been introduced.</li>
</ul>
<p>The following few sections discuss each of these stages in more detail.</p>
<p><strong>The Planning Stage</strong></p>
<p>Chiefly, the moderator uses the planning stage to prepare for the inspection process. This entails making sure the product is ready for inspection, selecting the inspection team and assigning team members appropriate roles, scheduling the inspection meeting and making sure meeting facilities will be available, and distributing inspection materials such as forms and background information. The inspection materials should also include detailed information on the work product being inspected, the scope of the inspection and any specific components or functionalities that will be excluded from the inspection process, and individual checklists for each inspection team member to follow.</p>
<p>Another key role the moderator will play is making sure that the work product being inspected is of appropriate size for the inspection. If not, the product is divided into manageable pieces and separate inspections are scheduled for each piece.</p>
<p>The moderator also must decide whether the inspection team members are adequately familiar with the material to be inspected or whether an overview must be held.  The team should know the background material from which the product was derived and should know how the material fits into the overall system being developed.</p>
<p><strong>The Overview</strong></p>
<p>This is an optional stage that chiefly flows out of the moderator&#8217;s work in making sure that the team is adequately familiar with the work product being inspected. If any team members do not have sufficient depth of knowledge about the product, an overview is warranted. At the overview, the author will present the rationale behind the product, its relationship to other components in the system, its current state of development (e.g.: how complete it is and how well integrated into the overall system), its function and intended use and how it was developed.</p>
<p>An overview should be scheduled if any of the following criteria exist:</p>
<ul>
<li>The inspection team is not familiar with the product</li>
<li>The product is new or is being inspected for the first time</li>
<li>Inspections are new to the project</li>
<li>Novel techniques have been used in the product</li>
</ul>
<p><strong>Preparation</strong></p>
<p>This is the most critical stage of the formal inspection process. During the preparation process, each inspection team member individually prepares for the role in the formal inspection meeting. Each inspector will review the work product thoroughly; user interface inspections will be conducted field-by-field while code level inspections will be conducted by reviewing the work product line by line. Higher level specifications should be reviewed by reading the specifications and comparing them to system requirements and expected system behaviors. Comparison against relevant work product and best practices should be made during the preparation process, providing a basis for quality standards and acceptable behaviors. Checklists should be used in the work product review for guidance on typical types of defects to be found. All potential defects are carefully logged and will be discussed during the formal inspection meeting. Complete preparation logs are submitted to the moderator prior to the meeting.</p>
<p>Prior to the inspection meeting the moderator will review preparation logs and draft defect reports. This review will both ensure that the inspection team is ready for the formal inspection meeting and also highlight any areas that may require additional attention. If the logs indicate that the team is not ready, the inspection meeting should be rescheduled. Areas of common concern between inspectors can often provide valuable guidance on areas of the work product that require particular scrutiny.</p>
<p><strong>The Inspection Meeting</strong></p>
<p>The inspection meeting is the period during which the inspection team reviews the work product as a group. The meeting is held to a limit of two hours and is carefully moderated. The meeting is run by the moderator and usually starts with a very brief restatement of the goals of the formal inspection. If an overview has been scheduled it is held prior to the formal inspection meeting itself.</p>
<p>During the meeting, the reader interprets and provides a reading of the work product, the author  clarifies information as needed, and the team identifies defects that are then classified and recorded by the team recorder.</p>
<p>The reader&#8217;s description should note the function of components being review (whether paragraphs of text, code blocks or a functioning user interface) and their relationship to the product and higher level documents. The moderator is tasked with keeping the meeting on track, but the reader can be interrupted at any point a potential defect enters into the discussion. A short discussion of the defect is permissible, but the moderator should limit time accordingly. Any issue that cannot be resolved within the time limit will be marked as an open issue and can be revisited during the third hour.</p>
<p>The team should reach consensus on whether a potential defect is, in fact, a real defect. Quite often what appears to be a defect could be a mistake on the part of the inspector. At the same time it could be a flaw or deficiency in the requirements or other specifications (in fact it is very common to discover edge cases that were never considered during the specification and design process). These are considered defects as well and must be logged as such, even though resolution steps outside the bounds of the author&#8217;s work.  During this process the recorder will note down every defect, its reproduction criteria or location as appropriate, and classify the defect. Ideally, if defect tracking software is readily available and defect entry is efficient enough that it will not slow down the inspection meeting, direct entry into the system is favorable. This provides the team with an opportunity to review the defect as it is recorded, avoiding possible interpretation or notation mistakes.</p>
<p>If the work product cannot be fully inspected within the two hour limit, to avoid fatigue and missing defects, the moderator should conclude the meeting and schedule a follow-on inspection at a later time.</p>
<p>The moderator will conclude the meeting with a brief recap of the number of defect found and the severity of the defects. All information should be recorded to track the effectiveness of the formal inspection process and to look to defect trends at a later date. If a third hour is needed, the moderator will assign action items to individual inspectors at this time.</p>
<p><strong>Third Hour</strong></p>
<p>The third hour is used for discussion or to close open issues—it should <em>not</em> be an extension of the formal inspection meeting. The third hour does not need to take place immediately after the formal inspection meeting either, nor does it need to be limited to one hour: It should be scheduled at a time when the author is prepared to discuss corrections to discovered defects or if major issues, such as defects or omissions in the higher level specifications, have been discovered. Attendees to the third hour are free to obtain support from outside sources or invite third parties, including managers or technical experts, to the third hour purely for technical reasons.</p>
<p><strong>Rework</strong></p>
<p>The rework period is used by the author to correct discovered defects, or to coordinate the correction of defects that fall outside the author&#8217;s domain (for example, if the defects occur in a higher level specification document). The author is responsible for ensuring that all defects have been corrected before the follow-up period with the inspection moderator.</p>
<p><strong>Reinspection</strong></p>
<p>This is an optional stage; the moderator and the team will jointly decide whether a reinspection is warranted based the inspection meeting findings. Reinspection may be required when there are a large number of defects in the product or when one or more defects require extensive or complicated corrections.  Reinspection allows the changes to the product to be reviewed by the entire team instead of just the moderator.</p>
<p><strong>Follow-up</strong></p>
<p>The goal of the follow-up meeting is to confirm closure on major defects that were discovered during the formal inspection and that no secondary defects have arisen during the process. The meeting is held between the moderator and the author. The author reviews the steps taken to correct the defects and the moderator ensures that all open issues have been addressed. Minor defects do not necessarily need to be addressed in the follow-up meeting. Additional reviewers can be present during the follow-up meeting if either the moderator or author feel it will benefit the process.</p>
<p>Once all open defects have been corrected and any other open issues have been resolved, and once the work product itself passes the exit criteria (this could be reaching a compile state or passing quality assurance testing, depending on the nature of the work product) the moderator marks the work product as having &#8220;passed&#8221; the formal inspection. The moderator will note the product as having passed the inspection on the formal inspection summary report.</p>
<p><strong>Scheduling Guidelines</strong></p>
<p>The scheduling of formal inspections throughout the software development life cycle targets specific phases to optimally eliminate defects as early as possible.</p>
<p>Traditional defect discovery and removal techniques target defects significantly later and less frequently than the formal inspection process. Expectations with traditional methods are correspondingly limited: Experience is that 60 defects escape pre-testing phases for every 1,000 lines of code written. Traditional testing steps are each approximately 50% efficient in the identification and removal of defects. Provided a typical, traditional quality assurance method that emphasizes testing of a coded and working product, followed by repeated late-stage testing, an average of 3.75 defects per thousand lines of code reaches the operational phase—and ends up in customer&#8217;s hands. The following figure demonstrates the effect of traditional testing steps on the development process:</p>
<div class="captionfull"><a rel="lightbox[inspections]" href="http://weblog.bosslogic.com/wp-content/uploads/2007/12/development-with-traditional-defect-detection.png"><img src="http://weblog.bosslogic.com/wp-content/uploads/2007/12/development-with-traditional-defect-detection.png" border="0" alt="Development With Traditional Defect Detection" hspace="0" vspace="0" width="450" height="309" /></a></div>
<p>While traditional methods tend to focus on reviewing and testing completed software, formal inspections begins the process much earlier at the requirements, specification and coding phases. In comparison to traditional defect discovery and removal this is much more effective at identifying defects early and correcting them before they become a problem. The formal inspection process achieves this by:</p>
<ul>
<li>Inserting inspections into the pre-test phase of the software life cycle</li>
<li>The strategy is to find and fix defects when and where they are injected</li>
<li>Inspections mean more defect detection steps: At least 9 as compared to 4 traditional steps</li>
</ul>
<p>The frequent and repeated inspection process also keeps defects counts manageable, as shown in the following figure:</p>
<div class="captionfull"><a rel="lightbox[inspections]" href="http://weblog.bosslogic.com/wp-content/uploads/2007/12/development-with-formal-inspections.png"><img src="http://weblog.bosslogic.com/wp-content/uploads/2007/12/development-with-formal-inspections.png" border="0" alt="Development With Formal Inspections" hspace="0" vspace="0" width="450" height="304" /></a></div>
<p>The formal inspection process introduces inspections as early as possible into the software development life cycle, and continues to repeat the inspection process at key stages of the life cycle. This means introducing formal inspections after the program functional design, requirements, architectural design, detailed design and software coding stages. Iterative projects can take advantage of additional inspection steps after operational code delivery as well. Note that source code level inspections should take place before unit testing, as the corrections made during unit testing can hide larger scale defects that should be exposed.</p>
<p>There are two striking differences realized between the formal inspection process and traditional detection process: First, the average defect rate in operational systems drops from 3.75 defects per thousand lines of code to 1.05 per thousand delivered source instructions, about one fourth the defect level. Second, because defects are identifying and corrected early in the process total defect counts remain much lower throughout the software development life cycle. This has a positive, cascading effect throughout development: Fewer defects means fewer negative behaviors become &#8220;coded in&#8221; to interfaces—and that means codependent defects are also kept to a minimum.</p>
<p>This implies that formal inspections are about 7.4 times more productive than formal testing practices alone (based on 3.25 errors per unit effort with inspections compared to 0.44 errors per unit effort with testing, given that inspections yield a lower return to effort against testing).</p>
<p><strong>Planning the Inspection</strong></p>
<p>Inspections should not be cumbersome. In fact, the formal inspection process is designed to be quick, efficient and require surprisingly little preparation time. Even so, it is important the the inspection team be well trained in the inspection process and its benefits—and fully realize the relative effort that can be saved through formal inspections.</p>
<p>The inspection moderator will invest more time into the process than other team members, chiefly because of the advanced planning and preparation that goes into each inspection. Likewise, the author is likely to invest more time because of the rework phase—however, if we discount the actual defect correction activities, the author&#8217;s investment in the inspection is largely in line with the rest of the team: Only a matter of a few hours. Following are the approximate time estimates recommended in a single formal inspection:</p>
<ul>
<li>Planning (moderator): 2 to 4 hours</li>
<li>Overview: Between 30 minutes and 1.5 hours</li>
<li>Preparation: 3 hours per inspector</li>
<li>Inspection: 2 hours maximum</li>
<li>Rework (author): Up to 5 hours</li>
<li>Follow-up: 2 to 3 hours</li>
</ul>
<p>Keeping the inspection process tightly focused on the work product and on defect discovery will help keep the inspection on-track and minimize time taken away from other tasks.</p>
<p>It is crucial that the inspection team be fully trained in the formal inspection process. The moderator and project manager must also make sure that there is adequate time available for the inspection, and that the team has properly prepared. If there is less than five hours available for preparation time, the inspection should be rescheduled.</p>
<p><strong>Summary</strong></p>
<p>Formal inspections have proven themselves through the test of time. We have an extensive body of work that demonstrates their value in effort, time and cost savings across many projects. Reports produced by organizations such as the IBM Federal Systems Division (1986) show that the formal inspection process can find between 75% and 90% of all defects at early phases of the software development life cycle. And, we can look forward to a commensurate reduction in maintenance costs: As much as 90% of corrective  maintenance is eliminated (Ackerman, 1989).</p>
<p>In fact, formal inspections are the single most important quality improvement technique a development can make, according to experts at IBM, Bell Labs, the Software Engineering Institute and other sources.</p>
<p>As well as these very tangible benefits, a number of less tangible benefits come from the inspection process. Frequent inspections aid in project tracking accuracy and reduce the effort involved in traditional project management. The frequent deep-dives into the system also works to foster better team communication and collaboration on the work product. This, combined with the iterative cycle of inspections works against repeated mistakes, fueling better software quality and team development.</p>
<p>All of these benefits conspire to produce a better product, at a lower cost and within a shorter time than would otherwise be the case.</p>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/' rel='bookmark' title='Permanent Link: Quality assurance as a way of life'>Quality assurance as a way of life</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/dont-ship-broken-software/' rel='bookmark' title='Permanent Link: Don&#8217;t ship broken software'>Don&#8217;t ship broken software</a></li>
<li><a href='http://www.rational-scrum.com/2009/11/exposing-the-enterprise-to-risk-who-decides-what-not-to-test/' rel='bookmark' title='Permanent Link: Exposing the enterprise to risk: Who decides what not to test?'>Exposing the enterprise to risk: Who decides what not to test?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2008/05/formal-inspections-an-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quality assurance as a way of life</title>
		<link>http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/</link>
		<comments>http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 01:40:13 +0000</pubDate>
		<dc:creator>Zacharias Beckman</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Things that Matter]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[quality assurance]]></category>

		<guid isPermaLink="false">http://www.rational-scrum.com/?p=11</guid>
		<description><![CDATA[Managing software quality is not simply creating a test program during a late-phase testing period. In fact, addressing quality assurance in this way is too little, too late. This far into the software life cycle, defects have become an intrinsic part of the architecture.



Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/dont-ship-broken-software/' rel='bookmark' title='Permanent Link: Don&#8217;t ship broken software'>Don&#8217;t ship broken software</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/formal-inspections-an-introduction/' rel='bookmark' title='Permanent Link: Formal inspections: An introduction'>Formal inspections: An introduction</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting tired of discovering projects that focus on “quality assurance” as if its entire breadth where encompassed in simple regression testing conducted after a product is supposedly ready for release.</p>
<p>Managing software quality is not simply creating a test program during a late-phase testing period. In fact, addressing quality assurance in this way is too little, too late. This far into the software life cycle, defects have become an intrinsic part of the architecture.</p>
<p>Quality begins with examining project goals early on, assessing the quality of requirements gathering and business goals, and developing an execution plan that addresses system architecture as well as specific feature-level testing.</p>
<p>This is a process that begins even before engineering becomes involved in product development.</p>
<p>Quality assurance, as a department, needs to be an independent organization from the development group. It must become involved in the early planning phases of every project. The influence of the quality assurance team covers the entire spectrum of the software life cycle:</p>
<ul>
<li>Customer goals and business goals are managed by the quality control process, making sure that the goals of the project are aligned with the same.</li>
<li>The development case is reviewed early by quality assurance, making sure that development goals fit in with overall architecture and planning goals.</li>
<li>Planning for acceptance testing begins early and delivers clear-cut, specific acceptance criteria that guide the project from the beginning.</li>
<li>Acceptance tests become the basis for the development case and, therefore, the roadmap to which development executes.</li>
<li>Test planning begins at the same time as development execution — this means that the first operational unit of code is tested early, and often.</li>
<li>As the product life cycle is taken into account, changes to architecture are discussed and accommodated throughout the team. This leads to platform testing, advanced configuration management and delivery planning — again, early in the life cycle.</li>
<li>Configuration management, platform testing and platform certification become early concerns that are addressed before release.</li>
<li>By controlling the entire life cycle, quality assurance lowers overall defects and makes sure that customers experience a minimum of problems.</li>
<li>Quality assurance remains involved after release, for example, providing a key role in diagnosing customer-facing defects, preparing reproductions, and managing the defect resolution process. This assures that bugs are fixed once and enter into regression testing thereafter.</li>
</ul>
<p>This life cycle oriented approach addresses quality early and continuously, leading to higher quality software and lower defect counts. Contributing to the overall quality of software becomes an essential role. Likewise, with quality assurance being addressed externally, development can focus on its core competency: Implementation.</p>


<p>Related posts:<ol><li><a href='http://www.rational-scrum.com/2010/03/fix-your-boss-or-reduce-risk-to-quality-using-a-matrix-approach/' rel='bookmark' title='Permanent Link: Fix your boss (or, reduce risk to quality using a matrix approach)'>Fix your boss (or, reduce risk to quality using a matrix approach)</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/dont-ship-broken-software/' rel='bookmark' title='Permanent Link: Don&#8217;t ship broken software'>Don&#8217;t ship broken software</a></li>
<li><a href='http://www.rational-scrum.com/2008/05/formal-inspections-an-introduction/' rel='bookmark' title='Permanent Link: Formal inspections: An introduction'>Formal inspections: An introduction</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.rational-scrum.com/2008/05/quality-assurance-as-a-way-of-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
