<?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>JavaPulse &#187; refactoring</title>
	<atom:link href="http://javapulse.net/tag/refactoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://javapulse.net</link>
	<description>a finger on the pulse of the freelance Java&#0153; market in the Netherlands</description>
	<lastBuildDate>Sat, 19 Jun 2010 11:00:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Evolutionary Design: why extreme programming is not extreme</title>
		<link>http://javapulse.net/2006/09/08/evolutionary-design-why-extreme-programming-is-not-extreme/</link>
		<comments>http://javapulse.net/2006/09/08/evolutionary-design-why-extreme-programming-is-not-extreme/#comments</comments>
		<pubDate>Fri, 08 Sep 2006 12:19:48 +0000</pubDate>
		<dc:creator>Clara Ko</dc:creator>
				<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://javapulse.net/?p=33</guid>
		<description><![CDATA[My thoughts after reading the article Is Design Dead? by Martin Fowler:
What is evolutionary design?
Design is part of the programming processes and as the program evolves the design changes.
Evolutionary design as promoted by extreme programming is a balance between adhoc (no design) programming and planned (one-off) design. It creates the balance by applying the term [...]]]></description>
			<content:encoded><![CDATA[<p>My thoughts after reading the article <a href="http://martinfowler.com/articles/designDead.html">Is Design Dead?</a> by Martin Fowler:</p>
<p><strong>What is evolutionary design?</strong></p>
<blockquote><p>Design is part of the programming processes and as the program evolves the design changes.</p></blockquote>
<p>Evolutionary design as promoted by extreme programming is a <em>balance</em> between adhoc (no design) programming and planned (one-off) design. It creates the balance by applying the term &#8220;iterative&#8221; to its fullest potential. The fact is that in software development, the design often evolves as programming is being done. In other words, the &#8220;best way of doing things&#8221; often evolves as the team learns on the project. There is no way to anticipate <em>all</em> the issues that can come up before you start programming. This is why planned design doesn&#8217;t work. If the design is done in a completely separate phase from the implementation, programmers are going to run into shortcomings in the design, and because most programmers are lazy ;), they will just code around it. This means that without the evolution of the design, <em>planned</em> design will dissolve into <em>no</em> design for all the issues that were found after the design was made. This is why the evolution of design should be acticipated and yes, planned.</p>
<p><strong>What enables evolutionary design?</strong><br />
To achieve this, a number of key concepts are used: refactoring, testing, continuous integration. The team must be able to refactor to keep things as simple as possible. Here, the goal is to keep the code as easy to work with as possible. Adding new features should be easy if the framework is the best it can be at that moment. If it is not, then someone should have the vision to refactor the design so it can accommodate the new feature. When refactoring large amounts of code, unit testing and continuous integration are of utmost importance. Refactoring is changing the underlying implementation without changing the functional aspects. Therefore, the unit tests should still work. Maybe they have to be adapted if the API has changed, but functionally, they should still work and the units being tested should still do what they used to do. As soon as unit tests pass, integrate. Continuous integration minimizes the need for merging. And a good test framework makes continuous integration possible. This way you know that what is being checked in doesn&#8217;t have stupid mistakes in it that breaks everything. As a result, the code base is as stable as it can be.</p>
<p><strong>Summary</strong><br />
Evolutionary design is about making the best decisions you can based on the knowledge you have at any given time. When design and code are allowed to change, you <em>incrementally</em> achieve the best result because you have a working system at every iteration. To me, this combats the chaos that can ensue when the programming phase reveals design flaws. In fact, extreme programming is not extreme at all. It only takes a wish to work in the most efficient way possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://javapulse.net/2006/09/08/evolutionary-design-why-extreme-programming-is-not-extreme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Martin Fowler</title>
		<link>http://javapulse.net/2006/09/06/martin-fowler/</link>
		<comments>http://javapulse.net/2006/09/06/martin-fowler/#comments</comments>
		<pubDate>Wed, 06 Sep 2006 14:48:40 +0000</pubDate>
		<dc:creator>Clara Ko</dc:creator>
				<category><![CDATA[design patterns]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://javapulse.net/?p=32</guid>
		<description><![CDATA[Martin Fowler writes insightful articles on various subjects of interest related to software development, such as XP and agile methods, refactoring, design patterns, and UML. He is also the author of a number of books on these subjects. I find that his articles on XP and agiles methods especially inspiring and are in concurrence with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://martinfowler.com/">Martin Fowler</a> writes insightful <a href="http://martinfowler.com/articles.html">articles</a> on various subjects of interest related to software development, such as XP and agile methods, refactoring, design patterns, and UML. He is also the author of a number of <a href="http://martinfowler.com/books.html">books</a> on these subjects. I find that his articles on XP and agiles methods especially inspiring and are in concurrence with my own opinions. It&#8217;s good that someone is speaking out about these things. By bring our awareness to subjects that are often resisted by those who don&#8217;t understand what benefits they bring, Martin Fowler gives us the tools to make our projects run smoother.</p>
]]></content:encoded>
			<wfw:commentRss>http://javapulse.net/2006/09/06/martin-fowler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
