<?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>Learn Software Development &#187; Quality</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Tue, 07 Feb 2012 19:53:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Delivering to multiple clients &#8211; need to deliver through the Sprint rather than one deliverable at the end</title>
		<link>http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/</link>
		<comments>http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 18:43:32 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[QE]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Schedule]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[ScrumMaster]]></category>
		<category><![CDATA[Sprint]]></category>
		<category><![CDATA[Sprint Backlog]]></category>
		<category><![CDATA[Expectation]]></category>
		<category><![CDATA[High level of quality]]></category>
		<category><![CDATA[Interim Delivery]]></category>
		<category><![CDATA[Multiple Clients]]></category>
		<category><![CDATA[Sprint length]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=673</guid>
		<description><![CDATA[<p>We all learn things as we see stuff happening, and one of the items that I learnt was about a team that had changed to using the Scrum model of development, and was learning how to deal with multiple clients. Consider the case of large software companies such as Microsoft, Apple, and many others, where [...]]]></description>
			<content:encoded><![CDATA[<p>We all learn things as we see stuff happening, and one of the items that I learnt was about a team that had changed to using the Scrum model of development, and was learning how to deal with multiple clients. Consider the case of large software companies such as Microsoft, Apple, and many others, where there are many different groups working on different products. However, the products that they are working on have many common needs, such as code for showing UI, code for handling calls to various media items such as disk drives, CD devices, cameras, etc. It does not make sense for separate teams to write their own code for such handling, and hence it is far more feasible for there to be a single team that works on developing these technologies, and the output of these common teams is used by the various product teams.<br />
One of the biggest problems faced by such common teams (or we can call them technology teams) is their need to match their output schedule to the schedules of the various product teams, and this is something that remains in flux. Different products have their own schedules (with these typically not being very flexible, since there could be the need to meet a specific timeline such as having a new version of the product ready for Christmas, or to be available to meet the perception of financial analysts, or to thwart the release of a competitive product, and so on). So, the common situation is that when the technology team starts interactions with the various product teams (and we can call them the client teams), they are presented with schedules that do not seem to easily integrate with each other. One team may want a specific release near the end of a month, while for another group, there is a &#8216;drop dead&#8217; need to have specific features in by the middle of the month. Reconciling them is easy if one of the teams is much stronger in terms of influence, since then the schedule will be driven by the more powerful team. However, when this is not the case, then the release timelines can get difficult.<br />
There was one such team that was run by a colleague of mine. His team used to work on the traditional waterfall, and that was a disaster zone since they had to forever be ready to release for some team or the other. After much consultation, the team decided that a Scrum model would work better, especially since they could time the length of their Sprints, and have software available in a fairly good state at the end of every Sprint. So, they worked out a Sprint schedule whereby they worked out a Product Owner, and all requests needed to go through the Product Owner, and the time period of every Sprint was 4 weeks.<br />
However, by the start of the second Sprint itself, it became clear that 4 weeks was just not making it. They had expectations from client teams that would just not work based on a release every 4 weeks (for example, there was a team that was very near release, and needed quick support for bug fixes &#8211; so they needed a turnaround time of a week for getting a new release that fixed bugs; the monthly cycle would just not work for them).<br />
The technology team did an evaluation, and really did not want to move away from the 4 week sprint cycle (they felt that they were not mature enough in Scrum to try and handle a Sprint cycle of 1-2 weeks, and wanted to ensure that their team got a month to work and release features). Eventually, they came out with a solution that seemed complicated, but that seemed to work. They would still work on a 4 week Sprint cycle, but added some additional tasks to the Sprint backlog for coordinating a weekly release. This required some dedicated coordination from the ScrumMaster and some team members and went through some additional challenges, but after around a month, they were able to do this in a way that met the needs of the client teams. The team would ensure that when tasks were added for the Sprint backlog, there was an effort to time the expected output of the tasks, and then testing was added so that at the end of every week, a release was possible with a high level of quality. One could call this as saying that they had moved to a Sprint cycle of 1 week, but this was not true, specifically when it came to planning for the Sprint (that was done one a monthly basis). </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Engineering Practices Not Taken Care of by Scrum – Some details</title>
		<link>http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/</link>
		<comments>http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 19:07:46 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Issues]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Problems]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Relationships]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Engineering Methods]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Processes]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=661</guid>
		<description><![CDATA[<p>Scrum never talks about engineering practices which is a good thing but this sometimes lands teams into trouble. The teams not only adopt the Scrum practices but also the principles which makes their progress sluggish and results in the code base being in a mess. This is a situation which is present in most of [...]]]></description>
			<content:encoded><![CDATA[<p>Scrum never talks about engineering practices which is a good thing but this sometimes lands teams into trouble. The teams not only adopt the Scrum practices but also the principles which makes their progress sluggish and results in the code base being in a mess. This is a situation which is present in most of the cases where a failure has happened and the teams state that they have been implementing Scrum. Given that it is far easier to blame a process rather than do the necessary hard introspection, teams blame Scrum about not being able to provide engineering practices but they miss the entire point; Scrum is not about engineering practices, it’s about management. Engineering practices are whole and sole responsibility of the teams. Scrum only creates organized teams. They organize themselves, they organize their tools and they organize their engineering practices, and Scrum then opens up the entire process in terms of more information that teams have to learn to handle, and use to improve the way that they do things.<br />
Consider some examples: The definition of Done (DoD) is defined by the development team. The criteria for done can be different for different teams; some teams might consider a piece done once the code has been reviewed others may consider is done only then functional tests are carried out and still others may call it done when the documentation is also done. It becomes necessary to keep an optimal level of done so that technical debt does not come into picture too much. And what is &#8216;technical debt&#8217; ? Well, the concept of technical debt states that while adding a piece of functionality, two different approaches can be used. The first one is doing a quick job and the other one is a clean design. The quick design would mostly be messy, and one of the bigger problems is that making further changes become harder in future. So doing things in a quick and dirty way, results in technical debt which in turn requires extra effort to be put when future development is done. Doing a quick job is useful when you need to meet a deadline and can afford the extra effort later. However, you need to be sure that this is the approach you want to take, and not be surprised at the extra effort needed to be put in later.<br />
The main difference between classical approach (Waterfall, etc) and scrum approach of development is that in scrum developers have more freedom to define level of done and amount of work to be done. They decide on the User stories to work in each of the sprint (through the estimation, although the priority comes from the Product Owner). Developers who do not use professional practices fail; but they fail independently of the processes used; blaming the processes of Scrum is convenient, but some inspection by external parties can easily reveal problems in the way that they do things.<br />
There is sometimes a talk about too much quality being pumped into the product. Sometimes it may be a cause of concern for the owner if the team takes too much time for quality. The concept of iron triangle comes into picture here. This concepts states that Scope (features, functionalities etc.) , Resources (cost) and Schedule (time) can be considered to be three vertices of a triangle and Quality is the area enclosed by this triangle. Different groups have different priorities: users want more scope, senior management wants cut in time, financial team wants cut in budget and development team wants more quality. The end aim is to strike a balance into all the four entities. Scrum sets resources and time and lets developers decide the scope. Speed is scope/time and it’s a measure of output. If the product owner wants a higher velocity then he must work towards removing impediments; but dropping of engineering practices is not a solution. Compromise in quality is a slippery slope best avoided, and can result in so many problems later that any benefits from reducing quality are to be avoided. Consider advising a stuntman to drop safety equipment; he will never and so should be the case with developers (and even more so with the people responsible for the quality of the features and the product). </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Six Sigma ?</title>
		<link>http://learnsoftwareprocesses.com/2009/05/25/what-is-six-sigma/</link>
		<comments>http://learnsoftwareprocesses.com/2009/05/25/what-is-six-sigma/#comments</comments>
		<pubDate>Mon, 25 May 2009 18:56:20 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Improvement]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Certification]]></category>
		<category><![CDATA[Processes]]></category>
		<category><![CDATA[Six Sigma]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=191</guid>
		<description><![CDATA[<p>Six Sigma is an important measure of the quality of a system, being adopted by many top-class corporations the world over such as GE. Six Sigma has spawned an industry of its own, in terms of experts who go to corporations and figure out how these companies can improve their processes so as to meet [...]]]></description>
			<content:encoded><![CDATA[<p>Six Sigma is an important measure of the quality of a system, being adopted by many top-class corporations the world over such as GE. Six Sigma has spawned an industry of its own, in terms of experts who go to corporations and figure out how these companies can improve their processes so as to meet Six Sigma quality standards, and there are teachers who give instructions as to how to become a Six Sigma expert. Six Sigma was initially implemented by Motorola, and is now adopted the world over. Six Sigma is primarily used in manufacturing and business practices, and seeks to improve the quality of process outputs by identifying and removing the causes of defects (errors) and variations. Six Sigmas has its own infrastructure, such as &#8211; It uses a set of quality management methods, including statistical methods, and creates a special infrastructure of people within the organization (&#8220;Black Belts&#8221; etc.) who are experts in these methods. Six Sigma was originally developed as a set of practices designed to improve manufacturing processes and eliminate defects, but its application was subsequently extended to other types of business processes as well. In Six Sigma, a defect is defined as anything that could lead to customer dissatisfaction.<br />
Sigma (the lower-case Greek letter ?) is used to represent the standard deviation (a measure of variation) of a statistical population. The term &#8220;six sigma process&#8221; comes from the notion that if one has six standard deviations between the process mean and the nearest specification limit, there will be practically no items that fail to meet specifications. </p>
<p>As a comparison of the various quality norms:<br />
Short-term sigma levels correspond to the following long-term DPMO (defective parts per million opportunities) values:</p>
<p>    * 1 sigma = 690,000 DPMO = 31% efficiency<br />
    * 2 sigma = 308,000 DPMO = 69.2% efficiency<br />
    * 3 sigma = 66,800 DPMO = 93.32% efficiency<br />
    * 4 sigma = 6,210 DPMO = 99.379% efficiency<br />
    * 5 sigma = 230 DPMO = 99.977% efficiency<br />
    * 6 sigma = 3.4 DPMO = 99.9997% efficiency</p>
<p>Put another way, this reads as “3.4 defects per million opportunities to make defects”. This is a very high level of quality, and it takes a lot of effort, hard work, and process improvements to reach this level. Six Sigma is also being implemented by many software development companies for their projects. </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/05/25/what-is-six-sigma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is code coverage ?</title>
		<link>http://learnsoftwareprocesses.com/2009/03/21/what-is-code-coverage/</link>
		<comments>http://learnsoftwareprocesses.com/2009/03/21/what-is-code-coverage/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 16:12:26 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Code Coverage]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[QE]]></category>
		<category><![CDATA[Quality]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=171</guid>
		<description><![CDATA[<p>People know what software testing is, and most people in the profession can differentiate between white box and black box testing. However, when you get into more details, and look to identify how testing can provide even greater value, the benefit of measures such as code coverage become apparent. At the same time, there would [...]]]></description>
			<content:encoded><![CDATA[<p>People know what software testing is, and most people in the profession can differentiate between white box and black box testing. However, when you get into more details, and look to identify how testing can provide even greater value, the benefit of measures such as code coverage become apparent. At the same time, there would be a large number of software professionals who are not even aware of what code coverage is, and what are its key benefits. So the idea of this article is to try and articulate some of the benefits.<br />
So what is Code Coverage ?<br />
Well, Code coverage is a type of measure used in software testing which tries to answer the questions about the degree to which the entire source code of an application has been tested. Traditional black box testing, with its focus on functional testing cannot even come close to trying to answer this question, although White Box testing does come closer to trying to answer this question. In fact, if you examine code coverage practices in detail, it is possible to say that code coverage is a form of testing that inspects the code directly and is therefore a form of white box testing.<br />
Code coverage techniques were amongst the first techniques invented for answering the question of systematic software testing. For those proponents of the text plan / case based method of testing, code coverage testing works on the principle that it is entirely possible that sections of a software application remain untouched by test data, and as a result, then it is not possible to say, with any degree of certainty, that these sections do not contain residual errors.<br />
How do you go ahead with actually trying to do code coverage ?<br />
Code Coverage requires support from engineering to proceed. Why is this so ? Getting code coverage in practise requires a different procedure from the normal software build &#8211; The target application / software is configured to be built with special options / libraries and/or run under a special environment such that every function that is exercised (executed) in the program(s) is mapped back to the function points in the source code. Doing this systematic process (although requires effort and the value does not seem immediately clear to individual developed and QE) allows developers and quality assurance personnel to look for parts of a system that are rarely or never accessed under normal conditions (error handling and the like) and helps reassure test engineers that the most important conditions (function points) have been tested. Once this exercise has been done, the output is further analysed to see what areas of code have not been exercised and the tests are updated to include these areas as necessary. Once this exercise has been completed (and it may need to be done on a regular basis as the code is in the process of being developed), it gives a much higher level of confidence about the overall quality of the code. </p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/03/21/what-is-code-coverage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

