<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<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/"
	>

<channel>
	<title>ILOG BRMS Blogs</title>
	<link>http://blogs.ilog.com/brms</link>
	<description>Commentary and news on business rule management systems and rules engines</description>
	<pubDate>Mon, 08 Sep 2008 08:20:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>JRules Certified Developer</title>
		<link>http://blogs.ilog.com/brms/2008/09/08/jrules-certified-developer/</link>
		<comments>http://blogs.ilog.com/brms/2008/09/08/jrules-certified-developer/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 08:20:22 +0000</pubDate>
		<dc:creator>Daniel Selman</dc:creator>
		
		<category><![CDATA[BRMS News]]></category>

		<category><![CDATA[JRules]]></category>

		<category><![CDATA[Certification]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/09/08/jrules-certified-developer/</guid>
		<description><![CDATA[<p>
ILOG <a href="http://www.ilog.com/corporate/releases/us/080903_jrules_certification.cfm">just announced a certification program for JRules 6</a>. The program is open to all and you can be certified at the bronze, silver or gold level. For the past 6 months or so Jean Pommier's team has been collecting&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>
ILOG <a href="http://www.ilog.com/corporate/releases/us/080903_jrules_certification.cfm">just announced a certification program for JRules 6</a>. The program is open to all and you can be certified at the bronze, silver or gold level. For the past 6 months or so Jean Pommier&#8217;s team has been collecting and classifying tricky JRules 6 questions for the various exams. The exams are <a href="http://www.pearsonvue.com/ilog/">administered by Pearson Vue</a> who have over 4,000 testing centers around the world. There is almost certainly one <a href="http://www.pearsonvue.com/servlet/vue.web2.core.Dispatcher?application=VTCLocator&amp;action=actStartApp&amp;v=W2L&amp;cid=512">near you</a>.
</p>
<p>
The program allows JRules consultants, both internal and external, to objectively demonstrate their deep product knowledge making it easier for JRules customers to select the right consultant for a given job.
</p>
<blockquote>
<p>
Gold certification demonstrates an expert level of ILOG JRules product expertise, typically acquired through extensive experience with ILOG JRules on real life projects. This includes mastery of advanced concepts and comprehensive knowledge of the product APIs.
</p>
</blockquote>
<p>
For the months of September and October 2008, the certification will be offered at an introductory 50 percent inaugural discount. Use promotional code IL4034 to receive the discount.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/09/08/jrules-certified-developer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>This is a Lesson Not a Rule&#8230;</title>
		<link>http://blogs.ilog.com/brms/2008/09/08/this-is-a-lesson-not-a-rule/</link>
		<comments>http://blogs.ilog.com/brms/2008/09/08/this-is-a-lesson-not-a-rule/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 07:38:44 +0000</pubDate>
		<dc:creator>Daniel Selman</dc:creator>
		
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/09/08/this-is-a-lesson-not-a-rule/</guid>
		<description><![CDATA[<p>
"The Pull Of The Pint" by Bill Coleman
</p>
<blockquote>
This is a lesson not a rule
It wasn't easy when the penny dropped inside your head
But now you know the joke you tell it to your friends...
</blockquote>


<p>
Do any of&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>
&#8220;The Pull Of The Pint&#8221; by Bill Coleman
</p>
<blockquote><p>
This is a lesson not a rule<br/><br />
It wasn&#8217;t easy when the penny dropped inside your head<br/><br />
But now you know the joke you tell it to your friends&#8230;<br/>
</p></blockquote>
<p>
Do any of these sound familiar?
</p>
<ul>
<li>Function</li>
<li>Stored procedure</li>
<li>Table Look-up</li>
<li>Algorithm</li>
<li>Business process</li>
<li>Front controller</li>
<li>Validator</li>
<li>Data transformation</li>
<li>Message router</li>
<li>Pattern matcher</li>
<li>Composite and Command design patterns</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/09/08/this-is-a-lesson-not-a-rule/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Where are your rules?</title>
		<link>http://blogs.ilog.com/brms/2008/08/28/where-are-your-rules/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/28/where-are-your-rules/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 19:25:39 +0000</pubDate>
		<dc:creator>Chris Berg</dc:creator>
		
		<category><![CDATA[Rules for .NET]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/28/where-are-your-rules/</guid>
		<description><![CDATA[A few years ago I recall scouring MSDN looking for a Model View Controller (MVC) framework and found an odd assortment of patterns including one article that was attempting to posit ASP.NET itself as a sort of MVC pattern.  At&#8230;]]></description>
			<content:encoded><![CDATA[<p>A few years ago I recall scouring MSDN looking for a Model View Controller (MVC) framework and found an odd assortment of patterns including one article that was attempting to posit ASP.NET itself as a sort of MVC pattern.  At the time my need was great and I decided to implement the “<a href="http://msdn.microsoft.com/en-us/library/ms998532.aspx" target="_blank">Front Controller</a>”  with its use of the HTTP Handler.   Interestingly, I used the pattern in spite of the verdict that the author of the article thought that the pattern was “cruel and unusual punishment.”   Actually, with a few modifications of my own, I found this pattern to be closer to Struts than anything else I had seen and I modified it slightly so that my command objects operated against a concrete model passed within the ASP.NET context or session.  At run-time, the command objects called lower level business or service tiers and at the end of processing determined the next view or redirection URL—a loose MVC if you will.</p>
<p><img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/mvc.jpg" alt="mvc.jpg" /></p>
<p>As the application grew and the command objects increased, I found that there were a lot of rules in both my MVC tier and at the business/service tier.</p>
<p>While much of the time I have been arguing the benefits of a multi-channel approach to SOA and sharing rule execution, I have been ignoring a discussion about all of the integration points that might be at play in a single application.  AJAX might even bring rules into play directly from the client—making it possible that just about any part of your n-tier architecture may require access to rules at some point.  This brings me to the value of encapsulation as a driving principal with rule management—even for a single application.</p>
<p>Where are your rules?  I am interested in your stories of where they are and what finally was your tipping point in using a BRMS?  Please post your comments below.</p>
<p>CCB</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/28/where-are-your-rules/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WCF and SSL</title>
		<link>http://blogs.ilog.com/brms/2008/08/21/wcf-and-ssl/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/21/wcf-and-ssl/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 13:59:57 +0000</pubDate>
		<dc:creator>Chris Berg</dc:creator>
		
		<category><![CDATA[Rules for .NET]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/21/wcf-and-ssl/</guid>
		<description><![CDATA[Laurent Grateau brought this tutorial to my attention.  Its a handy reference for implementing SSL with your WCF services.  This can be used for enforcing encryption with the RES.NET management and persistence services (<a target="_blank" href="http://www.codeproject.com/KB/WCF/WCFSSL.aspx">click here for the tutorial</a>).

CCB]]></description>
			<content:encoded><![CDATA[<p>Laurent Grateau brought this tutorial to my attention.  Its a handy reference for implementing SSL with your WCF services.  This can be used for enforcing encryption with the RES.NET management and persistence services (<a target="_blank" href="http://www.codeproject.com/KB/WCF/WCFSSL.aspx">click here for the tutorial</a>).</p>
<p>CCB</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/21/wcf-and-ssl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Words, Words, Words</title>
		<link>http://blogs.ilog.com/brms/2008/08/19/words-words-words/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/19/words-words-words/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 16:54:43 +0000</pubDate>
		<dc:creator>Chris Berg</dc:creator>
		
		<category><![CDATA[JRules]]></category>

		<category><![CDATA[Rules for .NET]]></category>

		<category><![CDATA[Rules for COBOL]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/19/words-words-words/</guid>
		<description><![CDATA[I have spent an inordinate amount of time lately talking about the benefits of language—something you might appreciate since your are currently reading this blog AND understanding it.  Language is a sort of human-level contract we have with each other&#8230;]]></description>
			<content:encoded><![CDATA[<p>I have spent an inordinate amount of time lately talking about the benefits of language—something you might appreciate since your are currently reading this blog AND understanding it.  Language is a sort of human-level contract we have with each other and by using it we can find our way to understandings—flawed as that may be at times.  In fact, some people have developed a discipline of double checking their language and stop to ask questions—feedback to make sure the intended receiver understood the implications of the message (and no, I am not going to talk about TCP/IP).</p>
<p>The requirements process depends upon language to discover critical business features and those that use it will eventually attempt to describe what they learned to developers.  However, the understandings (requirements) themselves undergo a transformative process, probably not unlike a Kantian meat grinder in the mind of the business analyst—inputs transforming into logical outputs on the other side.  However, even such a rigorous empiricist like Kant expected that new knowledge had to under go the test of common sense.  This provided the critical feedback loop to make sure that a proposition was worth its value&#8211;so much for a priori knowledge.  At this point, one has to ponder the following question:  “If the empiricists cannot establish a rational basis for a solid requirement that can stand the test of time then who can?”  This is the equivalent of asserting that at any give moment one may be 50% certain about the requirements but if any assumptions change all bets are off—and this includes any assumptions not imagined at the time the requirements were written.</p>
<p>All of this boils down to uncertainty that cannot be eluded in the requirements process because it is conducted by humans and assumptions change.  Managing change and embracing it is fundamental to human experience and needs tooling.</p>
<p>Change and ambiguity are closely related.  While working in the financial services space I discovered that for a bank, there is no single balance to an account.  The concept of “Account Balance” is understood at all levels of the organization, but this concept often translated into 30 or more concrete variants.  All of these had to be understood to support the requirements process.  In talking about the fields, the developers did not always share nomenclature.  They also used odd-prefixes and suffixes in class names common to their language and they were prone to using synonyms introducing confusion along the way.  To avoid this, the business analysts kept a glossary of terms to track the differences and help remove the ambiguities.</p>
<p>Using the vocabulary of a BRMS binds the language of business to the concrete and executable model of the code.  This solves several problems:</p>
<p>1.	Removes ambiguity by mapping terms to concrete equivalents.<br />
2.	Offers levels of validation that non-executable requirements cannot—completeness, regression, versioning, difference and many more.<br />
3.	Developers enjoy receiving something that they can use—saving time without waiting to till GUI is available for testing.<br />
4.	Concepts or content that don’t belong in a rule can remain affixed to the rule in the form of a description—why is this rule important to the business and what might happen if it did not exist.<br />
5.	Requirements expressed as rules can be kept current and eliminate the tendency for them to become stale.<br />
6.	Changes can be deployed without shutting down production systems.</p>
<p>It’s true that you can’t express everything as a rule—let’s not fall into myopia.  Nor will a BRMS solve all requirements pitfalls; but it is tooling that helps organizations scale by helping us use our language better.  In the end, it’s all about words and what they can do…not software.</p>
<p>CCB</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/19/words-words-words/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pressure Points</title>
		<link>http://blogs.ilog.com/brms/2008/08/14/pressure-points/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/14/pressure-points/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 17:50:27 +0000</pubDate>
		<dc:creator>Chris Berg</dc:creator>
		
		<category><![CDATA[Rules for .NET]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/14/pressure-points/</guid>
		<description><![CDATA[<img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/_saucers.jpg" alt="_saucers.jpg" width="128" height="102" />

In the post (<a href="http://blogs.ilog.com/brms/2008/08/01/i-want-to-believe-redux/" target="_blank">I Want To Believe Redux</a>) my goal was to describe the fictitious story about a bright architect that matured a in-house rules technology.  Along the way, the architect experienced pressure points and addressed the requirements in motion.&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/_saucers.jpg" alt="_saucers.jpg" width="128" height="102" /></p>
<p>In the post (<a href="http://blogs.ilog.com/brms/2008/08/01/i-want-to-believe-redux/" target="_blank">I Want To Believe Redux</a>) my goal was to describe the fictitious story about a bright architect that matured a in-house rules technology.  Along the way, the architect experienced pressure points and addressed the requirements in motion.  At the start, the architect might have reached different conclusions before proceeding with the effort—for we all lack a critical view of something on the horizon from time to time.  Below are some of the key pressure points I have experienced while walking in the “wilderness”:</p>
<p><strong>Many rules, many places</strong><br />
Rules are in too many places—across multiple deployed applications (BPM, vertical solutions, and channels), teams, servers and data centers.  IT managers and architects eventually find themselves in a position where they are responsible for changes across these boundaries and are now thinking strategically about how to limit the impact of change across these deployed systems.</p>
<p><strong>Rules are constrained by release cycles</strong><br />
When business level needs are translated into software projects, the changes that are required are constrained by the existing software development life cycle (SDLC) of each group or team.  Moreover, many changes may have nothing to do with presentation, but simply involve behavior of a production system.  Strategically, the IT manager or architect would like the change to be affective in-between formal release cycles.</p>
<p><strong> The collaboration problem</strong><br />
IT and Technical team members need to collaborate with non-IT staff and business stakeholders.  Requirements documents are not always up-to-date and the master of the policy must constantly be translated into a business language for audits, simple reviews and other requirements that require visibility.  In fact, the process of translating business requirements into executable rule policies is very expensive because of the amount of human interactivity involved.  Strategically, organizations should look for technologies that streamline human interactions to avoid waste while at the same time keeping the goal in view.  This is the whole point around declarative approaches to software.</p>
<p><strong>Inconsistent terminology</strong><br />
Architects and Developers do not share the same language with Analysts.  Analysts often create and maintain glossaries to map technical terms to business terms.  They need a way to manage this at the same time they solve their rule visibility problems.  Consistent vocabulary reduces (and in cases removes) ambiguity and allows organizations to scale.  This is a more abstracted version of a “contract first” approach to design but at the level of language and human behavior.</p>
<p><strong>Shared execution (SOA)</strong><br />
Once a decision is created, architects would like to have the same feature across all of their deployed applications.  They don’t want to touch other deployed servers that may be spread across data centers and geography.  In turn, they would like to take an SOA approach to decision deployment so that all channels/platforms can reuse a policy.</p>
<p><strong>Code has become brittle</strong><br />
Business logic has reached a tipping point in terms of algorithmic complexity.  This complexity is making the rules opaque to the business analysts and complicates communication.  It also is increasingly difficult to debug and test.  Specific problems are in the area of re-cursive patterns, complex data structures and the amount of data that must be tested at various stages of a decision.  The developer needs tooling to simplify rule expression and model how rules are used.   Simplifying logic and the expression of rules is critical for adoption by business analysts and other non-technical consumers of a decision.</p>
<p><strong> Tools are too technical</strong><br />
Business analysts need a tool that fits them:  Non technical staff cannot use the same tools as developers and need to manage rule artifacts independently of the SDLC used by the IT groups.</p>
<p><strong> Administrators need tools too</strong><br />
Usually administrators do not have tooling to manage how services are created and managed.  They need tools that leverage their experiences and practices in the data center.  Living with a solution and keeping deployment costs low is as important as up-front costs; however, these long-term costs are more more difficult to address because they require a broader view of an organization.</p>
<p>In short, the pressure points are real and ever present.  I recall my first dive into test first programming and unit testing.  In the end, I found I was still doing what came naturally, but the tooling added consistency, repeatability, and EVIDENCE that the code worked.  As a byproduct of the effort, I discovered many other benefits that I could not have foreseen without using the methodology and tools—like knowing more quickly how a contract or object signature was going to stand the test of time—or make refactoring a lot easier—just watch all the tests break.  The same is true for rules.  It would be nice if humans could understand the world <em>a priori</em>; but we don’t.  Fortunately there are some walking around with a flashlight.</p>
<p>CCB</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/14/pressure-points/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I Want To Believe Redux</title>
		<link>http://blogs.ilog.com/brms/2008/08/01/i-want-to-believe-redux/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/01/i-want-to-believe-redux/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 13:19:27 +0000</pubDate>
		<dc:creator>Chris Berg</dc:creator>
		
		<category><![CDATA[Rules for .NET]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/01/i-want-to-believe-redux/</guid>
		<description><![CDATA[<img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/_evolution.jpg" alt="_evolution.jpg" />

There is the world as we see it and the world that could be.  Imagining how is critical.  If you can’t agree on a premise, then it’s hard to move forward in any direction.  One is stuck in the question&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/_evolution.jpg" alt="_evolution.jpg" /></p>
<p>There is the world as we see it and the world that could be.  Imagining how is critical.  If you can’t agree on a premise, then it’s hard to move forward in any direction.  One is stuck in the question “why are we doing this?”  Such has been the case in a blog I have been following entitled “I Want To Believe”.  In addition, at TechEd this year I met several industrious architects that implemented their own rules “engines” on the .NET platform.  This Blog and these engineers I spoke with seemed to be grappling with similar questions but from slightly different angles.  In general, the question is the following:  “How does one identify the tipping point for justifying a BRMS?”  The answer is not elusive, however it may not be the same for everyone as you would expect.  Consider the following evolution of a fictitious solution.</p>
<p><strong>Simple Encapsulation</strong><br />
Most architects can imagine the need to refactor their code and encapsulate their logic into a single location.  Imagine that our fictitious architect George has completed a code review of a new but growing code base and has noticed that there were far too many “If/Then” blocks in the presentation tier.  So he gathered the troops and offered that these blocks of code should be wrapped by a single library and enforced with a contract using an Interface.  This pattern, along with an existing investment in a model, solved the problem of centralized management from a code perspective.  The “If/Then” blocks could not be fully removed from the presentation tier, but they did not bloat as the number of rules grew.</p>
<p><strong>Hot Deployment</strong><br />
Now that the rules were in one spot, George realized that the code in the new library was changing faster than he expected and the BAs on the team wanted to see immediate changes.  This issue alone was forcing many interim builds.  His solution was to place a wrapper around the library and dynamically load it at run-time—problem solved.  Now a new library could be deployed at run time by doing a simple file copy.</p>
<p><strong>Services</strong><br />
Success breeds more success.  Another project George was active on needed the same solution and rule content as well.  He pulled out the latest SOA framework from his toolbox, refactored the existing code and was now able to share the logic.  With the service he added a logger and implemented unit testing for decision regressions.  It worked as expected and performed really well.</p>
<p><strong>Many Decisions Many Masters</strong><br />
Over time, several more applications were deployed all re-using the decisions from the SOA solution he had implemented.  However, now there were 70 different end points, at least 15 different contracts, and several business analysts and developers requiring changes on a standard schedule.  Of the 70 end points, many were duplicates.  They had to support versioned services for various applications in production and pilot new ones.</p>
<p>A small team had to be spun-up to mange the “Rule Server”, manage regression and work with system administrators to deploy the supporting libraries.  Business analysts were supporting the effort by providing requirements documents.  Most of the support time was being taken by the requirements process and not deployment.</p>
<p><strong>The Technical Business Analyst</strong><br />
To lighten the load of the developers, George was able to recruit a full-time analyst to take on the task of working with other business analysts.  He also invested in some templates for the requirements process that he knew he could later convert to code and compile later.  What he really wanted to do was provide a lighter-weight macro language that the BA could use for expressing rules, but in the end had to teach the BA basic 4GL logic and flow constructs along with object references—something he could do once but probably not replicate since its nearly impossible to find a BA with skills that reach this level of technical acumen or tolerance.</p>
<p>Perhaps you can imagine now many other pressure points exist such as the number of rules under management, the algorithmic complexity of the rules themselves, versioning, a simple rule expression that a BA can understand along with an environment for them, tooling for system administrators, monitoring and the like.  In fact it’s the pressure points around collaboration and scaling up the dimensions of a solution that often force the tipping point.  And frankly, these are not even the business arguments—these are stated from the perspective of the architect.  Some wait until the pain is there while others plan ahead for success.</p>
<p>In short, the need for BRMS is real and present—one simply needs to see the horizon.</p>
<p>Here is the URL to the original “<a href="http://blog.biztalk-info.com/archive/2008/03/03/Business_Rules_Engine__I_WANT_TO_BELIEVE.aspx" target="_blank">I Want To Believe</a>” blog post.<br />
CCB</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/01/i-want-to-believe-redux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>IDEs and Code Branches: A Cry for Help!</title>
		<link>http://blogs.ilog.com/brms/2008/08/01/ides-and-code-branches-a-cry-for-help/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/01/ides-and-code-branches-a-cry-for-help/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 09:27:27 +0000</pubDate>
		<dc:creator>Daniel Selman</dc:creator>
		
		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[branch]]></category>

		<category><![CDATA[IDE]]></category>

		<category><![CDATA[merge]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/01/ides-and-code-branches-a-cry-for-help/</guid>
		<description><![CDATA[<img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/bug-versions.jpg" width="450" height="69" alt="bug_versions.png" />

<p>
The image above illustrates a typical JRules bug report in our <a href="http://www.atlassian.com/software/jira/">Jira</a> bug tracking repository. As you can see, the bug in question impacts four code branches and has currently been targeted to be fixed in one branch. For this bug&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/08/bug-versions.jpg" width="450" height="69" alt="bug_versions.png" /></p>
<p>
The image above illustrates a typical JRules bug report in our <a href="http://www.atlassian.com/software/jira/">Jira</a> bug tracking repository. As you can see, the bug in question impacts four code branches and has currently been targeted to be fixed in one branch. For this bug I may spend 1 day correcting and testing it in the trunk (latest code) and will then spend at least another day merging the code changes into the different branches for each product version. Some of the merges will be simple because they are based on the same Eclipse version while older releases may be more complicated.
</p>
<p>
This scenario must be very, very common for any mature software product, so why is (Eclipse) IDE support so abysmal!?
</p>
<p>
The basic workflow I use looks like this:</p>
<ul>
<li>Fix bug in trunk and commit code to <a href="http://subversion.tigris.org/">SVN</a>. I use <a href="http://www.lachoseinteractive.net/en/community/subversion/svnx/features/">SvnX</a> because I have found the Eclipse plugins for SVN to be unreliable.</li>
<li>Add a comment to Jira with the commit number.</li>
<li>Update fix version in Jira.</li>
<li>For each branch:</li>
<ol>
<li>Use <a href="http://www.araxis.com/merge_mac/index.html">Araxis Merge</a> to merge the code changes into the branch</li>
<li>Run manual and/or automatic tests</li>
<li>Commit code to SVN.</li>
<li>Add a comment in Jira with the commit number.</li>
<li>Update fix version in Jira.</li>
</ol>
<li>Mark bug as fixed in Jira to trigger QA testing, localization and documentation updates.</li>
</ul>
<p>
The challenge is that there are many manual steps in this process that distract the developer from the real task-at-hand: fixing the bug and running unit tests. Wouldn&#8217;t it be wonderful if:</p>
<ul>
<li>The IDE workspace used a local copy-on-write mechanism so that there was only one copy of all files that were equivalent across branches. I.e. the file would only be duplicated (in whole, or perhaps even in part) when a change that was specific to a branch was created. This would drastically reduce the amount of disk space required as well as allowing a single workspace to be used to manage several branches.</li>
<li>Selecting a file in the workspace shows you the differences across all branches for this file.</li>
<li>Editing a file in the workspace automatically merges the changes into all branches. In case of conflicts the GUI allows you to manually resolve the problems.</li>
<li>Jira becomes branch-aware to allow you to track the status of a bug fix across branches.</li>
<li>Jira is automatically updated with commit information.</li>
<li>Committing a bug fix is capable of committing to all SVN branches with a single commit - even when the commit impacts files across multiple Eclipse projects.</li>
<li>It was easy to automatically run the unit tests for all impacted branches after a code change.</li>
</ul>
<p>
Perhaps I am using the wrong tools or processes to deal with this? Should I be using <a href="http://git.or.cz/">GIT</a> or <a href="http://jazz.net">IBM Jazz</a>, <a href="http://www.eclipse.org/mylyn/">Mylyn</a>, <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a> or <a href="http://blogs.ilog.com/brms/2008/03/18/supporting-multiple-versions-of-eclipse/">something else entirely</a>? Can it really be the case that developing software 60+ years after <a href="http://en.wikipedia.org/wiki/Bletchley_Park">Bletchley Park</a> still feels so painful?
</p>
<p>
Does this sound familiar? What tools do you use to help you in your everyday software development?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/01/ides-and-code-branches-a-cry-for-help/feed/</wfw:commentRss>
		</item>
		<item>
		<title>InfoWorld Review of ILOG Rules for .NET 3.0</title>
		<link>http://blogs.ilog.com/brms/2008/08/01/infoworld-review-of-ilog-rules-for-net-30/</link>
		<comments>http://blogs.ilog.com/brms/2008/08/01/infoworld-review-of-ilog-rules-for-net-30/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 08:11:12 +0000</pubDate>
		<dc:creator>Daniel Selman</dc:creator>
		
		<category><![CDATA[BRMS News]]></category>

		<category><![CDATA[Rules for .NET]]></category>

		<category><![CDATA[InfoWorld]]></category>

		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/08/01/infoworld-review-of-ilog-rules-for-net-30/</guid>
		<description><![CDATA[<p>
Steven Núñez has written <a href="http://www.infoworld.com/article/08/07/31/31TC-ilog-for-net_1.html">a review</a> of the latest release of <a href="http://www.ilog.com/products/rulesnet/">ILOG Rules for .NET</a>. Download a 6-month free trial of Rules for .NET <a href="http://www.ilog.com/dev/brms/rfdntrial/">here</a>. You can watch a recorded demo <a href="http://www.ilog.com/brms/media/IntellinsureNET/index.htm">here</a>.
</p>

<p>
Congratulations to all the Rules for .NET team for&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>
Steven Núñez has written <a href="http://www.infoworld.com/article/08/07/31/31TC-ilog-for-net_1.html">a review</a> of the latest release of <a href="http://www.ilog.com/products/rulesnet/">ILOG Rules for .NET</a>. Download a 6-month free trial of Rules for .NET <a href="http://www.ilog.com/dev/brms/rfdntrial/">here</a>. You can watch a recorded demo <a href="http://www.ilog.com/brms/media/IntellinsureNET/index.htm">here</a>.
</p>
<p>
Congratulations to all the Rules for .NET team for another outstanding release!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/08/01/infoworld-review-of-ilog-rules-for-net-30/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WCF Performance Comparison</title>
		<link>http://blogs.ilog.com/brms/2008/07/25/wcf-performance-comparison/</link>
		<comments>http://blogs.ilog.com/brms/2008/07/25/wcf-performance-comparison/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 18:37:30 +0000</pubDate>
		<dc:creator>Chris Berg</dc:creator>
		
		<category><![CDATA[Rules for .NET]]></category>

		<guid isPermaLink="false">http://blogs.ilog.com/brms/2008/07/25/wcf-performance-comparison/</guid>
		<description><![CDATA[Microsoft has made some WCF performance data available on <a href="http://msdn.microsoft.com/en-us/library/bb310550.aspx">MSDN</a> for a while now.  The data shows the performance advantages of WCF over ASMX and other SOA frameworks on the platform.  In general, WCF is the stronger performer--good news to all&#8230;]]></description>
			<content:encoded><![CDATA[<p>Microsoft has made some WCF performance data available on <a href="http://msdn.microsoft.com/en-us/library/bb310550.aspx">MSDN</a> for a while now.  The data shows the performance advantages of WCF over ASMX and other SOA frameworks on the platform.  In general, WCF is the stronger performer&#8211;good news to all the folks who are currently implementing ILOG Rule Execution Server for .NET.</p>
<p><img src="http://blogs.ilog.com/brms/wp-content/uploads/2008/07/wcf_perform_graph.gif" alt="wcf_perform_graph.gif" /></p>
<p>If you are deploying RES.NET using IIS 7.0 with Windows Server 2008, then you are no longer limited to the bassicHttpBinding.  Moreover, the new architecture allows one to trim down the modules used by IIS&#8211;allowing for minimal features for your deployment.  You can read about the new architecture <a href="http://learn.iis.net/page.aspx/101/introduction-to-iis7-architecture/">here</a>.   If you want to read about the top 10 reasons why you should like IIS 7.0, then here is a link to a blog entry from Microsoft.com operations, &#8220;<a href="http://blogs.technet.com/mscom/archive/2007/09/07/the-tasty-morsels-found-in-dogfood-mscom-ops-top-10-changes-in-iis7-0.aspx" target="_blank">The Tasty Morsels Found in Dogfood&#8230;</a>&#8221;</p>
<p>CCB</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ilog.com/brms/2008/07/25/wcf-performance-comparison/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
