<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: What exactly is software quality?</title>
	<atom:link href="http://blog.xebia.com/2008/11/05/what-exactly-is-software-quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com/2008/11/05/what-exactly-is-software-quality/</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 08 Feb 2012 14:41:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Kurt Häusler</title>
		<link>http://blog.xebia.com/2008/11/05/what-exactly-is-software-quality/#comment-60595</link>
		<dc:creator>Kurt Häusler</dc:creator>
		<pubDate>Wed, 05 Nov 2008 12:33:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.xebia.com/?p=783#comment-60595</guid>
		<description>I forgot to try and answer the questions:

    * How do we measure understandability objectively?

Firstly, while I think understandability is important, I don&#039;t think its the number one quality indicator. Some developers do not understand a lot of quality-enhancing design principles for example the S.O.L.I.D Principles, the Law of Demeter, Persistence Ignorance, Gui patterns like MVC and MVP, and Domain Driven Design. For many developers the most &quot;understandable&quot; code is a quick drag n drop app where database fields are bound directly to gui controls for example, and everything is in a single &quot;god&quot; class. This type of understandability does not however represent good design.

Agile development has a concept that the simplest workable design is the best. But I find in practice that leads to significant code debt at a high rate of interest. I prefer to phrase it, the simplest, testable, refactorable design that works is the best. Because even if we choose to incur some technical debt by disobeying certain design principles, we can do so at a lower rate of interest by ensuring that such designs can at least be improved later if needed.

In a similar sense, I would suggest that the most understandable design could be the best, provided it too is testable and refactorable, and obeys as many of the laws of good software design as possible.

To answer the question understandability and software quality in general cannot, except in highly controlled domains, be measured objectively. The best we can come up with are subjective evaluations.

    * What is the relationship between understandability and possible future productivity gains?

I would prefer to answer the question &quot;What is the relationship between software quality and possible future productivity gains&quot;.

In this case the relationship is technical debt management. By monitoring technical debt in a project we can come closer to estimating the true cost of software, including paying back the technical debt and interest in the form of increased costs of maintaining software with technical debt, and therefore the productivity of the project can be measured in the same way as actual features.

