<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - architecture tag</title>
  <link>http://www.codingthearchitecture.com/tags/architecture/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 09 Jan 2012 09:02:08 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>How much architecture is enough?</title>
    <link>http://www.codingthearchitecture.com/2008/09/08/how_much_architecture_is_enough.html</link>
    
      
        <description>
          &lt;p&gt;
Thanks to everybody that came along to our &#034;in *our* brains&#034; session last week where we tried to answer the question of &lt;a href=&#034;http://www.codingthearchitecture.com/2008/09/01/how_much_architecture_is_enough.html&#034;&gt;how much architecture is enough&lt;/a&gt;. The event was part of Skills Matter&#039;s &lt;a href=&#034;http://skillsmatter.com/event/agile-scrum/london-agile-month&#034;&gt;London Agile Month&lt;/a&gt; and it was a great turnout where we had some interesting disucssion ranging from what agile is all about through to how architecture tasks should be tackled during an agile project.
&lt;/p&gt;

&lt;p&gt;
The set of slides that I used to set the scene can be downloaded from &lt;a href=&#034;http://static.codingthearchitecture.com/presentations/20080903-how-much-architecture-is-enough.pdf&#034;&gt;here&lt;/a&gt; (PDF, 0.9MB) and the video from the session can be watched from &lt;a href=&#034;http://skillsmatter.com/podcast/agile-scrum/enterprise-architects&#034;&gt;here&lt;/a&gt; (this includes the presentation and the discussion). Also, Alberto Brandolini has a really good &lt;a href=&#034;http://ziobrando.blogspot.com/2008/09/how-much-architecture-is-enough.html&#034;&gt;blog entry&lt;/a&gt;, which covers the session along with some of his own thoughts that followed. See you next month!
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/09/08/how_much_architecture_is_enough.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/09/08/how_much_architecture_is_enough.html</guid>
    <pubDate>Mon, 08 Sep 2008 16:01:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Discussion from the May 2008 user group</title>
    <link>http://www.codingthearchitecture.com/2008/08/30/discussion_from_the_may_2008_user_group.html</link>
    
      
        <description>
          &lt;p&gt;
Although this happened a few months ago, we recorded the discussion that followed our London user group where Moudud Ahmed talked about &lt;a href=&#034;http://www.codingthearchitecture.com/2008/04/25/london_user_group_may_2008.html&#034;&gt;building a high volume, low latency system in Java&lt;/a&gt;. Here are some of the topics that we talked about.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance and scalability.&lt;/li&gt;
&lt;li&gt;Measuring latency.&lt;/li&gt;
&lt;li&gt;Domain-driven design.&lt;/li&gt;
&lt;li&gt;BEA&#039;s real-time Java platform.&lt;/li&gt;
&lt;li&gt;Writing applications with large heap sizes that can survive not doing garbage collection during the working day.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The audio levels are very low on the recording, but we think that the interesting discussion was worth rescuing and publishing. You can grab the &lt;a href=&#034;http://static.codingthearchitecture.com/podcasts/londonusergroup-may2008.mp3&#034;&gt;discussion from here (mp3 format)&lt;/a&gt; ... just don&#039;t listen on a tube train! If you missed the user group, a &lt;a href=&#034;http://skillsmatter.com/podcast/java-jee/coding-the-architecture-user-group&#034;&gt;streaming video of the presentation&lt;/a&gt; is also available.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/08/30/discussion_from_the_may_2008_user_group.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/08/30/discussion_from_the_may_2008_user_group.html</guid>
    <pubDate>Sat, 30 Aug 2008 06:57:27 GMT</pubDate>
  </item>
  
  <item>
    <title>Mind the gap</title>
    <link>http://www.codingthearchitecture.com/2008/05/02/mind_the_gap.html</link>
    
      
        <description>
          &lt;p&gt;
