<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-37152737</id><updated>2009-12-15T04:33:41.248-08:00</updated><title type='text'>Agile Enterprise Architecture</title><subtitle type='html'>Open source - more than code: Enterprise architecture, corporate technology strategy and ideas 5 years ahead of their time.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default?start-index=26&amp;max-results=25'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37152737.post-8433478041312204916</id><published>2009-11-20T08:15:00.000-08:00</published><updated>2009-11-20T08:20:33.675-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eim information wetware'/><title type='text'>Rice Bowls Full of Data</title><content type='html'>&lt;span class="Apple-style-span"   style="  ;font-family:'Times New Roman';font-size:medium;"&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;It's certainly been a while since I last posted something but, that's what happens when life and work get really busy. I've been trying to shoe-horn an Enterprise Information Management framework (MIKE 2.0) into a Command and Control (C2) environment. It's certainly been a challenge.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;The first challenge I had to face was trying to convince a group of entities that there is a difference between information and data. More importantly, that information is more important than data; data management is a subset of information management, not the other way around. That position almost got me lynched. Some time last century when I was actually paying attention in an middle school science class, I learned that information was synthesized/derived from data and was easily interpreted by humans. Then in highschool, it became pretty obvious in that first computer science class that information needed to be decomposed into data so it could be manipulated and stored in a computer.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;Simple, huh?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;Apparently not.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;As with most enterprise architectural conundrums, the problem was neither hardware or software, it was wetware. I dared move the rice-bowl of a 40-year-old empire that only cared for data and cared little about why. When dealing with this group, one observation that I made is that specialization impedes innovation. It may foster optimization but, there is just no room for travel outside of the pidgeon hole.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-8433478041312204916?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/8433478041312204916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=8433478041312204916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/8433478041312204916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/8433478041312204916'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2009/11/rice-bowls-full-of-data.html' title='Rice Bowls Full of Data'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-2458898965225020711</id><published>2008-11-13T09:35:00.000-08:00</published><updated>2008-11-13T10:15:59.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='your tax dollars at leisure'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Security: Show Me The Code</title><content type='html'>This seems to be a recurring theme, lately. I'm one of a team of dozens working on a large project and we have a handful of "security professionals" assigned to the team. We have just finished writing a design document and the security section is just huge; directly proportional to the number of people working on it. Anyhow, a bit of stage setting is necessary. I'm participating in a conference call, we have webex running and a collaborative whiteboard plus document sharing.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Me: "This is a big section on security but, it's not complete."&lt;br /&gt;&lt;br /&gt;Security Professional: "Oh, what's missing?"&lt;br /&gt;&lt;br /&gt;Me: "Software security."&lt;br /&gt;&lt;br /&gt;Security Professional: "What do you mean, there's a whole section on how to configure each part of the software stack!"&lt;br /&gt;&lt;br /&gt;Me: "No, I meant the software itself, especially the custom software that will need to be developed."&lt;br /&gt;&lt;br /&gt;Security Professional: "As long as it's configured properly ... blah blah blah"&lt;br /&gt;&lt;br /&gt;I cut/paste a snippet of code for a SQL injection attack onto the whiteboard.&lt;br /&gt;&lt;br /&gt;Me: "How do you detect and prevent this?"&lt;br /&gt;&lt;br /&gt;Security Professional: "What's that?"&lt;br /&gt;&lt;br /&gt;Me: "Code for a SQL injection attack."&lt;br /&gt;&lt;br /&gt;Security Professional: "Oh, I don't know anything about that type of security."&lt;br /&gt;&lt;br /&gt;Me: "Security isn't a black box."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;After that, I let the silence speak for itself. I recommended that as a start, they visit &lt;a href="http://www.viega.org/"&gt;John Viega's&lt;/a&gt; outstanding &lt;a href="http://www.owasp.org/index.php/Category:OWASP_CLASP_Project"&gt;contribution to the security community&lt;/a&gt; and re-visit their section of the document.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id=":4i" class="udg9X"&gt;&lt;wbr&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-2458898965225020711?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/2458898965225020711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=2458898965225020711' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/2458898965225020711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/2458898965225020711'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/11/security-show-me-code.html' title='Security: Show Me The Code'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-6191383806935246997</id><published>2008-11-11T11:24:00.000-08:00</published><updated>2008-11-12T11:35:45.924-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='to-be'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='as-is'/><title type='text'>Money Saving Tip #1</title><content type='html'>The only beneficiaries of creating a model of the as-is enterprise architecture are the consultants you hired to create it! Please note, I'm an enterprise architecture consultant.&lt;br /&gt;&lt;br /&gt;I was on a sales call the other day and we were chatting with our prospective customer about IT strategy and they wanted some help defining and describing their strategy and lots of help with enterprise architecture. When I asked them where they were in the process, they replied that they were just starting to document the as-is architecture and were following the classic path of as-is, to-be, gap-analysis, etc. and wanted to know how we could help them out. I replied that they needed to choose one of two answers, either the &lt;a href="http://www.accenture.com/"&gt;consultant-as-staff-augmentation&lt;/a&gt; or the consultant-as-adviser model. When asked what the difference was, I replied "Several hundred thousand dollars."&lt;br /&gt;&lt;br /&gt;Naturally, they wanted the less expensive option and I stated if that were really what they were interested in, why do they want to start the process with the as-is architecture? Instead, they could save a truckload of money by starting with what everybody wants to know, the to-be architecture.&lt;br /&gt;&lt;br /&gt;You could have heard a pin drop if if were not for the furious typing of the sales rep sending me some rather unflattering IMs questioning my sanity, legitimacy, etc.&lt;br /&gt;&lt;br /&gt;"You mean we should not take a comprehensive approach?" asked the CIO.&lt;br /&gt;&lt;br /&gt;"Let me put it this way," I replied, "when you go on vacation do you start with a complete survey, inventory and appraisal of your house?"&lt;br /&gt;&lt;br /&gt;"Of course not," replied the CIO, "but you didn't answer my question."&lt;br /&gt;&lt;br /&gt;"Well, you actually asked 3 questions," I countered. "First, start with your target and then work backwards. Second, only go into as much detail as necessary to make substantial progress. Third, this is &lt;a href="http://www-935.ibm.com/services/us/index.wss/offerfamily/gbs/a1029576"&gt;unlike most other approaches&lt;/a&gt; but unlike others, it won't have the same &lt;a href="http://www.it-cortex.com/Stat_Failure_Rate.htm"&gt;high chance of failure&lt;/a&gt;."&lt;br /&gt;&lt;br /&gt;"Thank-you very much, you have given us a lot to think about," was his response.&lt;br /&gt;&lt;br /&gt;Much to the shock and surprise of the sales rep, we have been invited to attend some in-depth discussions with several other team members and stakeholders. I anticipate having a discussion about tools, approaches, etc. that will look a lot like this thread in the &lt;a href="http://groups.google.com/group/the-enterprise-architecture-network/browse_thread/thread/6fd8738598b43c00/73a1be3a927ea632?hl=en&amp;amp;lnk=gst&amp;amp;q=to-be+heretic#73a1be3a927ea632"&gt;Enterprise Architecture Network&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Once again, that money saving tip is: "The only beneficiaries of creating a model of the as-is enterprise architecture are the consultants you hired to create it!"&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-6191383806935246997?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/6191383806935246997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=6191383806935246997' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/6191383806935246997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/6191383806935246997'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/11/money-saving-tip-1.html' title='Money Saving Tip #1'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-3790724046774362643</id><published>2008-10-13T15:04:00.000-07:00</published><updated>2008-10-13T15:11:51.147-07:00</updated><title type='text'>Process vs. Product Quality</title><content type='html'>I just finished having a short, hallway conversation with some of my colleagues and it's worth sharing. I was on my soapbox about process quality vs. product quality and I recalled one of the other places I have worked at. It was a matrix organization with a CMMI Level 5 rating, however, we only had a marginally better project success rate than the industry average. I recalled this to my colleagues and asserted that even back at a previous employer, we were CMMI Level 5 because we always made the same mistakes, consistently. Even better, no matter which people we swapped into or out of the process, we still made the same mistakes.&lt;br /&gt;&lt;br /&gt;It's perfectly feasible to have a high-quality, consistent GIGO process. Where's the value in that?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-3790724046774362643?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/3790724046774362643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=3790724046774362643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3790724046774362643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3790724046774362643'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/10/process-vs-product-quality.html' title='Process vs. Product Quality'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-7537755167734003489</id><published>2008-09-26T00:15:00.000-07:00</published><updated>2008-09-26T12:17:15.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='cmmi'/><category scheme='http://www.blogger.com/atom/ns#' term='analysts'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='maturity model'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>IV&amp;V</title><content type='html'>I had an opportunity to meet with &lt;a href="http://eapblog.burtongroup.com/"&gt;Mike Rollings of the Burton Group&lt;/a&gt; the other day and had a very interesting conversation, touching lightly on several topics.&lt;br /&gt;&lt;br /&gt;Regarding enterprise architecture maturity models, he agreed that every model that is currently available is either wholly or largely process-centric and in most cases is not what customers want. They want a quality-based, more tangible maturity model. As a consultant, when I get asked to perform an architectural analysis, the questions my customers inevitably want answered include what's working (and how well), what's broken (and how badly), what can I salvage, what can I exploit, what do I toss, what can I buy, what do I have to build?&lt;br /&gt;&lt;br /&gt;Regarding enterprise architecture frameworks in general, he noted a distinct lack of pragmatism in many of them. He agreed that the various framework stewards, including the &lt;a href="http://www.opengroup.org/"&gt;Open Group&lt;/a&gt;, are confusing comprehensiveness for consumability. I wondered aloud if the current frameworks are really being shaped by the (in)ability of the current suite of vendors to implement various, pragmatic facets.&lt;br /&gt;&lt;br /&gt;Without answering my question about frameworks, he commented on the almost ubiquitous frustration most enterprise architects have with the existing tools. I'll take that as a diplomatically indirect answer. My major complaints about existing tools are threefold. First, they don't allow complete round-trip visibility from business idea to production. Second, they fall apart when trying to model systems-of-systems. Third, they are built for the needs of modelers, not the needs of the end-customers who need to understand the models. Hmm, just like most of the EA frameworks. Notice the link?&lt;br /&gt;&lt;br /&gt;I wanted to chat about business processes, security and the malleability of architectural models but, we ran out of time. It's always good to get some independent validation and verification of one's sanity from a fellow practitioner. Hopefully, we can continue this conversation in the near future.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-7537755167734003489?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/7537755167734003489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=7537755167734003489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7537755167734003489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7537755167734003489'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/09/iv.html' title='IV&amp;V'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-5828125580413606105</id><published>2008-09-22T09:35:00.000-07:00</published><updated>2008-09-22T10:58:13.131-07:00</updated><title type='text'>Security Professionals and Software</title><content type='html'>James McGovern simply &lt;a href="http://duckdown.blogspot.com/2008/09/when-was-last-time-you-ran-across.html"&gt;confirmed what I have observed all along&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I then asked, how many of them actually had a software development background and pretty much every single hand in the room dropped.&lt;/blockquote&gt;&lt;br /&gt;This is why we, who do have a software development background, pretty much discount just about everything "security professionals" say. Not only are the overwhelming majority of "security professionals" ignorant of software development and actual code, they seem to be intimidated by anything that's not sold in a black box that they can push buttons on.&lt;br /&gt;&lt;br /&gt;Instead of focusing on &lt;span style="font-weight: bold;"&gt;what not to do&lt;/span&gt;, perhaps they should start focusing on&lt;span style="font-weight: bold;"&gt; how to do something securely&lt;/span&gt;. And at the very least, learn enough &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SQL&lt;/span&gt; so a properly &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;parametrized&lt;/span&gt; query can be illustrated on a whiteboard.&lt;br /&gt;&lt;br /&gt;I have yet to come across a "security professional" I can't send packing after speaking 3, simple words: "Show me code."&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-5828125580413606105?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/5828125580413606105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=5828125580413606105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/5828125580413606105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/5828125580413606105'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/09/security-professionals-and-software.html' title='Security Professionals and Software'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-3223763997830262467</id><published>2008-08-11T11:37:00.000-07:00</published><updated>2008-08-11T11:58:35.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='analysts'/><category scheme='http://www.blogger.com/atom/ns#' term='traceability'/><category scheme='http://www.blogger.com/atom/ns#' term='testability'/><title type='text'>TDD and Meaningful Requirements</title><content type='html'>Both &lt;a href="http://www.betterprojects.net/"&gt;Craig Brown&lt;/a&gt; and &lt;a href="http://www.blogger.com/profile/08852779282196561901"&gt;Richard &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Puttick&lt;/span&gt;&lt;/a&gt; were kind enough to comment on my previous post about &lt;a href="http://opensourcecto.blogspot.com/2008/08/meaningful-requirements.html"&gt;meaningful requirements&lt;/a&gt;. The post is an extension of a conversation I was a part of with &lt;a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings"&gt;Robert Martin&lt;/a&gt; several years ago about Test-Driven Development. The group quickly concluded that unit tests were essentially executable specifications, provided that things like boundary conditions, known negatives, etc. were also fully tested. By extension, user acceptance testing (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;UAT&lt;/span&gt;) were effectively executable requirements, provided that they were tested with the same comprehensiveness as unit tests should be conducted.&lt;br /&gt;&lt;br /&gt;Going just one step further, it should be pretty clear that in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;UAT&lt;/span&gt;, not only can the functional expectations be specified in terms of tests and measured against the results, the operational expectations can also be specified in terms of tests and measured against results. These functional and operational expectations are nothing more than functional and technical requirements, both of which can be tested at the same time. This also leads to practice of combining functional and technical requirements into the same statement, which also aids traceability.&lt;br /&gt;&lt;br /&gt;We have needlessly complicated our lives and increased opportunities for defect injection by separating functional and technical requirements. A demonstrated good practice, TDD, clearly illustrates how the separation of functional and technical requirements are not only a worst practice, it's not necessary at all.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-3223763997830262467?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/3223763997830262467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=3223763997830262467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3223763997830262467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3223763997830262467'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/08/tdd-and-meaningful-requirements.html' title='TDD and Meaningful Requirements'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-2353959296298343821</id><published>2008-08-06T13:34:00.000-07:00</published><updated>2008-08-06T15:54:06.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maturity model'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>Enterprise Architecture Maturity Models</title><content type='html'>There must be some kind of thread about maturity models crossing the LCD panels of enterprise architects this week. I was again asked for an EA maturity model. I reflexively reached for a couple of the already published maturity models, stopped myself, and asked the question, "EA the noun or EA the verb?"&lt;br /&gt;&lt;br /&gt;Apparently, the customer would like an assessment of the maturity of their enterprise architecture, the noun.&lt;br /&gt;&lt;br /&gt;This is actually more of a challenge since almost all of the maturity models out there are process-oriented, not product oriented. CMMi is a perfect example. CMMi is product and quality agnostic. GIGO. It's completely possible to build CMMi Level 5 compliant lead-lined lifejackets. The same goes for just about any other process-based maturity model. Not very helpful when the only thing that really counts is the quality of the results, a fact most process weenies seem to forget (or overlook because that's really hard work). Of course, almost all of the EA maturity models (NASICO, Open Group, &lt;a href="http://it.toolbox.com/blogs/thinking-out-loud/government-enterprise-architecture-is-a-big-fat-joke-3045"&gt;EAMMF&lt;/a&gt;, etc.) are either direct adaptations of CMMi or embed a lot of CMMi in them.&lt;br /&gt;&lt;br /&gt;I was pleasantly surprised to find the &lt;a href="http://www.enterprise-architecture.info/Images/Architecture%20Score%20Card/Enterprise%20Architecture%20Assessment%20Guide%20v2.2.pdf"&gt;E2AMM&lt;/a&gt;. It didn't surprise me that it's out of Europe at all. The Europeans are so far ahead of the Americas (both continents) in terms of EA it's almost embarassing. No, it is embarassing. Anyhow, I'm going to take a close look at this model to see if it is applicable to this particular customer's needs. I'll post my observations here, later.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-2353959296298343821?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/2353959296298343821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=2353959296298343821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/2353959296298343821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/2353959296298343821'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/08/enterprise-architecture-maturity-models.html' title='Enterprise Architecture Maturity Models'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-7852103116785932546</id><published>2008-08-04T13:23:00.000-07:00</published><updated>2008-08-04T14:02:28.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soa governance'/><title type='text'>SOA Governance and Vendors</title><content type='html'>We have seen a bit more consolidation in the SOA components arena again, with Iona and BEA getting swallowed up. I didn't use the term "products" because as we all know, it's not possible to go out and buy a SOA, in spite of all the vendors would have you believe and many corporations and agencies hope for so they can spend year-end cash.&lt;br /&gt;&lt;br /&gt;Of course, the same goes for SOA governance, which can't be bought, which &lt;a href="http://blogs.oracle.com/governance/2008/07/5_tips_for_buying_soa_governan.html"&gt;Michael Stamback&lt;/a&gt; reminds us of. Well, he reminds us of that in his first tip. As for the other 4, let's just see ...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tip #2: Look for a vendor that can explain how their technology is applied&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ah, and I had such high hopes. At least he could have waited until the 4th or 5th tip to steamroll his own advice. He must be pretty new at this schtick.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tip #3: Beware of the kitchen sink!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is great advice from a vendor who just loves to sell the kitchen sink. They re-sell Systinet's (wait, Mercury's .. wait, HP's) product last time I looked. You will probably be better off talking to HP directly and get the story from the horse's mouth. Then again, in terms of SOA components, they now have 2 kitchen sinks to sell, though the home-grown one really never worked and BEA never had any SOA components related to governance.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tip #4: Start small and expand&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Can't argue with that one. Governance tools beyond a whiteboard, post-its and a spreadsheet aren't necessary until you have about a dozen services and at least one is composite. Until then, there's really no SOA; barely a collection of services, really. Then again, who's to argue with someone willing to throw money away?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tip #5: Look for an integrated solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ah, I just love this one. Even back when I participated in an evaluation of all the various governance "solutions" out there, only 2 vendors had an integrated stack (Amberpoint and SOA Software) and only one had a comprehensive run-time offering (SOA Software). I don't see how the landscape has changed, at all. The others may claim to have an "integrated" offering. Well, if a colloid is considered integrated, that's fine.&lt;br /&gt;&lt;br /&gt;Of course, none of these folks go down deeper into the stack and deal with how to create, manage and enforce governance policies for the rest of the SOA stack outside of the service, like the service container itself! Then again, that's a really hard problem to solve and of course, you can't sell what you don't have a solution for, right?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-7852103116785932546?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/7852103116785932546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=7852103116785932546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7852103116785932546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7852103116785932546'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/08/soa-governance-and-vendors.html' title='SOA Governance and Vendors'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-4598387320288616448</id><published>2008-08-01T08:59:00.000-07:00</published><updated>2008-08-01T09:17:33.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><category scheme='http://www.blogger.com/atom/ns#' term='fitnesse'/><category scheme='http://www.blogger.com/atom/ns#' term='value'/><category scheme='http://www.blogger.com/atom/ns#' term='governance'/><category scheme='http://www.blogger.com/atom/ns#' term='analysts'/><title type='text'>Meaningful Requirements</title><content type='html'>I simply have to comment on James McGovern's&lt;a href="http://duckdown.blogspot.com/2008/08/best-practices-in-capturing-business.html"&gt; latest post on requirements&lt;/a&gt; where he says:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;When will we acknowledge that implementation are little decisions made all over and that requirements documentation only decide certain aspects?&lt;/blockquote&gt;&lt;br /&gt;This is the result of failing to realize that "&lt;a href="http://opensourcecto.blogspot.com/2008/01/non-functional-means-it-doesnt-work.html"&gt;technical requirements&lt;/a&gt;" cannot be made separate from functional requirements since a function includes the notion of acceptable/predictable behavior. This is where the analysts can borrow a technique from developers: Test-Driven Development (TDD). For lack of a better term, let's call it Test-Driven Analysis.&lt;br /&gt;&lt;br /&gt;What would TDA include? It would include a description of the function plus sample inputs, outputs and expected results, including expected failures (samples of say, SQL injection attack code that must be rejected). Moreover, this wouldn't just be data-focused. Other properties such as the range of acceptable response times, expected feedback, etc. need to be determined. Now we have embedded those "technical requirements" directly into the functional requirements plus have added measurable quality attributes that further serve as acceptance tests/criteria.&lt;br /&gt;&lt;br /&gt;It's not like this can't be done, it's just a lot of hard work.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-4598387320288616448?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/4598387320288616448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=4598387320288616448' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/4598387320288616448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/4598387320288616448'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/08/meaningful-requirements.html' title='Meaningful Requirements'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-6673516172211834467</id><published>2008-06-04T10:10:00.000-07:00</published><updated>2008-06-04T10:24:09.671-07:00</updated><title type='text'>Paint Yourself Into The Corner pattern</title><content type='html'>Here's how it works. Typically, a new CTO or CIO gets hired/promoted and after a couple of days declares that, "We are now an 'X' technology/platform shop."&lt;br /&gt;&lt;br /&gt;I'm going to start calling this the Paint Yourself Into The Corner pattern. You read it here, first. This is similar to the "Fire, Ready, Aim" pattern. It starts out with a CTO (or CIO) declaring that a certain technology or platform is the new standard before understanding what all of the problems are. This decision is usually made on the alleged cost savings to be achieve through standardization, alleged efficiencies to be achieved by having similarly skilled staff in a matrix organization and is largely based on the CTO/CIOs own past skill set (familiarity). Sound stupid? Well, it is. However, why do I see it happening all the time? I've seen people put more thought into what kind of car they want to buy than the time they spend figuring out what types of technology are best for their business.&lt;br /&gt;&lt;br /&gt;Enterprise, or any other kind of "technical" architecture is not all about technology. CTOs in particular often forget this. Architecture is about devising manageable solutions that will actually get used to solve specific business problems. It's not about "simplifying" the toolset to make the tools more manageable! Some of these solutions will be very complex but, complexity can be managed. Managing complexity can also be applied to the toolbox.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-6673516172211834467?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/6673516172211834467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=6673516172211834467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/6673516172211834467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/6673516172211834467'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/06/paint-yourself-into-corner-pattern.html' title='Paint Yourself Into The Corner pattern'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-1070152824363143554</id><published>2008-06-03T08:31:00.000-07:00</published><updated>2008-06-03T09:17:06.147-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soa robotics distributed java c# scalability services'/><title type='text'>Tired of The Same Old CRUD?</title><content type='html'>One of our customers has a very large robotic storage system and we have been asked to propose a new control system. This meant I needed to do some research and dust off some very old skills. I have always seen robots and software agents as cousins. As I was doing some research, a few patterns started to emerge ...&lt;br /&gt;&lt;br /&gt;The first time I had a chance to program (virtual) robots was back on an Apple II with a game called &lt;a href="http://www.mobygames.com/game/robot-war"&gt;Robot Wars&lt;/a&gt;. That may seem pretty humorous but, it taught some difficult lessons: real-time systems, event queues, interrupts, and programming on vastly resource-constrained systems. The developer only had 256 lines of code in which to build their virtual robot. Little did I know at the time this was actually a reasonable training ground for learning how to write embedded systems.&lt;br /&gt;&lt;br /&gt;Then, several years later after the PC was invented, &lt;a href="http://www.gamerz.net/c++robots/"&gt;Crobots&lt;/a&gt; was released, that opened up some more possibilities but robots were still limited to 1000 instructions. There were legions of budding developers and engineers at campuses around the world designing virtual battle-bots.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gamerz.net/c++robots/"&gt;C++robots&lt;/a&gt; broke that 1000 instruction barrier, 10 years later. I don't know much about the evolution of the Crobot genealogy because by the time C++robots came along, I had picked up this new language called Java.&lt;br /&gt;&lt;br /&gt;Since we just love re-inventing the &lt;del&gt;wheel&lt;/del&gt; robot in this industry, a decade after Crobots some Java devs at &lt;a href="http://www.ibm.com/developerworks/java/library/j-robocode/"&gt;IBM&lt;/a&gt; were helpint to create &lt;a href="http://robocode.sourceforge.net/"&gt;Robocode&lt;/a&gt; as a way to teach the Java programming language. This turned out to be extremely popular and even spawned international &lt;a href="http://user.cs.tu-berlin.de/%7Elulli/roboleague/"&gt;robot leagues&lt;/a&gt;. Robocode grew to be very sophisticated, very quickly, including technologies such as swarm intelligence, blackboards and even &lt;a href="http://jgap.sourceforge.net/doc/robocode/robocode.html"&gt;genetic algorithms&lt;/a&gt;. This is very similar to the types of technologies being embedded into software agents for tasks like remote monitoring and supply-chain optimization.&lt;br /&gt;&lt;br /&gt;In what appears to be more deja vu, Microsoft has recently released &lt;a href="http://www.robochamps.com/"&gt;RoboChamps&lt;/a&gt; featuring their Concurrency and Coordination Runtime plus the Decentralized Software Services. Why is this important, you ask? Well, most importantly, it's a way to learn about concurrency and distributed systems without killing anybody! Mistakes are safely made in the virtual arena. It also shows a degree of maturity in the .Net platform if it can now be used to solve some of the more difficult computing problems out there.&lt;br /&gt;&lt;br /&gt;Anyhow, back to the patterns. Aside from the obvious (4 virtual robot games), I delved into the bios of the authors of RoboCode and RoboChamps. The source of the patterns quickly emerged. All of the authors have substantial and impressive backgrounds in distributed systems, autonomic computing, software factories and a bit of AI. What are some of the major patterns here?&lt;br /&gt;&lt;br /&gt;1) Programming robots is a fun way to learn a new programming language&lt;br /&gt;2) Robotics is hard work compared to a web-app&lt;br /&gt;3) Robots have contracts and SLAs with their operating envioronments&lt;br /&gt;4) Robots are autonomous&lt;br /&gt;5) Robots can be employed in co-ordination with other robots to perform more complex functions (loosely-coupled, composition, aggregated processes)&lt;br /&gt;6) Robots can work in parallel (linear scalability)&lt;br /&gt;7) Robots are to a large degree, event-driven&lt;br /&gt;&lt;br /&gt;Hmm ... this smells a lot like a service in a SOA, doesn't it?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-1070152824363143554?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/1070152824363143554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=1070152824363143554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/1070152824363143554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/1070152824363143554'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/06/tired-of-same-old-crud.html' title='Tired of The Same Old CRUD?'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-1395878503684310075</id><published>2008-04-24T16:18:00.001-07:00</published><updated>2008-04-24T16:26:35.520-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='definition'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>"Getting" the Business Means "Get In" the Business</title><content type='html'>&lt;div&gt;It's always fun visiting the customers at their own workplaces. What takes  an hour to describe can instantly be seen; the proverbial picture that's worth a  thousand words. I was out at a customer site last week and noticed a very  depressing ritual that I have seen many times before. Here's how it goes  ...&lt;/div&gt; &lt;ol&gt;&lt;li&gt;The consultants are brought in to solve a problem;  &lt;/li&gt;&lt;li&gt;The business users are excited that, finally, something is going to get done  to fix the problem;  &lt;/li&gt;&lt;li&gt;The problem is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;discussed&lt;/span&gt;, a couple of quick suggestions and concepts are  described and the business users are enthusiastic about the possibilities;  &lt;/li&gt;&lt;li&gt;The business users ask, "So, what are the next steps?"  &lt;/li&gt;&lt;li&gt;The IT manager says, "Well, we need to gather the requirements."  &lt;/li&gt;&lt;li&gt;The business users physically roll their eyes and slump back in their seats  in anticipation of another snail-paced, IT boondoggle.&lt;/li&gt;&lt;/ol&gt; &lt;div&gt;Here is a very, very important lesson every technology consultant needs to  be mindful of: The biggest barrier to your success as a consultant is the  technology organization you are there to help/support/augment.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;This isn't about folks in IT not having ever learned how to read a balance  sheet or other such easily learned knowledge. This also isn't about  understanding the basics about how their employer actually makes money and who  the customers are. This &lt;em&gt;is&lt;/em&gt; about being able to put yourself into the  shoes of the people who actually use and need the products and services you  provide/build. This is remarkably easy to do.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;The key to "getting" the business is to "get in" the business. In this  particular case, I had spent a significant chunk of the day on the factory floor  observing how people actually accomplished their tasks, complete with  impediments, workarounds, frustrations and pride. No requirements document would  ever be able to describe the environment and conditions under which the tasks  needed to be completed. They would only describe what the user interface was  supposed to do. Hopefully I will return in a few weeks where I will resume gathering requirements from the factory floor.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;That's right, turn off your computer, put down your whiteboard markers, leave that sterile ivory tower and get onto the floor or out into the field!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-1395878503684310075?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/1395878503684310075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=1395878503684310075' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/1395878503684310075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/1395878503684310075'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/04/getting-business-means-get-in-business.html' title='&quot;Getting&quot; the Business Means &quot;Get In&quot; the Business'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-3559031517278624902</id><published>2008-04-02T13:58:00.000-07:00</published><updated>2008-04-02T14:59:10.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>Sale or Adoption</title><content type='html'>James McGovern talks about &lt;a href="http://duckdown.blogspot.com/2008/04/enterprise-architecture-have-you-failed.html"&gt;failing to sell&lt;/a&gt; A/agile in the enterprise. While close, I believe the sales process is not at fault, rather, it's that path to adoption. Also, along with everything else, it's all truly about alignment with the business goals and strategies.&lt;br /&gt;&lt;br /&gt;I've recently had the benefit of seeing the life-cycle of almost a dozen agile software development projects over the past year, some ranging through multi-year efforts. I have seen the victories, the failures and the in-between.  I started noting some contradictory behavior between customer needs and agile practices, especially the more dogmatic ones. However, I didn't have sufficient data to make any good correlations.&lt;br /&gt;&lt;br /&gt;One particular incident involved Test-Driven Development (TDD). In this case the dogma stated that TDD must be done. However, it was truly placing the delivery schedule in jeopardy. Moreover, the deliverables only needed to be good enough. Needless to say, a large rift developed dividing the dogmatics and the customer. Thankfully, the customer's needs prevailed and TDD was tossed and the product was barely delivered in time.  This is only one such incident but, clearly the whole concept wasn't working as advertised.&lt;br /&gt;&lt;br /&gt;A couple of weeks ago, I stumbled across this &lt;a href="http://www.master-systems.com/filecabinet/IEEELoyalOpp.pdf"&gt;paper about software process adoptions&lt;/a&gt;. 7 years ago, someone has already thought through this. Bringing back the TDD example, trying to apply a technique that emphasizes quality when the real strategy is innovation (where customers willingly trade quality for newness!) is completely counterproductive. That is, avoid prescriptive processes that require discipline when quality is not the business strategy. Clearly, no matter how hard we try to sell agile, we will fail. Why? There is no logical path for adoption.&lt;br /&gt;&lt;br /&gt;Don't sell agile!&lt;br /&gt;&lt;br /&gt;To quote a colleague, "Nobody buys Toyota trucks because of the TPS and lean manufacturing."&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-3559031517278624902?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/3559031517278624902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=3559031517278624902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3559031517278624902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3559031517278624902'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/04/sale-or-adoption.html' title='Sale or Adoption'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-5868089072367751423</id><published>2008-04-02T13:40:00.000-07:00</published><updated>2008-04-02T13:55:18.242-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><title type='text'>Technical Requirements</title><content type='html'>Simon Brown was kind enough to comment on my previous post and said,&lt;br /&gt;&lt;blockquote&gt;"I'm trying to tackle the other (easier?) problem of when technical people don't even think about NFRs. First things first, we need technical people to understand why NFRs are important."&lt;/blockquote&gt;There's a very simple way to get technical people to understand why technical requirements are important. They must be clearly and logically linked to delivering a functional requirement. Go one step further and simply remove the distinction between functional requirements and technical requirements by stating how a functional requirement must be delivered in terms of quality-of-service or a service level agreement. An example:&lt;br /&gt;&lt;br /&gt;"The customer must be able to securely submit the final order plus payment details and receive an acknowledgment via both email and a following web page in under 10 seconds."&lt;br /&gt;&lt;br /&gt;Separating technical and functional requirements makes it all too easy to make the former into an afterthought.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-5868089072367751423?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/5868089072367751423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=5868089072367751423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/5868089072367751423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/5868089072367751423'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/04/technical-requirements.html' title='Technical Requirements'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-101640417569918193</id><published>2008-03-21T09:00:00.000-07:00</published><updated>2008-03-21T09:19:02.361-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='definition'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='traceability'/><category scheme='http://www.blogger.com/atom/ns#' term='specification'/><title type='text'>Non-functional means it doesn't work!</title><content type='html'>Architects are usually quite &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;pre&lt;/span&gt;-occupied with ensuring that architectural guidelines and requirements are adhered to during development yet, always struggle to justify them. One of the many attempts made by architects to provide these guidelines is the software architecture document. &lt;a href="http://www.codingthearchitecture.com/2008/03/18/software_architecture_document_guidelines.html"&gt;Simon Brown&lt;/a&gt; blogs about &lt;a href="http://www.codingthearchitecture.com/files/software-architecture-document-guidelines-v0.1.pdf"&gt;another attempt that is probably doomed&lt;/a&gt;. Just looking at the document structure, the non-functional view is 4-5 times larger than the functional view.&lt;br /&gt;&lt;br /&gt;What does the customer think non-functional requirements mean? No, it's not just semantics. I vividly recall an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;RFP&lt;/span&gt;-response drafting session I was a part of, many years ago. This was the first time I had participated in a fairly large team responding to a multi-billion dollar opportunity. I had finished up one sub-section, and handed it over to my boss. Without raising his head, he took the doc and with his red pen, crossed out every single instance of "non-functional" and handed back the draft to me and said, "The customer doesn't want to pay for something that doesn't work."&lt;br /&gt;&lt;br /&gt;Of course, in geek-speak, functional and non-&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;functional&lt;/span&gt; have a very specific meaning. In standard, workaday &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;English&lt;/span&gt;, functional means something works and non-functional means something doesn't work or is broken. Why then, do we architects pay so much attention to designing software that doesn't work?&lt;br /&gt;&lt;br /&gt;If we want all of those architectural "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ilities&lt;/span&gt;" to be accounted for and truly guide the design/construction of systems, we need to immediately start doing 2 things:&lt;br /&gt;&lt;br /&gt;1) Start calling them technical requirements and/or constraints.&lt;br /&gt;2) Directly map them to functional requirements by defining the operational characteristics the customer wants each feature to provide.&lt;br /&gt;&lt;br /&gt;Every, single functional requirement should explicitly be able to describe just how much of each "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ility&lt;/span&gt;" needs to be built, thereby preventing over/under-engineering. This embeds the success measurement criteria for every, single feature!&lt;br /&gt;&lt;br /&gt;Maybe we need to start talking about measurement driven requirements (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MDR&lt;/span&gt;)?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-101640417569918193?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/101640417569918193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=101640417569918193' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/101640417569918193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/101640417569918193'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/01/non-functional-means-it-doesnt-work.html' title='Non-functional means it doesn&apos;t work!'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-6627119900988507763</id><published>2008-03-14T09:31:00.000-07:00</published><updated>2008-03-14T09:41:24.112-07:00</updated><title type='text'>SOA Is Not Enterprise Architecture</title><content type='html'>Yet one more person is writing about &lt;a href="http://blogs.zdnet.com/service-oriented/?p=1054"&gt;people talking/writing about the equivalence of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SOA&lt;/span&gt; and enterprise architecture&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SOA&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;one&lt;/span&gt; of many possible implementations of an Enterprise Architecture. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SOA&lt;/span&gt; is not enterprise architecture. More often than not, a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SOA&lt;/span&gt; will need to co-exist with other architectures in a more comprehensive enterprise architecture.&lt;br /&gt;&lt;br /&gt;Sorry boys and girls, EA just isn't that easy.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-6627119900988507763?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/6627119900988507763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=6627119900988507763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/6627119900988507763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/6627119900988507763'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/03/soa-is-not-enterprise-architecture.html' title='SOA Is Not Enterprise Architecture'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-3401818966397425024</id><published>2008-01-22T14:08:00.000-08:00</published><updated>2008-03-11T15:13:31.232-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='bduf'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><title type='text'>No BDUF != NoDUF</title><content type='html'>Continuing with the theme of &lt;a href="http://opensourcecto.blogspot.com/2008/01/architecture-in-agile-organization.html"&gt;architecture in an agile organization&lt;/a&gt;, one of the most abused principles in agile software development is that of avoiding Big Design Up Front (BDUF).&lt;br /&gt;&lt;br /&gt;No BDUF does not mean NoDUF!&lt;br /&gt;&lt;br /&gt;NoBDUF != NoDUF&lt;br /&gt;&lt;br /&gt;I submit that every single one of us is guilty of designing a solution to a problem before the person is finished describing what the problem is! Anybody with a modicum of imagination does design up front (DUF). In my experience, the amount of ceremony required for DUF is directly proportional to the cost-to-fix/cost-of-failure. This is pretty obvious in the construction of physical objects, and the debt is tangible. I don't think it's unreasonable to apply the same rule of thumb to software or virtual objects.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-3401818966397425024?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/3401818966397425024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=3401818966397425024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3401818966397425024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3401818966397425024'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/01/no-bduf-noduf.html' title='No BDUF != NoDUF'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-5957916826441218156</id><published>2008-01-18T14:26:00.000-08:00</published><updated>2008-01-22T14:08:38.141-08:00</updated><title type='text'>Architecture In An Agile Organization</title><content type='html'>Last night, my colleague &lt;a href="http://chrissterling.gettingagile.com/"&gt;Chris Sterling&lt;/a&gt;  gave a presentation about Architecture In An Agile Organization. He raised several points I want to develop over the next few posts.&lt;br /&gt;&lt;br /&gt;One of the most abused principles in agile software development is that of avoiding Big Design Up Front (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BDUF&lt;/span&gt;). No &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;BDUF&lt;/span&gt; does not mean &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;NoDUF&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Architects are usually quite &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;pre&lt;/span&gt;-occupied with ensuring that architectural guidelines and requirements are adhered to during development yet, always struggle to justify them. What does the customer think &lt;span style="font-style: italic;"&gt;non-functional&lt;/span&gt; requirements mean? No, it's not just semantics.&lt;br /&gt;&lt;br /&gt;Architecture is not all about technology. I'm going to start calling this the Paint Yourself Into The Corner pattern. You read it here, first.&lt;br /&gt;&lt;br /&gt;Requirements are not specifications. Seriously, there is a difference!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-5957916826441218156?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://chrissterling.gettingagile.com' title='Architecture In An Agile Organization'/><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/5957916826441218156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=5957916826441218156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/5957916826441218156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/5957916826441218156'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/01/architecture-in-agile-organization.html' title='Architecture In An Agile Organization'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-3586985683255324985</id><published>2008-01-16T13:48:00.000-08:00</published><updated>2008-01-16T13:57:48.254-08:00</updated><title type='text'>Re-cycle the box</title><content type='html'>I was in a meeting with a client a while back along with several other consultants from different companies. Once again, the client was having a problem with their databases (of course!). They had several of each: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SQL&lt;/span&gt; Server, DB2 and Oracle.&lt;br /&gt;&lt;br /&gt;I'm rapidly forming the opinion that any consultant who concentrates on Oracle is nothing more than a corporate shill for Oracle. It seems that almost every solution they have to a database problem is to add another database, thereby increasing license fees for the client. Is there some grand, kick-back scheme or something that Oracle consultants get looped into? At least the people representing IBM and Microsoft product lines suggested investigating other solutions ranging from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ETL&lt;/span&gt; software to messaging to web services. The Oracle guys went right for the throat and declared that yet another intermediate "consolidation" database instance was the answer. What a crock.&lt;br /&gt;&lt;br /&gt;I looked across the table at the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CIO&lt;/span&gt; and said, "If you are truly serious about solving your integration problem, get rid of one of your database platforms. Let them all know that the two who work together best get to stay." I also reminded him that the company owned all the tools they needed to solve the problem so, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;capital&lt;/span&gt; costs should be 0. I'm not sure if he is going to follow that strategy over the long term but, I certainly know that my suggestion kick-started some very, very creative and resourceful thinking amongst the other 3 groups of consultants!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-3586985683255324985?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/3586985683255324985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=3586985683255324985' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3586985683255324985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3586985683255324985'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2008/01/re-cycle-box.html' title='Re-cycle the box'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-3455385529980467056</id><published>2007-10-05T11:01:00.000-07:00</published><updated>2007-10-05T11:07:05.924-07:00</updated><title type='text'>Which Conference?</title><content type='html'>I'm in the process of creating my budget for 2008 and I was hoping to solicit some advice and opinions from my readers. I essentially have 2 questions:&lt;br /&gt;&lt;br /&gt;1) Aside from the obvious opportunities for socializing, is attending an Enterprise Architecture conference valuable?&lt;br /&gt;&lt;br /&gt;2) If it is valuable, which one to attend?&lt;br /&gt;&lt;br /&gt;What I'm looking for is a conference with good case studies, in-the-trenches anecdotes and enough visionaries to give me some idea of what I'll be up against over the next 5 years. A good balance of business and technology would also be good.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-3455385529980467056?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/3455385529980467056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=3455385529980467056' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3455385529980467056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/3455385529980467056'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2007/10/which-conference.html' title='Which Conference?'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-7748007551805922254</id><published>2007-06-20T13:35:00.000-07:00</published><updated>2007-06-20T14:18:25.554-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='transparency'/><title type='text'>Wasn't There A Commercial About This?</title><content type='html'>As a customer, I was so impressed with the quality of their work, I joined their &lt;a href="http://www.solutionsiq.com/"&gt;company&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Departing my previous employer certainly wasn't an act of prescience, since the &lt;a href="http://today.reuters.com/news/articleinvesting.aspx?type=bondsNews&amp;amp;storyID=2007-06-19T193203Z_01_N19181675_RTRIDST_0_EXPEDIA-RATING-S-P.XML"&gt;undercurrents of certain trends&lt;/a&gt; always rise to the top in public companies, it's just that the public is the last to know. From my own perspective, my work there was just one more experience that further convinces me that the practice of enterprise architecture needs to be completely divorced from the IT function in order to be effective. Moreover, enterprise architecture must be seamlessly integrated with a mature, portfolio management practice in order to provide the business stakeholders with the degree of insight and transparency it needs in order to make timely and accurate business decisions.&lt;br /&gt;&lt;br /&gt;Anyhow, I now have the opportunity to not only help make this enterprise agile through architecture but, I can help others through leading by example.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-7748007551805922254?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/7748007551805922254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=7748007551805922254' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7748007551805922254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7748007551805922254'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2007/06/wasnt-there-commercial-about-this.html' title='Wasn&apos;t There A Commercial About This?'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-2392529728734494979</id><published>2007-05-24T13:53:00.000-07:00</published><updated>2007-05-24T14:14:00.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mbifm'/><title type='text'>Un-Open Open-Door Policy</title><content type='html'>Have you ever noticed how corporate-speak can completely rot a manager's mind when they start to believe their own words? The &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;oxymorons&lt;/span&gt; and contradictions just start to grow as fast as kudzu. One of my colleagues recently met with his new manager and hastily scribbled down the following quote:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"I have an open-door policy ... but just because my door is open doesn't mean it's OK to come in and talk to me. Schedule an appointment, first."&lt;/blockquote&gt;Of course, this same manager's calendar is always blacked out as "busy" throughout the whole day. It's like the fellow just switches on the "auto-cliche" mode when he walks into the door in the morning. Worse yet, he only has 6 direct reports and he has aspirations of injecting some agility into the SDLC. Clearly a classic example of management-by-in-flight-magazine (mbifm) or &lt;a href="http://www.slowleadership.org/2007/05/what-would-hamburger-manager-do_11.html"&gt;hamburger management&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-2392529728734494979?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/2392529728734494979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=2392529728734494979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/2392529728734494979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/2392529728734494979'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2007/05/un-open-open-door-policy.html' title='Un-Open Open-Door Policy'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-1932466288861071713</id><published>2007-05-21T10:35:00.000-07:00</published><updated>2007-05-21T11:58:54.230-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic languages'/><category scheme='http://www.blogger.com/atom/ns#' term='governance'/><title type='text'>Enterprise-Speed Blogging</title><content type='html'>About 1.5 years ago, a tiny group of &lt;del&gt;dissidents&lt;/del&gt; visionaries (the victorious get to re-write history) established a stealth wiki and also started using it's blogging capabilities. This was only the first. Exactly a half-dozen of us have been continuously blogging, internally. Apparently it was a shock to some internal auditors, lawyers, HR and senior execs when they had the &lt;del&gt;original&lt;/del&gt; idea of setting up an internal, corporate blog, that one already existed. To their credit, they didn't shut down the stealth blogs.&lt;br /&gt;&lt;br /&gt;Anyhow, the point of the post is that it took the &lt;span style="font-style: italic;"&gt;enterprise&lt;/span&gt; about 1 year from idea to roll-out. Aside from the obvious conclusion that most enterprises are as agile as a cow on skates, the fact that it took people in the enterprise a year to overcome FUD, find/allocate resources and devise a management scheme for a non-revenue-generating internal resource. All this for a simple piece of blogging software that I'm sure any of my readers could have set up and running in an afternoon. That's all the time it took us to set up the original wiki and blog, too. Getting the installation officially blessed took the other 364.5 days.&lt;br /&gt;&lt;br /&gt;Proponents of open-source software, Ruby and other dynamic languages, methodologies, etc. need to take into account it takes time to overcome FUD even in light of working proof.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-1932466288861071713?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/1932466288861071713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=1932466288861071713' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/1932466288861071713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/1932466288861071713'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2007/05/enterprise-speed-blogging.html' title='Enterprise-Speed Blogging'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37152737.post-7036638227893789646</id><published>2007-05-18T11:01:00.000-07:00</published><updated>2007-05-18T11:06:39.360-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boa'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Architectural Role &amp; Career Progression</title><content type='html'>Simon Brown has started an &lt;a href="http://www.codingthearchitecture.com/2007/05/18/is_enterprise_architecture_the_next_step.html"&gt;interesting discussion&lt;/a&gt; about career paths for architects. To code or not to code is one of the thoughts, as is the timing of architecture transitioning from being technology-oriented to business-oriented. Business-Oriented Architecture (BOA), anyone?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-3456578944330158";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel = "";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37152737-7036638227893789646?l=opensourcecto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourcecto.blogspot.com/feeds/7036638227893789646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37152737&amp;postID=7036638227893789646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7036638227893789646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37152737/posts/default/7036638227893789646'/><link rel='alternate' type='text/html' href='http://opensourcecto.blogspot.com/2007/05/architectural-role-career-progression.html' title='Architectural Role &amp; Career Progression'/><author><name>wpbarr</name><uri>http://www.blogger.com/profile/07235180122915871250</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07328729371585488386'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>