<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - security tag</title>
  <link>http://www.codingthearchitecture.com/tags/security/</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>Modifying Open Services</title>
    <link>http://www.codingthearchitecture.com/2008/11/14/modifying_open_services.html</link>
    
      
        <description>
          &lt;p&gt;
There&#039;s been a huge push recently towards service oriented architectures - sharing services within an organisation with benefits such as reuse and making information consistent. Take a simple example such as a catalogue of products for a furniture company. As a shared and open service, all of the companies systems - Sales, Marketing, Support, Delivery and Billing applications - can use this information in an open and consistent way.

&lt;p&gt;
If a service is very open and easy to use (e.g. services operating via a RESTful interface) then there is a good chance that applications will use it in a way you didn&#039;t originally intend and probably by applications you don&#039;t even know about. This sounds great but you&#039;ll soon come across the issue that you&#039;ve lost the ability to audit the current use and gauge the effect of any change. As an example let&#039;s say you want to add details for &#039;forest sustainability&#039; to our furniture information. We add a block of xml to describe this and release. However an application that uses our service starts generating errors as it&#039;s not expecting this new information. (We could argue that it &lt;i&gt;shouldn&#039;t&lt;/i&gt; do this but this is what happens in the real world.) Problems are more likely if you have to modify rather than add to your format. Changing an integer to a floating point number could cause strange issues.

&lt;p&gt;
You need to be able to get dependent applications to test with your new service before you release but who&#039;s using it and how are they using it? You can log the incoming requests to know what is being used but you don&#039;t know who is using it - so how do you know who has to test changes? 

&lt;p&gt;
This is a problem I&#039;ve been seeing recently and a solution is to use authentication even if you have no intention of restricting access. You can make the credentials easy to obtain but you need to make sure the users of your service are registered and provide sufficient contact information. Of course, actually getting the users to test and adapt to changes are another issue but at least they can&#039;t complain they weren&#039;t informed.

&lt;p&gt;
Has anyone else seen this issue and what were your solutions? Did you just &#039;publish and be damned&#039; or end up introducing heavyweight process to control releases?

        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/11/14/modifying_open_services.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/11/14/modifying_open_services.html</guid>
    <pubDate>Fri, 14 Nov 2008 19:53:38 GMT</pubDate>
  </item>
  
  <item>
    <title>NFRs for system replacements</title>
    <link>http://www.codingthearchitecture.com/2008/05/28/nfrs_for_system_replacements.html</link>
    
      
        <description>
          &lt;p&gt;
As software architects, we tend to write about &lt;a href=&#034;http://www.codingthearchitecture.com/tags/nonfunctionalrequirements/&#034;&gt;non-functional requirements&lt;/a&gt; a lot; particularly about how they should be &lt;a href=&#034;http://www.codingthearchitecture.com/2007/09/06/engaging_without_non_functional_requirements.html&#034;&gt;defined&lt;/a&gt; and &lt;a href=&#034;http://www.codingthearchitecture.com/2007/09/26/nines.html&#034;&gt;challenged&lt;/a&gt; because of the &lt;a href=&#034;http://www.codingthearchitecture.com/2007/07/09/the_influence_of_non_functional_requirements.html&#034;&gt;influence&lt;/a&gt; they have. One of the reasons for talking about NFRs a lot is that, in the majority, project teams don&#039;t give them the attention that they should. And here&#039;s a great example that&#039;s slightly different from &lt;a href=&#034;http://www.codingthearchitecture.com/2007/09/06/engaging_without_non_functional_requirements.html&#034;&gt;the story where none of the NFRs were defined&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
As is the case in most organisations, technology has a limited lifespan. Perhaps the business evolves, the technology becomes harder to maintain, etc. Whatever the reason, many organisations regularly look at replacing their existing systems with solutions that are shinier and more buzzword compliant.
&lt;/p&gt;

&lt;p&gt;
In one of these cases, an organisation put together a 125 page specification for the replacement system detailing exactly what the system should do along with some details of the non-functional requirements. However, out of those 125 pages, only 1 of them featured the NFRs, and they can be summarised as follows.
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Performance&lt;/b&gt; : the system must be fast.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Scalability&lt;/b&gt; : the system must be able to support 100 messages per second.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Availability&lt;/b&gt; : the system must be available 24x7.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Security&lt;/b&gt; : only certain individuals are permitted to access the system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Credit where credit is due ... at least some thought was put into the non-functional requirements and conversations to explore those requirements aren&#039;t starting from scratch. But on the other hand, those requirements are meaningless!
&lt;/p&gt;

