<?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>Will work for knowledge</title>
	<atom:link href="http://blag.hanzelmann.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blag.hanzelmann.de</link>
	<description>Blog about ... things.</description>
	<lastBuildDate>Sat, 06 Mar 2010 11:40:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Business Processes: Program or Design?</title>
		<link>http://blag.hanzelmann.de/2010/03/06/program-or-design/</link>
		<comments>http://blag.hanzelmann.de/2010/03/06/program-or-design/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 11:40:29 +0000</pubDate>
		<dc:creator>Benjamin Hanzelmann</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Process Driven Development]]></category>

		<guid isPermaLink="false">http://blag.hanzelmann.de/?p=26</guid>
		<description><![CDATA[Process Driven Development has its advantages, but the customers needing the business processes are only superficially involved. What is needed to get IT laymans to start process designing?]]></description>
			<content:encoded><![CDATA[<p>Process Driven Development has its advantages, clarifying implicit or already explicitly documented workflows and using them as a direct base for the development of business software. The customers themselves are only superficially involved in the creation of the specific processes, which will later be deployed at their site.</p>
<p>The reason for this is the technicality of the whole process editing. While the processes themselves can be (more or less) easily  understood, the “getting there” is pretty complicated — at least with current techniques. There are efforts to get people from working <em>inside</em> the processes to working <em>on </em>the processes. This means simplifying design and prototyping abilities of Process Designing Environments (PDE), so the customers can design and try processes for themselves, with only so much support from technical staff.</p>
<p>What level of simplicity would be needed to get IT laymans to start process designing? The processes should be simple with as few syntactical elements as possible, to lower the usage barriers. More elements mean more effort is needed for users to learn the meaning of a process. Graphical languages such as BPEL are not well suited for non-technical use, because they do not hide enough of the inner working of the execution engine. You have to know about way too many concepts to start designing processes in BPEL, which is why in general BPMN is used at design time. But even BPMN is not well suited for designing process at this level. Timers and events are easy to understand in a local context, but keeping the global context in mind with many processes and interaction between them by faciliating events and timers can be quite hard and would have to be simplified to be of use to a non-technical user.</p>
<p>Another problem is the data flow. Most services need to have some sort of input data to work with. But where does it come from? Which service provides the data to use? To weave this kind of information into the “execution flow”-view is hard, and in almost all cases not obvious. All solutions that resemble a mapping of data to global or (even worse for non-technicals) scoped variables require the user to keep an internal model of the data flow in his head. There should be some visualization, but data flow analysis is hard and needs extra information annotated at the services used in the process: Which variables are created, modfied or removed?</p>
<p>Business processes are not complex though, so maybe this is a non-issue. But there has to be some possiblity of semi-automatically procedure to assist the user in (implicitly) modeling the data flow in a process, maybe by analysing input variables and hiding impossible candidates, requiring the user to make <em>some</em> decision, and using this information later for visualization purposes.</p>
<p>Although at the moment there is no tool (at least no tool I know…) really suitable for non-technical users, in my opinion the gap is not that big. The principles are not fundamentlly changed, they only need to be simplified to lessen the amount of work needed to get started and the contextual technical information a user has to keep in mind.</p>
<p>So, the real question remains: Would teaching customers to be process designers be worthwile even for the customers themselves?</p>
]]></content:encoded>
			<wfw:commentRss>http://blag.hanzelmann.de/2010/03/06/program-or-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Components and Compatibility</title>
		<link>http://blag.hanzelmann.de/2010/03/03/components-and-compatibility/</link>
		<comments>http://blag.hanzelmann.de/2010/03/03/components-and-compatibility/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 23:08:54 +0000</pubDate>
		<dc:creator>Benjamin Hanzelmann</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Compatibility]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tailored Software]]></category>

		<guid isPermaLink="false">http://blag.hanzelmann.de/?p=19</guid>
		<description><![CDATA[The fragility of component based software is highly visible in plugin environments like Eclipse, where every user tailors the installation directly to his needs.]]></description>
			<content:encoded><![CDATA[<p>Software components should be completely independent, with no (externally visible) state, no implicit links to other components besides the specified dependencies. But software systems may be surprisingly fragile when it comes down to mixing components into an installation of the product. This is no problem for products with “static” release policies, where every installation is the same. But this fragility is highly visible in plugin environments like Eclipse, where every user tailors the installation directly to his needs.</p>
<p>The Eclipse core acts as a framework, where plugin software may connect at specific points and add its own functionality and extension points. In my experience, updates to the eclipse core are treated with much caution, at best — because “everything breaks”. So, why does everything break? Every functionality provided by Eclipse is coming from plugins. Although these plugins are loosely coupled and independent, they rely on each other adhering the specifications of the role they fill. Slight changes in the behaviour of one plugin may have a small local impact, but can affect the whole software system. Dependent plugins may fail, leaving extension points unoccupied, which causes other plugins to fail.</p>
<p>This is only one of the possibilites of errors rippling through a whole system of loosely coupled components. It is not easy to avoid those errors — testing all possible combinations is rarely feasible, especially if the possible combinations of components is very large and may not even be known to the component developers. There is no way a component developer can test all interoperability issues in such an environment. It is often hard enough to corner the problems local to his own component.</p>
<p>The question I think about at the moment is: Is it possible to work with facts gathered from local tests and transform them into information about an environment composed of pre-tested components? In general, the answer is probably  (and sadly) “no”. But maybe it is possible to help users tailor their software installation and choose only safe and compatible components, perhaps by limiting the possiblities down to components whose tests are good for the same environments or techniques like “lazy tests”, which are only run when a specific environment should be installed and test this combined environment for local errors.</p>
<p>This may enable soft constraints on the installed environments, where negative results are definitive (“this combination of components won’t work for this component”), but positive results have no real information at all (“may fail in an untested case”).</p>
]]></content:encoded>
			<wfw:commentRss>http://blag.hanzelmann.de/2010/03/03/components-and-compatibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Release != Agile?</title>
		<link>http://blag.hanzelmann.de/2010/02/28/software-release-agile/</link>
		<comments>http://blag.hanzelmann.de/2010/02/28/software-release-agile/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:21:50 +0000</pubDate>
		<dc:creator>Benjamin Hanzelmann</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Release Management]]></category>

		<guid isPermaLink="false">http://nabcos.wordpress.com/?p=14</guid>
		<description><![CDATA[Release Management is one of the duties in a software development cycle which is not easily implemented in an agile way. A release may span the responsibilties of many agile teams, working on parts of the same software projects. Is release planning outside the scope of agile approaches?]]></description>
			<content:encoded><![CDATA[<p>Agile Software Development is all about priorities and iterative work. You prioritze your task list and start working on the top tasks, breaking them down to small bits which can be handled in a short time. The goal is to enhance the responsivness to changing requirements. There are many methods that describe how agile software development is implemented successfully (Scrum, for example, proves to be vastly successful). Release Management is one of the duties in a software development cycle which is not easily implemented in an agile way. In my opinion, this is because the concept of a “release” in itself is not agile.</p>
<p>A “Release” means delivering a software bundle which satisfies pre-defined constraints. Contrary to common agile mechanisms, where only short-term goals are concrete work packages, these constraints define long-term goals for the software. Furthermore, a release of a large software bundle spans the work of many agile teams.  Scrum defines a team as 5 to 9 people working together closely.</p>
<p>The project owner is the one responsible for the outcome of one team’s work. He represents the interests of the stakeholders, and is the one who relays external goals (and priorities) to the team. But, alas, <a href="http://blog.xebia.com/2008/05/22/scrum-the-mythical-product-owner-role/">good product owners are hard to find</a> — and release management is not necessarily one of their strengts. Inter-team management is outside of the scope of at least this agile method, leaving the planning of releases to another, non-agile method “above” the team-level.</p>
]]></content:encoded>
			<wfw:commentRss>http://blag.hanzelmann.de/2010/02/28/software-release-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