Our industry has a love/hate relationship with the software architect role, with many organisations dismissing it because of
their negative experiences of architects that dictate from &#034;ivory towers&#034; and aren&#039;t engaged
with the actual task of building working software. This reputation is damaging the IT
industry and inhibiting project success. Things need to change.
This essay looks at the gap between software developers and software architects, offering
some suggestions on how to reduce this gap and ensure projects are driven to a successful conclusion.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/mind-the-gap.html&#034;&gt;Read the full essay&lt;/a&gt; in &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/index.html&#034;&gt;our book&lt;/a&gt;.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is the the role of a software architect?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/05/02/mind_the_gap.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/05/02/mind_the_gap.html</guid>
    <pubDate>Fri, 02 May 2008 10:58:03 GMT</pubDate>
  </item>
  
  <item>
    <title>What is architecture?</title>
    <link>http://www.codingthearchitecture.com/2008/05/02/what_is_architecture.html</link>
    
      
        <description>
          &lt;p&gt;
Architecture is a widely-used term within software development yet is very hard to define rigorously. Indeed, it changes meaning from domain to domain, company to company, project to project and even from employee to employee.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/what-is-architecture.html&#034;&gt;Read the full essay&lt;/a&gt; in &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/index.html&#034;&gt;our book&lt;/a&gt;.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/05/02/what_is_architecture.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/05/02/what_is_architecture.html</guid>
    <pubDate>Fri, 02 May 2008 10:53:54 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>London User Group - March 2008</title>
    <link>http://www.codingthearchitecture.com/2008/02/21/london_user_group_march_2008.html</link>
    
      
        <description>
          &lt;p&gt;
Here are the details of the March &lt;a href=&#034;http://www.codingthearchitecture.com/pages/londonusergroup.html&#034;&gt;Coding the Architecture London User Group&lt;/a&gt;.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Title&lt;/b&gt; : An architecture case study&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Summary&lt;/b&gt; : This session will present a case study of a small tactical 
software system, which was deployed into production in just two months 
from the initial requirements capture. We&#039;ll be looking at various 
aspects of the project including; the business problem, the possible 
solutions, the chosen architecture, how that architecture was 
implemented and how the system was transitioned into production. 
&lt;br /&gt;&lt;br /&gt;
As usual, the format will be part presentation and part discussion. 
This is an opportunity to look at the architecture behind a software 
system that was successfully delivered into production, and to gain 
insight into the architecture and design decisions that were made 
along the way. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Speakers&lt;/b&gt; : &lt;a href=&#034;http://www.codingthearchitecture.com/authors/sbrown&#034;&gt;Simon Brown&lt;/a&gt; and &lt;a href=&#034;http://www.codingthearchitecture.com/authors/sannecchiarico/&#034;&gt;Sergio Annecchiarico&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Date&lt;/b&gt; : Tuesday, 4th March 2008&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Time&lt;/b&gt; : 18:30-20:00&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Location&lt;/b&gt; : Skills Matter, &lt;a href=&#034;http://maps.google.co.uk/maps?f=q&amp;hl=en&amp;q=1+Sekforde+Street+London&amp;sll=53.098145,-2.443696&amp;sspn=11.997343,29.619141&amp;ie=UTF8&amp;ll=51.523271,-0.104671&amp;spn=0.006061,0.014462&amp;z=16&amp;om=1&#034;&gt;1 Sekforde Street&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Format&lt;/b&gt; : Presentation followed by a breakout for discussion, with further discussion in a local pub (The Crown).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Please register on the &lt;a href=&#034;http://skillsmatter.com/coding-architecture-ug&#034;&gt;Skills Matter website&lt;/a&gt;. 
&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/02/21/london_user_group_march_2008.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/02/21/london_user_group_march_2008.html</guid>
    <pubDate>Thu, 21 Feb 2008 20:20:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Architectural Assumptions</title>
    <link>http://www.codingthearchitecture.com/2007/12/24/architectural_assumptions.html</link>
    
      
        <description>
          &lt;p&gt;
