<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Thoughts on Software Development</title>
  <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/" />
  <link rel="self" href="http://www.reliablesoftware.com/DasBlog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-06-03T07:36:35.3797816-04:00</updated>
  <author>
    <name>Reliable Software, Inc.</name>
  </author>
  <subtitle>"Publication - is the Auction Of the Mind of Man" Emily Dickinson</subtitle>
  <id>http://www.reliablesoftware.com/DasBlog/</id>
  <generator uri="http://www.dasblog.net" version="1.8.5223.1">DasBlog</generator>
  <entry>
    <title>Software + Services Is For Small Companies Too</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1fa49845-b93c-425f-ab56-224694398cf0.aspx</id>
    <published>2008-06-01T22:47:05.6200000-04:00</published>
    <updated>2008-06-03T07:36:35.3797816-04:00</updated>
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">On Friday, June 6 of Microsoft's Tech-Ed
   I will be hosting a Birds of a Feather Session on the topic "Software + Services is
   For Small Companies Too". It will be held in Room S330 E at noon.<br /><br />
   To continue the conversation, please add your comments and opinions to this blog post.
   If you are unable to attend feel free to add your thoughts as well here.<br /><br />
   Here are some questions to get you started thinking about the topic:<br /><br />
   What is Software + Services?          
   <br />
             
   <br />
   Are small companies afraid of software + services? Are they afraid of cloud computing?
   Why?          
   <br />
             
   <br />
   Doesn't cloud computing leverage the efforts of small companies? If cloud computing
   makes IT a commodity, doesn't this allow small companies to be even more nimble in
   their development efforts?          
   <br />
             
   <br />
   What are the real advantages that large companies have over small companies? What
   about the innovators dillemma? How do large companies keep their current customers
   happy and assure future growth through innovation?  Doesn't this help small companies.
   Doesn't cloud computing help small companies innovate even more?<br /><br /><p></p><a href="http://teched2008.leveragesoftware.com/profile_view.aspx?customerid=michaelstiefel"><img src="http://teched2008.leveragesoftware.com/businesscard.aspx?customerid=michaelstiefel" alt="Join Me at Tech·Ed Connect!" border="0" /></a><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1fa49845-b93c-425f-ab56-224694398cf0" /></div>
    </content>
  </entry>
  <entry>
    <title>Workflow Services Using WCF and WF Uploaded</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,457b4176-fa3c-45c8-8927-31a3b5126dab.aspx</id>
    <published>2008-04-03T22:36:37.1720000-04:00</published>
    <updated>2008-04-03T22:37:15.0464370-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I have put my VSLive! talk, explaining how
   to use Windows Comunication Foundation and Windows Workflow Foundation together to
   create distributed applications in the Presentations section of my web site.<br /><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=457b4176-fa3c-45c8-8927-31a3b5126dab" /></div>
    </content>
  </entry>
  <entry>
    <title>When Is a Well Known Problem Not Well Known?</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,fe8fda89-cbf3-4f8e-82c2-b199e37bf19d.aspx</id>
    <published>2008-03-28T14:03:06.2660000-04:00</published>
    <updated>2008-03-28T14:04:48.8731492-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Quick answer: When I don't know about it?
   When two experienced co-workers do not know also?<br /><br />
   I was working on a workflow code sample for an upcoming talk, when I started getting
   ridculous compilation errors. 
   <br /><br />
   The compiler could not find the rules definition file when it was clearly available.
   The workflow designer could find it because I could associate it with a policy activity.
   The compiler falsely complained about an incorrect type association in a data bind,
   but it was clearly correct. Once again the designer had no problem doing the data
   bind.<br /><br />
   I tried to find an answer on Google with little success. After two hours of experimenting,
   I tried a different Google query and came up with the following link: <a href="https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=612335&amp;SiteID=1">https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=612335&amp;SiteID=1.</a><br /><br />
   The essence of the solution is the following:<br /><p><font color="#000000">"this is a well-known problem with code files that have
      desigable classes in them - the class that is to be designed has to be the first class
      in the file.  If you do the same thing in windows forms you get the following
      error: the class Form1 can be designed, but is not the first class in the file. Visual
      Studio requires that designers use the first class in the file. Move the class code
      so that it is the first class in the file and try loading the designer again."</font></p><p><font color="#000000">It turns out I had changed a struct that was defined first in
      my file to a class. I moved that class to the end of the file and "mirabile dictu"
      everything worked.</font></p><p><font color="#000000">So if this is a well known problem, why can't we get an error
      message just like in the Windows Forms case? 
      <br /></font></p><p><font color="#000000">While it was clearly my mistake, Microsoft has a share of the
      blame here. Clearly this requirement makes it easier to build the workflow designer.
      It would have been just as easy to check if this class was not defined first, and
      issue an error message.</font><br /></p><font color="#000000"><span></span></font><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=fe8fda89-cbf3-4f8e-82c2-b199e37bf19d" /></div>
    </content>
  </entry>
  <entry>
    <title>SaaS Podcast</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,de4bd4fe-242d-494c-b13f-1d77f01dfc9b.aspx</id>
    <published>2008-03-06T00:42:48.5510000-05:00</published>
    <updated>2008-03-28T14:05:13.7162632-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I did a short <a href="http://www.cstechcast.com/home.aspx?Episode=14">podcast </a>for
   Consortio Services about Software as a Service as part of their weekly techcast. 
   <br /><br />
   I very briefly cover what SaaS is about and some of the critical issues facing organizations
   looking at delivering services using the SaaS model.<p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=de4bd4fe-242d-494c-b13f-1d77f01dfc9b" /></div>
    </content>
  </entry>
  <entry>
    <title>Speaking at VSLive! in San Francisco April 1-3.</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,5b1e5222-d09f-4000-a9ef-e3cd200dd5ef.aspx</id>
    <published>2008-03-04T12:24:29.9150000-05:00</published>
    <updated>2008-03-04T12:34:31.1618980-05:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="html">I am going to be giving two talks and a workshop at VS Live! in San Francisco.&lt;br&gt;