Technical debt has been a hidden item in software projects for far too long.</description>
		<content:encoded><![CDATA[<p>I forgot to try and answer the questions:</p>
<p>    * How do we measure understandability objectively?</p>
<p>Firstly, while I think understandability is important, I don&#8217;t think its the number one quality indicator. Some developers do not understand a lot of quality-enhancing design principles for example the S.O.L.I.D Principles, the Law of Demeter, Persistence Ignorance, Gui patterns like MVC and MVP, and Domain Driven Design. For many developers the most &#8220;understandable&#8221; code is a quick drag n drop app where database fields are bound directly to gui controls for example, and everything is in a single &#8220;god&#8221; class. This type of understandability does not however represent good design.</p>
<p>Agile development has a concept that the simplest workable design is the best. But I find in practice that leads to significant code debt at a high rate of interest. I prefer to phrase it, the simplest, testable, refactorable design that works is the best. Because even if we choose to incur some technical debt by disobeying certain design principles, we can do so at a lower rate of interest by ensuring that such designs can at least be improved later if needed.</p>
<p>In a similar sense, I would suggest that the most understandable design could be the best, provided it too is testable and refactorable, and obeys as many of the laws of good software design as possible.</p>
<p>To answer the question understandability and software quality in general cannot, except in highly controlled domains, be measured objectively. The best we can come up with are subjective evaluations.</p>
<p>    * What is the relationship between understandability and possible future productivity gains?</p>
<p>I would prefer to answer the question &#8220;What is the relationship between software quality and possible future productivity gains&#8221;.</p>
<p>In this case the relationship is technical debt management. By monitoring technical debt in a project we can come closer to estimating the true cost of software, including paying back the technical debt and interest in the form of increased costs of maintaining software with technical debt, and therefore the productivity of the project can be measured in the same way as actual features.</p>
<p>Technical debt has been a hidden item in software projects for far too long.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kurt Häusler</title>
		<link>http://blog.xebia.com/2008/11/05/what-exactly-is-software-quality/#comment-60589</link>
		<dc:creator>Kurt Häusler</dc:creator>
		<pubDate>Wed, 05 Nov 2008 10:52:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.xebia.com/?p=783#comment-60589</guid>
		<description>Excellent post, too many people think software quality and fixing bugs are the same thing. Bugs are merely a symptom of software quality, and shouldn&#039;t be directly fixed. Instead pay back the technical debt that the bug points to.</description>
		<content:encoded><![CDATA[<p>Excellent post, too many people think software quality and fixing bugs are the same thing. Bugs are merely a symptom of software quality, and shouldn&#8217;t be directly fixed. Instead pay back the technical debt that the bug points to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Erwin van der Koogh</title>
		<link>http://blog.xebia.com/2008/11/05/what-exactly-is-software-quality/#comment-60509</link>
		<dc:creator>Erwin van der Koogh</dc:creator>
		<pubDate>Tue, 04 Nov 2008 23:04:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.xebia.com/?p=783#comment-60509</guid>
		<description>Hey Lars,

What I meant that the whole package ISO 9216 is not &quot;our&quot; software quality. I have edited the post for clarify.

Re your second comment: 
In one of my recent assignments I came across an application that was already legacy code while the project wasn&#039;t even finished. Deadlines were missed already and deadlier deadlines were on the way. What I found hard to do was to convince (project) management to invest time in cleaning up the code instead of building new functionality.

So you need to invest time to make/keep your code beautiful. How do you justify that investment? 
Thanks for the book reference, it&#039;s on my to-read list. I hope I&#039;ll find some answers to that question in there :)</description>
		<content:encoded><![CDATA[<p>Hey Lars,</p>
<p>What I meant that the whole package ISO 9216 is not &#8220;our&#8221; software quality. I have edited the post for clarify.</p>
<p>Re your second comment:<br />
In one of my recent assignments I came across an application that was already legacy code while the project wasn&#8217;t even finished. Deadlines were missed already and deadlier deadlines were on the way. What I found hard to do was to convince (project) management to invest time in cleaning up the code instead of building new functionality.</p>
<p>So you need to invest time to make/keep your code beautiful. How do you justify that investment?<br />
Thanks for the book reference, it&#8217;s on my to-read list. I hope I&#8217;ll find some answers to that question in there <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lars Vonk</title>
		<link>http://blog.xebia.com/2008/11/05/what-exactly-is-software-quality/#comment-60506</link>
		<dc:creator>Lars Vonk</dc:creator>
		<pubDate>Tue, 04 Nov 2008 22:49:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.xebia.com/?p=783#comment-60506</guid>
		<description>Hi Erwin,

Interesting topic, I have some remarks though:

- You say the ISO 9216 requirements have nothing to do with &#039;our&#039; software quality. I disagree here; you mention refactorability, testability, Understandability, readability and so. These have everything to do with software quality, in fact that is even what you state later on in the blog when you say &quot;Refactoring is possible&quot; etc. Or am I misinterpreting your statement?

- You also mention you need to sell beautiful code. Why do you need to sell it as separate thingy? Whenever you write code, you need to write it at the most beautiful way possible at that time, right? That&#039;s what craftsmanship is all about IMHO.

There is a very good book available about this topic:
Clean Code by Robert C. Martin. (http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882). I highly recommend it explains the why&#039;s and the how&#039;s to write beautiful, clean, understandable code. Mandatory reading for all programmers.</description>
		<content:encoded><![CDATA[<p>Hi Erwin,</p>
<p>Interesting topic, I have some remarks though:</p>
<p>- You say the ISO 9216 requirements have nothing to do with &#8216;our&#8217; software quality. I disagree here; you mention refactorability, testability, Understandability, readability and so. These have everything to do with software quality, in fact that is even what you state later on in the blog when you say &#8220;Refactoring is possible&#8221; etc. Or am I misinterpreting your statement?</p>
<p>- You also mention you need to sell beautiful code. Why do you need to sell it as separate thingy? Whenever you write code, you need to write it at the most beautiful way possible at that time, right? That&#8217;s what craftsmanship is all about IMHO.</p>
<p>There is a very good book available about this topic:<br />
Clean Code by Robert C. Martin. (<a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" rel="nofollow">http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882</a>). I highly recommend it explains the why&#8217;s and the how&#8217;s to write beautiful, clean, understandable code. Mandatory reading for all programmers.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/2008/11/05/what-exactly-is-software-quality/feed/ ) in 0.44258 seconds, on Feb 9th, 2012 at 7:19 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 8:19 pm UTC -->
