{"id":354,"date":"2008-01-18T23:23:41","date_gmt":"2008-01-19T04:23:41","guid":{"rendered":"http:\/\/www.biske.com\/blog\/?p=354"},"modified":"2008-01-19T13:27:07","modified_gmt":"2008-01-19T18:27:07","slug":"what-is-reference-architecture","status":"publish","type":"post","link":"http:\/\/www.biske.com\/blog\/?p=354","title":{"rendered":"What is Reference Architecture?"},"content":{"rendered":"<p>A <a href=\"http:\/\/www.biske.com\/blog\/?p=351\">previous post<\/a> discussed how no two organizations seem to define the role of the architect the same way.  It just occurred to me that the same thing holds true for another common deliverable of the enterprise architect: the reference architecture.  I&#8217;ve had the opportunity to work on a few reference architectures with a few different companies and I can certainly say that no two were the same, although there was certainly commonality between them.<\/p>\n<p>There are at least two questions that have come up in multiple efforts.  The first is whether or not a reference architecture should recommend specific technologies (e.g. &#8220;if you meet these conditions, you should use vendor product MagicFooBar&#8221;) or only describe the capabilities required, leaving implementations teams to choose a technology that fits (e.g. &#8220;the services tier must be exposed using XML-based interfaces&#8221;).  The second question is one of depth.  How much guidance should a reference architecture give?  Should it go so far as to place constraints on how individual classes are named, or how the file hierarchy is set up in the source code repository?  Or should it remain at a level somewhere above the design of individual classes?  It may seem simple at first glance, but I can speak from experience that once you start providing some guidance, it&#8217;s very easy to get pulled into the depths.<\/p>\n<p>What&#8217;s the right answer to these questions?  I don&#8217;t think there is one.  Why?  Because reference architecture is about guidance, and the guidance needed in any one particular organization is going to be dependent on the skills of the staff, the organizational structure, the technologies involved, the problems being solved, etc.  So what do you do?  In my opinion, a good course of action is to focus on delivering guidance that is singular in purpose, at least within a single deliverable.  What does this mean?  It means that you should avoid trying to answer all of the questions within a single (and likely very large) document.  Rather, each deliverable should start with one simple question, and focus on answering that question clearly.  For example, rather than having one big reference architecture that attempts to cover all possible business solutions which could easily include web UIs, desktop UIs, mobile UIs, workflows, services, automated processes, applications portals, content portals, collaboration portals, and much more, consider having a separate document for each one, forming essentially a hierarchy of documents.  The earlier documents discusses things more broadly, intending to answer the question of what collection of technologies are needed for a solution, but not necessarily guidance on the appropriate way to use that technology.  For that, once the decision to use a particular technology has been made, a separate document goes into added depth, and the process continues.  The reference material will eventually work its way down to development and operational guidelines (or hook up with those that may already exist).<\/p>\n<p>Of course, all of this is easier said than done.  It&#8217;s not easy to determine the &#8220;right&#8221; hierarchy up front.  Again, the litmus test to apply is whether the document has clarity and singularity in purpose.  If you find yourself with a document that starts getting onerous to use, consider breaking it apart.<\/p>\n<p>What are others thoughts on this?  As always, this is simply my opinion (after all, this is my blog, so that&#8217;s what you&#8217;re going to get), but I also am always interested in the thoughts of others and striving for a more collective wisdom.  What has been successful for you when trying to provide reference guidance to teams?  What hasn&#8217;t been successful?  Use comments or trackback.<\/p>\n<p><b>Update:<\/b> I was just checking my feeds and there were two others blogs that discussed reference architectures:  <a href=\"http:\/\/www.architectureandchange.com\/2007\/12\/29\/the-importance-of-reference-architecture\/\">this one from George Ambler<\/a> and <a href=\"http:\/\/www.codingthearchitecture.com\/2008\/01\/18\/how_much_software_design_detail_in_your_architecture_document.html\">this one from Simon Brown<\/a>.  Enjoy.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A previous post discussed how no two organizations seem to define the role of the architect the same way. It just occurred to me that the same thing holds true for another common deliverable of the enterprise architect: the reference architecture. I&#8217;ve had the opportunity to work on a few reference architectures with a few [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25,4,6,8],"tags":[],"class_list":["post-354","post","type-post","status-publish","format-standard","hentry","category-communication","category-enterprise-architecture","category-governance","category-it"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=354"}],"version-history":[{"count":0,"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/354\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=354"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.biske.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}