Most of the systems I&#039;ve worked on in the recent past have been latency rather than throughput orientated. However my current project is definitely throughput focused and scales horizontally rather than vertically (this is a simplification but basically correct).
&lt;/p&gt;
&lt;p&gt;
This has lead to me making a few errors based on my incorrect assumptions. As you may have read I&#039;ve been retrofitting performance metrics, we&#039;re trying to discover the level of overhead compared to &#039;real&#039; work, so I&#039;ve been running a single node on my machine to determine the outputs required for statistics. I wanted to write the results to a database and the DBA asked me to produce an estimate of the load in production before he would create my table structures. Cursing the formality of DBAs, I made some calculations based on the number of tasks and the metrics for each. The number I came up with was huge and the DBA almost coughed up his breakfast.
&lt;/p&gt;
&lt;p&gt;
I was surprised by the number because I had failed to realise that my local test was NOT representative of the real system. If the application was vertically scaled then the quantity of metrics in production would be (roughly) the same as on my desktop PC but this application runs across hundreds of grid machines and each one would output these metrics.
&lt;/p&gt;
&lt;p&gt;
I had just designed a distributed denial of service attack on our own database server. The solution was quite simple - I got the machines that aggregate the outputs to also aggregate the performance metrics. This reduced the load by a couple of orders of magnitude.
&lt;/p&gt;
&lt;p&gt;
I think this is a good example of what happens when you fail to take into account the architecture of a system when writing code. All developers need to be aware of the architecure and how it effects the code they are writing. Does anyone else have similar experiences?
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/12/24/architectural_assumptions.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/12/24/architectural_assumptions.html</guid>
    <pubDate>Mon, 24 Dec 2007 12:44:59 GMT</pubDate>
  </item>
  
  <item>
    <title>What about the application tier?!</title>
    <link>http://www.codingthearchitecture.com/2007/09/24/what_about_the_application_tier.html</link>
    
      
        <description>
          &lt;p&gt;
I&#039;ve recently become involved in a project with a very clear idea of its functional and data requirements - so much so that the presentation technology has been selected and the database vendor and schema determined. The suppliers of these have also been chosen and brought in. So, you&#039;ve got your data, you&#039;ve got your user interface, all you&#039;ve got to do is connect the two.
&lt;/p&gt;
&lt;p&gt;
At first glance the omission of an application tier is just an oversight; the majority of functions can be delegated to the database: little more than a bit of remoting and a bit of transformation. On closer inspection it becomes evident that the hole between the presentation and the data is more than just technical. In fact, it&#039;s a dumping ground for all the requirements that didn&#039;t fit neatly into either of the other two. It&#039;s the region in which misaligned assumptions are going to be magically ironed out. For example, the presentation tier assumes (or at least prefers) synchronous calls whereas the database would be better addressed asynchronously. Sure the app tier could hide the asynchronous nature of the database call from the presentation tier but that&#039;s simply patching over the hole.
&lt;/p&gt;
&lt;p&gt;
In reality, the omission of the application tier is a clear sign that the exciting technology choices have led to a project starting without a clear system architecture. It sounds to me like another case of trying to introduce architecture during implementation.
&lt;/p&gt;
&lt;p&gt;
I&#039;m not sure you can architect and implement at the same time - there are always some aspects of the architecture such as technology, team and methodology selection that need prior thought.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/09/24/what_about_the_application_tier.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/09/24/what_about_the_application_tier.html</guid>
    <pubDate>Mon, 24 Sep 2007 15:05:32 GMT</pubDate>
  </item>
  
  <item>
    <title>Designing the tactical solution</title>
    <link>http://www.codingthearchitecture.com/2007/06/27/designing_the_tactical_solution.html</link>
    
      
        <description>
          &lt;p&gt;
In my previous post I asserted that there&#039;s really no such thing as a &lt;a href=&#034;http://www.codingthearchitecture.com/2007/06/21/the_tactical_solution.html&#034;&gt;tactical solution&lt;/a&gt;, but what should you do if you are asked to design one? Before I answer that, let&#039;s summarise what a tactical solution is all about.
&lt;/p&gt;

&lt;blockquote&gt;
... a tactical solution can be thought of as a stopgap. It&#039;s an interim solution. It&#039;s something potentially quick and dirty. It satisfies a very immediate need. Importantly, it has a limited lifespan.
&lt;/blockquote&gt;

