<?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>BREDEX on Software</title>
	<atom:link href="http://blog.bredex.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.bredex.de</link>
	<description>development, testing, usability</description>
	<lastBuildDate>Mon, 16 Aug 2010 08:18:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Testers shouldn’t search for errors; they should discover them!</title>
		<link>http://blog.bredex.de/?p=284</link>
		<comments>http://blog.bredex.de/?p=284#comments</comments>
		<pubDate>Mon, 09 Aug 2010 08:57:48 +0000</pubDate>
		<dc:creator>Michael Beier</dc:creator>
				<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=284</guid>
		<description><![CDATA[On the way to work this morning I was thinking about this concept. It seems to be a fundamental truth, even though it seems paradoxical when you first look at it. It often happens when I find an error in a new or changed feature that my “spider sense” starts tingling. The test scenario, test data and intuition/experience make [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">On the way to work this morning I was thinking about this concept. It  seems to be a fundamental truth, even though it seems paradoxical when  you first look at it.</p>
<p style="text-align: left;">It often happens when I find an error in a new or changed feature that  my “spider sense” starts tingling. The test scenario, test data and  intuition/experience make me start thinking that this error is just the  tip of the iceberg … The literature on software testing confirms that  errors rarely come alone, but how far should we go along the path of  searching for more errors – using less and less typical data / scenarios  on the way?</p>
<p><span id="more-284"></span></p>
<p style="text-align: left;">What should a tester do in this situation? Ignore the probability that there are more errors in this feature and therefore risk producing  incidents in the productive environment? Or should we continue to test in this area, therefore reducing the time spent on other features?</p>
<p style="text-align: left;">If we take the first option, and the error is found by the customer, the  question is likely to come up: “why didn’t the tests find this?” If we  take the second choice, then we run the risk of missing errors in more  central parts of the software (the question will be the same, though!).  Is testing condemned to contradictions? Regardless of which test cases we exclude, there is always the chance that they were the ones we should  have been doing.</p>
<p style="text-align: left;">I came to the conclusion that the reason for the apparent contradiction  comes from the idea of “searching for errors”. The aim of tests is to  create a sense of trust in the software, like a safety net. To be  efficient, we have to prioritise. The priority should be to cover the  most important scenarios, and not to check for the most likely errors.  So the aim of testing isn’t to go “looking for trouble“, but to  “discover” any errors in the most important scenarios. If no errors are  found, then the trust in the software is reinforced.</p>
<p style="text-align: left;">So when we have good reason to think that one error may have a couple of  friends hanging around in the same feature, should the test for these  errors be classified as “searching”? I don’t think so. These errors  aren’t floating around in the ether, far out of our grasp; rather  they’re lurking just below the surface, waiting to be found. So if a  tester reports an error from a less typical scenario, then it doesn’t  mean that s/he went on a random quest to search for errors. Some errors  make themselves known as soon as we get close to them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=284</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agenda for the Eclipse Testing Day</title>
		<link>http://blog.bredex.de/?p=279</link>
		<comments>http://blog.bredex.de/?p=279#comments</comments>
		<pubDate>Wed, 28 Jul 2010 09:22:01 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=279</guid>
		<description><![CDATA[The Eclipse Testing Day Team (with kind help from Imbus AG) spent last week looking over and evaluating the submissions for the Eclipse Testing Day, and we&#8217;re pleased to announce that we now have an exciting and varied program for the day on the 8th September. The full program is available on the Eclipse Testing [...]]]></description>
			<content:encoded><![CDATA[<p>The Eclipse Testing Day Team (with kind help from Imbus AG) spent last week looking over and evaluating the submissions for the Eclipse Testing Day, and we&#8217;re pleased to announce that we now have an exciting and varied program for the day on the 8th September. </p>
<p>The full program is available on the <a href="http://wiki.eclipse.org/EclipseTestingDay2010">Eclipse Testing Day Wiki Page</a>, and we&#8217;re pleased to be able to offer a selection of talks about different areas of testing, including:</p>
<ul>
<li>Acceptance and GUI testing</li>
<li>Embedded testing in OSGi</li>
<li>Scope and coverage of tests</li>
<li>Unit testing</li>
<li>Test generation</li>
</ul>
<p>As mentioned in the previous post, registration is now open on the <a href="http://eclipsetestingday2010.eventbrite.com">Eventbrite Site</a>. Member tickets (Eclipse and OSGi members) are priced at 40€ net, non-members at 50€ net. The ticket cost covers the event organization and includes catering during the day and the evening reception. </p>
<p>We&#8217;re looking forward to a successful day &#8211; start inviting colleagues, contact us if you&#8217;d like the logo and we&#8217;ll see you on the 8th September in Darmstadt!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=279</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Registration open for the Eclipse Testing Day</title>
		<link>http://blog.bredex.de/?p=276</link>
		<comments>http://blog.bredex.de/?p=276#comments</comments>
		<pubDate>Wed, 30 Jun 2010 13:03:50 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=276</guid>
		<description><![CDATA[The registration for the Eclipse Testing Day on the 8th September in Darmstadt is now open! We&#8217;ve created an Eventbrite site to ease the registration process. Details of prices and payment are both on the Eclipse wiki and directly on the Eventbrite site, but just get in touch if you have questions. We&#8217;ve also extended [...]]]></description>
			<content:encoded><![CDATA[<p>The registration for the <a href="http://wiki.eclipse.org/EclipseTestingDay2010">Eclipse Testing Day</a> on the 8th September in Darmstadt is now open!</p>
<p>We&#8217;ve created an <a href="http://eclipsetestingday2010.eventbrite.com/">Eventbrite</a> site to ease the registration process. Details of prices and payment are both on the Eclipse wiki and directly on the Eventbrite site, but just get in touch if you have questions.</p>
<p>We&#8217;ve also extended the call for papers for another week &#8211; you have until the 10th July to submit your abstract (again, details on the Eclipse wiki). Any Eclipse and/or testing enthusiasts are invited to tell us about how they test, and of course, to register for the day. Tickets are limited to 80 participants, so we recommend registering early!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=276</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Demo Camp in Hannover</title>
		<link>http://blog.bredex.de/?p=265</link>
		<comments>http://blog.bredex.de/?p=265#comments</comments>
		<pubDate>Wed, 23 Jun 2010 10:24:27 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=265</guid>
		<description><![CDATA[I think we can say that the Eclipse Demo Camp in Hannover was a resounding success. The cooperation between Brox, Bredex and Hannover IT (with the kind support of the Eclipse Foundation of course) worked really well &#8211; we had over 70 participants who saw four demos about various topics in the world of Eclipse. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.bredex.de/wp-content/uploads/2010/06/dc2.jpg"><img class="size-medium wp-image-269 alignright" title="dc2" src="http://blog.bredex.de/wp-content/uploads/2010/06/dc2-300x200.jpg" alt="" width="240" height="160" /></a>I think we can say that the Eclipse Demo Camp in Hannover was a resounding success. The cooperation between Brox, Bredex and Hannover IT (with the kind support of the Eclipse Foundation of course) worked really well &#8211; we had over 70 participants who saw four demos about various topics in the world of Eclipse.</p>
<p>The first half of the evening saw Brox&#8217;s demonstration of SMILA followed by a demonstration of testing Eclipse applications with GUIdancer by Bredex. After a short break the camp continued with the two final demos: Erhard Weinell of Yatta Solutions showing their UML Lab and Sven Efftinge demonstrating XText. If there is a prize for how many Eclipse Award winners are present at a Demo Camp, then this one is a good contender: Both XText and GUIdancer were winners of awards this year.</p>
<p><a href="http://blog.bredex.de/wp-content/uploads/2010/06/dc1.jpg"><img class="size-medium wp-image-268 alignleft" title="dc1" src="http://blog.bredex.de/wp-content/uploads/2010/06/dc1-300x200.jpg" alt="" width="240" height="160" /></a><br />
After the demos there was enough time for chatting, discussions and introductions &#8211; Ralph Müller from Eclipse and Michaela Kraft from Microsoft were both on hand to provide excellent networking opportunities.</p>
<p>With even more new faces at this demo camp than the previous one in November, our hope of creating a strong Eclipse community in the Hannover/Braunschweig region seems to be becoming reality. Stay tuned for more Eclipse events!</p>
<p>The slides from the demo camp are available on the <a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Hanover">Eclipse Wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=265</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is being feature-driven a double edged sword?</title>
		<link>http://blog.bredex.de/?p=260</link>
		<comments>http://blog.bredex.de/?p=260#comments</comments>
		<pubDate>Thu, 27 May 2010 06:52:31 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=260</guid>
		<description><![CDATA[One of the things we’ve been working on in terms of agility over the past few sprints is improving our stories for the sprint. Previously we’d found ourselves wasting time because a story wasn’t thought through well enough, either from the development/implementation perspective (we went the wrong way technology-wise) or in terms of the features [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things we’ve been working on in terms of agility over the past few sprints is improving our stories for the sprint.</p>
<p>Previously we’d found ourselves wasting time because a story wasn’t thought through well enough, either from the development/implementation perspective (we went the wrong way technology-wise) or in terms of the features (incomplete or inconsistent concepts, for example). We were also ending up at the end of a sprint with nothing deliverable because our chunks were often too big.</p>
<p>After a good session with Lisa Crispin last October, we put some ideas into motion about making our stories better described, with a focus on deliverable, testable requirements.<br />
<span id="more-260"></span></p>
<ol>
<li> We take the time as a team (sometimes all of us, sometimes just a few, depending on the meeting and story) to really talk our way through stories for an iteration. This often means spending more time discussing things than we previously did – we even invented a new word for the process “excrucialating”. A combination of excruciating and crucial. Especially in terms of epics, this has really paid off for us though. Now even stories that are connected and continue over many sprints end up being deliverable and we find ourselves on the wrong path much less often.</li>
<li>We make a huge effort to make story points as “thin” as possible. We focus on value – what *must* be achieved to make this story useful for the customer? Nice-to-haves and other features either get put into the product backlog, or we write cards in case we have time at the end to smooth things out.</li>
<li>Acceptance test criteria are a part of the story and we write them on the card. Sometimes a story has to be written in a more technical way, but wherever possible, we describe (and often automate) the test that will prove that the story is done.</li>
<li>We introduced a story board in the room where we have our stand up meetings. We have four columns: planned, under construction, to test and done. The “to test” column came later to make us really aware that “done” is also tested. Ideally, cards shouldn’t be in the “to test” column for very long though. An automated test should tell us the next day if the feature is done, and a manual test should be done as quickly as possible once the feature is committed.</li>
</ol>
<p>These few steps have really helped us over the past few sprints. We’re coming along well with our stories and are getting much better at identifying (and sticking to) what we *need* to implement to release a new feature.</p>
<p>So far, so advantageous for the team. But we’ve run into the question a few times now of “where is the time to refactor”? The focus on thin stories that implement the minimum amount of code possible to gain new features doesn’t leave much room for making the internal code better, clearer or more maintainable on the way. After all, no-one can release a new version of the software that proclaims to do everything it did before, just with nicer internal code and updated libraries.</p>
<p>There’s a few ways we could try to deal with this:</p>
<ol>
<li>Adjust the amount of stories we try to fit into a sprint to leave us the time to look at such areas.</li>
<li>Work on a case-by-case basis. If we have to extend the time a story will take to gain much better code, then we can make this decision for certain stories.</li>
<li>Introduce regular sprints (perhaps shorter than our usual 4-weekers) to work on internal knots we’ve identified recently.</li>
<li>Add a certain amount to each story for “possible refactoring”.</li>
</ol>
<p>We haven’t decided which of these options we’re going to try (first) yet, but I can imagine that it’s not a question that just affects our team. We’re pleased that we’re focusing on features, but we are noticing that the time-pressure has increased somewhat by doing this. We’d be interested to hear suggestions of what other people have done to combat this, and I’ll keep you up to date on our process and results.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=260</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse Demo Camp and Testing Day</title>
		<link>http://blog.bredex.de/?p=253</link>
		<comments>http://blog.bredex.de/?p=253#comments</comments>
		<pubDate>Mon, 10 May 2010 10:06:41 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=253</guid>
		<description><![CDATA[Over the next few months, BREDEX is working with two companies (and the Eclipse Foundation!) to organize two Eclipse events: Eclipse Demo Camp On the 21st June, we&#8217;ll be organizing an Eclipse Demo Camp in Hannover with Brox IT Solutions GmbH. We already have three confirmed demos and are waiting on another two, so we&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>Over the next few months, BREDEX is working with two companies (and the Eclipse Foundation!) to organize two Eclipse events:</p>
<p><strong>Eclipse Demo Camp</strong><br />
On the 21st June, we&#8217;ll be organizing an <a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010">Eclipse Demo Camp</a> in Hannover with Brox IT Solutions GmbH. We already have three confirmed demos and are waiting on another two, so we&#8217;re looking forward to another successful camp. The <a href="http://eclipsedemocamphannover.eventbrite.com">Eventbrite</a> page is up and running for you to register, and details about the Demo Camp are on the <a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Hanover">Eclipse Wiki</a>.</p>
<p><strong>Eclipse Testing Day</strong><br />
On September 8th, we&#8217;ll be in Darmstadt with MicroDoc GmbH for the <a href="http://wiki.eclipse.org/EclipseTestingDay2010">Eclipse Testing Day</a>. The call for papers is now open, and we look forward to hearing your suggestions for talks about testing Eclipse as a platform, testing OSGi applications and testing tools based on Eclipse. We&#8217;re also still looking for sponsors &#8211; more details are on the wiki page. </p>
<p>These two events should be a great chance to meet people from the Braunschweig and Hannover region, as well as test enthusiasts within the Eclipse Community &#8211; so get registering, submit a talk and come and meet us at one (or both) of the events!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=253</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calculate THIS!</title>
		<link>http://blog.bredex.de/?p=228</link>
		<comments>http://blog.bredex.de/?p=228#comments</comments>
		<pubDate>Mon, 26 Apr 2010 12:23:05 +0000</pubDate>
		<dc:creator>Henning Faber</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=228</guid>
		<description><![CDATA[The Apache POI project provides a free open-source library for creating, reading and manipulating Microsoft Office documents. The functionality for working with Excel files is pretty mature and is quite feature-complete. Lately, I was confronted with a problem concerning formula evaluation. I had a pre-existing Excel template file that had some cells with placeholder texts. [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://poi.apache.org/">Apache POI project</a> provides a free open-source library for creating, reading and manipulating Microsoft Office documents. The functionality for working with Excel files is pretty mature and is quite feature-complete.</p>
<p>Lately, I was confronted with a problem concerning formula evaluation. I had a pre-existing Excel template file that had some cells with placeholder texts. These texts are replaced with number values available at runtime. The result is saved as a new file. This works great with POI until a cell with a placeholder text is used within a formula of another cell. When looking at the template, Excel then obviously complains about the data type of the values used within the formula.</p>
<p><span id="more-228"></span></p>
<p><img src="http://blog.bredex.de/wp-content/uploads/2010/04/poi-formula-recalculation-1.png" alt="" /></p>
<p>This behaviour is alright and expected at this point, since the placeholder texts are indeed of the wrong data type and Excel cannot evaluate the formula correctly. The error should go away once the template has been modified as described above.</p>
<p>However, this is not how it works! Excel caches the result of each formula evaluation within the spreadsheet file. When the file is programmatically modified with POI, the cached result remains unaltered and is displayed again when the file is opened.</p>
<p><img src="http://blog.bredex.de/wp-content/uploads/2010/04/poi-formula-recalculation-2.png" alt="" /></p>
<p>Excel uses the caching to avoid performing redundant and possibly long-running calculations when opening existing spreadsheet files. If the files are not tampered with, this strategy works fine, because Excel knows when a cell value changes and when a recalculation is necessary.</p>
<p>In order to deal with the problem of out-dated cached values, I tried out four different solutions, where each solution somehow evolved from the previous one by improving its shortcomings.</p>
<p>For the first attempt, there is the key combination CTRL-ALT-F9, which tells Excel to recalculate all formulas of the entire workbook. Although this is already better than having errors on the sheet, it is still poor to require user interaction before the data on the sheet becomes valid.</p>
<p>So, the next idea was to automate the process by adding a little Visual Basic for Applications (VBA) script to the file that triggers the recalculation when the workbook is loaded. Again a little bit better, but requiring a script is still not a preferable solution.</p>
<p>This is where POI comes back into play. POI provides a <a href="http://poi.apache.org/spreadsheet/eval.html">formula evaluator</a> that can calculate the value for a formula cell and update the cached value on the cell. Updating all the cached values of the workbook before saving it produces the result that was already expected in the very beginning.</p>
<p>Yet there is another pitfall that may cause the calculation to fail: the formula evaluator cannot handle decimal numbers that do not use the dot as decimal character. For example, the German locale has the comma as decimal character. A formula that references such a value once again displays the invalid data type error.</p>
<p>Finally, I found the fourth solution that passes the responsibility of calculating the formula result back to Excel. The idea is to simply remove the cached results from the file. Without a cached value, Excel is forced to evaluate the formula just-in-time when the cell is first displayed. In order to clear the cached value from a cell, you just have to temporarily set the cell type to something different than Cell.CELL_TYPE_FORMULA and then back to the original cell type.</p>
<pre><code>    String formula = cell.getCellFormula();
    cell.setCellType(Cell.<span style="color: #0000ff;"><em>CELL_TYPE_BLANK</em></span>);
    cell.setCellType(Cell.<span style="color: #0000ff;"><em>CELL_TYPE_FORMULA</em></span>);
    cell.setCellFormula(formula);</code></pre>
<p>A disadvantage of removing the cached calculation results may be a decreased performance when opening the workbook. Nevertheless, a noticeable slowdown should not happen unless the file has at least a few thousand (uncached) formulas. Also, it is not necessary to remove all the cached calculation results. It is perfectly OK to start with the POI formula evaluator and only use the trick for clearing the cell cache, if the evaluator reports an error.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=228</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back to Beta?</title>
		<link>http://blog.bredex.de/?p=240</link>
		<comments>http://blog.bredex.de/?p=240#comments</comments>
		<pubDate>Wed, 21 Apr 2010 16:32:10 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=240</guid>
		<description><![CDATA[One of the side-effects we’ve noticed from agile processes is that we don’t really have the option of releasing a beta-version anymore. Previously, we did “mini-releases” at certain points of development, when specific features were finished, so that they could be given to quality assurance or customers as a preview. Now we have a continuous [...]]]></description>
			<content:encoded><![CDATA[<p>One of the side-effects we’ve noticed from agile processes is that we don’t really have the option of releasing a beta-version anymore. Previously, we did “mini-releases” at certain points of development, when specific features were finished, so that they could be given to quality assurance or customers as a preview.</p>
<p>Now we have a continuous integration process; the latest version of the software is built and tested every night. This has brought us many benefits: we have quicker feedback on developments and the team can work with the current version each day. However, despite having functional software every morning, we don’t have a version any more that we can call a beta. Daily builds are feature-incomplete and there are occasionally areas that shouldn’t be touched or worked with because they are still somewhat under construction. If we’ve been working on epics, then we often have new developments that are leading up to a new big feature, but not the actual feature itself. It’s hard to make a cut and say “this is the beta”.</p>
<p><span id="more-240"></span></p>
<p>We’re still unsure about whether this bothers us, though. Do agile projects need specific beta versions, or should customers be able to work with the daily build, having been informed if any areas are unfinished? If betas are desired, how can they be planned for and constructed in the agile paradigm?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=240</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reasons for agile</title>
		<link>http://blog.bredex.de/?p=223</link>
		<comments>http://blog.bredex.de/?p=223#comments</comments>
		<pubDate>Mon, 12 Apr 2010 14:47:07 +0000</pubDate>
		<dc:creator>Alex Imrie</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=223</guid>
		<description><![CDATA[Many of the reasons I’ve read for working agilely talk about customer satisfaction, being able to react to changes and better quality. These are all excellent reasons, and we have discovered the benefits of them for ourselves in various projects. I’d just like to add a reason to the list, which is more from the [...]]]></description>
			<content:encoded><![CDATA[<p>Many of the reasons I’ve read for working agilely talk about customer satisfaction, being able to react to changes and better quality. These are all excellent reasons, and we have discovered the benefits of them for ourselves in various projects. I’d just like to add a reason to the list, which is more from the perspective of people working in the team. Being a part of an agile team is <em>exciting</em>. In my experience, the culture in agile projects has a tendency to be much more open. Suggestions about anything from feature implementations, to usability to improvements to the process itself are generally easier to incorporate. Especially in terms of the process, it is easy to try out an idea for one sprint to see how it works. Having a short lessons learned workshop at the end of a sprint helps the process to become gradually better each time: what aspects can be removed from the process, what could we be doing more of to help us?</p>
<p>Maybe it’s an obvious point, but I’d like to suggest that agility isn’t just beneficial for the customer; it’s also beneficial for the team.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=223</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A sign of obfuscation</title>
		<link>http://blog.bredex.de/?p=170</link>
		<comments>http://blog.bredex.de/?p=170#comments</comments>
		<pubDate>Thu, 25 Mar 2010 11:19:23 +0000</pubDate>
		<dc:creator>Markus Tiede</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.bredex.de/?p=170</guid>
		<description><![CDATA[Shipping commercial software is generally more complicated than just compiling some class files and delivering them. Making software available to the public means that you want customers to use the cool new features, but you don&#8217;t want them to know how these features were implemented. Code obfuscation is unavoidable if you want to make it [...]]]></description>
			<content:encoded><![CDATA[<p>Shipping commercial software is generally more complicated than just compiling some class files and delivering them. Making software available to the public means that you want customers to use the cool new features, but you don&#8217;t want them to know <strong>how</strong> these features were implemented. Code obfuscation is unavoidable if you want to make it harder to decompile and understand your code.  Also, if you want to brand your JARs and don&#8217;t want your  delivered software to be easily modifiable, then you can make use of JAR-signing  which is a built-in JDK feature.</p>
<p><span id="more-170"></span></p>
<p>The combination of both obfuscation and JAR signing nearly drove me crazy last week &#8211; none of my executable JARs were working any more. All the information which had been stored in the MANIFEST.MF during the JAR creating process via ANT (e.g. the classpath entries and main class attribute) disappeared during the obfuscating and signing process. A good few hours  later I finally found out why:  the code obfuscation tool we use rewrites all manifest files with a minor but  significant difference:  instead of using <strong>CR+LF</strong> characters at the  end of each line it only uses <strong>LF</strong>.  This small difference means that the JDK jarsigner, which is implicitly used by the ANT  SignJar-task,  is not able to parse the manifest attributes correctly and  so only rewrites the class fingerprints to the manifest &#8211; silently  leaving out all other information.</p>
<p>Next time I&#8217;ll bear this in mind when I&#8217;m signing JARs and obfuscating &#8211; and hopefully save myself a great deal of confusion.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bredex.de/?feed=rss2&amp;p=170</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
