<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - software architecture document tag</title>
  <link>http://www.codingthearchitecture.com/tags/software architecture document/</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>Documenting your software architecture - why and how?</title>
    <link>http://www.codingthearchitecture.com/2009/10/19/documenting_your_software_architecture_why_and_how.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;a href=&#034;http://www.codingthearchitecture.com/presentations/sa2009-documenting-your-software-architecture-why-and-how/&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/sa2009-documenting-your-software-architecture-why-and-how.png&#034; alt=&#034;Documenting your software architecture - why and how?&#034; border=&#034;0&#034; align=&#034;right&#034; style=&#034;padding: 0px 0px 8px 8px&#034; /&gt;&lt;/a&gt; Another of the sessions that I delivered at the recent &lt;a href=&#034;http://www.software-architect.co.uk/&#034;&gt;Software Architect 2009 conference&lt;/a&gt; was entitled &#034;Documenting your software architecture - why and how?&#034; and covered some of the drivers for creating software architecture documentation along with some guidelines on how to do this. As I said in the session, any software architecture documentation should be &lt;i&gt;complementary to the code&lt;/i&gt; and &lt;i&gt;describe what the code itself doesn&#039;t&lt;/i&gt;. For example, it&#039;s really hard to identify things like architectural principles, operational aspects and how security works from just the code itself.
&lt;/p&gt;

&lt;p&gt;
As with &lt;a href=&#034;http://www.codingthearchitecture.com/2009/10/15/broadening_the_t.html&#034;&gt;Broadening the T&lt;/a&gt;, I&#039;m going to put one or more essays together that cover the content in more detail. In the meantime, you can &lt;a href=&#034;http://www.codingthearchitecture.com/presentations/sa2009-documenting-your-software-architecture-why-and-how/&#034;&gt;view or download the slides&lt;/a&gt;.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2009/10/19/documenting_your_software_architecture_why_and_how.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2009/10/19/documenting_your_software_architecture_why_and_how.html</guid>
    <pubDate>Mon, 19 Oct 2009 12:39:57 GMT</pubDate>
  </item>
  
  <item>
    <title>How big is your software architecture document?</title>
    <link>http://www.codingthearchitecture.com/2008/04/16/how_big_is_your_software_architecture_document.html</link>
    
      
        <description>
          &lt;p&gt;
I&#039;m going to write-up my notes from the last London user group (&lt;a href=&#034;http://www.codingthearchitecture.com/2008/03/26/london_user_group_april_2008.html&#034;&gt;Sharing Architectures&lt;/a&gt;) later in the week, but I wanted to pose a question to you that I asked at the user group. How big is your software architecture document for your current project/system and what sort of information does it contain? Here&#039;s a graph summarising the size responses from the user group (small turnout this month).
&lt;/p&gt;

&lt;div align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/size-of-sad.png&#034; alt=&#034;Size of software architecture documents&#034; /&gt;
&lt;/div&gt;

&lt;p&gt;
As you can see, most people&#039;s software architecture documents are ~50 pages and above, which my experience suggests isn&#039;t uncommon. How does this compare to yours and does anybody read these documents?
&lt;/p&gt;

        </description>
      
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/04/16/how_big_is_your_software_architecture_document.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/04/16/how_big_is_your_software_architecture_document.html</guid>
    <pubDate>Wed, 16 Apr 2008 20:30:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Is UML on the way out?</title>
    <link>http://www.codingthearchitecture.com/2008/04/03/is_uml_on_the_way_out.html</link>
    
      
        <description>
          &lt;p&gt;
One of the presenters at QCon  (I think it was John Davies) asked the audience whether they used UML 2.0 and only a couple of people raised their hands. I wasn&#039;t one of them - I briefly looked at UML 2.0 a while back but I didn&#039;t feel compelled enough to use it. This got me thinking, how widespread is the use of UML nowadays?
&lt;/p&gt;