&lt;p&gt;
Tactical solutions are all about fast delivery and limited lifespans. You need to take *both* of these into account if you are asked to design a tactical solution because they will undoubtedly influence your design decisions. Let&#039;s look at each in turn.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fast delivery&lt;/b&gt;
&lt;br /&gt;
Compressed timescales will alter the way in which you tackle the design process, so here are my suggestions for dealing with this.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don&#039;t agonise over design decisions. Do the simplest thing that could possibly work in the available time and then stop.&lt;/li&gt;
&lt;li&gt;Be explicit about what your solution will and *won&#039;t* do. If the timescales have made you choose a design with limited future extensibility and flexibility, make this explicit so that everybody (including the stakeholders) understands the trade-offs that have been made and the impact they have in the future.&lt;/li&gt;
&lt;li&gt;On a similar note, make sure any assumptions you&#039;re working with are known by everybody.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;b&gt;Limited lifespan&lt;/b&gt;
&lt;br /&gt;
A limited lifespan typically provides you with some boundaries for your key non-functional requirements and you can use this to your advantage.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A tactical solution with a one year lifespan means your solution (in theory) only needs to scale to support data volumes for one year (plus a bit for safety). This makes some design decisions much easier, such as whether you need to design a solution that is horizontally scalable.&lt;/li&gt;
&lt;li&gt;Be explicit about what your solution will and *won&#039;t* support. If the limited lifespan has influenced your decision to build something that is simple rather than highly scalable, make this explicit so that everybody (including the stakeholders) understands the trade-offs that have been made and the impact they have in the future.&lt;/li&gt;
&lt;li&gt;Again, don&#039;t agonise over design decisions. Do the simplest thing that could possibly work for the anticipated lifespan and then stop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
As &lt;a href=&#034;http://www.codingthearchitecture.com/2007/06/21/the_tactical_solution.html#comment1182524039815&#034;&gt;Kevin commented&lt;/a&gt;, a better approach to building a tactical solution is to make it the first delivery of a larger and more strategic solution. Sometimes this isn&#039;t possible though and delivering a solution with a limited lifespan in compressed timescales means that you have to &lt;a href=&#034;http://www.codingthearchitecture.com/2007/06/07/options.html&#034;&gt;make some trade-offs&lt;/a&gt;. If you find yourself in this situation, don&#039;t agonise over design decisions and make sure you&#039;re explicit about what the solution will and *won&#039;t* do.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/06/27/designing_the_tactical_solution.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/06/27/designing_the_tactical_solution.html</guid>
    <pubDate>Wed, 27 Jun 2007 20:16:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Is Enterprise Architecture the next step?</title>
    <link>http://www.codingthearchitecture.com/2007/05/18/is_enterprise_architecture_the_next_step.html</link>
    
      
        <description>
          &lt;p&gt;
Following on from &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/16/role_titles_across_the_world.html&#034;&gt;Role titles across the world&lt;/a&gt;, I wanted to present a diagram that I&#039;ve had in my head for a little while but never got around to putting on paper. I think architecture at the application and system level is pretty well defined, with an easily identifiable progression path from the former to the latter. Enterprise architecture, on the other hand, is different and I was always under the impression that this was the next logical step for somebody performing a system architecture role. I&#039;ve recently changed my mind on this and my new view of the world is as follows.
&lt;/p&gt;

&lt;p&gt;
&lt;div align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/architecture-scopes.png&#034; alt=&#034;Architecture Scopes&#034; /&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
I now see enterprise architecture as a mix of technology and business consulting that is performed at quite a high level of abstraction, across organisations or organisational units. Previously, I hadn&#039;t really made the connection that the business and process side of enterprise erchitecture was as important (perhaps more so?) than the technology side. As usual, Wikipedia has a nice entry on &lt;a href=&#034;http://en.wikipedia.org/wiki/Enterprise_architecture&#034;&gt;Enterprise Architecture&lt;/a&gt; if you want to read more about this as a discipline.
&lt;/p&gt;

&lt;p&gt;
So is enterprise architecture the next logical step for somebody doing a system architecture role? Possibly, but it depends on what you want to do. When you include the business consulting aspects in the enterprise architecture mix, you start to see that the skillset required for enterprise architecture differs from both the individual streams that feed it. While I&#039;m unsure whether enterprise architecture is more business consulting or more technical architecture, I *am* sure that it might not be the logical progression for technical architects who (like myself at the moment) want to remain technical. Less of a direct upwards career progression and more of an upwards and over movement with which you &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/15/you_dont_have_to_give_up_coding.html&#034;&gt;might have to give up coding&lt;/a&gt;. This, of course, raises an interesting question of what *is* next for System Architects that want to remain technical. What are your thoughts?
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/05/18/is_enterprise_architecture_the_next_step.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/05/18/is_enterprise_architecture_the_next_step.html</guid>
    <pubDate>Fri, 18 May 2007 10:28:13 GMT</pubDate>
  </item>
  
  </channel>
</rss>