&lt;p&gt;
I want to end this post on a positive note, so let me contrast this story with another replacement project that I&#039;ve been involved with recently. In this instance, the team *had* thought about the non-functional requirements and had detailed definitions for what they should be. This is excellent, particularly considering that the non-functional requirements surrounding the current implementation are vague in nature. System replacements are an opportunity to revisit what&#039;s important,  and that includes the non-functional aspects too.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/05/28/nfrs_for_system_replacements.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/05/28/nfrs_for_system_replacements.html</guid>
    <pubDate>Wed, 28 May 2008 10:35:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Elastic computing</title>
    <link>http://www.codingthearchitecture.com/2008/05/01/elastic_computing.html</link>
    
      
        <description>
          &lt;p&gt;
We had an internal technology session last night and I was on a panel where each of us was asked to come up with the IT aspects of an enterprise architecture for a small (100 people) financial services organisation. My approach was based upon building up a service-oriented architecture (SOA) and then &lt;a href=&#034;http://www.infoq.com/news/2008/04/elasticserver&#034;&gt;deploying it onto the cloud&lt;/a&gt;, which can then scale with the business.
&lt;/p&gt;

&lt;p&gt;
&lt;div align=&#034;center&#034;&gt;
&lt;img src=&#034;http://www.codingthearchitecture.com/images/20080430-elastic-computing.jpg&#034; alt=&#034;Elastic computing&#034; /&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
Elastic computing makes a lot of sense in this context for several reasons, but the primary one is that information technology probably isn&#039;t (and arguably shouldn&#039;t be) the core focus of most small organisations. In other words, take advantage of software as a service, and have that scale with your business by dumping it on the cloud.
&lt;/p&gt;

&lt;p&gt;
While some businesses &lt;i&gt;are&lt;/i&gt; using this approach, there are some &#034;interesting&#034; questions to be answered about cloud computing before I think I&#039;d actually propose it for some types of business. First off, there&#039;s data privacy and security. &lt;a href=&#034;http://www.simongbrown.com/blog/2008/04/01/its_my_data.html&#034;&gt;I don&#039;t want my data on the cloud&lt;/a&gt; and I&#039;m sure that many businesses feel the same way. Additionally, there are some other issues around compliance and interoperability (see &lt;a href=&#034;http://www.theregister.co.uk/2008/05/01/interop_cloud_computing_panel/&#034;&gt;Cloud computing hysteria paralyzed by bolt of reality&lt;/a&gt; for more details on this).
&lt;/p&gt;

&lt;p&gt;
Cloud computing might not be feasible for some applications at the moment, but it &lt;i&gt;is&lt;/i&gt; another approach for us as architects to evaluate.
&lt;/p&gt;

&lt;sup&gt;&#034;King Cloud&#034; photo by &lt;a href=&#034;http://www.flickr.com/photos/kky/704056791/&#034;&gt;akakumo&lt;/a&gt;.&lt;/sup&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/05/01/elastic_computing.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/05/01/elastic_computing.html</guid>
    <pubDate>Thu, 01 May 2008 11:01:00 GMT</pubDate>
  </item>
  
  <item>
    <title>High-Assurance Design</title>
    <link>http://www.codingthearchitecture.com/2006/01/18/high_assurance_design.html</link>
    
      
        <description>
          &lt;p&gt;
This week, Cliff Berg is doing a promotion of his latest book entitled &lt;a href=&#034;http://www.awprofessional.com/title/0321375777&#034;&gt;High-Assurance Design : Architecting Secure and Reliable Enterprise Applications&lt;/a&gt;. I&#039;m sure you&#039;ve encountered this yourself, but on many projects there&#039;s often a disconnect between the development team that build the software and the security experts that reside elsewhere in the organisation. I&#039;ve certainly seen this happen and due to the different skillsets involved, it&#039;s hard to get these two groups of people talking the same language. As a result, security is often inadequately implemented and reliability ... well that sometimes doesn&#039;t even feature.
&lt;/p&gt;

&lt;p&gt;
If this sounds familiar then Cliff&#039;s book might be for you. Stop by the &lt;a href=&#034;http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&amp;f=9&#034;&gt;OO, Patterns, UML and Refactoring&lt;/a&gt; at the JavaRanch Saloon to see the discussion and have the chance to win a copy.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is the the role of a software architect?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/01/18/high_assurance_design.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/01/18/high_assurance_design.html</guid>
    <pubDate>Wed, 18 Jan 2006 20:11:09 GMT</pubDate>
  </item>
  
  </channel>
</rss>