&lt;br&gt;
The first talk is an &lt;a href="http://vslive.com/2008/sf/corenet.aspx#vc7"&gt;"Introduction
to Windows Workflow Foundation"&lt;/a&gt; where I explain both the business reasons why
Microsoft developed Workflow Foundation as well as the technical fundamentals. This
talk will help you understand not only how to build workflows, but when it makes sense
to do so and when to use some other technology.&lt;br&gt;
&lt;br&gt;
The second is "&lt;a href="http://vslive.com/2008/sf/corenet.aspx#vc63"&gt;Workflow Services
Using WCF and WWF&lt;/a&gt;". WCF allows you to encapsulate business functionality into
a service. Windows Workflow Foundation allows you to integrate these services into
long running business processes. The latest version of the .NET Framework (3.5) makes
it much easier to use these technologies together to build some very powerful business
applications.&lt;br&gt;
&lt;br&gt;
On Thursday I will give a &lt;a href="http://vslive.com/2008/sf/workshops.aspx#vpo2"&gt;whole
day tutorial&lt;/a&gt; on Workflow Foundation where will dive into the details of how to
use this technology to build business applications.&lt;br&gt;
&lt;br&gt;
Other speakers will talk about VSTS, ALM, Silverlight, AJAX, .NET Framework 3.0 and
3.5, Sharepoint 2007, Windows WF, Visual Studio 2008, SQL Server 2008, and much more.&lt;br&gt;
&lt;br&gt;
If you have not already registered for VSLive San Francisco, you can receive a $695
discount on the Gold Passport if you register using priority code&lt;font color="#000000" face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt; &lt;span style="color: red;"&gt;SPSTI&lt;/span&gt;.
More at &lt;a title="blocked::http://www.vslive.com/sf" href="http://www.vslive.com/sf"&gt;www.vslive.com/sf&lt;/a&gt; 
&lt;o:p&gt;
   &lt;br&gt;
   &lt;br&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&lt;font color="#000000" face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;.&lt;/span&gt;&lt;/font&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.reliablesoftware.com/DasBlog/content/binary/VSSF08_SeeMe_SPSTI.gif" border="0"&gt;&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=5b1e5222-d09f-4000-a9ef-e3cd200dd5ef" /&gt;</content>
  </entry>
  <entry>
    <title>Starting Up Multiple Projects in Visual Studio 2008</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,96a71539-a8f8-4259-9b87-61111ef1cb8a.aspx</id>
    <published>2008-02-12T15:13:48.1390000-05:00</published>
    <updated>2008-02-12T15:55:40.4204333-05:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">One of the great features in Visual Studio
   is the ability to startup more than one project at the same time. You do not need
   to create two solutions, for example, for a client and a server to be able to debug
   them both.<br /><br />
   I thought everybody knew how to do this, but when I found out that two members of
   a project team I am working with did not, I decided to blog how to do this.<br /><br />
   Select the solution in the Solution Explorer, right mouse click and you will see the
   following menu:<br /><p></p><img src="http://www.reliablesoftware.com/DasBlog/content/binary/StartupProjects.bmp" border="0" /><br /><br />
   Select the Set Startup Projects menu item, and a property page will appear that lists
   all the properties in the project. For example:<br /><br /><img src="content/binary/StartupProjectsPropertyPage1.bmp" border="0" /><br /><br />
   You can associate an action with each of the projects: None, Start, or Start without
   debugging.<br /><br /><img src="http://www.reliablesoftware.com/DasBlog/content/binary/StartupProjectsPropertyPageDropdown.bmp" border="0" /><br /><br />
   When you start execution, the projects that you wanted to startup will begin execution.
   If you allowed debugging, and set breakpoints, the debugger will stop at the appropriate
   places.<br /><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=96a71539-a8f8-4259-9b87-61111ef1cb8a" /></div>
    </content>
  </entry>
  <entry>
    <title>Windows Workflow Shortcuts Now Available on Amazon Kindle</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,731a52aa-4ecb-4a59-97da-f45aa10a1503.aspx</id>
    <published>2008-02-11T19:45:21.2780000-05:00</published>
    <updated>2008-02-11T19:47:15.3254883-05:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div class="ItemText">
          <p>
            <font color="#000000" size="3">My Windows Workflow Shortcuts are now available on
         Amazon's Kindle Reader!</font>
          </p>
          <p>
            <font color="#000000" size="3">
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70O/ref=sr_1_3/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-3">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70O/ref=sr_1_3/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-3</a>
              <br />
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70Y/ref=sr_1_12/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-12">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S70Y/ref=sr_1_12/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-12</a>
              <br />
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S71I/ref=sr_1_14/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-14">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S71I/ref=sr_1_14/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-14</a>
              <br />
              <a href="http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S6Z0/ref=sr_1_10/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-10">http://www.amazon.com/Building-Applications-Windows-Workflow-Foundation/dp/B00132S6Z0/ref=sr_1_10/104-7015412-8703104?ie=UTF8&amp;s=books&amp;qid=1202776042&amp;sr=8-10<br /></a>
              <br />
            </font>
          </p>
          <p>
            <font color="#000000" size="3">The associated source code (and links to the shortcuts
         on Safari) are still on my </font>
            <a href="ct.ashx?id=bcce3b20-c995-4c52-82ee-b140a6d33fc0&amp;url=http%3a%2f%2fwww.reliablesoftware.com%2fbook.html">
              <font color="#000000" size="3">web
         site</font>
            </a>
            <font color="#000000" size="3">. </font>
          </p>
          <p>
            <font color="#000000" size="3">This experiment is my first foray into the world of
         digital publishing and it will be interesting to see how it turns out. As of the moment,
         Amazon has no more Kindles <a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Device/dp/B000FI73MA">left</a>.
         If and when you use Kindle, let me know what you think of it as a mechanism for distributing
         technical content.<br /></font>
          </p>
          <p>
            <br />
          </p>
        </div>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=731a52aa-4ecb-4a59-97da-f45aa10a1503" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Debugging .NET Framework Libraries</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92.aspx</id>
    <published>2008-01-17T09:28:02.9210000-05:00</published>
    <updated>2008-01-17T09:49:10.6714383-05:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <content type="html">&lt;p class="MsoNormal"&gt;
   &lt;font face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color="#000000" face="Times New Roman" size="3"&gt;You
   can use the debugger in Visual Studio 2008 to step into some of the .NET Enterprise
   Libraries. This is a feature I asked for a number of years ago. Scott Guthrie just
   blogged about this. Here is his post and it includes &lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;font face="Times New Roman" size="3"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   the list of libraries to which this applies and some information about how to do it:&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;a title="blocked::http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx&lt;/a&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Times New Roman" size="3"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;font face="Times New Roman" size="3"&gt;Here
   is a short MSDN video about this:&lt;/font&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;
      &lt;br&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;a title="blocked::http://www.microsoft.com/uk/msdn/screencasts/screencast/304/Debugging-Into-the-NET-Framework-Source-Code-with-Visual-Studio-2008.aspx" href="http://www.microsoft.com/uk/msdn/screencasts/screencast/304/Debugging-Into-the-NET-Framework-Source-Code-with-Visual-Studio-2008.aspx"&gt;http://www.microsoft.com/uk/msdn/screencasts/screencast/304/Debugging-Into-the-NET-Framework-Source-Code-with-Visual-Studio-2008.aspx&lt;/a&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=306e3133-8cd0-4e5a-9aa1-ad4fc7d14c92" /&gt;</content>
  </entry>
  <entry>
    <title>Using the WF Rules Engine Outside of a Workflow</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,50e845e2-7de7-4834-9728-637c4406903a.aspx</id>
    <published>2007-11-22T14:23:55.2120000-05:00</published>
    <updated>2007-11-14T14:27:04.6303828-05:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000" face="Times New Roman" size="3">The Windows Workflow Foundation
      (WF) ships with a Policy Activity that allows you to execute a set of rules against
      your workflow. This activity contains a design time rules editor that allows you to
      create a set of rules. At run time, the Policy Activity runs these rules using the
      WF Rules engine. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">Among other features, the rules
      engine allows you to prioritize rules and to set a chaining policy to govern rules
      evaluation.<span style="">  </span>The rules engine uses a set of Code DOM expressions
      to represent the rules. These rules can be run against any managed object, not just
      a workflow. Hence, the mechanisms of the rules engine have nothing to do with workflow.
      You can actually instantiate and use this rules engine without having to embed it
      inside of a workflow. You can use this rules engine to build rules-driven .NET applications.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">I gave a <a href="../presentations.html##Workflow">talk</a> at
      the last Las Vegas VSLive! that demonstrates how to do this. The first sample in the
      talk uses a workflow to demonstrate the power of the rules engine. The second and
      third samples use a very simple example to demonstrate how to use the engine outside
      of a workflow.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">Two problems have to be solved.<span style="">  </span>You
      have to create a set of Code DOM expressions for the rules. You have to host the engine
      and supply it the rules and the object to run the rules against. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">While the details are in the
      slides and the examples, here is the gist of the solution. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">To use the rules engine at runtime,
      you pull the workflow rules out of some storage mechanism. The first sample uses a
      file. A WorkflowMarkupSerializer instance deserializes the stored rules to an instance
      of the RuleSet class.<span style="">  </span>A RuleValidation instance validates
      the rules against the type of the business object against which you will run the rules
      against. The Execute method on the RuleExecution class is used to invoke the rules
      engine and run the rules.</font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">How do you create the rules?
      Ideally you would use some domain language, or domain based application, that would
      generate the rules as Code DOM expressions. If you were masochistic enough, you could
      create those expressions by hand. </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">As an alternative, the second
      sample hosts the Workflow rules editor dialog (RuleSetDialog class) to let you create
      the rules. Unfortunately, like the workflow designer, this is a programmer's tool,
      not a business analyst's tool. <span style=""></span>A WorkflowMarkupSerializer
      instance is used to serialize the rules to the appropriate storage.<br /></font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3"> </font>
        </p>
        <p style="margin: 0in; font-family: Calibri; font-size: 11pt;">
          <font color="#000000" face="Times New Roman" size="3">I would be interested in hearing
      about how people use this engine to build rules driven applications.</font>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=50e845e2-7de7-4834-9728-637c4406903a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Developer Meditations</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,33ae57d1-2a6c-44a5-bb60-5f65325bfe28.aspx</id>
    <published>2007-10-31T13:32:21.6080000-04:00</published>
    <updated>2007-10-31T13:32:21.6083105-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Meditation is supposed to develop awareness,
   help focus your attention, and relax while increasing your focus. At one of my current
   clients we are developing a Software as a Service (SaaS) application. We have developed
   the following "meditative principles":<br /><br />
   1. It's not done until the tests are done.<br />
   2. If it's broke, fix it first.<br />
   3. If it's not in a script or code, it doesn't exist.<br />
   4. Don't explain, do it (but ask questions if you don't understand).<br /><br />
   And finally (with apologies to Bobby McFerrin),<br /><br />
    "Don't worry, be agile".<br /><br />
   Here is a little song I wrote<br />
   You might want to sing it note for note<br />
   Don't worry be agile<br />
   In every software we have some trouble<br />
   When you worry you make it double<br />
   Don't worry, be agile<br /><br />
   Ain't got no place to lay your head<br />
   Somebody came and took your machine<br />
   Don't worry, be agile<br />
   The manager say your code is late<br />
   He may have to litigate<br />
   Don't worry, be agile<br />
   Look at me I refactor<br />
   Don't worry, be agile<br />
   Here I give you my url<br />
   When you worry call me<br />
   I make you agile<br />
   Don't worry, be agile<br />
   Ain't got no time ain't got no style<br />
   Ain't got not money to make you smile<br />
   But don't worry self organize<br />
   Cause when you worry<br />
   Your face will frown<br />
   And that will bring everybody down<br />
   So don't worry, be agile (now)<br /><br />
   There is this little song I wrote<br />
   I hope you learn it note for note<br />
   Like good little developers<br />
   Don't worry, be agile<br />
   Listen to what I say<br />
   In your software expect some trouble<br />
   But when you worry<br />
   You make it double<br />
   Don't worry, be agile<br />
   Don't worry don't do it, be agile<br />
   Put a smile on your face<br />
   Don't bring everybody down like this<br />
   Don't worry, it will soon pass<br />
   Whatever it is<br />
   Don't worry, be agile<br /><br /><p></p><img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=33ae57d1-2a6c-44a5-bb60-5f65325bfe28" /></div>
    </content>
  </entry>
  <entry>
    <title>Microsoft Windows Workflow Foundation Digital Shortcuts Finally Finished</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,bcce3b20-c995-4c52-82ee-b140a6d33fc0.aspx</id>
    <published>2007-08-20T22:31:31.5460000-04:00</published>
    <updated>2007-08-20T22:33:45.0764597-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000" size="3">My series of four digitial articles have been published
      by Addison-Wesley. You can get the links to purchase them and the associated source
      code from my </font>
          <a href="http://www.reliablesoftware.com/book.html">
            <font color="#000000" size="3">web
      site</font>
          </a>
          <font color="#000000" size="3">. </font>
        </p>
        <p>
          <font color="#000000" size="3">I have tried to explain, in practical terms, what you
      need to know to actually build real world software using Windows Workflow. There is
      a tiny amount of theory to explain the underpinnings. The vast majority of the explanation
      uses code examples to illustrate all the key points. The last shortcut in the series
      has two extended examples that illustrate how to build custom activities.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=bcce3b20-c995-4c52-82ee-b140a6d33fc0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Agility vs. Planning</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6ad53956-fadf-46b4-80b2-495c5bc7c51c.aspx</id>
    <published>2007-05-20T20:48:02.8600000-04:00</published>
    <updated>2007-05-20T20:52:01.5311999-04:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">If you were to believe some of the more
      vocal advocates of the agile approach to building software, you would think that the
      word planning is evil. If you change the comparison to agility and discipline, then
      the contrast is more interesting.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">This is exactly what Barry Boehm and
      Richard Turner do in their book "</font>
          <a href="http://www.amazon.com/Balancing-Agility-Discipline-Guide-Perplexed/dp/0321186125/ref=pd_bbs_sr_1/102-5557133-3566512?ie=UTF8&amp;s=books&amp;qid=1179706435&amp;sr=8-1">
            <font face="Verdana" color="#0000ff" size="3">Balancing
      Agility and Discipline</font>
          </a>
          <font face="Verdana" color="#000000" size="3">".
      They argue that the agile approach to software development, and the discipline approach
      to software development have much to teach each other. Any given project must achieve
      the right mix of agility and discipline based on the nature of the project.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">One of the more interesting graphs in
      their book makes this point clear:</font>
        </p>
        <p style="MARGIN: 0in">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <img style="WIDTH: 778px; HEIGHT: 520px" height="568" src="http://www.reliablesoftware.com/DasBlog/content/binary/AgilityDiscipline.bmp" width="757" border="0" />
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
       
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">You have to understand:</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How mission critical your project is?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How many people are on the project?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How experienced are your people?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">Do the people on your project handle
      uncertainty well, or do they prefer order?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">How dynamic can the changes to requirements
      be?<span style="mso-spacerun: yes">  </span>Do you understand the domain model
      well?</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">As the graph makes clear, the more experienced
      developers you have that can handle vagueness and ambiguity, the more likely you can
      use more agile methods. On the other hand, the more mission critical, the more lives
      at stake, and the larger the project, the more project discipline you need.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">This is not an all or nothing choice.
      As the book makes clear, most of your projects will need some combination of agility
      and discipline. Nonetheless, no method is a silver bullet.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">Arthur Pyster (the Deputy Chief Information
      Officer for the FAA) writes in his foreword that even building air traffic control
      systems can incorporate some agile processes.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">I had not read their book in 2005 when
      I made this entry to my blog: </font>
          <a href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx">
            <font face="Verdana" color="#0000ff" size="3">http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</font>
          </a>
          <font face="Verdana" color="#000000" size="3">.
      Reading this book reinforced my belief that one must continually evaluate the risk
      associated with a project, and adopt the appropriate methods that reduce that risk.</font>
        </p>
        <p style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri">
          <font face="Verdana" color="#000000" size="3">
          </font> 
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6ad53956-fadf-46b4-80b2-495c5bc7c51c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Installing NET Framework 3.0 RC1</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f9d82815-27ed-4cce-9417-bf08913b2b31.aspx</id>
    <published>2006-10-29T21:39:59.9690000-04:00</published>
    <updated>2006-10-28T20:39:59.9696876-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here are good instructions on how to install RC1 for the .NET Framework
      3.0: </font>
          <a href="http://blogs.msdn.com/pandrew/archive/2006/09/07/745701.aspx">
            <font size="3">http://blogs.msdn.com/pandrew/archive/2006/09/07/745701.aspx</font>
          </a>
          <font size="3">.
      People, including myself, have been having problems getting the Workflow Extensions
      for Visual Studio 2005 installed. I moved the installer file (Visual Studio 2005 Extensions
      for Windows Workflow Foundation RC5(EN).exe) to a different directory from the other
      installation files. The workflow extensions then installed just fine.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f9d82815-27ed-4cce-9417-bf08913b2b31" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Software Reuse and SOA</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,95a481ff-c079-4bba-b7ad-dc35524e6b44.aspx</id>
    <published>2006-09-29T18:00:37.2890000-04:00</published>
    <updated>2006-09-29T18:00:37.2893750-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">David Chappell (</font>
          <a href="http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html">
            <font size="3">http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html</font>
          </a>
          <font size="3">)
      argues that SOA may not foster the service reuse that everyone has been hoping for.
      I think his analysis is correct, but I think with business services we at least
      have a reasonable hope of achieving reuse. Here we are least dealing with the way
      things actually happen in the world as opposed to programmer abstractions such as
      objects or components. That combined with the looser coupling of services gives me
      some hope.<br /><br />
      The reason why frameworks like .NET are successful is they reflect years and years
      of experience with programming problems. Many examples of reuse (such as file systems
      and compilers) are so embedded in our experience that we no longer see them for what
      they are.<br /><br />
      Reuse may fail here as well for all the reasons mentioned in David Chappell's analysis.
      At least now I feel we are on the right track.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=95a481ff-c079-4bba-b7ad-dc35524e6b44" />
      </div>
    </content>
  </entry>
  <entry>
    <title>SOA Reference Model Committee Standard</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,8bc3f62a-4c3f-48d0-878b-7eb96746bc30.aspx</id>
    <published>2006-09-01T12:32:59.1710000-04:00</published>
    <updated>2006-09-01T12:34:39.6891203-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="SOA" label="SOA" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">The </font>
          <a href="http://www.oasis-open.org/committees/download.php/19361/soa-rm-cs.pdf">
            <font size="3">Reference
      Model for Service Oriented Architecture </font>
          </a>
          <font size="3">defines a vocabulary
      for building service-oriented systems. Put together by a technical committee operating
      under the auspices of the OASIS standards organization, it is the result of individuals
      and organizations representing vendors, users, governments, consulting organizations,
      and academic institutions.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">The Reference Model (RM) sees SOA as a means for organizing and using
      distributed capabilities that may be under the control of different ownership domains.
      The RM is not an architecture. It does not attempt to make any architecture normative.
      It does not try to make any standard or set of standards normative. </font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">It does provide a common set of semantics that can be used across different
      implementations. This does sound rather fancy. Nonetheless, just like Moliere's bourgeois
      gentlemen that found out he was speaking prose all his life, many industries have
      been using reference models all along. They just never had to define them explicitly.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">An architect for a residential dwelling knows that if they use the
      term door or window, the builder will understand what is meant. There are widely varied
      implementations of doors and windows depending, for example, if you are building a
      space station or an igloo. Nonetheless, everyone knows what the terms mean. Many of
      these terms are codified in building codes, and by standards bodies, and have evolved
      over the years. The software architecture community moves too quickly for such evolution;
      this is where standards organizations can help.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">Software architectures, for sure,<span style="mso-spacerun: yes"> </span>can
      have </font>
          <a href="http://www.opengroup.org/architecture/togaf8-doc/arch/chap31.html#tag_32_02">
            <font size="3">views
      and viewpoints</font>
          </a>
          <font size="3">, but the terms in which they are discussed
      have to be understood.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">The core concepts that the RM discusses are service, visibility, execution
      context,<span style="mso-spacerun: yes">  </span>service description, real world
      effect,<span style="mso-spacerun: yes">  </span>interaction, and contract and
      policy.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">I will discuss these core concepts over the next few posts.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">None of this work is going on in isolation, or is it intended to denigrate
      other work such as the WS* specifications, or organizations such as the ISO, IEEE,
      IETF, the Ontolog Forum or other groups. The reference model just supplies standard
      definitions so that it becomes easier for each group to communicate with the others.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=8bc3f62a-4c3f-48d0-878b-7eb96746bc30" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Workflow Samples Updated</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,52c84cb4-43a2-4135-8994-36456bdad96b.aspx</id>
    <published>2006-08-15T00:03:15.1380000-04:00</published>
    <updated>2006-08-15T00:03:15.1382507-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I have updated the workflow examples on my site to the most recent
      Workflow version.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=52c84cb4-43a2-4135-8994-36456bdad96b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Developer - Solutions Architect Award</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,567cb193-ccdf-44da-a8d4-5721ac7d2b91.aspx</id>
    <published>2006-07-03T21:08:26.9800000-04:00</published>
    <updated>2006-07-03T21:08:26.9804886-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I would like to thank all those who helped me achieve an Microsoft
      MVP award for Visual Developer - Solutions Architect.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=567cb193-ccdf-44da-a8d4-5721ac7d2b91" />
      </div>
    </content>
  </entry>
  <entry>
    <title>My Thoughts on Weinberg's the Psychology of Computer Programming</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,9f769974-8f06-444d-abe6-ce7fd7c6bdb8.aspx</id>
    <published>2006-06-28T14:35:20.9780000-04:00</published>
    <updated>2006-08-01T11:14:23.1989165-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-outline-level: 2">
          <font face="Verdana" color="#000000">"You are so young; you stand before beginnings.
      I would like to beg of you,</font>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: Arial; mso-outline-level: 2">
          <font face="Verdana" color="#000000">dear friend, as well as I can, to have patience
      with everything that remains unsolved in your heart. Try to love the questions themselves,
      like locked rooms and like books written in foreign languages. Do not now look for
      the answers. They cannot now be given to you because you could not live them. At present
      you need to live the question."</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
          <font color="#000000" size="3">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1.5in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 3">
            <span style="FONT-STYLE: italic; FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">Rainer
         Maria Rilke, Letters to a Young Poet</font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: Verdana; mso-outline-level: 3">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana" color="#000000">I learned programming in high school from a Fortran
      IV manual, which was like learning how to drive a car from the owner's manual—unexciting.
      Later, after taking an operating systems course at MIT, I gave up entirely on programming
      as a profession. I did not want to spend my life doing the same thing over and over
      again.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font color="#000000" size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana" color="#000000">What made me change my mind and become a professional
      programmer? In large part it was Gerald M. Weinberg's <span style="FONT-STYLE: italic">The
      Psychology of Computer Programming</span>, which I first read in 1982. Weinberg not
      only demonstrated that programming was more than technology, it is a <span style="FONT-STYLE: italic">social</span> activity,
      but he showed how the social element related to the technical. In essence, he identified
      and addressed the types of fundamental questions that Rilke advised the young poet
      Franz Kappus to study. Such as:</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font color="#000000" size="3">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“What does it
         mean when we say a program is good?” I learned from Weinberg that a good program is
         as much a matter of cultural fit as technological merit. A designer has to understand
         that tradeoffs are made not only among technical factors, but among technical, social
         and economic constraints. Too often, I have seen engineers try to build the “perfect”
         product while ignoring ease of use or budget constraints.</font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
          <font color="#000000" size="3">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“How do you
         get programmers to work together as a team?” One programmer cannot do it all. Different
         people have different skills, different skills are needed at different parts of the
         project. </font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
          <font color="#000000">
          </font> 
   </p>
        <ul style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type="disc">
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“What is leadership
         all about?” How do you manage change and performance? Why do many managers manipulate
         programmers and tread them poorly and then wonder why they get poor results? </font>
            </span>
          </li>
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <font color="#000000">
            </font>
          </li>
          <li style="MARGIN-TOP: 0px; FONT-SIZE: 12pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2">
            <span style="FONT-FAMILY: Arial">
              <font face="Verdana" color="#000000">“How do you
         find good programmers?” And just what does it mean to be a good programmer? Weinberg
         was one of the first to point out the stupidity of aptitude testing for programmers,
         and the importance of understanding individual psychology in dealing with programmers.</font>
            </span>
          </li>
        </ul>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">Weinberg confirmed my own intuition that software could have
      an enormous impact on society, and his discussion of programming as a social activity
      helped explain much of the “strange behavior” I saw around me as I began working on
      my first programs. For example, during one of my first projects, I saw that the inability
      of certain people to work together had more impact on the project’s outcome than the
      technological issues being debated.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">Weinberg examined what a naïve programmer would consider just
      technical topics and demonstrated how the elements of human personality and interactions
      between people had just as much, if not more influence over the outcome of a computer
      programming project than the technical issues and debates.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">By understanding the importance of questions such as these, even
      if not every question can be answered in every situation, my value as a programmer
      and designer transcends whatever today’s <span style="FONT-STYLE: italic">technology
      du jour</span> happens to be. I would have to say that Weinberg’s book took years
      off my apprenticeship, and saved me much aggravation.</font>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <font size="3">
          </font> 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">To this day, I view programming primarily as a human activity,
      with the technical merits secondary. This does not mean you can ignore the technical
      merits. What makes a programmer really great is not technical genius, but an understanding
      of the human context of what he or she is doing. Any programmer who creates a truly
      revolutionary and world-changing program understands this. Others did not, or did
      not care to, and their contributions are hidden behind or overwhelmed by others’ accomplishments.</font>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Arial; mso-outline-level: 1">
          <font face="Verdana">It is incredible that a twenty-five year old programming text
      containing examples illustrated with technologies that many programmers today cannot
      even conceive of—I recently taught a programming class where not one of the students
      had any idea what a punched card or paper tape was—is still a great book. </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=9f769974-8f06-444d-abe6-ce7fd7c6bdb8" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Last dnrTV Workflow session on Advanced Workflow Topics</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0b6338de-88db-464f-9795-99f264181c87.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,0b6338de-88db-464f-9795-99f264181c87.aspx</id>
    <published>2006-06-26T14:40:34.8030000-04:00</published>
    <updated>2006-06-26T14:40:34.8032598-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is my final dnrTV session: <font color="#003300"><a href="http://dnrtv.com/default.aspx?showID=24">http://dnrtv.com/default.aspx?showID=24</a></font><font color="#000000">.
      It covers advanced topics in Windows Workflow Foundation such as synchronization,
      transactions, and compensation.</font></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=0b6338de-88db-464f-9795-99f264181c87" />
      </div>
    </content>
  </entry>
  <entry>
    <title>SOA 2.0 is Madness</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,38ada118-f397-4ea7-bb00-9efe438c6a17.aspx</id>
    <published>2006-06-21T15:09:40.8320000-04:00</published>
    <updated>2006-06-26T14:41:56.9761866-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I have signed the petition at: </font>
          <a href="http://www.mwdadvisors.com/resources/stop-the-madness.php">
            <font size="3">http://www.mwdadvisors.com/resources/stop-the-madness.php</font>
          </a>
          <font size="3">.
      SOA does not need another buzz word. I think SOA 2.0 ranks belong even ESB on the
      buzz word list.</font>
        </p>
        <p>
          <font size="3">This is also an experiment. We have heard of viral marketing. Let us
      see if we can have viral common sense.</font>
        </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=38ada118-f397-4ea7-bb00-9efe438c6a17" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Workflow and Service Orientation</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d755fc13-aafe-4960-a2c2-5989f648a8d3.aspx</id>
    <published>2006-06-21T14:54:58.2370000-04:00</published>
    <updated>2006-06-21T14:56:41.9265181-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      How do workflow and service oriented architecture relate?
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      The real question is how service oriented architecture (SOA) and business processes
      relate.
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      Service orientation is about how to organize and utilize distributed capabilities
      that could be under the control of different owners.<sup>1</sup> Business Process
      Management (BPM) is about modeling, designing, deploying and managing business processes.<sup>2</sup><span style="mso-spacerun: yes">  </span>Business
      processes are the capabilities, or the users of those capabilities. Workflow is a
      technology that builds the automated part of a business process. It integrates human
      decision with synchronous and asynchronous software systems. Of course this is somewhat
      recursive because a workflow could use other services in its implementation. 
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
      For me, SOA and BPM are not in conflict. People talk about layering BPM on top of
      SOA. Or that SOA is for IT folks, and BPM is for business people. In today's world,
      business cannot afford to have people who just think IT, or just think business. Given
      the way the human mind works, multiple models are often needed to think about certain
      problems.<sup>3</sup> SOA and BPM are two different ways to think about the same problem:
      how organizations can best accomplish their missions. Thinking about business process
      will transform how you architect your services. Architecting your services will impact
      how you model your business processes.
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <span style="FONT-SIZE: 12pt">
            <sup>1</sup>
          </span>
          <span style="FONT-SIZE: 10pt">
          </span>
          <span style="FONT-SIZE: 12pt">For
      more information about service oriented architecture take a look at the Reference
      Model that the OASIS TC that I am a member of has produced:<span style="mso-spacerun: yes">  </span></span>
          <a href="http://www.oasis-open.org/committees/download.php/18486/pr-2changes.pdf">
            <span style="FONT-SIZE: 12pt">http://www.oasis-open.org/committees/download.php/18486/pr-2changes.pdf</span>
          </a>
        </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <sup>2</sup> See <a href="http://ww6.infoworld.com/products/print_friendly.jsp?link=/article/06/02/20/75095_08FEbpmmap_1.html">http://ww6.infoworld.com/products/print_friendly.jsp?link=/article/06/02/20/75095_08FEbpmmap_1.html</a></p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; VERTICAL-ALIGN: super; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <sup>3</sup> See "Mental Models" by P.N. Johnson-Laird in <span style="FONT-STYLE: italic">Foundations
      of Cognitive Science </span>edited by Michael I. Posner
   </p>
        <p style="FONT-SIZE: 12pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
       
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=d755fc13-aafe-4960-a2c2-5989f648a8d3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>.NET Rocks Interview</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f10f690b-ba63-46d5-af63-59a06766f504.aspx</id>
    <published>2006-06-19T11:55:37.3520000-04:00</published>
    <updated>2006-06-19T11:55:56.4775748-04:00</updated>
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I was interviewed by Carl Franklin and Richard Campbell on .NET Rocks: </font>
          <a href="http://dotnetrocks.com/default.aspx?showID=183">
            <font size="3">http://dotnetrocks.com/default.aspx?showID=183</font>
          </a>. <font size="3">Yes
      we talked about Workflow and SOA. But we touched on other topics such as the failure
      of technology to really make foreign language learning any better.</font></p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f10f690b-ba63-46d5-af63-59a06766f504" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Workflow Webcast Part 3</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,ac32f567-205a-4439-9724-7cf34294aaa2.aspx</id>
    <published>2006-06-16T11:43:27.2130000-04:00</published>
    <updated>2006-06-19T11:43:27.2131892-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is part three of the Workflow Webcast series: <a href="http://dnrtv.com/default.aspx?showID=23">http://dnrtv.com/default.aspx?showID=23</a></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=ac32f567-205a-4439-9724-7cf34294aaa2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Workflow Webcast Part 2</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7a34e404-cc3f-4d1c-9162-87a66e4f590e.aspx</id>
    <published>2006-06-09T10:30:19.9300000-04:00</published>
    <updated>2006-06-19T11:44:03.4326346-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is the second talk on Workflow Foundation on Carl Franklin's
      dnrTV:</font>
        </p>
        <p>
          <a href="http://dnrtv.com/default.aspx?showID=22">
            <font color="#0000ff" size="3">http://dnrtv.com/default.aspx?showID=22</font>
          </a>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7a34e404-cc3f-4d1c-9162-87a66e4f590e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Workflow Talk on dnrTV</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7594b6d6-c632-409a-88f5-122937000802.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7594b6d6-c632-409a-88f5-122937000802.aspx</id>
    <published>2006-06-05T00:06:36.9610000-04:00</published>
    <updated>2006-06-09T10:32:25.6335000-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <category term="Workflow" label="Workflow" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Here is the first of four talks on Microsoft Windows Workflow Foundation
      that are appearing on Carl Franklin's dnrTV. This one was broadcast on June 2. Each
      of the following ones should appear in subsequent weeks.</font>
        </p>
        <p>
          <font color="#000000">
            <a href="http://dnrtv.com/default.aspx?showID=21">
              <font size="3">http://dnrtv.com/default.aspx?showID=2</font>
            </a>
          </font>
          <font size="3">1</font>
        </p>
        <a href="http://www.intellectualhedonism.com/2006/06/02/dnrTV21MichaelStiefelOnWindowsWorkflowFoundation1Of4.aspx">
          <font size="3">
          </font>
        </a>
        <p>
          <font size="3">
          </font> 
   </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7594b6d6-c632-409a-88f5-122937000802" />
      </div>
    </content>
  </entry>
  <entry>
    <title>A Software System is Not a Tree and Why Service Orientation Can Be a Good Thing</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,82106fb4-7271-42a2-b2f2-9be19da24bdb.aspx</id>
    <published>2006-02-07T11:29:24.4010000-05:00</published>
    <updated>2006-03-14T18:27:50.3759744-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="html">
		&lt;p class="MsoNormal" style="TEXT-ALIGN: center" align="center"&gt;
   &lt;font size="3"&gt;(Apologies to Christopher Alexander)&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span&gt; &lt;font size="3"&gt; &lt;/font&gt; &lt;/span&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;Christopher Alexander, the architect who inspired the Design Patterns
   movement, wrote a two part article that appeared in the April and May 1965 issues
   of Architectural Forum entitled &lt;/font&gt; &lt;a href="http://www.rudi.net/bookshelf/classics/city/alexander/alexander1.shtml"&gt; &lt;font size="3"&gt;“The
   City is Not a Tree.”&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt;The tree in the title is not a biological
   tree, but refers to a hierarchy being used as a way to organize how modern cities
   are built.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;?XML:NAMESPACE PREFIX = O /?&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;We all try to organize the world into neat categories. It helps us
   make sense of the world. Unfortunately, those categories and subcategories force us
   to view the world as a set of hierarchical categories. Alexander argued that architects
   who think that way produce buildings and cities that are sterile and unlivable. For
   example, zoning that refuses to mix residential, industrial and commercial use has
   some very severe drawbacks in transportation, living conditions, and tax policy.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;The world has too many interrelationships to be viewed as a hierarchy,
   it is really a semi-lattice. Now there are parts of the world that are hierarchies.
   But a hierarchy is a semi-lattice, but the reverse is not true. The point is that
   if you view the world as a hierarchy you miss the true picture.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;Software often has to model some part of the world. The World Wide
   Web is a semi-lattice. Image what the Web would be like if it could only be structured
   as a hierarchical directory such as Yahoo. Don’t get me wrong; neat categories are
   often useful. But Search has become such an important part of the Web because it allows
   you to capture the relationships in a semi-lattice.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;Take the classic example I used to give my software engineering students
   when teaching them about abstraction and object-oriented systems: How do you define
   a chair? Of course they start out with a standard definition. A chair has a back,
   a seat, and four legs. But what about a bean bag? Or even a table? In the end, what
   emerges is that a chair is about a relationship between a piece of anatomy and surface
   that can support it.&lt;span&gt;&lt;/span&gt;It is a relationship, not an object with constraints.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;This is what led Alexander to focus on patterns and not components.
   Of course, some patterns could become components. But components (software or otherwise)
   are packaging artifacts, not fundamental abstractions. This is why the authors of &lt;i&gt;Design
   Patterns&lt;/i&gt; have the principle of "Favor object composition over class inheritance."
   Class inheritance is a hierarchy. Object composition allows you to build a semi-lattice
   if that is appropriate.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;Focusing on relationships means you focus on behavior, on what happens
   in the real world. Systems built on behavior are more flexible and more scalable than
   those based on constrained objects. Of course not all systems have to be flexible
   and scalable. Flexible and scalable often conflict with other desired goals such as
   performance.&lt;/font&gt; 
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;
      &lt;font size="3"&gt;&lt;/font&gt; 
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;font size="3"&gt;Service orientation is based on focusing on the relationships or behaviors
   between the capabilities of distributed services because ultimately, a service performs
   some action in the real world. &lt;span&gt;&lt;/span&gt;In service oriented systems you do not
   focus on constrained objects. You try to model the world as the semi-lattice it really
   is. 1&lt;br /&gt;
   &lt;br /&gt;
   [1] Look at &lt;/font&gt; &lt;a href="http://polaris.gseis.ucla.edu/pagre/simon.html"&gt; &lt;font size="3"&gt;http://polaris.gseis.ucla.edu/pagre/simon.html&lt;/font&gt; &lt;/a&gt; &lt;font size="3"&gt;for
   another interesting perspective.&lt;/font&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=82106fb4-7271-42a2-b2f2-9be19da24bdb" /&gt;</content>
  </entry>
  <entry>
    <title>The Truth is Not Always on the Wire</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6.aspx</id>
    <published>2005-11-19T11:27:35.7950000-05:00</published>
    <updated>2006-03-14T12:27:35.7957344-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">One of the dogmas
      of messaging technology is that the "truth is always on the wire." In the context
      of interoperability that is certainly true. The message, not the platform object model
      that generated the message, is all that really exists between a service provider and
      consumer.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Like all principles it has its
      limits. The statement the "truth is on the wire" only means that using an agreed upon
      message format is equivalent to a using a common syntax for a language such as English.
      It does not matter how you define the message format. XML Schema, RelaxNG, or just
      "ask Alice" are all equivalent. Humans are better at handling ambiguity than machines,
      hence English syntax can be a lot looser than a message format. Nonetheless, the point
      remains valid.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Syntax tells you nothing about
      the semantics of the message. For those of you who abhor fancy terminology, semantics
      means nothing more or less than the real world actions that arise from processing
      the message.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Just like you can misunderstand
      an English sentence, you can "misunderstand" a SOAP message. This misunderstanding
      may be a programming error, or a misunderstood or mismatched policy.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">For example, I send to my bank
      a correctly formatted message that says transfer $1000 from my cash reserve to my
      checking account. If the bank transfers the money from savings to checking, that is
      a programming error. The "wire truth" however was not violated.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Now suppose that the bank made
      the correct transfer, but the bank's policy (which I did not know of at the time)
      was to report such transfers to a credit bureau. My altered credit score resulted
      in a higher interest rate on the loan I was applying for. Understanding a service's
      policy is as important as understanding the message format.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
            <br />
            <span style="FONT-SIZE: 100%; FONT-FAMILY: Verdana">Truth is not on the wire, truth
      is the real world effect of what happens when a SOAP message is processed. Truth is
      semantics.</span>
            <br />
            <span style="FONT-SIZE: 85%; FONT-FAMILY: Verdana">
            </span>
          </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=dfd0d8ff-a9f3-49d5-8d75-054c638f7dc6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Risk Based Software Development</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,847f84e5-3629-400b-807b-c6f8a1345454.aspx</id>
    <published>2005-10-24T11:26:08.8900000-04:00</published>
    <updated>2006-03-14T12:26:08.8907712-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Agile based software development methodologies often remind me of the
      story about the person who jumps off a 100 story building, and passing the 45th floor
      yells out "No problems yet!"<br /><br />
      Agile based software methods have many good ideas. Their critique of the waterfall
      method has great merit. The best documentation is the code itself. Document based
      solutions do not work. But it does no good to demolish one myth only to have it be
      replaced by another.<br /><br />
      To imagine that because the attempt to completely design everything up front is futile,
      the idea that you can iterate every few weeks and wind up with an adequate design
      is often wrong. That might work for a project that is strongly user interface or end-user
      driven. I doubt it would work for designing an air traffic control system, or system
      software such as Microsoft's Windows Communication Foundation. These kinds of projects
      have strong lifecycle requirements about safety, security, performance, or scalability.
      Often they require individuals to acquire new areas of knowledge or expertise.<br /><br />
      Barry Boehm's spiral model of software development is a much better approach.<sup>1</sup> The
      idea behind the spiral model is that at each choice point in the software development
      process one assess the risk that the project could fail to meet its goals. Based on
      that analysis the next step is to mitigate that risk. It might mean doing a prototype,
      refining the requirements, or doing more testing. Some of these tasks may be done
      concurrently. Analyzing the results of these steps might cause the development process
      to backtrack. In all cases, the views of all the project stakeholders (customers,
      developers, marketing, etc.) are considered at each analysis point.<br /><br />
      Given this approach, the classic view (from Boehm's original paper) looks like a spiral:<br /><br /></font>
          <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.reliablesoftware.com/weblog/uploaded_images/spiral-712085.bmp">
            <font size="3">
              <img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://www.reliablesoftware.com/weblog/uploaded_images/spiral-707720.bmp" border="0" />
            </font>
          </a>
          <br />
          <br />
          <font size="3">Since the spiral model is a risk driven process, some circumstances
      might dictate an agile methodology. Other cases would require other approaches. By
      making risk the focus, rather than a </font>
          <a href="http://agilemanifesto.org/">
            <font size="3">manifesto
      of principles</font>
          </a>
          <font size="3"> there is a higher probability of making
      the correct choices.<br /><br />
      Let risk mitigation guide your development process.<br /><br />
      1. Boehm's original paper appeared in IEEE Computer 21(5) 61-72 in 1988. In 2000 he </font>
          <a href="http://www.sei.cmu.edu/cbs/spiral2000/february2000/SR08.pdf">
            <font size="3">updated</font>
          </a>
          <font size="3"> the
      model at the "Spiral Development: Experience, Principles, and Refinements Spiral Development
      Workshop". </font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=847f84e5-3629-400b-807b-c6f8a1345454" />
      </div>
    </content>
  </entry>
  <entry>
    <title>What is Loose Coupling?</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,aae83ad1-4c79-450c-b71f-14bb0e0720c1.aspx</id>
    <published>2005-08-05T11:23:35.7400000-04:00</published>
    <updated>2006-03-14T12:23:35.7405520-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">One of the benefits of service oriented systems is that they are loosely
      coupled. 
      <br /><br /></font>
          <a href="http://www.webservices.org/index.php/ws/content/view/full/39666">
            <font size="3">David
      Orchard</font>
          </a>
          <font size="3"> analyzes what loose coupling means from the perspective
      of the Web services stack. A human being can recognize that a field in a form is misplaced,
      software cannot. So for a particular message invocation, early binding is necessary.
      This is certainly true for standards. There needs to be a defined place for addresses
      and security tokens.<br /><br />
      Orchard asks us to imagine Purchase Order system. A particular piece of information
      in a particular message must be bound to the appropriate programming types. If you
      need to know the name of the purchaser, you must early bind to the format of that
      name. Or to use fancy language, the service must understand its semantics. But it
      is only necessary for those programming types that the service needs to understand.
      Here is where building service interactions as messages rather than as remote procedure
      calls (RPC) is important.<br /><br />
      If a service interaction is defined in terms of RPC, then if you change the semantics,
      you must change the service interface. As long as one type of the method call changes,
      the whole interface is broken. If you send messages (concretely XML messages), so
      long as the service can find the information it needs, the service is not bound to
      a particular message format. Other information can change, but the service does not
      care.<br /><br />
      For example, if a service processing a message does not care about security, they
      can ignore the WS-Security SOAP headers. Those headers can change and the service
      can ignore all the security possibilities. The inventory service does not care if
      the credit information changes.<br /><br />
      True, if XPath is used you are dependent on a certain structure to find information,
      but if you mark your documents with its version, or associated XML Schema, you could
      use the appropriate location path for the document. Or if you want to bind everything
      to type you can use the appropriate XML Schema instance to serialize the message to
      the appropriate programming types.<br /><br />
      Loose coupling at the application level is about inserting levels of indirection to
      handle versioning (so what else is new?). But a message can do this because at the
      service interface the message is opaque. A RPC is not opaque.<br /><br />
      At the application level loose coupling is how easy is to make a change that does
      not impact other parts of the system. With opaque messaging, a new version can be
      added without impacting other clients. If a service wants to reject a version it no
      longer supports, or does not yet support, it can do so without impacting other clients.
      In this restricted, but vitally important sense, semantic meaning in a Web service
      can be late bound.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=aae83ad1-4c79-450c-b71f-14bb0e0720c1" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sarbanes Oxley and XML Schema</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,c2893d4c-2942-4989-bfd2-05bffecfdaf9.aspx</id>
    <published>2005-03-29T12:22:15.3540000-04:00</published>
    <updated>2006-03-14T12:22:15.3549632-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Sarbanes-Oxley mandates that public companies should be able to produce
      all materially relevant transactions during an audit. 
      <br /><br />
      In the world of service oriented architecture, huge volumes of business documents
      flow freely as messages between services. These services are orchestrated (or choreographed
      if you wish) to produced business processes. To give you some idea of the volume,
      some people fear that the volume of XML is starting to take larger and larger fractions
      of network bandwidth. This is why some are starting to push the use of Binary XML
      for SOA messages.<br /><br />
      In this world of huge stores of electronic messages and documents, how in the world
      do you find all the relevant ones? This is where XML Schema comes to the rescue. Your
      XML documents should be defined with schema, and hence subject to validation. Performance
      considerations may dictate that you do not validate your documents during message
      processing. Nonetheless, with schema definitions you should be able to query your
      messages to search and find the relevant documents.<br /><br />
      For example, if you need to find all transactions with a given company worth over
      a certain threshold, you have to the tools to find it.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=c2893d4c-2942-4989-bfd2-05bffecfdaf9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Indigo, WSE, or ASMX for Developing .NET Web Services</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6a2d683a-059a-4c72-8cc4-b06fa503d03d.aspx</id>
    <published>2005-03-08T11:21:11.3820000-05:00</published>
    <updated>2006-03-14T12:21:11.3829760-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Microsoft .NET" label="Microsoft .NET" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Microsoft's Indigo platform will unify all the divergent transport
      technologies (ASMX, WSE, COM+, MSMQ, Remoting) that are in use today. For building
      a service on the .NET platform this is the technology you will use.<br /><br />
      What technology should you use today?<br /><br />
      The ASMX platform's programming model is the same as Indigo's. Attributes, indicating
      what technologies (security, reliability, etc.) you want the infrastructure to use
      are applied to methods. Hence, a converter will be provided to convert ASMX code to
      Indigo code.<br /><br />
      Does this mean ASMX should be the technology of choice? I would argue that WSE is
      the better technology to use. WSE's programming model is not that of Indigo. Classes
      and inheritance are used to interact with the WSE infrastructure. WSE will interoperate
      with Indigo. Nonetheless, the conceptual model of WSE is identical to that of Indigo.<br /><br />
      ASMX is tied to the HTTP transport and its request / response protocol. It encourages
      programmers to think of a service call as a remote procedure call with programming
      types, not as an interoperable, versioned XML document message validated by XML Schema. 
      <br /><br />
      Service developers need to think of request / response as one of several possible
      message exchange patterns (MEP). The most fundamental MEP, the one all MEPs are built
      from, as the WS-Addressing spec makes clear, is the one-way asynchronous message.
      Business services tend to be asynchronous; you apply for a loan and you do not hear
      back for days.<br /><br />
      Service messages can go through intermediaries before reaching the ultimate recipient.
      Each message segment may go over transports other than HTTP.<br /><br />
      WSE's transport classes allow you to build services that use different MEPs over various
      transports. The SOAP envelope classes make it easy to build the SOAP message body
      as XML, or serialized XML objects. You learn to think in terms of XML documents and
      messages, not execution environment dependent types.<br /><br />
      Using this conceptual model your services will last longer, and be easier to evolve
      in a business environment. That will be of more use to your business than using a
      technology that has a better upgrade path, but will have to be rewritten sooner because
      it is poorly designed and implemented.</font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=6a2d683a-059a-4c72-8cc4-b06fa503d03d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Software Factories Again</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,7e081bf2-31d8-4325-82bf-a37880998a01.aspx</id>
    <published>2004-12-24T11:13:00.4770000-05:00</published>
    <updated>2006-03-14T12:15:43.6717504-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Grady Booch has </font>
          <a href="http://www.theserverside.net/news/thread.tss?thread_id=30539#149250">
            <font size="3">fired</font>
          </a>
          <font size="3"> another
      attacking missile in the great debate over software factories, and the idea's defenders
      have replied. Microsoft's view of the world is outlined in a series of articles by
      Jack Greenfield on the MSDN site:<br /></font>
          <a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp">
            <font size="3">http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp</font>
          </a>
          <font size="3">
          </font>
          <a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softwarefactwo.asp">
            <font size="3">http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softwarefactwo.asp</font>
          </a>
          <font size="3">
          </font>
          <a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softfact3.asp">
            <font size="3">http://msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnbda/html/softfact3.asp</font>
          </a>
          <br />
          <br />
          <font size="3">The basic idea behind software factories is to move the production
      of software from a craft to an industry resembling manufacturing. This is not a new
      idea. In the second article, after reviewing why these efforts have failed in the
      past, Greenfield says:<br /><br />
      "We are unable to achieve commercially significant levels of reuse beyond platform
      technology. The primary cause of this problem is that we develop most software products
      as individuals in isolation from other software products. We treat every software
      product as unique, although most are more similar to others than they are different
      from them. Return on investment in software development would be far higher if multiple
      versions or multiple products were taken into account during software product planning.
      Consequently, we rarely make commercially significant investments in identifying,
      harvesting, packaging and distributing reusable assets. The reuse that does occur
      is ad hoc, rather than systematic. Given the low probably that a component can be
      reused in a context other than the one for which it was designed, ad hoc reuse is
      almost an oxymoron. Reuse rarely occurs unless it is explicitly planned in advance."<br /><br />
      I agree as far as he goes, but I do not think he fully comes to grips with why the
      idea of software factories has a long way to go. No doubt part of the reason is that
      the idea of a software factory resembles the idea of artificial intelligence. Every
      success redefines the goal. Nonetheless, I think there is a more fundamental reason.<br /><br />
      Programming has always been a labor intensive activity. As a result, from the very
      start people have tried to figure out how to automate as much of the process as possible.
      Compilers were one of the very first attempts to automate software development. Today
      we take them for granted, but well into the 1970s people were still arguing over whether
      a good human assembly language programmer could code better than a compiler. Debuggers,
      linkers, loaders, file systems, operating systems, distributed transaction coordinators,
      were all invented to automate parts of the software development. How long did it take
      for the idea of a virtual machine (as in Java or .NET) to become practical for most
      software development?<br /><br />
      You can, as Greenfield does, view these artifacts as improved abstractions. Abstractions
      are very critical to software development. I view these developments differently.
      I see them as automating what we understand how to automate. Code libraries such as
      for .NET and Java are in the same category. After years of experience we now understand
      enough of some of the critical elements of certain parts of software development to
      encapsulate them in libraries.<br /><br />
      But software is not like other engineering pursuits such as bridge building. Most
      bridges, although they look different, are really one a few basic kinds. Because you
      cannot copy a bridge like you can copy a program, you need to build a new bridge at
      every place you need to cross a river. Hence you can much more easily replicate what
      you did before, or learn from experience.<br /><br />
      This really came became clear to me when I was a graduate student in nuclear engineering.
      In the reactor design course final exam we were asked to design a cooling system for
      a nuclear reactor. We were not, however, to use our fundamental understanding of physics
      and engineering to do this. We were to apply the American Society of Mechanical Engineering
      (AMSE) standards for cooling systems to do the design.<br /><br />
      Why has this been so difficult to do with software? Since software is easy to copy,
      you only need to create a new piece of software when you need to do something new.
      Automation is about understanding what you have done in the past. You cannot automate
      what you do not understand. So much of software development is done for things we
      have not done before. We do not know, or do not fully understand the domain models
      that Greenfield relies on for the idea of software factories. This is why the CASE
      tools, or the code generators of the past have not provided any reduction in cost
      and time. This is why I think UML based code generators will not be wildly successful
      either.<br /><br />
      Of course you need to understand the domain models. It is just that in a dynamic economic
      environment, you do not arrive at the knowledge in time to automate the process until
      it becomes yesterday's understanding. As yesterday's understanding it will take a
      while to see if it is fundamental enough to be worth automating.<br /><br />
      So long as software is about innovation, or doing what we do not yet understand how
      to do, it will always have a large craft component. Maybe automation will decrease
      the need for programmers, and thus reduce the labor cost. So far this has not happened
      in 60 years. People may use cheaper programmers, but that is another story for another
      time.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=7e081bf2-31d8-4325-82bf-a37880998a01" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Abstraction and Simplicity</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1ebd58df-4ad8-4db6-9d91-926098cdcc97.aspx</id>
    <published>2004-12-16T10:52:47.8630000-05:00</published>
    <updated>2006-03-14T12:16:24.0097536-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <font size="3">Adam Bosworth has given a talk (discussed in his </font>
        <a href="http://www.adambosworth.net/archives/000031.html">
          <font size="3">blog </font>
        </a>
        <font size="3">entry)
   that has received a lot of attention and comment. He argues that software programs
   and their tools are way too complex and should be simple.<br /><br />
   The problem I have with his argument (and arguments similar to that) is that it posits
   a false binary choice: either be complex or simple. Complexity is a continuum. Bosworth
   argues against sophisticated abstractions. But it is sophisticated abstractions that
   make simplicity possible.<br /><br />
   After all, the computer is just atomic particles. Does any programmer worry about
   that? Or the gotos/branches that are all over the microcode? What about the instruction
   pipeline? That is all abstracted away in the "hardware". How many programmers worry
   about exactly how the operating system scheduler works? The whole idea behind class
   libraries that come with Java and .NET is to allow the programmer to concentrate on
   the business logic and not worry about the "plumbing code". 
   <br /><br />
   Occasionally we have to break through that abstraction and worry about exactly how
   things work. I discovered that when I wrote my first test code to test the performance
   of the first MIPS machines back in the 1980s. I found that if I did not return a value
   from my test routine, the loops would be optimized out. Most of the time we can remain
   blissfully ignorant of the abstractions. Performance, scalability, and most important
   of all security, are problems that are classic examples of where we often have to
   worry about complexity and look at the abstractions. The solutions to those problems
   are sometimes simple, but more often than not messy.<br /><br />
   You cannot divorce simplicity from abstraction. People dealing with complicated things
   need complicated abstractions. Engineers often make products and technologies that
   are too geeky, but sometimes things are too simple. After all, the Swiss Army knife
   comes in several sizes. You can match the level of simplicity that you need.<br /><br />
   The Swiss Army knife analogy strikes at the heart of the issue for me. You need to
   keep it simple enough. Saint-Exupery's famous saying applies here. Perfection is achieved
   in design when there is nothing more to take away, not when you have nothing more
   to add. In other words you have to keep it simple, but it still has to accomplish
   the task. The issue is to make it simple enough for your user, whether they be a writer
   of a blog, or a user of a class library. But even the simple user to be effective
   has to understand the limits of the tool, or to be more sophisticated, the abstractions
   and assumptions used. This applies to all sophisticated problems whether they be the
   accuracy of a medical test, the stability of Social Security, or the usefulness of
   Atom or RSS.<br /><br />
   Bosworth speaks about the virtue of "keeping it simple and sloppy and its effect on
   computing on the internet." Well if you have to be HIPPA compliant you cannot be sloppy
   and forgiving of human foibles and weaknesses. Human weaknesses and foibles are precisely
   the problem, and they cannot be abstracted or assumed away to achieve simplicity.
   If you do so, you will have a system so rigid, so bureaucratic, it would be unusable.<br /><br />
   Bosworth concludes by talking about achieving simplicity in the information search
   space to avoid information overload. He talks about data mining, and machine learning
   as the potential solutions. But they all rely on abstractions about what is important,
   and what is not. Users better understand how they work. I cannot wait for the day
   when the social scientists start deconstructing data mining and machine learning for
   their social assumptions. At that point both humans and machines will prove once again
   what Hobbes argued so many years ago. Knowledge and the assumptions that go with it
   are the product of human actions. Knowledge is partly determined by our social relationships
   and what we assume. Simplicity results from assumptions and abstractions. But we cannot
   hide from the mess in the name of simplicity.<br /></font>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1ebd58df-4ad8-4db6-9d91-926098cdcc97" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Service Oriented Architecture and Reuse</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2.aspx</id>
    <published>2004-11-01T11:51:38.2430000-04:00</published>
    <updated>2006-03-14T12:01:30.7753456-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">David Chappell, </font>
          <a href="http://www.davidchappell.com/" target="_blank">
            <font size="3">in
      his latest newsletter</font>
          </a>
          <font size="3">, argues that Service Oriented Architecture
      (SOA) promotes software reuse far better than objects do. For him, object reuse usually
      fails for two reasons. First, in an evolving business environment it is difficult
      to come up with a good definition of a business object such as a customer. Second,
      software developers seem to catch the not-invented-here plague fairly easily.<br /><br />
      I certainly agree with this.<br /><br />
      One of my favorite questions when discussing object oriented design with students
      is to ask for the definition of a chair. Invariably, the answers will include legs.
      Then I ask them if an ottoman or a bean bag chair fits their definition. Coming up
      with good class definitions is hard. I have been involved in software development
      long enough to have frequently seen the not-invented-here syndrome.<br /><br />
      He also argues that the best examples of reuse occur with applications such as PeopleSoft
      or SAP. SOA reuse resembles application reuse. I certainly agree with this as well.<br /><br />
      But, in my opinion, the fundamental reason that reuse with SOA will be more frequent
      than with objects is that SOA reuse is loosely-coupled black box reuse, most object
      reuse is tightly-coupled white box reuse. SOA is a design pattern that has benefited
      from our struggles with object-oriented approaches.<br /><br />
      When you treat a component as a black box you interact with it through its external
      properties, or as we say in the programming world, its interfaces. You do not have
      to understand how a fork is built or what it is composed of. If you do not like your
      two-pronged desert fork, you get a three-pronged fork to eat your peas. You do not
      try to modify the two-pronged fork. The real world is loosely coupled.<br /><br />
      With inheritance you must understand the object's implementation. You must always
      be aware of the fragile base class problem. You can change the behavior of existing
      programs if you are not careful. This only reinforces the not-invented-here syndrome
      because it is perceived to be easier to write classes from scratch, than to try to
      understand another programmer's code. Objects are tightly coupled because they are
      connected through a stack and a linker/loader.<br /><br />
      Modern object oriented practitioners have realized this. The design patterns community
      emphasizes composition/delegation over inheritance, and interfaces over implementation.
      You use the component through its interface treating it as a black box. Interfaces
      produce looser coupling.<br /><br />
      SOA is a design pattern for building business process in the real world. It does not
      tell you how to architect your application. It does not provide an implementation.
      It does tell you to construct your services completely independent of each other.
      Services are independently deployed. Code or database tables are not shared between
      services. Services in a SOA interact through a loosely coupled interface that is defined
      as a series of messages.<br /><br />
      SOA is a continuation in the large of what good object oriented designs have started
      to become: less emphasis on the classes, and more emphasis on the loose coupling provided
      by interfaces. Obviously objects provide the actual implementation, but that is not
      how the users of those implementations view them. They view them as black box interfaces.<br /><br />
      Class frameworks such as J2EE and .NET have been successful. Both those frameworks,
      encapsulate stable, well-understood problems that the software world has been working
      on for over 50 years. Not only are the problems of business not well understood, the
      environment is quite dynamic. Services in a SOA are loosely coupled black boxes because
      they reflect the loosely coupled real world.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=f5c71ead-5eeb-49ce-b4ab-4a6a4f863ed2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Should Software Imitate Sports?</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,4ff24f38-3e75-4e01-9755-92e5a585806c.aspx</id>
    <published>2004-08-11T10:15:58.9970000-04:00</published>
    <updated>2008-04-25T16:54:09.3178255-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Everybody talks about how the New England Patriots Super Bowl win last
      year was a team effort. Whether it was the backup quarterback imitating Peyton Manning
      on the scout team, the statisticians, the players, the coach, or the personnel guy,
      everybody contributed.<br /><br />
      Teamwork, of course, is one the perennial topics du jour in the software world. Demarco
      and Lister’s classic Peopleware talks about it, introducing the concept of a “jelled”
      team. All the variants of Extreme Programming rave about it.<br /><br />
      But what makes a team good? It is difficult to have a good discussion about software
      teams because there are not enough public concrete case studies. Could sports teams
      provide a basis for such a discussion?<br /><br />
      Peter Drucker, the management expert, thought so. In a <a href="http://web.cba.neu.edu/%7Eewertheim/teams/drucker.htm">Wall
      Street Journal essay</a> written several years ago,</font>
          <a href="http://web.cba.neu.edu/%7Eewertheim/teams/drucker.htm">
          </a>
          <font size="3"> he
      discussed three paradigmatic teams: baseball, football and tennis.<br /><br />
      What type of team does your organization have? As Drucker makes clear in his essay
      these teams are distinct alternatives. They have unique strengths and weaknesses,
      but attempts to combine parts of each are a recipe for disaster.<br /><br />
      I bet a lot of traditional software organizations have baseball style teams. You do
      not play as baseball team, you are a member of the team. The third baseman never pitches,
      the tester does not do development. Designers do not have much interaction with developers.
      This is the old-style Detroit assembly line. The big advantage to this team is that
      it makes it easy to train and evaluate personnel. Everybody can be a "star" no matter
      how difficult they are to get along with. On many plays, certain players are not important.
      The left fielder does not do much on a routine ground ball to the second baseman.
      Symphony orchestras are like this as well.<br /><br />
      This approach works well when the task is well understood and can be reduced to "routine".
      Here one can understand the drive to outsource and offshore software tasks. If things
      are well defined, and competence exists elsewhere, then price drives all.<br /><br />
      The problem comes when you need to innovate quickly.<br /><br />
      Football teams are more flexible. There is no equivalent to the halfback option pass
      in baseball. On almost every play, every player is necessary, if for no other reason
      then to prevent some other player from getting to the ball carrier, or the quarterback.
      Everybody works in parallel. Unlike baseball, everybody has to follow the coach's
      orders or else the team will not win. You have to train together to be effective.<br /><br />
      How do you evaluate and train people? An individual's value is often related to how
      they complement the rest of the team, not only on their individual strengths and weaknesses.
      Play without a linebacker or a safety, and you will fail just as if you played without
      a quarterback. But why do quarterbacks get more money? Why do they both get more money
      than teachers? This is the old diamond-water paradox in economics (</font>
          <a class="" title="" href="http://www.libertyhaven.com/noneoftheabove/sports/praiseathletes.shtml" target="_blank">
            <font size="3">http://www.libertyhaven.com/noneoftheabove/sports/praiseathletes.shtml</font>
          </a>
          <font size="3">or </font>
          <a href="http://www.ace.uiuc.edu/Classes/ace100/lectures/Lecture_1.pdf">
            <font size="3">http://www.ace.uiuc.edu/Classes/ace100/lectures/Lecture_1.pdf</font>
          </a>
          <font size="3">).
      Here you have to reward people based on their marginal value to your team, not on
      some absolute scale. It is much harder to outsource, much less offshore if you live
      in this world.<br /><br />
      You still need, as Drucker points out, a score to evaluate how well the team is doing.
      Though as any football fan will tell you, the score does not relate well to how an
      individual player is doing. That is why you have to "watch film" to evaluate players,
      something baseball sabermetricians (</font>
          <a class="" title="" href="http://www-math.bgsu.edu/%7Ealbert/papers/saber.html" target="_blank">
            <font size="3">http://www-math.bgsu.edu/~albert/papers/saber.html</font>
          </a>
          <font size="3">)
      do not have to do. Software managers in this world really have to understand what
      is going on in order to evaluate and train their people.<br /><br />
      Finally there are tennis doubles teams (or jazz combos). There are no clear players,
      only roles to be filled by different team members at different times. This is the
      ultimate in flexibility and adoptability to changing circumstances. But there really
      has to be a fit here. How do you train and compensate in such a world where you can
      succeed or fail, but there is no score. It is hard to relate the end result to the
      individual. You certainly cannot outsource or offshore here.<br /><br />
      As Drucker says, teams are tools, and you have to understand your environment and
      pick the appropriate approach. This is what management is all about.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=4ff24f38-3e75-4e01-9755-92e5a585806c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>The More Eyes the Merrier?</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,1b33c1df-1a33-4baf-a477-ac7431313d06.aspx</id>
    <published>2004-06-30T10:14:21.8570000-04:00</published>
    <updated>2006-03-16T18:37:36.6013616-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">One of the recently discovered Internet Explorer bugs allows malicious
      sites to install key stroke recording code on your system. This certainly has got
      a lot of press and deservedly so because of the widespread presence of IE as a browser.<br /><br />
      Every time this happens I wonder, does open source produce more secure code? Do “more
      eyeballs” reviewing the code produce better code? Looking over the list of vulnerabilities
      on the US-Cert Issues Advisory list makes me doubt that this is true.<br /><br />
      Based on my experience, too many reviewers often make for poorer reviews. Remember
      the last time you had to sign off on a document with a long list of reviewers? The
      early reviewers glance at the document knowing more reviewers will look at it later.
      The later reviewers assume the early reviewers did most of the work already. The result
      is a lackadaisical, poor job of reviewing. You cannot tell me that the open source
      community is immune from the natural tendencies of human nature.<br /><br />
      Approval by committee is no different than design by committee. Just because the committee
      is larger does not automatically make the review better.<br /></font>
        </p>
        <img width="0" height="0" src="http://www.reliablesoftware.com/DasBlog/aggbug.ashx?id=1b33c1df-1a33-4baf-a477-ac7431313d06" />
      </div>
    </content>
  </entry>
  <entry>
    <title>The Information Superhighway</title>
    <link rel="alternate" type="text/html" href="http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx" />
    <id>http://www.reliablesoftware.com/DasBlog/PermaLink,guid,d4d2311b-fad4-49c5-b600-e35782e75654.aspx</id>
    <published>2004-06-14T10:11:38.4120000-04:00</published>
    <updated>2006-03-14T12:02:05.9359040-04:00</updated>
    <category term="All" label="All" scheme="dasBlog" />
    <category term="Software Development" label="Software Development" scheme="dasBlog" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Driving on the highway around Boston I was wondering about its virtual
      counterpart, the Information Superhighway. Massachusetts’s accident rate is the highest
      in the country. People mutter in frustration, “You can’t get there from here” as they
      navigate streets that look as if cow meanderings determined their path. Yet people
      and commerce move with an ease and openness that can only imagined on the Information
      Superhighway.<br /><br />
      What makes one so open and the other not? Some might proclaim “Heed the Three Opens
      of Modern Enterprise Architecture: Open Source, Open Standards, and Open Data.” In
      my mind I compared the concrete and virtual parallels.<br /><br />
      The most obvious analogy is Open Standards. Traffic laws allow for vehicles to travel.
      Vehicles must be able to signal turns. Vehicles have to stay in lane. They have stop
      lights and backup lights. In fact any vehicle that follows these standards is allowed
      on the road. Much to the chagrin of many drivers, following these standards allows
      bicycles on the road. Standards can even allow for varying defaults. Everywhere but
      New York City has “right turn on red” as the default. When vehicles arrive at their
      destination then the work begins.<br /><br />
      Vehicles are similar to messages. Open standards define the contents of a message
      and allow them to get to their proper destination. When the messages arrive at their
      destination, the actual work begins. Here Web Services standards (SOAP, WSDL, WS-Security,
      etc.) seem to have reached critical mass. While much more work needs to be done, the
      industry seems to understand what must be done (routing, federated security, etc.),
      although in some areas, such as transactions, it is not clear w