&lt;p&gt;
From my own perspective, here&#039;s where I tend to use UML within the context of a bespoke software project.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#034;http://www.ibm.com/developerworks/rational/library/769.html#N1006A&#034;&gt;Use case&lt;/a&gt; diagram : A high level view of the system functionality and scope.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.ibm.com/developerworks/rational/library/769.html#N1010E&#034;&gt;Activity&lt;/a&gt; diagrams : A high level view of the business process that is being realised by the software. This is useful for showing parallelism.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.ibm.com/developerworks/rational/library/769.html#N10086&#034;&gt;Class&lt;/a&gt; and &lt;a href=&#034;http://www.ibm.com/developerworks/rational/library/769.html#N100C1&#034;&gt;sequence &lt;/a&gt; diagrams : Information about architectural patterns and blueprints (e.g. describing a common implementation pattern). These are typically used by the development team.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#034;http://www.ibm.com/developerworks/rational/library/769.html#N10128&#034;&gt;Component&lt;/a&gt; and &lt;a href=&#034;http://www.ibm.com/developerworks/rational/library/769.html#N10146&#034;&gt;deployment &lt;/a&gt; diagrams : Details about deployable components and how instances of those components will be/are deployed on pieces of hardware.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
As I&#039;ve mentioned before, I tend to go with a &lt;a href=&#034;http://www.codingthearchitecture.com/2008/01/18/how_much_software_design_detail_in_your_architecture_document.html&#034;&gt;just enough&lt;/a&gt; approach to the &lt;a href=&#034;http://www.codingthearchitecture.com/2008/03/18/software_architecture_document_guidelines.html&#034;&gt;software architecture document&lt;/a&gt;, but I do definitely find that UML is useful because you don&#039;t have to think about the notation. Having said that, I do use Visio-style block diagrams for representing things like the logical and physical/infrastructure architecture (you can see a simplified version of such a diagram on &lt;a href=&#034;http://www.codingthearchitecture.com/files/presentations/20080304-an-architecture-case-study.pdf&#034;&gt;page 3 in this presentation&lt;/a&gt;). I do this for two reasons. First of all, I don&#039;t think that UML provides an easy to understand notation for this sort of thing and second, these high-level architecture diagrams are typically distributed to a wider audience, some of who aren&#039;t technical and don&#039;t understand UML.
&lt;/p&gt;

&lt;p&gt;
So then, is UML on the way out? I&#039;d be interested in your thoughts on the following.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What notation do you use for your architecture and design diagrams?&lt;/li&gt;
&lt;li&gt;Is a standard diagramming notation important to you?&lt;/li&gt;
&lt;li&gt;How does your audience influence how you create diagrams?&lt;/li&gt;
&lt;li&gt;If you do use UML, &lt;a href=&#034;http://www.codingthearchitecture.com/2007/07/20/whats_your_uml_tool_of_choice.html&#034;&gt;what&#039;s your UML tool of choice?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/04/03/is_uml_on_the_way_out.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/04/03/is_uml_on_the_way_out.html</guid>
    <pubDate>Thu, 03 Apr 2008 19:32:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Software Architecture Document Guidelines</title>
    <link>http://www.codingthearchitecture.com/2008/03/18/software_architecture_document_guidelines.html</link>
    
      
        <description>
          &lt;p&gt;
&lt;b&gt;Update, 27th October 2009:&lt;/b&gt; Please see &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/software-architecture-document-guidelines.html&#034;&gt;Software architecture document guidelines&lt;/a&gt; for an updated version of the guidelines.
&lt;/p&gt;

&lt;p&gt;
Regardless of the development process that you use, a description of the software architecture can be essential for any project, big or small. If software architecture is about the structure of a system and is the vehicle for satisfying the requirements, then the software architecture document is a written description of this. My simplified view of the content included in a software architecture document is :
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An outline description of the software architecture, including major software components and their interactions.&lt;/li&gt;
&lt;li&gt;A common understanding of the architectural principles used during design and implementation.&lt;/li&gt;
&lt;li&gt;A description of the hardware and software platforms on which the system is built and deployed.&lt;/li&gt;
&lt;li&gt;Explicit justification of how the architecture meets the non-functional requirements.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
During our &lt;a href=&#034;http://www.codingthearchitecture.com/2008/02/29/architecture_tutorial_qcon_london_2008.html&#034;&gt;tutorial last week at QCon&lt;/a&gt;, we asked attendees to define the software architecture for a small software system and provided a handout containing some guidelines. Since this may prove useful for other people, we&#039;re making &lt;a href=&#034;http://www.codingthearchitecture.com/files/software-architecture-document-guidelines-v0.1.pdf&#034;&gt;Software Architecture Document Guidelines v0.1&lt;/a&gt; available for download.
&lt;/p&gt;

&lt;p&gt;
It&#039;s worth remembering that the software architecture doesn&#039;t have to be a huge weighty tome and it doesn&#039;t even need to be a traditional Word document. What&#039;s important is that you capture the important architectural decisions and principles. This set of guidelines includes suggestions for what you might want to include. Just as a final note, this set of guidelines is a work in progress and we&#039;ll be iterating it over the coming months. Any feedback is welcome.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/03/18/software_architecture_document_guidelines.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/03/18/software_architecture_document_guidelines.html</guid>
    <pubDate>Tue, 18 Mar 2008 15:36:00 GMT</pubDate>
  </item>
  
  <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>
  
  </channel>
</rss>

