<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sober Counsel &#187; Architecture</title>
	<atom:link href="http://www.sobercounsel.com/tag/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sobercounsel.com</link>
	<description>The Philosophy of IT</description>
	<lastBuildDate>Mon, 03 Aug 2009 04:12:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why Strategies aren&#8217;t implemented.</title>
		<link>http://www.sobercounsel.com/2008/08/24/why-strategies-arent-implemented/</link>
		<comments>http://www.sobercounsel.com/2008/08/24/why-strategies-arent-implemented/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 11:01:23 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Buy-in]]></category>
		<category><![CDATA[Change]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=124</guid>
		<description><![CDATA[Have you ever said something that sounds really silly, then replayed it in your head and thought &#8220;Actually that&#8217;s really profound&#8221;.
I was trying to describe the strategic process to someone the other day and I ended up saying:
&#8220;If you have no desire to be somewhere else, then you must be happy with where you are.&#8221;
- [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever said something that sounds really silly, then replayed it in your head and thought &#8220;Actually that&#8217;s really profound&#8221;.</p>
<p>I was trying to describe the strategic process to someone the other day and I ended up saying:</p>
<blockquote><p>&#8220;If you have no desire to be somewhere else, then you must be happy with where you are.&#8221;<br />
- Me</p></blockquote>
<p>I immediately thought &#8220;what a stupid and obvious thing to say&#8221;  then I thought &#8220;No, that is exactly right!&#8221;</p>
<p>If people are happy where they are, and have no desire to be somewhere else, then they have absolutely no motivation to move.  They will stay where they are.</p>
<p>This in the context of strategy is why strategies are often not implemented.  The people who are supposed to implement them have no desire to be &#8220;somewhere else.&#8221;</p>
<p>One of my professors at Wits Business school, Prof. Rasoava Rijamampianina &#8220;Rija&#8221; used to say:</p>
<blockquote><p>&#8220;The only person who appreciates change is a baby with a wet nappy&#8221;<br />
- Prof. Rija</p></blockquote>
<p>This is really it.  Have we as strategists spent enough time on the consequences of NOT changing.  If the organisation believes it is OK where it is, or that the strategy is not addressing the right problems then change will not happen.  What&#8217;s more if the change is forced it will only be sustained as long as the leader who forced it is continuously maintaining it.  As soon as that leader leaves, the fascade of change will fall off.</p>
<ul>
<li>The People implementing it need to believe in it.</li>
<li>They need to understand why staying where they are will be disastrous.</li>
<li>They need to understand why it will be &#8220;so much better&#8221; where we are going</li>
<li>They need to believe in both of those.</li>
</ul>
<p>Simple.</p>
<p>This doesn&#8217;t mean the strategy is the right one, or that any of the promises it makes are true.  We have many examples from history of people fervently and whole-heartedly striving for something totally wrong.  The strategy was wrong, the outcome disastrous but the strategy WAS IMPLEMENTED.</p>
<p>The skill of the strategist is two-fold then.</p>
<ul>
<li>Find the &#8220;best&#8221; strategy for the organisation that will have desirable outcomes.</li>
<li>Convince the implementers of the need to change.</li>
</ul>
<p>Some of my stakeholders will say, &#8220;Yes, Yes, Yes!  That is exactly what we need!  We agree.  Let&#8217;s do that&#8221; and then they proceed to do nothing.</p>
<p>Intellectually they agree with the proposed strategy, but they do not believe it will be implemented, or they believe it will not address their immediate needs.  This is of course the proverbial &#8220;self-fulfilling prophecy.&#8221;</p>
<p>Watch out for this. Those people need special attention. A strategy will not be implemented if the people who have to implement it do not believe in it as evidenced by their actions.</p>
<p>I have waffled a bit, but I think the point is clear:</p>
<ul>
<li>Make sure your stakeholders believe in the proposed strategy.</li>
<li>Measure their belief by their actions, not their words.</li>
<li>If you want it to be sustainable, avoid the temptation to use &#8220;Brute Force&#8221; to get it implemented.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/08/24/why-strategies-arent-implemented/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Architectural Patterns:  A Pattern</title>
		<link>http://www.sobercounsel.com/2008/08/18/architectural-patterns-a-pattern/</link>
		<comments>http://www.sobercounsel.com/2008/08/18/architectural-patterns-a-pattern/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 17:51:01 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
				<category><![CDATA[Challenge]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=115</guid>
		<description><![CDATA[We have often in the past struggled with the process of establishing some architectural patterns.
It is probably one of those things, that if you try to find a use for it, you will fail, but one day it will suddenly be obvious.
One of my esteemed colleagues was working on an audit of a Disaster recovery [...]]]></description>
			<content:encoded><![CDATA[<p>We have often in the past struggled with the process of establishing some architectural patterns.</p>
<p>It is probably one of those things, that if you try to find a use for it, you will fail, but one day it will suddenly be obvious.</p>
<p>One of my esteemed colleagues was working on an audit of a Disaster recovery capability for one of our business units.  During the course of his work he was mapping out the locations of all of the servers and the links, and since this was a high availability solution, when he was done he had drawn a picture representing a typical high availability solution, with links to a disaster recovery site for replication and clustered servers for redundancy and load balancing etc.</p>
<p>We decided to abstract the drawing he had made to a more generic view, listing instead of the actual server names, simply the roles they played, like &#8220;Application Server&#8221;, &#8220;Web Server&#8221; etc.  Abstracted a bit further we had a picture of what a typical high availability solution should look like in our environment.</p>
<p>It was a simple job to extrapolate from there what a &#8220;Continuous Availability&#8221; solution and what a Regular and Budget solution should look like.  So what we had now was a set of &#8220;Deployment Patterns&#8221; for solution hosting.  From Low-end to High-end requirements.  Next we gave them names and described their defining characteristics.  The &#8220;Budget&#8221; offering would have daily backups and if it failed we would order new hardware with up to 3 weeks of lead time. Each pattern inherited more characteristics as they became clear: Recovery time objectives, Recovery point objectives, Availability targets etc.</p>
<p>So now when we refer to a Bronze deployment or a Silver Deployment, everyone should immediately have in mind the same set of characteristics, and pricing level.</p>
<p>Then we publish a nice little poster describing the patterns we have discovered.  Patterns are discovered, not created.  Standards are created, but patterns usually already exist.  We know what &#8220;Should&#8221; be done in a given set of circumstances and what typically &#8220;Has been&#8221; done before.  The trick is seeing how things relate to one another. &#8220;Ahh, these are different types of hosting deployments, and they have different levels of availability requirements.&#8221;</p>
<p>Another point to note is that patterns come in sets.  We have a set of hosting patterns, a set of monitoring patterns, a set of integration patterns.  We cannot sit down with the objective of creating &#8220;Architectural Patterns&#8221; without an understanding of their objectives.</p>
<p>In <a href="http://hillside.net/patterns/Siemens/book.html"><em>Pattern-Oriented Software Architecture: A System of Patterns</em></a>, (F. Buschmann, R. Meunier, H. Rohnert, P.Sommerlad, and M. Stal, John Wiley and Sons, 1996) three types of patterns are noted:</p>
<ul>
<li>An <strong>Architectural Pattern</strong> expresses a fundamental structural     organization or schema for software systems. It provides a set of predefined subsystems,     specifies their responsibilities, and includes rules and guidelines for organizing the     relationships between them.</li>
<li>A <strong>Design Pattern</strong> provides a scheme for refining the subsystems or     components of a software system, or the relationships between them. It describes commonly     recurring structure of communicating components that solves a general design problem     within a particular context.</li>
<li>An <strong>Idiom</strong> is a low-level pattern specific to a programming language. An     idiom describes how to implement particular aspects of components or the relationships     between them using the features of the given language.</li>
</ul>
<p>From the Book above and some adaptations of other pattern concepts I have adapted this Pattern for Patterns:</p>
<ul>
<li><strong>Name</strong>: A meaningful and memorable way to refer to the pattern, typically a single word or short phrase.</li>
<li><strong>Problems to be solved: </strong>Describes the problem to be solved, with reference to the goals and objectives as appropriate.</li>
<li><strong>Pre-context: </strong>The conditions relevant to the pattern that exist before the pattern is applied.</li>
<li><strong>Principles: </strong>Adopted rules, policies and predetermined modes of action for the pattern.</li>
<li><strong>Solution</strong>: A description of how the problem is solved.</li>
<li><strong>Products</strong>: Example products which can be used to implement the pattern.</li>
<li><strong>Resulting context: </strong>The conditions that result after the pattern is applied, including resolution of competing forces.</li>
<li><strong>Resulting context owner</strong>:    The enterprise client who owns the benefits of the resulting context. Typically this would also be the owner of the requirement for this functionality.  This may be a role rather than an individual e.g. &#8220;Operations Manager&#8221;,&#8221;Integration Committee&#8221; etc.</li>
<li><strong>Examples: </strong>Sample applications of the pattern.</li>
<li><strong>Rationale: </strong>A description of why the solution is solved in a particular way – possibly describing the key trade-offs made between competing forces.  For example:
<ul>
<li>Security, robustness, reliability, fault-tolerance</li>
<li>Manageability</li>
<li>Efficiency, performance, throughout, bandwidth requirements, space utilization</li>
<li>Scalability (incremental growth on-demand)</li>
<li>Extensibility, evolvability, maintainability</li>
<li>Modularity, independence, reusability, openness, composability (plug &#8216;n play), portability</li>
<li>Completeness and correctness</li>
<li>Ease of construction</li>
<li>Ease of use</li>
<li>&#8230; etc.  <strong><em>(SEE MY PREVIOUS POST ON TRIZ&#8230;)</em></strong></li>
</ul>
</li>
<li><strong>Related patterns:</strong> Related patterns are predecessor, successor and alternative patterns, which provide similar solutions.</li>
<li><strong>Parent pattern: </strong>If this pattern is completely contained within another pattern, the name of the containing pattern.</li>
<li><strong>Sub-patterns: </strong>Patterns which provide specialised behaviour yet are completely contained within this pattern.</li>
<li><strong>Known uses: </strong>Known applications of the pattern.</li>
<li><strong>Immediate predecessor patterns: </strong> Other patterns that contributes to the immediate pre-context of this pattern, i.e. They give inputs that are critical to the functioning of this pattern.</li>
<li><strong>Immediate successor patterns: </strong>Other patterns that depends on this pattern for their pre-context, i.e. This pattern must provide inputs to these successor patterns.</li>
<li><strong>Security considerations: </strong>Security aspects that must be considered for the pattern.  Does this pattern treat sensitive data or have capabilities that should be secured.</li>
</ul>
<p>The Names of the various Patterns should be used in a &#8220;Framework&#8221; or Navigation matrix that will help a user to select the appropriate pattern for their particular use.  An Example of this is a set of Monitoring Patterns that we have created.  The Framework indicates monitoring &#8220;objectives&#8221; (SLA Management, Operations Management etc) as column headings and the &#8220;activities&#8221; (Instrumentation, visualisation, correlation etc) as row headings.  At the intersection of each pair is a pattern name.  Find the point in the matrix that best matches your specific intentions and you will have a specific pattern or set of patterns indicated for your business or technical problem.  It is really important to have this navigation structure in place to help users find their way through a potential maze of options.</p>
<p><strong>Some Resources:</strong></p>
<ul>
<li><a href="http://www.opengroup.org/architecture/togaf7-doc/arch/p4/patterns/patterns.htm" target="_blank">The Open Group</a></li>
<li><a href="http://hillside.net/patterns/" target="_blank">Patterns Home Page</a></li>
<li><a href="http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html" target="_blank">Patterns-Discussion     FAQ</a></li>
<li><a href="http://www.enteract.com/%7Ebradapp/docs/patterns-intro.html" target="_blank">Patterns     and Software: Essential Concepts and Terminology</a></li>
<li><a href="http://martinfowler.com/eaaCatalog/" target="_blank">Catalog of Patterns</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/08/18/architectural-patterns-a-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
