<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - patterns tag</title>
  <link>http://www.codingthearchitecture.com/tags/patterns/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 21 May 2012 09:41:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>How much software design detail in your architecture document?</title>
    <link>http://www.codingthearchitecture.com/2008/01/18/how_much_software_design_detail_in_your_architecture_document.html</link>
    
      
        <description>
          &lt;p&gt;
I led an architecture discussion at a major bank last week and one of the questions that came up was, &#034;how much detail do you put in your software architecture document?&#034;. Specifically, the question was focussed on the software design aspects of the architecture. Let&#039;s say that you&#039;re building a web application and you&#039;ve decided that your architecture document is going to contain a high level view of the technologies and components that will be used for the implementation. Let&#039;s also say that you&#039;ve decided to use UML to describe it.
&lt;/p&gt;

&lt;p&gt;
So then, how much detail do you include? My take on this is &#034;just enough&#034;. I don&#039;t subscribe to the theory that the architecture document needs to include everything right down to the very lowest level of detail. I think too much time is wasted getting down to that level and, in doing so, you increase the likelihood and speed at which the information becomes out of date. Keeping UML diagrams up to date can be a particularly time consuming exercise if you&#039;ve modelled every aspect of your software.
&lt;/p&gt;

&lt;p&gt;
Instead, what I do is ensure that there&#039;s enough information to document the high level concepts and enough guidance to support the development team. As for the UML diagrams, I use them to illustrate concepts and only include the essential information. This might sound a little wooly, so let me put it like this. If you ask somebody to implement some functionality on your webapp and they ask you the following sort of questions, you probably don&#039;t have enough detail.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What technology should I use to implement this?&lt;/li&gt;
&lt;li&gt;Which framework are we using?&lt;/li&gt;
&lt;li&gt;How do you want me to implement logging?&lt;/li&gt;
&lt;li&gt;How should I get data from the database?&lt;/li&gt;
&lt;li&gt;Why are we using X instead of Y?&lt;/li&gt;
&lt;li&gt;How is component X supposed to call component Y?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I&#039;m not saying that you should just write the architecture document and then &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/14/the_hand_off.html&#034;&gt;hand-off&lt;/a&gt; the subsequent work to the rest of the team, but there should be enough guidance in the document to answer all of the frequently asked questions. Think patterns, principles and examples rather than detailed blueprints and precisely detailed models. 
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/01/18/how_much_software_design_detail_in_your_architecture_document.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/01/18/how_much_software_design_detail_in_your_architecture_document.html</guid>
    <pubDate>Fri, 18 Jan 2008 12:14:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Patterns are about experience...</title>
    <link>http://www.codingthearchitecture.com/2006/01/31/patterns_are_about_experience.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;a href=&#034;http://rearchitect.wordpress.com/2006/01/31/why-software-patterns-are-important/&#034;&gt;Why software patterns are important&lt;/a&gt; is a good post about why patterns are important within the context of being an architect.
&lt;/p&gt;

&lt;blockquote&gt;
In general term Patterns can help by trying to identify common solutions to recurring problems. The interesting thing of pattern is that they are captured by &lt;b&gt;experience&lt;/b&gt;. They aren&#039;t designed upfront in a speculative way. They emerge from the field, from real software that works, from real teams.
&lt;br /&gt;&lt;br /&gt;
...
&lt;br /&gt;&lt;br /&gt;
Pattern reading is an important activity for every software architect which hasn&#039;t a valuable experience. I think that pattern studying is an important activity in any computer science curricula. Students can learn a lot about software design and architecture without waiting to hurt in the war&#039;s field of a software development job.
&lt;/blockquote&gt;

&lt;p&gt;
Essentially, this is saying that while you can&#039;t gain real-world experience from reading, you *can* gain insights into what works and what doesn&#039;t. This is an important part of an architect&#039;s role and helps you make those critical decisions that &lt;a href=&#034;http://www.thepragmaticarchitect.com/2006/01/24/scaling_is_much_more_than_software.html&#034;&gt;balance the functional and the non-functional requirements&lt;/a&gt;.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is the the role of a software architect?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/01/31/patterns_are_about_experience.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/01/31/patterns_are_about_experience.html</guid>
    <pubDate>Tue, 31 Jan 2006 17:02:15 GMT</pubDate>
  </item>
  
  </channel>
</rss>

