<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3404576921963061261</id><updated>2012-02-17T20:09:02.413Z</updated><category term='ethics'/><category term='tools'/><category term='skills'/><category term='complexsystems'/><category term='photography'/><category term='books'/><category term='nonfunctionalrequirements'/><category term='politics'/><category term='wickedproblems'/><category term='architecturethinking'/><category term='soa'/><category term='quote'/><category term='videos'/><category term='humour'/><category term='technique'/><category term='method'/><category term='cloud'/><category term='antipattern'/><category term='systemsthinking'/><category term='creativity'/><category term='omg'/><category term='artefact'/><category term='emergence'/><category term='smarterplanet'/><category term='enterprisearchitecture'/><category term='agile'/><category term='togaf'/><category term='versatilist'/><category term='innovation'/><category term='assets'/><category term='pattern'/><category term='zen'/><category term='uml'/><category term='design'/><category term='spem'/><category term='testing'/><category term='architecture'/><category term='axioms'/><category term='presentations'/><title type='text'>Software Architecture Zen</title><subtitle type='html'>Peter Cripps' thoughts, guidance and best practice on the field of software architecture.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default?start-index=101&amp;max-results=100'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>127</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1892522623022321131</id><published>2012-02-17T20:09:00.000Z</published><updated>2012-02-17T20:09:02.420Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><title type='text'>Its Pretty Interactive, Yeah</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have said a &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/10/why-didnt-i-do-that.html"&gt;number of times&lt;/a&gt; in this space that I believe Tim Berners-Lee to be one of the greatest software architects of all time. This conversation, as recorded in &lt;a href="http://www.wired.com/threatlevel/2012/02/tim-berners-lee-patent"&gt;Wired&lt;/a&gt;, not only reiterates this belief but also shows how incredibly humble and self-effacing Berners-Lee is, as well as being the grand master of the understatement.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Last week in a place called Tyler, eastern Texas, a scene which could have come straight out of a &lt;a href="http://www.wired.com/epicenter/tag/tim-berners-lee/"&gt;Woody Allen&lt;/a&gt; film was played out. For background on the case see &lt;a href="http://www.wired.com/threatlevel/2012/02/patent-troll-trial/"&gt;here&lt;/a&gt; but, in a nutshell, a company called &lt;a href="http://www.eolas.com/"&gt;Eolas&lt;/a&gt;, claims it owns patents that entitle it to royalties from anyone whose website uses “interactive” features, like pictures that the visitor can manipulate, or streaming video. The claim, by Eolas’s owner, one Michael Doyle, is that his was the first computer program enabling an “interactive web.” Tim Berners-Lee was called as an &lt;a href="http://en.wikipedia.org/wiki/Expert_witness"&gt;expert witness&lt;/a&gt; and was being cross-examined by Jennifer Doan, a Texas lawyer representing two of the defendants Yahoo and Amazon. This is how part of the cross-examination went. &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&amp;nbsp;When Berners-Lee invented the web, did he apply for a patent on it, Doan asked.&lt;br /&gt;&lt;br /&gt;“No,” said Berners-Lee.&lt;br /&gt;&lt;br /&gt;“Why not?” asked Doan.&lt;br /&gt;&lt;br /&gt;“The internet was already around. I was taking hypertext, and it was around a long time too. I was taking stuff we knew how to do…. &lt;i&gt;All I was doing was putting together bits that had been around for years in a particular combination to meet the needs that I have&lt;/i&gt;.” [My italics]&lt;br /&gt;&lt;br /&gt;Doan: “And who owns the web?”&lt;br /&gt;&lt;br /&gt;Berners-Lee: “We do.”&lt;br /&gt;&lt;br /&gt;Doan: “The web we all own, is it ‘interactive’?”&lt;br /&gt;&lt;br /&gt;“It is pretty interactive, yeah,” said Berners-Lee, smiling.&lt;/blockquote&gt;I just love this. Here's the guy that has given us one of the most game changing technologies of all time FOR NO PERSONAL GAIN TO HIMSELF, finding himself in a out of the way courtroom explaining one of the fundamental tenets of&amp;nbsp; software architecture: &lt;i&gt;putting together bits that have been around.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Setting aside the whole thorny question of software patents and whether they are actually &lt;a href="http://www.paulgraham.com/softwarepatents.html"&gt;evil&lt;/a&gt; this is surely one of the greatest and most understated descriptions of what we, as software architects, actually do by the master himself. Thank you Tim. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1892522623022321131?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1892522623022321131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/02/its-pretty-interactive-yeah.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1892522623022321131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1892522623022321131'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/02/its-pretty-interactive-yeah.html' title='Its Pretty Interactive, Yeah'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5997224481287810007</id><published>2012-02-10T23:22:00.000Z</published><updated>2012-02-10T23:22:44.954Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><title type='text'>You're Building Me A What?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This week I've been attending a cloud architecture workshop. Not to architect a cloud for anyone in particular but to learn what the approach to architecting clouds should be. This being an IBM workshop there was, of course, lots of &lt;a href="http://www.ibm.com/software/tivoli/"&gt;Tivoli&lt;/a&gt; this, &lt;a href="http://www.ibm.com/software/websphere/"&gt;WebSphere&lt;/a&gt; that and &lt;a href="http://www.ibm.com/systems/power"&gt;Power&lt;/a&gt; the other. Whilst the workshop was full of good advice I couldn't help of thinking of &lt;a href="http://geekandpoke.typepad.com/geekandpoke/2008/11/it-and-business.html"&gt;this&lt;/a&gt; cartoon from 2008:&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8KrCp2M3M4c/TzWIuB0m9UI/AAAAAAAAAI0/_ok7kiJ9wLo/s1600/building+a+soa.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-8KrCp2M3M4c/TzWIuB0m9UI/AAAAAAAAAI0/_ok7kiJ9wLo/s320/building+a+soa.jpg" width="225" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Courtesy geekandpoke.typepad.com&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Just replace the word 'SOA' with 'cloud' (as 'SOA' could have been replaced by 'client-server' in the early nineties) and you get the idea. As software architects it is very easy to get seduced by technology, especially when it is new and your vendors, consultants and analysts are telling you this really is the future. However if you cannot explain to your client why you're building him a cloud and what &lt;u&gt;business&lt;/u&gt; benefit it will bring him then you are likely to fail just as much with this technology as people have with previous technology choices.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5997224481287810007?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5997224481287810007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/02/youre-building-me-what.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5997224481287810007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5997224481287810007'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/02/youre-building-me-what.html' title='You&apos;re Building Me A What?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-8KrCp2M3M4c/TzWIuB0m9UI/AAAAAAAAAI0/_ok7kiJ9wLo/s72-c/building+a+soa.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2728205202712116742</id><published>2012-01-30T22:30:00.000Z</published><updated>2012-01-30T22:30:56.572Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>On Being a Versatilist</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;For some time now I've been discussing the idea of a &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/03/v-is-for-versatilist.html"&gt;versatilist&lt;/a&gt; as someone whose numerous roles (across business, science and the arts) assignments and experiences enable them to synthesize knowledge in new and exciting ways that may not have been possible if only one of these viewpoints were taken. I truly believe that this is such an interesting and fruitful topic that I have teamed up with &lt;a href="http://uk.linkedin.com/pub/david-evans/15/4bb/535"&gt;David Evans&lt;/a&gt;, Principal Consultant and Owner                    &lt;span class="at"&gt;at &lt;/span&gt;      Koan Solutions Ltd and created a new blog on the topic of versatilism and what being a versatilist means.&lt;br /&gt;&lt;br /&gt;Check out our new blog &lt;a href="http://theversatilistway.wordpress.com/"&gt;The Versatilist Way&lt;/a&gt; and give us your thoughts and ideas.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2728205202712116742?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2728205202712116742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/01/on-being-versatilist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2728205202712116742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2728205202712116742'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/01/on-being-versatilist.html' title='On Being a Versatilist'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3831325502520487368</id><published>2012-01-22T20:40:00.001Z</published><updated>2012-01-22T20:40:08.979Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>What Now for Internet Piracy?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So &lt;a href="http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act"&gt;SOPA&lt;/a&gt; is to be &lt;a href="http://www.guardian.co.uk/technology/2012/jan/20/pipa-vote-shelved-harry-reid"&gt;kicked into the long grass&lt;/a&gt; which means it is at least postponed if not killed altogether. For those who have not been following the Stop Online Piracy Act debate, this is the bill proposed by a U.S Republican Representative to expand the ability of U.S. law enforcement to fight online trafficking in copyrighted intellectual property (IP) and counterfeit goods. Supporters of SOPA said it would protect IP as well as the jobs and livelihoods of people (and organisations) involved in creating books, films music, photographs etc. Opponents reckoned the legislation threatened free speech and innovation and would enable law enforcement officers to block access to entire internet domains as well as violating the &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/First_Amendment" title="First Amendment"&gt;First Amendment&lt;/a&gt;. Inevitably much of the digerati came out in flat opposition of SOPA and staged an internet &lt;a href="http://www.reuters.com/article/2012/01/18/us-internet-protest-idUSTRE80H01U20120118"&gt;blackout&lt;/a&gt; on 18th January where many sites "went dark" and Wikipedia was unavailable altogether. Critics of SOPA cited that the fact the bill was supported by the music and movie industry was an indication that it was just another way of these industry dinosaurs protecting their monopoly over content distribution. So, a last minute victory for the new digital industry over the old analogue one?&lt;br /&gt;&lt;br /&gt;And yet...&lt;br /&gt;&lt;br /&gt;Check out this &lt;a href="http://www.ted.com/"&gt;TED&lt;/a&gt; talk by digital commentator Clay Shirky called &lt;i&gt;&lt;a href="http://www.ted.com/talks/defend_our_freedom_to_share_or_why_sopa_is_a_bad_idea.html"&gt;Why SOPA is a bad idea&lt;/a&gt;&lt;/i&gt;. Shirky in his usual compelling way puts a good case for why SOPA is bad (the talk was published before the recent announcement on the bill being postponed) but the real interest for me in this talk was from the comments about it. There are many people saying yes SOPA may be a bad bill but there is nonetheless a real problem with content being given away that should otherwise be paid for and that content creators (whether they be software developers, writers or photographers) are simply losing their livelihoods because people are stealing their work. Sure, there are &lt;a href="http://www.copyrightservice.co.uk/copyright/p01_uk_copyright_law"&gt;copyright laws&lt;/a&gt; that are meant to prevent this sort of thing happening but who can really chase down the web sites and peer-to-peer networks that "share" content they have not created or paid for? SOPA may have been a bad bill and really have been about protecting the interests of large corporations who just want to carry on doing what they have always done without having to adapt or innovate. However without some sort of regulation that protects the interests of individuals or small start-ups wishing to earn a living from their art, killing SOPA has not moved us forward in any way and certainly not protected their interests. Unfortunately some sort if internet regulation is inevitable.&lt;br /&gt;&lt;br /&gt;For a historical perspective of why this is likely to be so, see the TED talk by the Liberal Democrat &lt;a href="http://en.wikipedia.org/wiki/Paddy_Ashdown"&gt;Paddy Ashdown&lt;/a&gt; called &lt;i&gt;&lt;a href="http://www.ted.com/talks/paddy_ashdown_the_global_power_shift.html"&gt;The global power shift&lt;/a&gt;&lt;/i&gt;. Ashdown argues that "where power goes governance must follow" and that there is plenty of historical evidence showing what happens when this is not the case (the recent/current financial meltdown to name but one).&lt;br /&gt;&lt;br /&gt;So SOPA may be dead but something needs to replace it and if we are to get the right kind of governance we must all participate in the debate else the powerful special interest groups will get their own way. Clay Shirky argued that if SOPA failed to be passed it would be replaced by something else. Now then is our chance to ensure that whatever that is, is right for content creators as well as distributors. &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3831325502520487368?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3831325502520487368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/01/what-now-for-internet-piracy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3831325502520487368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3831325502520487368'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/01/what-now-for-internet-piracy.html' title='What Now for Internet Piracy?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-4311437405902893765</id><published>2012-01-05T19:39:00.001Z</published><updated>2012-01-05T19:39:49.058Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Architecting Out Complexity</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;i&gt;“Complexity kills. Complexity sucks the life out of users, developers and IT. Complexity makes products difficult to plan, build, test and use. Complexity introduces security challenges. Complexity causes administrator frustration.”&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;a href="http://www.zdnet.com/blog/microsoft/microsofts-outgoing-chief-software-architect-on-the-post-pc-world/7803?tag=content;siu-container"&gt;Ray Ozzie&lt;/a&gt; - Ex-Microsoft Chief Software Architect and Creator of Lotus Notes&lt;/div&gt;&lt;br /&gt;Complexity, or more precisely, overly complicated systems (not to be confused with &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/07/complex-systems-versus-complicated.html"&gt;complex systems&lt;/a&gt;) is one of the key anti-patterns architects must continuously fight against. Complexity is caused not just by adding additional and unwanted functionality (although that certainly does not help) but also by muddled &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/02/think-like-architect.html"&gt;architectural thinking&lt;/a&gt; as well as poorly made architectural decisions. Here's the real problem though, the initial architecture of almost any system, unless it borrows very heavily from other, similar, architectures will rarely be without complexity. There will almost always be refinements that can be made, over time, that remove complexity and make for a cleaner and more streamlined design. Sometimes you may even need to throw away the initial architecture and start again, using what you have learnt from the initial architecture to take out complexity. Frederick Brooks (author of &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;&lt;i&gt;The Mythical Man Month&lt;/i&gt;&lt;/a&gt;) famously said of software designs &lt;span class="st"&gt;&lt;i&gt;"plan to &lt;em&gt;throw one away&lt;/em&gt;, you will anyway&lt;/i&gt;".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="st"&gt;The other problem with complexity in systems is that it tends to increase over time due to &lt;a href="http://en.wikipedia.org/wiki/Software_entropy"&gt;software entropy&lt;/a&gt;. As more changes are made, some not envisaged by the architect because &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/05/change-cases-and-limits-of-testing.html"&gt;change cases&lt;/a&gt; were not adequately thought through, a system naturally becomes more complicated and harder to maintain. It almost seems that the lifecycle of a system could be represented by the &lt;i&gt;complexity curve&lt;/i&gt; in the diagram below.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4JKU82D_RzM/TwX3sOZswoI/AAAAAAAAAIo/U5uOA5sp4fw/s1600/Complexity+vs+Time.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="253" src="http://1.bp.blogspot.com/-4JKU82D_RzM/TwX3sOZswoI/AAAAAAAAAIo/U5uOA5sp4fw/s320/Complexity+vs+Time.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="st"&gt;Complexity does not just apply to systems, it also applies to whole &lt;i&gt;styles&lt;/i&gt; of architecture. Cloud computing would still seem to be fairly early on in the complexity curve in this respect. Cloud computing is almost the ultimate in information hiding. Just put everything in the cloud and get what you want when you want it. If you're inside the cloud looking out however you need to deal with a whole lot of pain to create that outward facing simplicity. If you're a cloud architect therefore you need to understand and design for that complexity otherwise over time our clouds will become weighed down with out of date junk that no one wants. This is definitely a topic I'll be returning to over the course of 2012.&amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-4311437405902893765?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/4311437405902893765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/01/architecting-out-complexity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4311437405902893765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4311437405902893765'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2012/01/architecting-out-complexity.html' title='Architecting Out Complexity'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4JKU82D_RzM/TwX3sOZswoI/AAAAAAAAAIo/U5uOA5sp4fw/s72-c/Complexity+vs+Time.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5870545360484745260</id><published>2011-12-15T21:39:00.001Z</published><updated>2011-12-17T00:05:28.285Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><title type='text'>Architecting and Social Media</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The arguments for and against the rise of user generated content on the web continue to rage. Depending on which side of the debate you take we are either on an &lt;a href="http://www.roughtype.com/archives/2005/10/the_amorality_o.php"&gt;amoral downward spiral&lt;/a&gt; of increasingly meaningless content being generated by amateurs (for free) that is putting the professional writers, musicians, software developers, photographers etc out of work as well as &lt;a href="http://www.wired.com/magazine/2010/05/ff_nicholas_carr/"&gt;ruining our brains&lt;/a&gt; or are entering a &lt;a href="http://www.ted.com/talks/clay_shirky_how_cognitive_surplus_will_change_the_world.html"&gt;new age&lt;/a&gt; where the combination of an unbounded publishing engine and the &lt;a href="http://www.wired.com/magazine/2010/05/ff_pink_shirky/all/1"&gt;cognitive surplus&lt;/a&gt; many people now have means we are able to build a better and more cooperative world.&lt;br /&gt;&lt;br /&gt;Like most things in life the truth will not be at one of these polar opposites but somewhere in between. Seth Godin makes an interesting point in a recent &lt;a href="http://sethgodin.typepad.com/seths_blog/2011/12/the-most-important-page-on-the-web-is-the-page-you-build-yourself.html"&gt;blog entry&lt;/a&gt; that &lt;i&gt;"lifestyle media isn't a fad it's what human beings have been doing forever, with a brief, recent interruption for a hundred years of professional media along the way"&lt;/i&gt;. He goes on to say &lt;i&gt;"we shouldn't be surprised when someone chooses to publish their photos, their words, their art or their opinions. We should be surprised when they don't."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;After all, given the &lt;a href="http://www.levesoninquiry.org.uk/"&gt;precarious nature of the press&lt;/a&gt; in the UK at the moment with stories being obtained through all sorts of dubious means the professionals can hardly be seen as holding the ethical or moral high ground.&lt;br /&gt;&lt;br /&gt;The possibilities for creativity, and building interesting and innovative solutions out of this mixed bag of social media self-publishing is going to be the place where architects are going to have a fertile ground over the coming years. A nice example of this is &lt;a href="http://flipboard.com/"&gt;Flipboard&lt;/a&gt; which if you have an iPhone or iPad you should definitely download. This free app is a “social magazine” that extends links your friends and contacts are sharing on Facebook, Twitter, Linkedin, 500px and others into beautifully packaged "articles". It can also pull in content from a raft of other online content. It's a great example of what architects should be doing, namely taking existing components and assembling them in interesting  and innovative ways.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5870545360484745260?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5870545360484745260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/12/architecting-and-social-media.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5870545360484745260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5870545360484745260'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/12/architecting-and-social-media.html' title='Architecting and Social Media'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5276297406587518683</id><published>2011-12-08T22:09:00.001Z</published><updated>2011-12-09T13:07:48.068Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>Computing: The Human Experience</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Grady Booch, IBM Fellow and Chief Scientist for Software Engineering in IBM Research has kicked off an initiative to produce a documentary on the history of computing called &lt;a href="http://computingthehumanexperience.com/public/"&gt;Computing: The Human Experience&lt;/a&gt;.&amp;nbsp; This is a crowd sourcing initiative for which Grady is trying to raise $25,000 by January 2nd to get the project underway. It's an all or nothing model, the project must be fully funded before time expires or no money changes hands.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;I guess you may ask why you should contribute funds to an initiative like this in these austere times when there are far better causes that could take care of your $$$$. Here are three reasons:&lt;/span&gt;&lt;/div&gt;&lt;ol style="font-family: inherit; text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;If you are reading this blog you are almost certainly involved at some level in computing. You have helped, or still are helping, change the world in fundamental and unprecedented ways, ways that affect pretty much everyone who walks the face of the planet right now. Isn’t it time that story was told?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Computing more than any other industry has its roots at a very personal level. How many great computing ideas have started in kid’s bedrooms, dormitories or their parent’s garages? You can now help by making your own personal contribution.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;You can donate as little as one dollar, a lot less than your first latte of the day or final glass of alcoholic beverage in the evening. Forego that and spend it on this instead, you could even get a hand written letter of thanks from Grady.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: small;"&gt;If you do donate, or even if you don’t, make sure you tweet it, blog it, Tumblr it or Facebook it so all your friends know about this.&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 10pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5276297406587518683?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5276297406587518683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/12/computing-human-experience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5276297406587518683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5276297406587518683'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/12/computing-human-experience.html' title='Computing: The Human Experience'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7902844649916222249</id><published>2011-11-30T17:21:00.001Z</published><updated>2011-11-30T17:41:06.694Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><category scheme='http://www.blogger.com/atom/ns#' term='zen'/><title type='text'>Social Objects as Instruments of Architecture</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;According to Hugh MacLeod a &lt;a href="http://gapingvoid.com/so/"&gt;social object&lt;/a&gt;:&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;i&gt;“is the reason two people are talking to each other, as opposed to talking to somebody else.”&lt;/i&gt;&amp;nbsp;&lt;a href="http://www.gapingvoid.com/Moveable_Type/archives/004390.html"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;also:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"social networks are built around social objects, not vice versa. The latter act as “nodes”. The nodes appear before the network does."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;In discussions around architecture there can often be much confused talk around what is needed, what an architecture looks like and what decisions need to be made in order to &lt;a href="http://www.youtube.com/watch?v=-ZxHAZChcYU"&gt;make it so&lt;/a&gt;. There are three useful architectural &lt;i&gt;social objects&lt;/i&gt; that help cystalise our thoughts and&amp;nbsp; allow a network of related artefacts to be created. These are:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Use Cases or Scenarios&lt;/b&gt; - Illustrate what I am trying to do via real-world examples that use human actors to illustrate what we are trying to achieve.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Architecture Overview&lt;/b&gt; - The main architectural elements (components) that the system is comprised of.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Architectural Decisions&lt;/b&gt; - What decisions am I making, what options did I consider and why did I choose the ones I did.&lt;/li&gt;&lt;/ul&gt;These social objects seem to apply to all levels of architecture from the smallest application to the largest enterprise architecture. Of course they are by no means all you need but serve as a pretty good starting point for all that follows.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7902844649916222249?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7902844649916222249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/social-objects-as-instruments-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7902844649916222249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7902844649916222249'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/social-objects-as-instruments-of.html' title='Social Objects as Instruments of Architecture'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-6790539877594619314</id><published>2011-11-28T08:35:00.001Z</published><updated>2011-11-28T21:50:11.478Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>Educating an IT Workforce for the 21st Century</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A &lt;a href="http://www.bbc.co.uk/news/technology-15916677"&gt;report&lt;/a&gt; on the BBC &lt;a href="http://news.bbc.co.uk/today/hi/default.stm"&gt;Today&lt;/a&gt; programme this morning argues that the "Facebook generation needs better IT skills" and that UK schools should be providing courses in programming at GCSE. The report bemoaned the fact that so called Information and Communications Technologiy (ICT) GCSEs did little more than teach students how to use Office programmes such as Word and Excel and did not prepare students for a career in IT. The backers of this report were companies like Google and Microsoft.&lt;br /&gt;&lt;br /&gt;This raises an interesting question of who should be funding such education in these austere times. Is it the role of schools to provide quite specific skills like programming or should they be providing the basics of literacy and numeracy as well as the more fundamental skills of creativity, communication and collaboration and leave the specifics to the industries that need them? Here are some of the issues related to this:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt; Skills like computer programming are continuously evolving and changing. What is taught at 14 - 16 today (the age of GCSE students in the UK) will almost certainly be out of date when these students hit the work force at 21+.&lt;/li&gt;&lt;li&gt;The computer industry, just like manufacturing before it, long ago sent out the message to students that programming skills (in Western economies at least) were commoditised and better performed by the low-cost economies of the &lt;a href="http://en.wikipedia.org/wiki/BRIC"&gt;BRIC&lt;/a&gt; nations (and now, presumably, the &lt;a href="http://en.wikipedia.org/wiki/CIVETS"&gt;CEVITS&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;To most people computers are just tools. Like cars, washing machines and mobile phones they don't need to know how they work, just how to use them effectively.&lt;/li&gt;&lt;li&gt;Why stop at computer programming GCSE? Why not teach the basics of plumbing, car mechanics, cookery and hairdressing, all of which are in great demand still and needed by their respective industries.&lt;/li&gt;&lt;li&gt;Public education (which essentially did not exist before the 19th century, certainly not for the masses) came about to meet the needs of industrialism and as such demanded skills in left-brained, logical thinking skills rather than right brained, creative skills (see Sir Ken Robinson's TED talk on &lt;a href="http://www.ted.com/talks/ken_robinson_says_schools_kill_creativity.html"&gt;why schools kill creativity&lt;/a&gt;). As a result we have a system that rewards the former rather than the latter (as in "there's no point in studying painting or music, you'll never get a job in that").&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;In an ideal world we would all be given the opportunities to learn and apply whatever skills we wanted (both at school and throughout life) and have that learning funded by the tax payer on the basis it benefits society as a whole. Unfortunately we don't live in that ideal world and in fact are probably moving further from it than ever.&lt;br /&gt;&lt;br /&gt;Back in the real world therefore industry must surely fund the acquiring of those skills. Unfortunately in many companies education is the first thing to be cut when times are hard. The opposite should be the case. One of the best things I ever did was to spend five weeks (yes that's &lt;u&gt;weeks&lt;/u&gt; not days), funded entirely by IBM, learning object-oriented programming and design. Whilst five weeks may seem like a long time for a course I know this has paid for itself many, many times over by the work I have been able to do for IBM in the 15 years since attending that course. Further, I suspect that five weeks intensive learning was easily equivalent to at least a years worth of learning in an educational establishment.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Of course such skills are more vital to companies like Google, Microsoft and IBM than ever before. Steve Denning in an article called &lt;a href="http://www.forbes.com/sites/stevedenning/2011/11/19/peggy-noonan-on-steve-jobs-and-why-big-companies-die/"&gt;Why Big Companies Die&lt;/a&gt; in Forbes this month quotes from an article by Peggy Noonan in the Wall Street Journal (called &lt;a href="http://online.wsj.com/article/SB10001424052970203611404577044613194688678.html?mod=djemEditorialPage_h"&gt;A Caveman Won't Beat a Salesman&lt;/a&gt;). Denning uses a theory from Steve Jobs that big companies fail when salesmen and accountants are put in charge of and who don't know anything about the product or service the company make or how it works. Denning says:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"The activities of these people [salesmen and accountants] further dispirit the creators, the product engineers and designers, and also crimp the firm’s ability to add value to its customers. But because the accountants appear to be adding to the firm’s short-term profitability, as a class they are also celebrated and well-rewarded, even as their activities systematically kill the firm’s future".&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;Steve Jobs showed that there was another way.&amp;nbsp; Namely, to keep playing the offense and focus totally on adding value for customers by creating new and innovative new products. By doing that you can make more money than the companies that are milking their cash cows and focused on making money rather than products.&lt;br /&gt;&lt;br /&gt;Companies like Google and Microsoft (and IBM and Apple) need people fully trained in the three C's (creativity, communication and creativity) who can then apply these to whatever task is most relevant to the conmpanies bottom line. It's the role of those companies, not government, to train people in the specifics.&lt;br /&gt;&lt;br /&gt;Interestingly Seymour Papert (who co-invented the Logo programming language) used programming as a tool to improve the way that children think and solve problems. Papert used &lt;a href="http://en.wikipedia.org/wiki/Jean_Piaget" title="Jean Piaget"&gt;Piaget&lt;/a&gt;'s work of cognitive development (that showed how children learn) and used Logo as a way of improving their creativity.&lt;br /&gt;&lt;br /&gt;Finally, to see how students themselves view all this see the &lt;a href="http://www.huffingtonpost.com/nikhil-goyal/post_2586_b_1034887.html"&gt;article&lt;/a&gt; by Nikhil Goyal's (a 16-year-old junior at Syosset High School in  New York) who states: &lt;i&gt;"for the 21st century American economy, all economic value will derive from entrepreneurship and innovation. Low-cost manufacturing will essentially be wiped out of this country and shipped to China, India, and other nations"&lt;/i&gt; and goes on to propose that&amp;nbsp; &lt;br /&gt;&lt;i&gt;"we institute a 21st century model of education, rooted in 21st century learning skills and creativity, imagination, discovery, and project-based learning"&lt;/i&gt;. Powerful stuff for one so young, there may yet be hope for us.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-6790539877594619314?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/6790539877594619314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/educating-it-workforce-for-21st-century.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6790539877594619314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6790539877594619314'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/educating-it-workforce-for-21st-century.html' title='Educating an IT Workforce for the 21st Century'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3218037179254617485</id><published>2011-11-17T10:20:00.001Z</published><updated>2011-11-17T12:17:48.568Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='technique'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><category scheme='http://www.blogger.com/atom/ns#' term='axioms'/><title type='text'>Parkinson's Law of Triviality (Applied to Architecture)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://en.wikipedia.org/wiki/Parkinson%27s_Law_of_Triviality"&gt;Parkinson's Law of Triviality&lt;/a&gt; (as proposed by C. Northcote Parkinson in 1957) is that people give disproportionate weight to trivial issues. Parkinson gives as an example a hypothetical (planning) committe deliberating on the building of a nuclear power plant and a bicycle shed. Parkinson stated that "the time spent on any item of the agenda will be in inverse proportion to the sum involved." Clearly a nuclear reactor is vastly expensive and complicated and the average person is unlikley to understand it because it is so far outside the realms of their daily experience. A bike shed, on the other hand, everyone understands (or thinks they do, which can be even more dangerous). The result is that people will be reluctant to discuss for long the nuclear reactor either because they assume those working on it understand it or because they are to fearful of making themselves look foolish in front of the experts. The bike shed however can result in endless discussions because everyone involved wants to add their "feature" and show that they have contributed. While discussing the bikeshed, debate rages over what the best choice of roofing should be, whether there should be windows, whether it should be fully enclosed with walls and a door etc, etc rather than whether the shed is a good idea or not.&lt;br /&gt;&lt;br /&gt;Parkinson's Law of Triviality is something that frequently creeps into architecture discussions. When requirements are being discussed and how best to realize them architecturally it is frequently the case that when the domain under discussion consists of parts that are familiar and ones that are not it is the former that will often receive inordinate amounts of discussion whereas the latter do not (but usually should). A good example to illustrate this is that of e-commerce systems. Because most people have used such systems everyone will have an opinion on the bits they are familiar with (the actual look and feel of the shopping experience for example, do you call it a shopping basket or a trolley, do you allow goods to be placed in the basket before you have logged in or registered and so on). The part of the system that deals with payment however (i.e. that goes off in the background and does credit checks etc) or checking stock level is not seen so people will probably have less of an opinion on it. This part, at least as far as the web site owner is concerned, is the most important however because if that does not work he will lose money. Worse however is if the "payments specialist" says that this is the way payments will work, and no one else feels they have the expertise or authority to challenge her. Doing something because that's the way we always do it is an example of the &lt;a href="http://c2.com/cgi/wiki?GoldenHammer"&gt;Golden Hammer&lt;/a&gt; anti-pattern and does not always result in the most innovative or creative new systems. &lt;br /&gt;&lt;br /&gt;So how to protect against falling foul of Parkinson's Law of Triviality?&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Good architects need to develop deep domain knowledge and know how to, and be fearless in doing so, challenge expert opinion. Frequently appearing foolish by challenging the blindingly obvious is a small price to pay for occasionally highlighting a problem which everyone else overlooked because they were following conventional wisdom.&lt;/li&gt;&lt;li&gt;Ensure complex problems receive proportionately more discussion than simple ones. In other words cut the discussion of addressing the simple problem sooner to allow time to discuss the complex ones. Better still if in a meeting there are several problems to be discussed prioritise them by complexity and start with the most complex first. Leaving simpler ones till the end means you can rush those through when everyone gets tired or you are out of time.&lt;/li&gt;&lt;li&gt;Recognise that everyone has an equal say and it is often the people who know least about the problem that ask the daft, but hard, questions. This of course would seem to go against number 1. If everyone is an expert doesn't that mean no one will be naive enough to ask the simple but challenging questions? No. A good team has a diverse mix of skills, knowledge and opinions and should allow everyone to comment.&lt;/li&gt;&lt;li&gt;Leave your ego at the meeting room door and do not use your relative position in the hierarchy of the company to trivialise other peoples ideas or prevent constructive discussion because it is not "going your way". &lt;/li&gt;&lt;li&gt;Finally capture all decisions in a systematic way (recording at the very least what the decision was, what options were discussed, the rationale for choosing the one you did and any related decisions or implications).&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3218037179254617485?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3218037179254617485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/parkinsons-law-of-triviality-applied-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3218037179254617485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3218037179254617485'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/parkinsons-law-of-triviality-applied-to.html' title='Parkinson&apos;s Law of Triviality (Applied to Architecture)'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1171361368785461486</id><published>2011-11-08T09:04:00.001Z</published><updated>2011-11-10T20:58:30.083Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>What Can Architects Learn from Steve Jobs</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I've just finished reading &lt;a href="http://www.amazon.co.uk/Steve-Jobs-Exclusive-Walter-Isaacson/dp/1408703742/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1320739564&amp;amp;sr=1-1"&gt;Steve Jobs&lt;/a&gt; by &lt;a href="http://authors.simonandschuster.com/Walter-Isaacson/697650"&gt;Walter Isaacson&lt;/a&gt;. In case there is anyone out there who doesn't know it yet, this is the authorised biography that Jobs asked Isaacson to write which was completed a few weeks before Jobs untimely death aged 56 last month. Jobs insisted that Isaacson would have complete control over the contents of the book saying he would not even read it before it was published adding &lt;i&gt;"I don't have any skeletons in my closet that can't be allowed out"&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Jobs is clearly a very complex personality, on the one hand a creative genius whose zen like focus on simplicity and efficiency helped create some of the most beautiful and useful gadgets of our time (some of which we never even knew we needed) whilst on the other he was a bully and a tyrant who knew exactly how to &lt;i&gt;"size people up, understand their inner thoughts, and know how to relate to them, cajole them, or hurt them at will"&lt;/i&gt;. One of jobs girl friends, who later went on to found a mental health resource network in California, even went so far to say that she thought Jobs suffered from &lt;a href="http://www.mind.org.uk/help/diagnoses_and_conditions/personality_disorders"&gt;Narcissistic Personality Disorder&lt;/a&gt; (NPD) in which the individual is described as being excessively preoccupied with issues of personal adequacy, power, prestige and vanity.&lt;br /&gt;&lt;br /&gt;Whilst it is to be hoped that NPD is not a prerequisite for being a software architect Jobs did have vision and understanding of IT that we as architects can learn from. Six big ideas that stand out in this respect are:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;Engineering matters.&lt;/i&gt; When jobs met with President Obama in 2011 he implored the President to reform the US education system and to create more engineering students. Jobs said &lt;i&gt;"if you could educate these engineers we could move more manufacturing plants here"&lt;/i&gt;. Whilst there was always an uneasy tension between engineering and design at Apple Jobs recognised and valued the importance of there being an engineering led rather than sales led team at the top of the company berating companies like Microsoft (under Balmer), IBM (under Akers) and HP (under their last several CEOs) for putting sales people in charge rather than engineers. For software architects, engineering clearly translates to being intimately knowledgeable with the technology you are using, knowing how to put the working parts together. The best architects I know are passionate about technology.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Artistry and design matters just as much as engineering.&lt;/i&gt; This is a theme that Jobs emphasises over and over again. From when he dropped out of college and instead took a course on calligraphy to his sometimes maniacal focus on the smallest details of design to make the product as satisfying and aesthetically pleasing as possible. He even emphasized that circuit boards, which no one would ever see once the product was fully assembled, should be laid out in as clean and uncluttered was as possible. It is this aspect of design that most matters for architects. Provided that functionally a system does what it is meant to do within the required constraints and system qualities one could argue it does not matter how messily the software is assembled. Whose going to see it anyway? This misses the point though.Great design, as opposed to just good enough design, means the system will be easier to maintain, take less effort to learn and generally be more enjoyable for those that need to carry on working on it once the architects and developers have moved on.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Simple is better than complex.&lt;/i&gt; Apple had a design mantra: "Simplicity is the ultimate sophistication" or as Jobs said &lt;i&gt;"very simple, and we're really shooting for Museum of Modern Art quality"&lt;/i&gt;. Jobs felt that design simplicity should be linked to making products easy to use.So much of the software that we create today is far too complex and feature rich and as a result is very hard to use. People will often say that it has to be like that because just look at all the features you are getting. Unfortunately a lot of the time many of those features are not needed but add to the general bloat of the systems we build making them hard to use as well as difficult to maintain. Sadly building a complex system is often easier than building a simple one and it is not many architects that see value in stripping out functionality rather than adding it.&lt;/li&gt;&lt;li&gt;&lt;i&gt;An unremitting focus on detail is key to creating a great product.&lt;/i&gt; Jobs was unique in that he was able to hold both the big picture view as well as zooming in to fine details. He would often sweat over the smallest detail until he was satisfied it was just right. This could be anything from the colour of a screw on the back plate of the iPod to the angle of the bevel on the iPad to make someone want to pick it up. This capacity for holding both the big picture view whilst also being able to zoom right down and question low level details is probably one of the hardest things architects have to do but being able to do so gives a definite advantage and enables greater integrity as well as better execution of vision. &lt;/li&gt;&lt;li&gt;&lt;i&gt;Customers don't always know what they want.&lt;/i&gt; In September 1982 when Jobs and his team were designing the original Macintosh he held a retreat for the Mac team near Monteray where he gave a presentation on his thoughts for the Mac. At the end someone asked whether or not they should do some market research to find out what customers wanted. &lt;i&gt;"No"&lt;/i&gt;, replied Jobs, &lt;i&gt;"because people don't know what they want until we've shown them"&lt;/i&gt;. He then pulled out a device the size of a desk diary and flipped it open, it turned out to be a mock-up of a computer that could fit into your lap with a keyboard and screen hinged together like a notebook. &lt;i&gt;"This is my dream of what we will be making in the mid- to late eighties"&lt;/i&gt;, Jobs said. Apple supposedly never did do any market research preferring to follow the Henry Ford approach who said he never asked what people wanted because they would have just asked for a better horseless carriage. Whilst it is probably the case that people can often see how to make incremental improvements to products they usually cannot see how to make disruptive changes that introduce a who new way of doing things, possibly making everything that went before it redundant. It is the job of the architect to show what is in the realms of the possible by creating new and innovative systems. &lt;/li&gt;&lt;li&gt;&lt;i&gt;Putting things together in new and creative ways is sometimes more important than inventing things. &lt;/i&gt;Jobs was not the first to market with an MP3 player, a mobile phone or a tablet computer. Others had already innovated and built these things. What Jobs and Apple did were to &lt;a href="http://www.newyorker.com/reporting/2011/11/14/111114fa_fact_gladwell?currentPage=all"&gt;tweak&lt;/a&gt; things that already existed. As Isaacson says &lt;i&gt;"he had noticed something odd about the cell phones on the market: They all stank, just like portable music players used to"&lt;/i&gt;. Jobs applied his design skills to these and came up with a (far) better product and in fact a whole new platform as well (i.e. the computer as the digital hub. Architects to need to learn that its often putting together existing components in new and innovative ways that really counts and gives a competitive and business advantage.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1171361368785461486?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1171361368785461486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/what-can-architects-learn-from-steve.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1171361368785461486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1171361368785461486'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/11/what-can-architects-learn-from-steve.html' title='What Can Architects Learn from Steve Jobs'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8084509869566628780</id><published>2011-10-31T20:21:00.000Z</published><updated>2011-10-31T20:21:40.645Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>Creativity at Scale</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I stumbled across &lt;a href="http://www.cio.com/article/373215/5_Things_Grady_Booch_Has_Learned_About_Complex_Software_Systems"&gt;this article&lt;/a&gt; by Grady Booch today whilst doing some research on complex systems. It's quite old (well 3 years is an age in this profession) but what it has to say about developing complex systems is, I believe, timeless. In particular I loved Grady's point about the importance of &lt;i&gt;"developing social structures that encourage innovation whilst still preserving predictability"&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;Interestingly another post by Seth Godin &lt;a href="http://sethgodin.typepad.com/seths_blog/2010/05/are-you-an-elite.html"&gt;says&lt;/a&gt;: &lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"The challenge of our time may be to build organizations and platforms that engage and coordinate the elites, wherever they  are. After all, this is where change and productivity come from."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Seth's definition of an "elite" is anyone who is "actively engaged in new ideas, actively seeking out change, actively  engaging."&lt;br /&gt;&lt;br /&gt;The internet is a great platform for bringing people together. The challenge is in how to scale the creativity, that can be easily bought to focus in a small, co-located team, across the internet. The boundaries of the enterprises that used to do this are beginning to crumble. There is often more creativity outside the enterprise than is in it and new architectures (new platforms) need to learn how to make use of this. This is more than just what has been happening with the open source movement, where a group of people come together to build new products, its about how to use creativity at scale to build new platforms. &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;~~~~&lt;/div&gt;&lt;br /&gt;Spookily (well it is Halloween) and with a great bit of &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/12/on-being-software-architect.html"&gt;webendipity&lt;/a&gt; just as I was about to push the publish button on this article up popped in my twitter feed &lt;a href="http://jeremycaine.wordpress.com/2011/10/31/are-platforms-creative/"&gt;this article&lt;/a&gt; by my colleague Jeremy Caine about platforms (e.g. Facebook, iTunes, Twitter) and the creatives that build them.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8084509869566628780?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8084509869566628780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/creativity-at-scale.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8084509869566628780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8084509869566628780'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/creativity-at-scale.html' title='Creativity at Scale'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7828108492528813049</id><published>2011-10-31T15:36:00.001Z</published><updated>2011-10-31T15:36:38.484Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Five IT Trends for Architects to Ponder</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This article on &lt;a href="http://www.zdnet.com/blog/hinchcliffe/the-big-five-it-trends-of-the-next-half-decade-mobile-social-cloud-consumerization-and-big-data/1811"&gt;five big IT trends&lt;/a&gt; is interesting and highlights those areas you might want to consider improving your knowledge and skills in if you want to remain in-demand in the coming year or two. The trends are:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Mobile&lt;/li&gt;&lt;li&gt;Social Computing &lt;/li&gt;&lt;li&gt;Cloud &lt;/li&gt;&lt;li&gt;Consumerization &lt;/li&gt;&lt;li&gt;Big Data&lt;/li&gt;&lt;/ul&gt;After &lt;a href="http://www.information-age.com/channels/security-and-continuity/news/1665118/cybercrime-levels-disturbing-says-gchq-boss.thtml"&gt;this&lt;/a&gt; bit of new I would also add cyber-security as a sixth! &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7828108492528813049?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7828108492528813049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/five-it-trends-for-architects-to-ponder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7828108492528813049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7828108492528813049'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/five-it-trends-for-architects-to-ponder.html' title='Five IT Trends for Architects to Ponder'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-4235159112151433385</id><published>2011-10-21T17:35:00.000+01:00</published><updated>2011-10-21T17:35:43.552+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>Blackberry's Perfect Storm</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A &lt;a href="http://en.wikipedia.org/wiki/Perfect_storm"&gt;perfect storm&lt;/a&gt; is defined as being: &lt;i&gt;a critical or disastrous situation created by a powerful concurrence of factors.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A perfect storm is certainly what &lt;a href="http://www.rim.com/"&gt;RIM&lt;/a&gt;, makers of the Blackberry, have been experiencing recently. For three days, starting on 10th October a problem caused by a router in an unassuming two-storey building in Slough, UK affected almost &lt;a href="http://www.guardian.co.uk/technology/2011/oct/14/blackberry-outage-faulty-router-suspected"&gt;every one of its users around the world&lt;/a&gt;. Not only were users unable to Twitter, or Facebook, more seriously, those users who rely on their Blackberrys for email to do their business may have lost valuable work. Whilst many commentators may have made light of the situation, because people could no longer tweet their every movement, there is a far more serious message here which is that as a civilisation we are now completely dependent on software and hardware technology that runs our daily lives.&lt;br /&gt;&lt;br /&gt;Here's what Blackberry had to &lt;a href="http://uk.blackberry.com/serviceupdate/?CPID=KNC-kw174600_p8&amp;amp;HBX_PK=rim%7C11851b5c-0a43-2d89-3a49-000075917104"&gt;say&lt;/a&gt; on their service bulletin board on 11th October, mid-way through the crisis:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The messaging and browsing delays that some of you are still experiencing were caused by a core switch failure within RIM’s infrastructure.  Although the system is designed to failover to a back-up switch, the failover did not function as previously tested...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately for Blackberry it was not only this technical and process failure that formed part of their perfect storm but two other factors, they could not hoped to have predicted, also occurred recently. One was the launch of the latest &lt;a href="http://www.apple.com/uk/iphone/"&gt;iPhone 4S&lt;/a&gt; from Apple which was released the very same week as Blackberry's network failure. The other is the allegation that Blackberry's, or more precisely the Blackberry Messaging Service (BBM), were &lt;a href="http://www.guardian.co.uk/media/2011/aug/08/london-riots-facebook-twitter-blackberry"&gt;implicated in the recent riots&lt;/a&gt; that took place in London and other UK cities in the summer.&amp;nbsp; For many teens armed with a BlackBerry, BBM has replaced text messaging because it is free, instant and more part of a much larger community than regular SMS. Also, unlike Twitter or Facebook, many BBM messages are untraceable by the authorities.&lt;br /&gt;&lt;br /&gt;From an IT architecture point of view clearly the technical and process failure of such a crucial data centre should just not have been allowed to happen. In some ways Blackberry has been a victim of its own success with the number of users growing from 10 million in 2005 to 70 million now without a corresponding increase in capacity of its network and fully functioning failover facility. However the more interesting, and in some ways more intractable, problem is the competitive, sociological and even ethical aspects of the situation. When Apple launched the first iPhone back in 2007 they changed forever the way people interacted with their phones. Some people have observed that the tactile way in which people "stroke" an iPhone rather than jab at tiny buttons has led to their more widespread adoption. Clearly a case of getting the human-computer interface right paying great dividends. Who would have thought however that the very aspect that once made Blackberry's so popular with business users (their security) could backfire on them in quite such a significant way? Architecture (and design) is not just about getting the right features at the right price it is also about thinking through the likely impact of those features in contexts that may not initially have been envisaged. &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-4235159112151433385?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/4235159112151433385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/blackberrys-perfect-storm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4235159112151433385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4235159112151433385'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/blackberrys-perfect-storm.html' title='Blackberry&apos;s Perfect Storm'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8775867303440131736</id><published>2011-10-06T14:00:00.001+01:00</published><updated>2011-10-06T14:01:11.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>Steve Jobs 1955 - 2011</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;During the coming days and weeks millions of words will be written about Steve Jobs, many of them on devices he created. Why does the world care so much about an American CEO and computer nerd?&lt;br /&gt;&lt;br /&gt;For those of us that work with technology, and hope to use it to make the world a better place, the reason Steve Jobs was such a role model is that he not only had great vision and a brilliant understanding of design but also knew how to deliver technology in a form that was usable by everyone, not just technophiles, nerds and developers. Steve Jobs and Apple have transformed the way we interact with data, and the way that we think about computing, moving it from the desktop to the palm of our hands. As IT becomes ever more pervasive we could all learn from that and maybe even hope to emulate Steve Jobs a little.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8775867303440131736?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8775867303440131736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/steve-jobe-1955-2011.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8775867303440131736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8775867303440131736'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/10/steve-jobe-1955-2011.html' title='Steve Jobs 1955 - 2011'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1462028201199631815</id><published>2011-09-30T21:32:00.001+01:00</published><updated>2011-09-30T21:32:30.092+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='enterprisearchitecture'/><category scheme='http://www.blogger.com/atom/ns#' term='assets'/><category scheme='http://www.blogger.com/atom/ns#' term='togaf'/><category scheme='http://www.blogger.com/atom/ns#' term='pattern'/><title type='text'>Reusable Assets for Architects</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Architects are fond of throwing terms around which have mixed, ambiguous or largely non-existent formal definitions. Indeed one of the great problems (still) of our profession is that people cannot agree on the meanings of many of the terms we use everyday. There is no 'common language' that all architects speak. If you want to see some examples look up terms like 'enterprise architecture' or 'cloud computing' in wikipedia then look at what's written in the 'discussion' section.&lt;br /&gt;&lt;br /&gt;Three terms that often get misused or are used interchangeably fall under the general category of &lt;i&gt;reusable assets&lt;/i&gt;.  A reusable asset is something which has been proven to be useful, in some form or another, in one project or architectural definition and could be reused elsewhere. The &lt;a href="http://www.omg.org/"&gt;Object Management Group&lt;/a&gt; (OMG) defines a reusable asset as one that: &lt;i&gt;provides a solution to a problem for a given context. &lt;/i&gt;See the OMG &lt;a href="http://www.omg.org/spec/RAS/2.2/PDF/"&gt;Reusable Asset Specification&lt;/a&gt;. Those of you familiar with the classic &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns"&gt;&lt;i&gt;Design Patterns&lt;/i&gt;&lt;/a&gt; book by the so called "Gang of Four" will recognise elements of this definition from that book. Indeed reusable assets are a generalization of design patterns. Three other reusable assets, which are of particular use to an architect, are:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Reference architectures&lt;/li&gt;&lt;li&gt;Application frameworks&lt;/li&gt;&lt;li&gt;Industry solutions&lt;/li&gt;&lt;/ul&gt;What do each of these mean, what's the difference and when (or how) can they be used?&lt;br /&gt;&lt;br /&gt;A &lt;b&gt;reference architecture&lt;/b&gt; is a template which shows, usually at a logical level, a set of components and their relationships. Reference architectures are usually created based on perceived best-practice at the time of their creation. This is both a good thing (you get the latest thinking) but can also be bad (they can become dated). Reference architectures are usually associated with a particular domain which could either be a business (e.g. IBM's &lt;a href="http://www-07.ibm.com/solutions/sg/insurance/enterprise_aa/summary.html"&gt;Insurance Application Architecture&lt;/a&gt; or IAA) or industry (such as a banking reference architecture) or technology domain (e.g. &lt;a href="http://www.infoq.com/news/2011/03/IBM-Cloud-Reference-Architecture"&gt;cloud&lt;/a&gt; and &lt;a href="http://www.opengroup.org/projects/soa-ref-arch/uploads/40/19713/soa-ra-public-050609.pdf"&gt;SOA&lt;/a&gt;). Ideally reference architectures will not preordain any technology and will allow multiple vendors products to be mapped to each of the components. Sometimes vendors use reference architectures as a way of placing their tools or products into a cohesive set of products that work together. &lt;br /&gt;&lt;br /&gt;An &lt;b&gt;application framework&lt;/b&gt; represents the partial implementation of a specific area of a system or an application. Reference architectures may be composed of a number of application frameworks. Probably one of the best known application frameworks is &lt;a href="http://struts.apache.org/"&gt;Struts&lt;/a&gt; from the Apache open source organisation. Struts is a Java implementation of the &lt;a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller"&gt;Model-View-Controller&lt;/a&gt; pattern which can be 'completed' by developers for their own applications.&lt;br /&gt;&lt;br /&gt;Finally an &lt;b&gt;industry solution&lt;/b&gt; is a set of pre-configured (or configurable) software components designed to meet specific business requirements of a particular industry. Industry solutions are usually created and sold by software vendors and are based on their own software products. However the best solutions adhere to open standards and would allow other vendors products to be used as well. Most organisations want to avoid vendor lock-in and are unlikely to take the "whole enchilada". Industry solutions may be implementations of one or more reference architectures. For example IBM's &lt;a href="http://www-304.ibm.com/isv/tech/validation/framework/rif.html"&gt;Retail Industry Framework&lt;/a&gt; implements reference architectures from a number of domains (supply chain, merchandising and product management and so on).&lt;br /&gt;&lt;br /&gt;Assets can be considered in terms of their granularity (size) and their level of articulation (implementation). Granularity is related to both the number of elements that comprise the asset and the asset’s impact on the overall architecture. Articulation is concerned with the extent to which the asset can be considered complete. Some assets are specifications only, that is to say are represented in an abstract form, such as a model or document. Other assets are considered to be complete implementations and can be instantiated as is, without modification. Such assets include components and existing applications. The diagram below places the three assets I've discussed above in terms of their granularity and articulation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-O5A6Vx9bWEE/ToYiuZIOpiI/AAAAAAAAAIA/gnTfPlX4658/s1600/Architetcural+Assets.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://1.bp.blogspot.com/-O5A6Vx9bWEE/ToYiuZIOpiI/AAAAAAAAAIA/gnTfPlX4658/s400/Architetcural+Assets.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;There are of course a whole range of other reusable assets: design patterns, idioms, components, complete applications and so on. These could be classified in a similar way. The above are the ones that I think architects are most likely to find useful however.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1462028201199631815?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1462028201199631815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/reusable-assets-for-architects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1462028201199631815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1462028201199631815'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/reusable-assets-for-architects.html' title='Reusable Assets for Architects'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-O5A6Vx9bWEE/ToYiuZIOpiI/AAAAAAAAAIA/gnTfPlX4658/s72-c/Architetcural+Assets.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Dorridge Dorridge</georss:featurename><georss:point>52.373513 -1.767492</georss:point></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-9143723640023337979</id><published>2011-09-29T22:16:00.002+01:00</published><updated>2011-09-29T22:16:57.184+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Plus Two More</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In my previous post on &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/09/five-architectures-that-changed-world.html"&gt;five architectures that changed the world&lt;/a&gt; I left out a couple that didn't fit my self-imposed criteria. Here, therefore, are two more, the first of which is a bit too techie to be a part of everyone's lives but is nonetheless hugely important and the second of which has not changed the world yet but has pretty big potential to do so.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IBM System/360&lt;/b&gt;&lt;br /&gt;Before the &lt;a href="http://en.wikipedia.org/wiki/IBM_System/360#Architectural_overview"&gt;System/360&lt;/a&gt; there was very little interchangeability between computers, even from the same manufacturers. Software had to be created for each type of computer making them very difficult to develop applications for as well as maintain. The System/360 practically invented the concept of architecture as applied to computers in that it had an &lt;i&gt;architecture specification&lt;/i&gt; that did not make any assumptions on the implementation itself, but rather describes the interfaces and the expected behavior of an implementation. The System/360 was the first family of computers designed to cover the complete range of applications, from small to large, both commercial and scientific. The development of the System/360 cost $5 billion back in 1964, that's $34 billion of today's money and almost destroyed IBM.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Watson&lt;/b&gt;&lt;br /&gt;Unless you are American you had probably never heard of the TV game show called &lt;i&gt;Jeopardy!&lt;/i&gt; up until the start of 2011. Now we know that it is a show that "uses puns, subtlety and wordplay" that humans enjoy but which computers would get tied up in knots over. This, it turns out, was the challenge that David Ferrucci, the IBM scientist who led the four year quest to build Watson, had set himself to compete live against humans in the TV show. &lt;br /&gt;&lt;br /&gt;IBM has "form" on building computers to play games! The previous one (Deep Blue) won a six-game match by two wins to one with three draws against world chess champion Garry Kasparov in 1997. Chess, it turns out, is a breeze to play compared to &lt;i&gt;Jeopardy!&lt;/i&gt; Here's why.&lt;br /&gt;Chess...&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="color: #051cb4;"&gt;&lt;span style="color: black; font-family: Wingdings; left: -2.13%; mso-special-format: bullet; position: absolute;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: Wingdings; left: -2.13%; position: absolute;"&gt;§&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;Is a finite, mathematically well-defined search space.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="left: -2.22%; mso-special-format: bullet; position: absolute;"&gt;•&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;Has a large but limited number of moves and states.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="left: -2.22%; mso-special-format: bullet; position: absolute;"&gt;•&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;Makes everything explicit and has unambiguous mathematical rules which computers love.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="tab-interval: .5in; tab-stops: .9965in 1.9965in 2.9965in 3.9965in 4.9965in 5.9965in 6.9965in 7.9965in 8.9965in 9.9965in 10.9965in;"&gt;&lt;div class="O1" style="mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-line-spacing: &amp;quot;100 -32 0&amp;quot;; mso-margin-left-alt: 320; mso-text-indent-alt: 218;"&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;Microsoft YaHei&amp;quot;; font-size: 16pt; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="O1" style="mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-line-spacing: &amp;quot;100 -36 0&amp;quot;; mso-margin-left-alt: 320; mso-text-indent-alt: 218;"&gt;&lt;span style="color: #051cb4;"&gt;&lt;span style="color: black; font-family: Wingdings; left: -2.13%; mso-special-format: bullet; position: absolute;"&gt;§&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: #051cb4; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="left: -2.22%; mso-special-format: bullet; position: absolute;"&gt;•&lt;/span&gt;Games like &lt;i&gt;Jeopardy! &lt;/i&gt;play on the subtleties of the human language however which is...&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;Ambiguous, contextual and implicit.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="left: -2.22%; mso-special-format: bullet; position: absolute;"&gt;•&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;Grounded only in &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;human cognition.&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="left: -2.1%; mso-special-format: bullet; position: absolute;"&gt;•&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt;Can have a seemingly infinite&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt; number of ways&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Arial;"&gt;&lt;span lang="EN-US" style="color: black; mso-fareast-font-family: &amp;quot;Microsoft YaHei&amp;quot;;"&gt; to express the same meaning.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;&lt;span lang="EN-US" style="color: black;"&gt;According to IBM &lt;/span&gt;&lt;/span&gt;Watson is &lt;i&gt;"built on IBM's DeepQA technology for hypothesis generation, massive evidence gathering, analysis, and scoring."&lt;/i&gt; Phew! The point of Watson however is not its ability to play a game show but in the potential to "&lt;i&gt;weaves its fabric" &lt;/i&gt;into the messiness of our human lives where data is not kept in nice ordered relational databases but is unstructured and seemingly unrelated but nevertheless can sometimes have new and undiscovered meaning. One obvious application is in medical diagnosis but it could also be used in a vast array of other situations from help desks through to sorting out what benefits you are entitled to. So, not world changing yet but definitely watch this space.&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/Watson_%28computer%29#cite_note-ibm-1"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span lang="EN-US" style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-9143723640023337979?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/9143723640023337979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/plus-two-more.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/9143723640023337979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/9143723640023337979'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/plus-two-more.html' title='Plus Two More'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2352960651099124603</id><published>2011-09-28T16:15:00.000+01:00</published><updated>2011-09-29T21:28:47.724+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Five Architectures That Changed The World</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A favourite quote of mine from &lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/gradybooch/entry/the_invisible_thread?lang=en"&gt;Grady Booch&lt;/a&gt; is:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Software is the invisible thread and hardware is the loom on which computing weaves its fabric, a fabric that we have now draped across all of life".&lt;/i&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Software, although an "invisible thread" has certainly had a significant and visible impact on our world and now pervades pretty much all of our lives. Some software, and in particular some software &lt;i&gt;architectures,&lt;/i&gt; have had a significance beyond just the everyday and have truly changed the world.&lt;br /&gt;&lt;br /&gt;First, exactly what constitutes a world changing architecture? For me it is one that meets &lt;u&gt;all&lt;/u&gt; of the following...&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;It must have had an impact beyond the field of computer science or a single business area and, preferably, must have woven its way into peoples lives.&lt;/li&gt;&lt;li&gt;Does not &lt;u&gt;have&lt;/u&gt; to have introduced any new technology, may also have used use existing components in new and innovative ways.&lt;/li&gt;&lt;li&gt;The architecture itself may be relatively simple, but the way it has been deployed may be what makes it "world changing".&lt;/li&gt;&lt;li&gt;Has extended the lexicon of our language either literally (as in "I tried googling that word" or indirectly in what we do (e.g. the way we now use App stores to get our software).&lt;/li&gt;&lt;li&gt;Has emergent properties and been extended in ways the architect(s) did not originally envisage. &lt;/li&gt;&lt;/ol&gt;Based on these criteria then here are five architectures that have really changed our lives and our world. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;World Wide Web&lt;/b&gt;&lt;br /&gt;When Tim Berners-Lee published his innocuous sounding paper &lt;a href="http://www.w3.org/History/1989/proposal.html"&gt;&lt;i&gt;Information Management: A Proposal&lt;/i&gt;&lt;/a&gt; in 1989 I doubt he could have had any idea what an impact his "proposal" was going to have. This was the paper that introduced us to what we now call the world wide web and has quite literally changed the world forever.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Apple's iTunes&lt;/b&gt;&lt;br /&gt;There has been much talk in cyberspace and in the media in general on the effect and impact &lt;a href="http://forrester.typepad.com/groundswell/2011/08/the-meaning-of-steve.html"&gt;Steve Jobs&lt;/a&gt; has had on the world. When Apple introduced the iPod in October 2001 although it had the usual Apple cool design makeover it was, when all was said and done, just another MP3 player. What really made the iPod take off and changed everything was iTunes. It not only turned the music industry upside down and inside out but gave us the game-changing concept of the 'App Store' as a way of consuming digital media. The impact of this is still ongoing and is driving the whole idea of cloud computing and the way we will consume software. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Google&lt;/b&gt;&lt;br /&gt;When Google was founded in 1999 it was just another company building a search engine. As Douglas Edwards says in his book &lt;a href="http://www.guardian.co.uk/books/2011/sep/04/feeling-lucky-confessions-google-review"&gt;&lt;i&gt;I'm Feeling Lucky&lt;/i&gt;&lt;/a&gt; "everybody and their brother had a search engine in those days". When Sergey Brin was asked how he was going to make money (out of search) he said "Well..., we'll figure something out". Clearly 12 years later they have figured out that something and become one of the fastest growing companies ever. What Google did was not only create a better, faster, more complete search engine than anyone else but also figured out how to pay for it, and all the other Google applications through advertising. They created have created a new market and &lt;a href="http://en.wikipedia.org/wiki/Value_network"&gt;value network&lt;/a&gt; (in other words a &lt;a href="http://en.wikipedia.org/wiki/Disruptive_technology"&gt;disruptive technology)&lt;/a&gt; that has changed the way we seek out and use information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wikipedia&lt;/b&gt;&lt;br /&gt;Before WIkipedia there was a job called an Encyclopedia Salesman who walked from door to door selling knowledge packed between bound leather covers. Now, such people have been banished to the great redundancy home in the sky along with typesetters and &lt;a href="http://en.wikipedia.org/wiki/Comptometer"&gt;comptometer&lt;/a&gt; operators. &lt;br /&gt;&lt;br /&gt;If you do a Wikipedia on Wikipedia you get the following definition:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Wikipedia is a multilingual, web-based, free-content encyclopedia project based on an openly editable model. The name "Wikipedia" is a portmanteau of the words wiki (a technology for creating collaborative websites, from the Hawaiian word wiki, meaning "quick") and encyclopedia. Wikipedia's articles provide links to guide the user to related pages with additional information.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;From an architectural point of view Wikipedia is "just another wiki" however what it has bought to the world is community participation on a massive scale and an architecture to support that collaboration (400 million unique visitors monthly more than 82,000 active contributors working on more than 19 million articles in over 270 languages). Wilipedia clearly meets all of the above crtieria (and more).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Facebook&lt;/b&gt;&lt;br /&gt;To many people Facebook &lt;u&gt;is&lt;/u&gt; social networking. Not only has it seen off all competitors it also makes it almost impossible for new ones to join. Whilst the jury is still out on &lt;a href="http://plus.google.com/"&gt;Google+&lt;/a&gt; it will be difficult to see how it can ever reach the 800 million people Facebook has. Facebook is also the largest photo-storing site on the web and has developed its own &lt;a href="http://www.niallkennedy.com/blog/2009/04/facebook-haystack.html"&gt;photo storage system&lt;/a&gt; to store and serve its photographs. See &lt;a href="http://idleprocess.wordpress.com/2009/11/24/presentation-summary-high-performance-at-massive-scale-lessons-learned-at-facebook/"&gt;this&lt;/a&gt; article on Facebook architecture as well as &lt;a href="http://www.infoq.com/presentations/Facebook-Software-Stack"&gt;this&lt;/a&gt; presentation (slightly old now but interesting nonetheless)&lt;br /&gt;&lt;br /&gt;I'd like to thank both Grady Booch and Peter Eeles for providing input to this post. Grady has been doing great work on &lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/scott/entry/grady_booch_on_software_archeology_and_exploring_watson?lang=en"&gt;software archeology&lt;/a&gt;&amp;nbsp; and knows a thing or two about software architecture. Peter is my colleague at IBM as well as co-author on &lt;a href="http://www.processofsoftwarearchitecting.com/"&gt;&lt;i&gt;The Process of Software Architecting&lt;/i&gt;&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2352960651099124603?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2352960651099124603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/five-architectures-that-changed-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2352960651099124603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2352960651099124603'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/five-architectures-that-changed-world.html' title='Five Architectures That Changed The World'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5554955056832281578</id><published>2011-09-14T19:16:00.000+01:00</published><updated>2011-09-15T12:12:09.313+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprisearchitecture'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='emergence'/><title type='text'>Emergent Architectures</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I was slightly alarmed to read recently in a document describing a particular adaptation of the &lt;a href="http://en.wikipedia.org/wiki/Unified_Process"&gt;unified process&lt;/a&gt; that allowing architectures to ‘emerge’ was a poor excuse to avoid hard thinking and planning and that emergent architectures, and anyone who advocates them, should be avoided.&lt;br /&gt;&lt;br /&gt;The term 'emergent architecture' was, I believe, first coined by Gartner (see &lt;a href="http://www.gartner.com/it/page.jsp?id=1124112"&gt;here&lt;/a&gt;) and applied to Enterprise Architecture. Gartner identified a number of characteristics that could be applied to emergent architectures one of which was that they are non-deterministic. Traditionally (enterprise) architects applied centralised decision-making to design outcomes. Using emergent architecture, they instead must decentralise decision-making to enable innovation.&lt;br /&gt;&lt;br /&gt;Whilst emergent architectures certainly have their &lt;a href="http://blog.opengroup.org/2011/04/26/challenges-of-emergent-architecture/"&gt;challenges&lt;/a&gt; it is my belief that, if well managed, they can only be a good thing and should certainly not be discouraged. Indeed I would say that emergence could be applied at a Solution Architecture level as well and is ideally suited to more agile approaches where everything is simply not known up front. The key thing with managing an emergent architecture is to capture architectural decisions as you go and ensure the architecture adapts as a result of real business needs. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5554955056832281578?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5554955056832281578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/emergent-architectures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5554955056832281578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5554955056832281578'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/09/emergent-architectures.html' title='Emergent Architectures'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-6073568598649797972</id><published>2011-08-30T23:54:00.003+01:00</published><updated>2011-08-30T23:55:54.658+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='smarterplanet'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>What Would Google Do?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Readers of this blog will know that one of my interests/research areas is how to effectively bring together left-brain (i.e. logical) and right-brain (i.e. creative) thinkers in order to drive creativity and generate new and innovative ideas to solve some of the worlds &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/11/on-being-versatilist.html"&gt;wicked problems&lt;/a&gt;. One of the books that have most influenced me in this respect is Daniel Pink's &lt;a href="http://www.danpink.com/whole-new-mind"&gt;&lt;i&gt;A Whole New Mind - Why Right-Brainers Will Rule the Future&lt;/i&gt;&lt;/a&gt;. Together with a colleague I am developing the concept of the &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/03/v-is-for-versatilist.html"&gt;versatilist&lt;/a&gt; (first coined by Gartner) as a role that effectively brings together both right- and left-brain thinkers to solve some of the knotty business problems there are out there. As part of this we are developing a series of brain exercises that can be given to students on creative, problem solving courses to open up their minds and start them thinking outside the proverbial &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/10/architecting-out-of-box.html"&gt;box&lt;/a&gt;. One of these exercises is called &lt;i&gt;What Would Google Do?&lt;/i&gt; The idea being to try and get them to take the non-conventional, Google, view of how to solve a problem. By way of an example Douglas Edwards, in his book &lt;i&gt;&lt;a href="http://www.amazon.com/Im-Feeling-Lucky-Confessions-Employee/dp/0547416997"&gt;I'm Feeling Lucky - The Confessions of Google Employee Number 59&lt;/a&gt;&lt;/i&gt;, relates the following story about how &lt;a href="http://en.wikipedia.org/wiki/Sergey_Brin"&gt;Sergey Brin&lt;/a&gt;, co-founder of Google, proposed an innovative approach to marketing.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Why don't we take the marketing budget and use it to inoculate Chechen refugees against cholera. It will help our brand awareness and we'll get more new people to use Google."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Just how serious Brin was being here we'll never know but you get the general idea; no idea is too outrageous for folk in the &lt;a href="http://en.wikipedia.org/wiki/Googleplex"&gt;Googleplex&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To further backup how serious Google are about creativity their chairman Eric Schmidt, delivered a &lt;i&gt;"devastating critique of the UK's education system and said the country had failed to capitalise on its record of innovation in science and engineering"&lt;/i&gt; at this year's &lt;a href="http://www.guardian.co.uk/technology/2011/aug/26/eric-schmidt-chairman-google-education?CMP=twt_gu"&gt;MacTaggart lecture&lt;/a&gt; in Edinburgh.&amp;nbsp; Amongst other criticisms Schmidt aimed at the UK education system he said that the country that invented the computer was &lt;i&gt;"throwing away your great computer heritage by failing to teach programming in schools " &lt;/i&gt;and&lt;i&gt; &lt;/i&gt;was flabbergasted to learn that today computer science isn't even taught as standard in UK schools. Instead the IT curriculum &lt;i&gt;"focuses on teaching how to use software, but gives no insight into how it's made." &lt;/i&gt;For those of us bought up in the UK at the time of the BBC Microcomputer hopefully &lt;a href="http://www.guardian.co.uk/technology/2011/aug/28/ict-changes-needed-national-curriculum?CMP=twt_gu"&gt;this guy&lt;/a&gt; will be the saviour of the current generation of programmers.&lt;br /&gt;&lt;br /&gt;US readers of this blog should not feel too smug, check out this YouTube video from Dr. Michio Kaku who gives an equally devastating critique of the US education system.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/NK0Y9j_CGgM/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NK0Y9j_CGgM&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/NK0Y9j_CGgM&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;So, all in all, I think the world definitely needs more of a versatilist approach, not only in our education systems but also in the ways we approach problem solving in the workplace. Steve Jobs, the chief executive of Apple, who revealed last week that he was stepping down once told the New York Times: &lt;i&gt;"The Macintosh turned out so well because the people working on it were musicians, artists, poets and historians – who also happened to be excellent computer scientists". &lt;/i&gt;Once again Apple got this right several years ago and are now reaping the &lt;a href="http://www.apple.com/pr/library/2011/04/20Apple-Reports-Second-Quarter-Results.html"&gt;benefits&lt;/a&gt; of that far reaching, versatilist approach. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-6073568598649797972?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/6073568598649797972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/what-would-google-do.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6073568598649797972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6073568598649797972'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/what-would-google-do.html' title='What Would Google Do?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5933098313584865185</id><published>2011-08-25T22:30:00.000+01:00</published><updated>2011-08-25T22:30:09.927+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>Creative Leaps and the Importance of Domain Knowledge</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Sometimes innovation appears to come out of nowhere. Creative individuals, or companies, appear to be in touch with the zeitgeist of the times and develop a product (or service) that does not just satisfy an unknown need but may even create a whole new market that didn't previously exist. I would put James Dyson (&lt;a href="http://www.dyson.co.uk/vacuums/wmdd.asp"&gt;bagless vacuum cleaner&lt;/a&gt;) as an example of the former and Steve Jobs/Apple (&lt;a href="http://www.apple.com/uk/ipad/"&gt;iPad&lt;/a&gt;) as an example of the latter.&lt;br /&gt;&lt;br /&gt;Sometimes the innovation may even be a &lt;a href="http://en.wikipedia.org/wiki/Disruptive_technology"&gt;disruptive technology&lt;/a&gt; that creates a new market where one previously did not exist and may even destroy existing markets. Digital photography and its impact on the 35mm film producing companies (Kodak and Ilford) is a classic example of such a disruptive technology.&lt;br /&gt;&lt;br /&gt;Most times however creativity comes from simply putting together existing components in new and interesting ways that meet a business need. For merely mortal software architects if we are to do this we not only need a good understanding of what those components do but also how the domain we are working in really, really works. You need to not only &lt;a href="http://sethgodin.typepad.com/seths_blog/2011/08/bypassing-the-leap.html"&gt;be curious&lt;/a&gt; about your domain (whether it be financial services, retail, public sector or whatever) but be able to ask the hard questions that no one else thought or bothered to ask. Sometimes this means not following the herd and being fashionable but being completely unfashionable. As &lt;a href="http://en.wikipedia.org/wiki/Paul_Arden"&gt;Paul Arden&lt;/a&gt;, the Creative Director of &lt;a href="http://www.saatchi.co.uk/"&gt;Saatchi and Saatchi &lt;/a&gt;said in his book &lt;a href="http://www.amazon.co.uk/Whatever-You-Think-Opposite/dp/0141025719"&gt;&lt;i&gt;Whatever You Think, Think The Opposite&lt;/i&gt;&lt;/a&gt;:&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;"People who create work that fashionable people emulate do the very opposite of what is in fashion. They create something unfashionable, out of time, wrong. Original ideas are created by original people, people who either through instinct or insight know the value of being different and recognise the commonplace as a dangerous place to be."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So do you want to be fashionable or unfashionable?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5933098313584865185?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5933098313584865185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/creative-leaps-and-importance-of-domain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5933098313584865185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5933098313584865185'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/creative-leaps-and-importance-of-domain.html' title='Creative Leaps and the Importance of Domain Knowledge'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-4414932599140436103</id><published>2011-08-12T23:50:00.001+01:00</published><updated>2011-08-12T23:50:34.812+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='artefact'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='zen'/><title type='text'>On Being an Effective Architect</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In a previous blog entry I talked about the key skills architects needed to develop to perform their craft which I termed &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/05/essence-of-being-architect.html"&gt;the essence of being an architect&lt;/a&gt;. Developing this theme slightly I also think there is a &lt;i&gt;process&lt;/i&gt; that architects need to follow if they are to be effective. Stripped down to its bare essentials this process is as shown below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pdXaxHyblyk/TkWN3oBVl_I/AAAAAAAAAHQ/R4Mj0aUxVc8/s1600/Envision-Realise-Influence.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://4.bp.blogspot.com/-pdXaxHyblyk/TkWN3oBVl_I/AAAAAAAAAHQ/R4Mj0aUxVc8/s400/Envision-Realise-Influence.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This is not meant to be a process in the strict &lt;a href="http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle"&gt;SDLC&lt;/a&gt; sense of the word but more of a &lt;i&gt;meta&lt;/i&gt;-process that applies across any SDLC. Here's what each of the steps means and some of the artefacts that would typically be created in each step (shown in italics).&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Envision&lt;/b&gt; - Above all else the architect needs to define and maintain the vision of what the system is to be. This can be in the form of one or more, free-format &lt;a href="http://softwarearchitecturezen.blogspot.com/2009/08/two-diagrams-all-architects-need.html"&gt;&lt;i&gt;Architecture Overview&lt;/i&gt;&lt;/a&gt; diagrams and would certainly include having an overall &lt;a href="http://softwarearchitecturezen.blogspot.com/2009/08/two-diagrams-all-architects-need.html"&gt;&lt;i&gt;System Context&lt;/i&gt;&lt;/a&gt; that defined the boundary around the system under development (SUD). The vision would also include capturing the key &lt;i&gt;Architectural Decisions&lt;/i&gt; that have shaped the system to be the way it is and also refer to some of the key &lt;i&gt;Architecture Principles&lt;/i&gt; that are being followed.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Realise&lt;/b&gt; -As well as having a vision of how the system will be the architect must know how to realise her vision otherwise the architecture will remain as mere paper or bits and bytes stored in a modeling tool. Realisation is about making choices of which technology will be used to implement the system. Choices considered may be captured as &lt;i&gt;Architectural Decisions&lt;/i&gt; and issues or risks associated with making such decisions captured in a &lt;i&gt;RAID Log&lt;/i&gt; (Risks-Assumptions-Issues-Dependencies). &lt;i&gt;Technical Prototypes&lt;/i&gt; may also be built to prove some of the technologies being selected.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Influence&lt;/b&gt; -Above all else architects need to be able to exert the required influence to carry through their vision and the realisation of that vision. Some people would refer to this as governance however for me influence is a more subtle, background task that, if done well, is almost unnoticed but nonetheless has the desired effect. Influencing is about having and following a &lt;i&gt;Stakeholder Management Plan&lt;/i&gt; and communicating your architecture frequently to your key stakeholders.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Each of these steps are performed many times, or even continuously, on a project. Influencing means listening as well and this may lead to changes in your vision thus starting the whole cycle again. &lt;br /&gt;&lt;br /&gt;Adopting this approach is not guaranteed to give you perfect systems as their are lots of other factors, as well as people, that come into play during a typical project. What it will do is give you a framework that allows you to bring some level of rigour to the way you develop your architectures and work with stakeholders on a project.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-4414932599140436103?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/4414932599140436103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/on-being-effective-architect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4414932599140436103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4414932599140436103'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/on-being-effective-architect.html' title='On Being an Effective Architect'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-pdXaxHyblyk/TkWN3oBVl_I/AAAAAAAAAHQ/R4Mj0aUxVc8/s72-c/Envision-Realise-Influence.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-700921906392137046</id><published>2011-08-06T09:20:00.001+01:00</published><updated>2011-08-06T09:20:52.116+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>Happy Birthday WWW</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Today is the &lt;a href="http://www.bbc.co.uk/news/technology-14430076"&gt;20th anniversary&lt;/a&gt; of the &lt;a href="http://en.wikipedia.org/wiki/World_Wide_Web"&gt;world wide web&lt;/a&gt;; or at least the &lt;a href="http://en.wikipedia.org/wiki/History_of_the_World_Wide_Web"&gt;anniversary&lt;/a&gt; of the first web page. On this day in 1991 Tim Berners-Lee posted a short summary of the World Wide Web project on the alt.hypertext newsgroup:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;The WorldWideWeb (WWW) project aims to allow all links to be made to any information anywhere. [...] The WWW project was started to allow high energy physicists to share data, news, and documentation. We are very interested in spreading the web to other areas, and having gateway servers for other data. Collaborators welcome!&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He certainly found a lot of collaborators!&lt;br /&gt;&lt;br /&gt;As I've said &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/03/skills-for-building-smarter-planet.html"&gt;before&lt;/a&gt; I believe the WWW is one of the greatest feats of software architecture ever performed. Happy Birthday WWW!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-700921906392137046?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/700921906392137046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/happy-birthday-www.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/700921906392137046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/700921906392137046'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/happy-birthday-www.html' title='Happy Birthday WWW'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1757568586809112918</id><published>2011-08-03T15:36:00.000+01:00</published><updated>2011-08-03T15:36:03.402+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='antipattern'/><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>The Tools We Use</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Back in 1964 Marshall McLuhan said&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/Understanding_Media:_The_Extensions_of_Man"&gt;&lt;i&gt;"We shape our tools and afterwards our tools shape us"&lt;/i&gt;&lt;/a&gt;. McLuhan was actually talking about the media when he said this but much of what he said then has a great deal of relevance in today's &lt;a href="http://www.guardian.co.uk/technology/2011/jul/24/marshall-mcluhan-media-john-naughton"&gt;mixed up media world too&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It occurs to me that McLuhan's tool quote equally applies to the tools we use, or misuse, as software architects. PowerPoint (or Keynote for that matter) has received &lt;a href="http://blog.duarte.com/2011/07/if-the-medium-is-the-message-would-mcluhan-like-powerpoint/"&gt;pretty bad press&lt;/a&gt; over the years as being a tool that inhibits rather than enhances our creativity. Whilst this does not have to be the case, too many people take tools, such as PowerPoint, and use them in ways I'm pretty sure their creators never intended. Here are some common tool (mis)uses I've observed over the years (anti-patterns for tools if you like):&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;Spreadsheets as a databases.&lt;/i&gt; Too many people seem to use spreadsheets as a sort of global repository for dumping ideas, data and information in general because it gives them the ability to easily sort and categorise information. Spreadsheets are good at numbers and presenting analytical data but not for capturing textual information.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Presentations as documents.&lt;/i&gt; Sometimes what started out as a presentation to illustrate a good idea seems to grow into a more detailed description of that idea and eventually turns into a full-blown specification! The excuse for doing this being "we can use this to present to the client as well as leaving it with them at the end of the project as the design of the system". Bad idea!&lt;/li&gt;&lt;li&gt;&lt;i&gt;Presentations as a substitute for presenting.&lt;/i&gt; The best presenters present &lt;a href="http://presentationzen.blogs.com/presentationzen/2005/10/make_your_next_.html"&gt;"naked"&lt;/a&gt;. Minimal presentations (where sometimes minimal = 0) where the presenter is at the fore and his or her slides are illustrating the key ideas is what presenting is or should be about. Did John F Kennedy, Winston Churchill or Martin Luther King rely on PowerPoint to get their big ideas across? I think not!&lt;/li&gt;&lt;li&gt;&lt;i&gt;Word processors as presentations.&lt;/i&gt; This is the opposite of number 2. Whilst not so common&amp;nbsp; people have been known in my experience to 'present' their documents on a screen in a meeting. It goes without saying, or should do, that 12pt (or less) text does not come across well on a screen. &lt;/li&gt;&lt;li&gt;&lt;i&gt;Word processors as web sites.&lt;/i&gt; Although most word processors have the capability of generating HTML this is not a good reason for using them to build web sites. There are a multitude of free, open and paid for tools that do a far better job of this. &lt;/li&gt;&lt;li&gt;&lt;i&gt;Emails as documents.&lt;/i&gt; This is variant (generalisation) of one of my &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/01/architecture-anti-patterns-pattern-1.html"&gt;&lt;i&gt;favourite&lt;/i&gt; [sic] anti-patterns&lt;/a&gt;. e-mails are one of the greatest sources of unstructured data in the world today. There must be, literally, terabytes of data stored using this medium that should otherwise be captured in a more readily consumable and accessible form. e-mails clearly have a place for &lt;i&gt;forming&lt;/i&gt; ideas but not for capturing outcomes and persisting those ideas so others can see them and learn from them.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1757568586809112918?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1757568586809112918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/tools-we-use.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1757568586809112918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1757568586809112918'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/08/tools-we-use.html' title='The Tools We Use'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7346072223773587379</id><published>2011-07-28T18:30:00.000+01:00</published><updated>2011-07-28T18:30:01.345+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Oh Dear, Here We Go Again!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So, here we go again. The BBC &lt;a href="http://www.bbc.co.uk/news/uk-politics-14314935"&gt;today&lt;/a&gt; report that &lt;i&gt;"IT giants are 'ripping off' Whitehall, say MPs"&lt;/i&gt;. As I presumably work for one of those "IT giants" I will attempt to comment on this in as impartial a way as is possible.&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;As long as we have 'IT projects' rather than 'business improvement' or 'business change' projects in government, or anywhere else come to that, we (and it is 'we' as tax payers) will continue to get 'ripped off'. Buying IT because it is '&lt;a href="http://www.bbc.co.uk/news/uk-politics-12905303"&gt;sexy&lt;/a&gt;'&amp;nbsp; is always going to end in tears. IT is a tool that may or may not fix a business problem. Unless you understand the true nature of that business problem throwing IT at it is doomed to failure. This is what software architects need to focus on. I'm coming to the conclusion that the best architects are actually &lt;a href="http://en.wikipedia.org/wiki/Technophobia"&gt;technophobes&lt;/a&gt; rather than &lt;a href="http://www.thefreedictionary.com/technophile"&gt;technophiles&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;It's not Whitehall that is being 'ripped off' here. It's you and me as tax payers (assuming you live in the UK and pay taxes to the UK government of course). Whether you work in IT or anywhere else this effects &lt;u&gt;you&lt;/u&gt;. &lt;/li&gt;&lt;li&gt;It's not only understanding the requirements that is important, it's also challenging those requirements as well as the business case that led to them in the first place. I suspect that many, many projects have been dreamt up as someones fantasy, &lt;a href="http://www.bbc.co.uk/news/10241187"&gt;nice to have&lt;/a&gt; system rather than having any real business value.&lt;/li&gt;&lt;li&gt; Governments should be no different from anyone else when it comes to buying IT. If I'm in the market for a new laptop I usually spend a little time reading up on what other buyers think and generally make sure I'm not about to buy something that's not fit for purpose. One of the criticisms leveled at government in this report is the &lt;i&gt;"lack of IT skills in government and over-reliance on contracting out"&lt;/i&gt;. In other words there are not enough experienced architects who work in government that can challenge some of the assumptions and proposed solutions that come from vendors.&lt;/li&gt;&lt;li&gt;Both vendors and government departments need to learn how to make agile work on large projects. We have enough experience now to know that multi-year, multi-person, multi-million pound projects that aim to deliver 'big-bang' fashion just do not work. Bringing a more agile approach to the table, delivering a little but more often so users can verify and feedback on what they are getting for their money is surely the way to go. This approach depends on more trust between client and supplier as well as better and more continuous engagement throughout the project's life. &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7346072223773587379?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7346072223773587379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/oh-dear-here-we-go-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7346072223773587379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7346072223773587379'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/oh-dear-here-we-go-again.html' title='Oh Dear, Here We Go Again!'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2941920691065899415</id><published>2011-07-27T22:48:00.001+01:00</published><updated>2011-07-27T22:48:29.490+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>The Innovation Conundrum and Why Architecture Matters</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A number of items in the financial and business news last week set me thinking about why architecture matters to innovation. Both IBM and Apple announced their second quarter results. IBM's &lt;a href="http://www.ibm.com/investor/2q11/press.phtml"&gt;revenue&lt;/a&gt; for Q2 2011 was $26.7B, up 12% on the same quarter last year and Apples &lt;a href="http://www.apple.com/pr/library/2011/04/20Apple-Reports-Second-Quarter-Results.html"&gt;revenue&lt;/a&gt; for the same quarter was&amp;nbsp; $24.67B, an incredible 83% jump on the same quarter last year. As I'm sure everyone now knows IBM is &lt;a href="http://www.ibm.com/ibm100/us/en/"&gt;100 years&lt;/a&gt; old this year whereas Apple is a mere 35 years old. It looks like both &lt;a href="http://techcrunch.com/2011/07/21/apple-is-a-100-billion-company/"&gt;Apple&lt;/a&gt; and IBM will become $100B companies this year if all goes to plan (IBM having missed joining the $100B club by a mere &lt;a href="http://www-03.ibm.com/press/us/en/pressrelease/33414.wss"&gt;$0.1B in 2010&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Coincidentally a Forbes article also caught my eye. Forbes listed the &lt;a href="http://www.forbes.com/special-features/innovative-companies.html"&gt;top 100 innovative companies&lt;/a&gt;. Top of the list was &lt;a href="http://salesforce.com/"&gt;salesforce.com&lt;/a&gt;, Apple were number 5 and IBM were, er, not in the top 100! So what's going on here? How can a company that pretty much invented the mainframe &lt;i&gt;and&lt;/i&gt; personal computer, helped put a man on the moon, invented the scanning electron microscope and scratched the letters IBM onto a nickel crystal one atom at a time, and, most recently, took artificial intelligence a giant leap forward with &lt;a href="http://www-03.ibm.com/innovation/us/watson/"&gt;Watson&lt;/a&gt; not be classed as innovative?&lt;br /&gt;&lt;br /&gt;Perhaps the clue is in what the measure of innovation is. The Forbes article measures innovation by an "innovation premium" which it defines as:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;"A measure of how much investors have bid up the stock price of a company above the value of its existing business based on expectations of future innovative results (new products, services and markets)".&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So it would appear that, going by this definition of innovation, investors don't think IBM is expected to be bringing any innovative products or services to market whereas the world will no doubt be inundated with all sorts of shiny iThingys over the course of the next year or so. But is that really all there is to being innovative? I would venture not.&lt;br /&gt;&lt;br /&gt;The final article that caught my eye was about Apples cash reserves. Depending on which &lt;a href="http://techcrunch.com/2011/01/20/3-9-billion-of-apples-massive-cash-reserves-to-go-toward-lcd-displays/"&gt;source&lt;/a&gt; you read this is around $60B and as anyone who has any cash to invest knows, sitting on it is not the best way of getting good returns! Companies generally have a few options with what to do when they amass so much cash, pay out higher dividends to shareholders, buy back their own shares, invest more in R&amp;amp;D or go on a buying spree and buy some companies that fill holes in their portfolio. Whilst this is a good way of quickly entering into markets companies may not be active in it tends to backfire on the innovation premium as mergers and acquisitions (M&amp;amp;A) are not, at least initially, seen as bringing anything new to market. M&amp;amp;A's has been IBM's approach over the last decade or so. As well as the big software brands like Lotus, Rational and Tivoli IBM has more recently bought lots of smaller software companies such as &lt;a href="http://www.castiron.com/"&gt;Cast Iron Systems&lt;/a&gt;, &lt;a href="http://www-01.ibm.com/software/analytics/spss/"&gt;SPSS Statistics&lt;/a&gt; and &lt;a href="http://www.netezza.com/"&gt;Netezza&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A potential problem with this approach is that people don't want to buy a "bag of bits" and have to assemble their own solutions Lego style. What they want are &lt;i&gt;business solutions&lt;/i&gt; that address the very real and complex (wicked, even) problems they face today. This is where the software architect comes into his or her own. The role of the software architect is to &lt;i&gt;"&lt;a href="http://softwarearchitecturezen.blogspot.com/2010/11/hire-architect.html"&gt;take existing components and assemble them in interesting  and important ways&lt;/a&gt;".&lt;/i&gt; To that I would add &lt;i&gt;innovative&lt;/i&gt; ways as well. Companies no longer want the same old solutions (ERP system, contact management system etc) but new and innovative systems that solve their business problems. This is why we have one of the more interesting jobs there is out there today!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2941920691065899415?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2941920691065899415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/innovation-conundrum-and-why.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2941920691065899415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2941920691065899415'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/innovation-conundrum-and-why.html' title='The Innovation Conundrum and Why Architecture Matters'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1198482947447529901</id><published>2011-07-21T20:33:00.000+01:00</published><updated>2011-07-21T20:33:24.748+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='spem'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>A Service Based Development Process - Part 4</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The first three of these blog posts (&lt;a href="http://softwarearchitecturezen.blogspot.com/2011/06/service-based-development-process-part.html"&gt;here&lt;/a&gt;, &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part.html"&gt;here&lt;/a&gt; and &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part_12.html"&gt;here&lt;/a&gt;) have looked at the process behind developing business processes and services that could be deployed into an appropriate environment, including a cloud (private, public or hybrid). In this final post I'll take a look at how to make this 'real' by describing an architecture that could be used for developing and deploying services, together with some software products for realising that architecture.&lt;br /&gt;&lt;br /&gt;The diagram below shows both the development time and also run-time &lt;i&gt;logical level&lt;/i&gt; architecture of a system that could be used for both developing and deploying business processes and services. This has been created using the sketching capability of &lt;a href="http://www-01.ibm.com/software/rational/products/swarchitect/"&gt;Rational Software Architect&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-x6RQOU3HyAM/TihpIQWPQuI/AAAAAAAAAHM/wKM5XbnpkbI/s1600/SBD+Environment.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-x6RQOU3HyAM/TihpIQWPQuI/AAAAAAAAAHM/wKM5XbnpkbI/s640/SBD+Environment.jpeg" width="516" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here's a brief summary of what each of the logical components in this architecture sketch do (i.e. their responsibilities):&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;SDLC Repository&lt;/b&gt; - The description of the SDLC goes here. That is the work breakdown structure, a description of all the phases, activities and tasks as well as the work products to be created by each task and also the roles used to create them. This would be created and modified by the actor Method Author using a SDLC Developer tool. The repository would typically include guidance (examples, templates, guidelines etc) that show how the SDLC is to be used and how to create work products.&lt;/li&gt;&lt;li&gt;&lt;b&gt;SDLC Developer&lt;/b&gt; - The tool used by the Method Author to compose new or modify existing processes. This tool published the SDLC into the SDLC Repository.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Development Artefacts Repository&lt;/b&gt; - This is where the work products that are created on an actual project (i.e. 'instances' of the work products described in the SDLC) get placed.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Business Process Developer&lt;/b&gt; - The tool used to create and modify business processes.&lt;/li&gt;&lt;li&gt;&lt;b&gt;IT Service Developer&lt;/b&gt; - The tool used to create and modify services.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Development Repository&lt;/b&gt; - This is where 'code' level artefacts get stored during development. This could be a subset of the Development Artefacts Repository.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Runtime Services Repository&lt;/b&gt; -Services get published hereonce they have been certified and can be released for general use.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Process Engine&lt;/b&gt; - Executes the business process.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Enterprise Service Bus&lt;/b&gt; - Runs the services and provides adapters to external or legacy systems.&lt;/li&gt;&lt;/ul&gt;Having described the logical components the next step is to show how these can be &lt;i&gt;realised&lt;/i&gt; using one or more vendors products. No surprise that I am going to show how these map to products from IBM's portfolio however clearly your own particular requirements (including whose on your preferred vendor list of course) may dictate that you choose other vendors products. Nearly all the IBM product links allow you to download trial versions that you can use to try out this approach.&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://www-01.ibm.com/software/awdtools/rmc/index.html"&gt;Rational Method Composer&lt;/a&gt; - This enables you to manage, author, evolve, measure and deploy effective processes (SDLCs) tailored to your project needs. It is based on Eclipse. Rational Method Composer allows publishing to a web site so effectively covers the needs of both the &lt;i&gt;SDLC Repository&lt;/i&gt; and &lt;i&gt;SDLC Developer&lt;/i&gt; components.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-01.ibm.com/software/integration/business-process-manager/"&gt;IBM Business Process Manager&lt;/a&gt; - This is the latest name for IBM's combined development and runtime business process server. As well as a business process runtime, ESB and BPM repository it also includes design tools for building processes and services.&amp;nbsp; The &lt;i&gt;Process Designer&lt;/i&gt; allows business authors to build fully executable BPMN processes that include user interfaces for human interaction. The &lt;i&gt;Integration Designer&lt;/i&gt; enables IT developers to develop services that easily plug into processes to provide integration and routing logic, data transformation and straight-through BPEL subprocesses. See this &lt;a href="http://public.dhe.ibm.com/common/ssi/ecm/en/wsw14149usen/WSW14149USEN.PDF"&gt;whitepaper&lt;/a&gt; for more information or click &lt;a href="https://www14.software.ibm.com/webapp/iwm/web/signup.do?source=sw-app&amp;amp;S_PKG=bpmebk&amp;amp;S_TACT=109J85RW&amp;amp;S_CMP=web_ibm_ws_bpm_herolt_bpmgrfam"&gt;here&lt;/a&gt; for the IBM edition of the book &lt;i&gt;BPM for Dummies&lt;/i&gt;. IBM Business Process Manager realises the components: &lt;i&gt;Business Process Developer&lt;/i&gt;, &lt;i&gt;IT Service Developer&lt;/i&gt;, &lt;i&gt;Development Repository&lt;/i&gt;, &lt;i&gt;Process Engine&lt;/i&gt; and &lt;i&gt;Enterprise Service Bus&lt;/i&gt;.&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-01.ibm.com/software/integration/wsrr/index.html"&gt;WebSphere Service Registry and Repository&lt;/a&gt; - Catalogs,and organizes assets and services allowing customers to get a handleon what assets they have, making it easy to locate or distribute. Also enables policy management across the SOA lifecycle, spanning various domainsof policies including runtime policies as well as service governance policies. Included in the Advanced Lifecycle Edition is &lt;br /&gt;Rational AssetManager which provides life cycle management capabilities to manage asset workflowfrom concept, development, build, deployment, and retirement as well as BuildForge integration. WebSphere Service Registry and Repository realises the &lt;i&gt;Development Artfefacts Repository&lt;/i&gt; as well as the &lt;i&gt;Runtime Services Repository.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;So, there it is. An approach for developing services as well as an initial architecture allowing for the development and deployment of both business processes and services together with some actual products to get you started. Please feel free to comment here or in any of my links if you have anything you'd like to say.&lt;i&gt; &lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1198482947447529901?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1198482947447529901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1198482947447529901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1198482947447529901'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part_21.html' title='A Service Based Development Process - Part 4'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-x6RQOU3HyAM/TihpIQWPQuI/AAAAAAAAAHM/wKM5XbnpkbI/s72-c/SBD+Environment.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-467457933819155744</id><published>2011-07-12T22:12:00.001+01:00</published><updated>2011-07-12T22:13:27.157+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='spem'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>A Service Based Development Process - Part 3</title><content type='html'>In &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part.html"&gt;Part 2&lt;/a&gt; I discussed how activities in a delivery process could be created from capability patterns that are comprised of tasks and/or activities. Capability patterns are reusable patterns which can be applied across a range of delivery  processes. Capability patterns have input/output work products which  together define the ‘contractual boundary’ to which performers of the  capability pattern must conform. In this post I'll take a look at what these work products are and how they form part of a contract between capability patterns.&lt;br /&gt;&lt;br /&gt;The table below shows the set of work products that are used in the process I have been describing. &lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Work Product&lt;/th&gt; &lt;th&gt;Description&lt;/th&gt; &lt;th&gt;Notation&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Service Catalogue&lt;/td&gt; &lt;td&gt;Catalogue of all services owned or used by the enterprise. May be technical or business, legacy or new/to be provided. Usually implemented as a service registry.&lt;/td&gt; &lt;td&gt;WSDL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Service Certificate&lt;/td&gt; &lt;td&gt;Identifies a service that meets certain quality criteria.&lt;/td&gt; &lt;td&gt;Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Service Portfolio Plan&lt;/td&gt; &lt;td&gt;Describes what services will be provided, when and by whom.&lt;/td&gt; &lt;td&gt;Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Service Portfolio&lt;/td&gt; &lt;td&gt;Describes the entire collection of business services that an enterprise uses or plans to use.&lt;/td&gt; &lt;td&gt;Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Service Model&lt;/td&gt; &lt;td&gt;Defines the complete hierarchy of business and technical services used or planned to be used by the enterprise. Can exist at a logical and physical level. Contains one or more Service Specifications.&lt;/td&gt; &lt;td&gt;UML&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Service Specification&lt;/td&gt; &lt;td&gt;Defines a detailed specification for each service. Can exist at a logical and physical level. &lt;/td&gt; &lt;td&gt;Text/WSDL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Deployed Service&lt;/td&gt; &lt;td&gt;A service deployed in the service platform.&lt;/td&gt; &lt;td&gt;Jave, MQ etc&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Deployed Service Environment&lt;/td&gt; &lt;td&gt;A deployed service platform.&lt;/td&gt; &lt;td&gt;N/A&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;This diagram shows the relationships (finish to finish dependencies) between the above work products.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-olTx2UVFZsE/Thy1bF48EbI/AAAAAAAAAHE/A_CuNcSZB6A/s1600/Dependency+Diagram.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="247" src="http://1.bp.blogspot.com/-olTx2UVFZsE/Thy1bF48EbI/AAAAAAAAAHE/A_CuNcSZB6A/s400/Dependency+Diagram.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Work Product Dependency Diagram&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;In this next diagram we can see how&amp;nbsp; what I'm referring to as 'contractual boundaries' can be realised using these work products which are passed between two of the capability patterns I discussed &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part.html"&gt;last time&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3-0yqxgEogg/Thy2Bl924rI/AAAAAAAAAHI/lWaIB4xxeqU/s1600/Shared+WPs.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="358" src="http://1.bp.blogspot.com/-3-0yqxgEogg/Thy2Bl924rI/AAAAAAAAAHI/lWaIB4xxeqU/s400/Shared+WPs.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Contractual Boundaries&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Activities produce one or more work products which are consumed by other activities, either in the same capability pattern, or in a different one. This means that provided the input and output work products are agreed the capability patterns can run in parallel or, if needed, at different times. So, one capability pattern, the 'provide capability' one in the above example can contribute to the Service Model work product which another capability pattern, the 'manage service portfolio' one can contribute to at a later time if need be. Having a common set of agreed work products, which are shared in a repository, becomes the key to having an effective delivery process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-467457933819155744?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/467457933819155744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part_12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/467457933819155744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/467457933819155744'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part_12.html' title='A Service Based Development Process - Part 3'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-olTx2UVFZsE/Thy1bF48EbI/AAAAAAAAAHE/A_CuNcSZB6A/s72-c/Dependency+Diagram.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-453080128047644896</id><published>2011-07-07T22:55:00.002+01:00</published><updated>2011-07-12T22:11:55.445+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='spem'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>A Service Based Development Process - Part 2</title><content type='html'>The basic Service Based Development Process I described &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/06/service-based-development-process-part.html"&gt;previously&lt;/a&gt; described an end-to-end delivery process for creating services, whether these be cloud-based services or traditional ones running on a an enterprise service bus. The process consisted of a number of activities (where an activity groups together several tasks) as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Business Modelling&lt;/i&gt; - Develop business process models to understand the business activities that need to take place. Probably a mix of as-is and to-be as well as manual and automated activities.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Solution Architecture and Design&lt;/i&gt; - Create the architecture for the solution, decides what services are to be used, what platform and delivery environment (public/private cloud, ESB etc) will be used.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Solution Assembly/Implementation&lt;/i&gt; - Assemble the services into an application and implement using the appropriate technology. Hopefully much of this will be done using tools that generate the appropriate process flows and pull in the right services.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Identification&lt;/i&gt; - Decide what new services need to be specified (i.e. not already in the Service Portfolio). &lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Specification&lt;/i&gt; - Specify services, their contracts (functional and service levels).&lt;/li&gt;&lt;li&gt;&lt;i&gt;Existing Asset Analysis&lt;/i&gt; - What assets does the enterprise already have that could be service enabled (legacy code that could be wrappered etc).&lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Realisation&lt;/i&gt; - Decide what technology will be used to implement services.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Implementation&lt;/i&gt; - Implement services using the chosen technology.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Platform Design and Installation&lt;/i&gt; - Having decided the service runtime environment design and install it. For cloud-based services this means procuring the right cloud resources.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Operations and Management&lt;/i&gt; - Manage and run the service.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Service Portfolio Management&lt;/i&gt; - Ensure the Service Portfolio kept up to date.&lt;/li&gt;&lt;/ul&gt;In the example process we have seen so far each of these activities is composed together in such a way that a complete solution can be built out of a set of services that are deployed into a run-time environment. But that is not the only way these activities can be composed. A better way is to compose activities into &lt;i&gt;capability patterns&lt;/i&gt;. Capability patterns are comprised of tasks and/or activities that can be composed into ‘higher-order’ capability patterns or delivery processes. They are reusable patterns which can applied across a range of delivery processes. Capability patterns have input/output work products which together define the ‘contractual boundary’ to which performers of the capability pattern must conform (more on this next time).&lt;br /&gt;&lt;br /&gt;The delivery process described in part 1 is actually comprised of four capability patterns, each of which could be a process in its own right, or composed into different delivery processes. The four capability patterns are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Provide Capability:&lt;/i&gt; Create a new or updated business process/capability based on user requirements. Uses existing services or specifies new ones where needed. Uses tasks mainly from the Consume discipline group.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Provide Service:&lt;/i&gt; Specify, design and build a new service according to business need. Certify, publish and deploy the service into the operational environment. Uses tasks mainly from the Provide discipline group.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Manage Service Portfolio:&lt;/i&gt; Create and maintain a service portfolio with an initial set of specified services. Ensure services are certified. Uses tasks from the Manage group.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Provide Environment:&lt;/i&gt; Design, build, test, install and run a new environment capable of running services. Uses tasks mainly from the Enable group. &lt;/li&gt;&lt;/ul&gt;Using the same diagrams as before here are the above four capability patterns laid out in terms of disciplines and phases from OpenUP.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-goIBggDqxrA/ThYowXN5tJI/AAAAAAAAAHA/JLSN8tCtEsE/s1600/Provide+Capability.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="183" src="http://2.bp.blogspot.com/-goIBggDqxrA/ThYowXN5tJI/AAAAAAAAAHA/JLSN8tCtEsE/s320/Provide+Capability.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Provide Capability&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8X93SwSI5qg/ThYovQcAMfI/AAAAAAAAAG4/5eGeqoH0c30/s1600/Provide+Service.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/-8X93SwSI5qg/ThYovQcAMfI/AAAAAAAAAG4/5eGeqoH0c30/s320/Provide+Service.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Provide Service&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ARe7hAcpaY8/ThYov7szWbI/AAAAAAAAAG8/S87pReze37c/s1600/Manage+Service+Portfolio.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="182" src="http://1.bp.blogspot.com/-ARe7hAcpaY8/ThYov7szWbI/AAAAAAAAAG8/S87pReze37c/s320/Manage+Service+Portfolio.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Manage Service Portfolio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kQBcXLXGvr8/ThYovIoZtqI/AAAAAAAAAG0/drzAuUZVZpw/s1600/Provide+Environment.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/-kQBcXLXGvr8/ThYovIoZtqI/AAAAAAAAAG0/drzAuUZVZpw/s320/Provide+Environment.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Provide Environment&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;In the third part I'll look at the work products which together define the ‘contractual boundary’ to which performers of each of the capability patterns must conform.&lt;br /&gt;&lt;br /&gt;The ideas in this blog were jointly developed with my ex-IBM colleague &lt;a href="http://c2.com/cgi/wiki?BruceAnderson"&gt;Bruce Anderson&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-453080128047644896?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/453080128047644896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/453080128047644896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/453080128047644896'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/07/service-based-development-process-part.html' title='A Service Based Development Process - Part 2'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-goIBggDqxrA/ThYowXN5tJI/AAAAAAAAAHA/JLSN8tCtEsE/s72-c/Provide+Capability.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7504580990546134201</id><published>2011-06-30T23:18:00.005+01:00</published><updated>2011-07-07T22:33:08.979+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='spem'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>A Service Based Development Process - Part 1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have been toying around with this for quite a while. What prompted me to return to it was:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;With the cloud &lt;a href="http://en.wikipedia.org/wiki/Hype_cycle"&gt;hype curve&lt;/a&gt; reaching its peak I feel compelled to join in, in one of the ways I know best, method, process and architecture.&lt;/li&gt;&lt;li&gt;It allows me to further discuss the power of using an open, &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/01/software-developments-best-kept-secret.html"&gt;method framework &lt;/a&gt;based approach to building delivery processes in a plug-and-play kind of way.&lt;/li&gt;&lt;/ol&gt;I originally thought of calling this "A &lt;i&gt;Cloud&lt;/i&gt; Service Based Development Process" however I think the word 'Cloud' is redundant. Whilst this process could be used for developing services "in the cloud" it is actually a generic process that can be used for developing services wherever they may actually be deployed. The process is based on three major components, all of which are in the public domain. All I'm doing is what architects are supposed to do, namely &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/05/essence-of-being-architect.html"&gt;assemble components in new and interesting ways&lt;/a&gt;.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Service Based Disciplines (from the CBDI), see &lt;a href="http://everware-cbdi.com/service-architecture-cs"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&amp;nbsp;The Open Unified Process (from the OMG's OpenUP), see &lt;a href="http://epf.eclipse.org/wikis/openup/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The concept of activities and capability patterns from the Software and Systems Process Engineering&amp;nbsp; Metamodel (also from the OMG), see &lt;a href="http://www.ibm.com/developerworks/rational/library/dec05/haumer/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div class="O"&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;The process emphasizes the organisational and contractual boundaries for a service-oriented enterprise (SOE) by a separation of concerns into a number of &lt;i&gt;disciplines&lt;/i&gt; as follows:&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="left: -0.64%; position: absolute;"&gt;•&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The service consumer and service provider are clearly separated as these require different skills and can be done by different teams.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="left: -0.64%; position: absolute;"&gt;•&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Enabling of SOA via the SO environment is a concern of its own (for example an ESB supports the implementation of services but does not affect their business content).&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="left: -0.64%; position: absolute;"&gt;•&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Governance (manage) is integrated into everyday work. Example: negotiating the interface for a business service.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;These disciplines (concerns) are shown below.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gGrsA9STVOA/TgzwuGhDNqI/AAAAAAAAAGs/9qGub2RpZig/s1600/Service+Disciplines.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/-gGrsA9STVOA/TgzwuGhDNqI/AAAAAAAAAGs/9qGub2RpZig/s400/Service+Disciplines.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Process phases are from OpenUP and are:&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Inception:&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Establish scope and define acceptance criteria. Identify key requirements, define &lt;/span&gt;&lt;span style="font-size: small;"&gt;candidate architecture and estimate the overall cost and schedule with detailed estimates for the &lt;/span&gt;&lt;span style="font-size: small;"&gt;elaboration phase. Identify risks and prepare the supporting environment.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Elaboration:&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Establish a baselined architecture, produce an evolutionary prototype of &lt;/span&gt;&lt;span style="font-size: small;"&gt;production-quality components, as well as possibly one or more exploratory, throw-away &lt;/span&gt;&lt;span style="font-size: small;"&gt;prototypes to mitigate specific risks. Demonstrate that the baselined architecture will support the &lt;/span&gt;&lt;span style="font-size: small;"&gt;requirements and establish the supporting environment.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Construction:&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Complete the analysis, design, development and testing of all required &lt;/span&gt;&lt;span style="font-size: small;"&gt;functionality. Iteratively and incrementally develop a complete product that is ready to transition &lt;/span&gt;&lt;span style="font-size: small;"&gt;to its user community. Establish that users are ready for the application to be deployed.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Transition:&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Perform user and acceptance testing to validate the new system against user &lt;/span&gt;&lt;span style="font-size: small;"&gt;expectations. Convert operational databases. Ensure users and maintainers and ready to use &lt;/span&gt;&lt;span style="font-size: small;"&gt;the system. Perform deployment-specific engineering such as cut-over, commercial packaging &lt;/span&gt;&lt;span style="font-size: small;"&gt;and production, sales roll-out, field personnel training. Achieve stakeholder concurrence that &lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-size: small;"&gt;deployment baselines are complete and user self-supportability.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="O"&gt;&lt;ul style="text-align: left;"&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;In the diagram below I show how the OpenUP phases combined with the previously mentioned disciplines can be overlayed with a deliver process for creating and deploying services.&lt;/span&gt;&lt;/div&gt;&lt;div class="O"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SYd50fv_9Mo/TgzyT02fTPI/AAAAAAAAAGw/ePMFX8FG6pM/s1600/Service+Process.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="363" src="http://1.bp.blogspot.com/-SYd50fv_9Mo/TgzyT02fTPI/AAAAAAAAAGw/ePMFX8FG6pM/s640/Service+Process.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="O"&gt;&lt;span style="font-size: 12pt;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="O"&gt;&lt;span style="font-size: small;"&gt;The process is shown at the level of &lt;i&gt;activities&lt;/i&gt;. An activity groups together one or more &lt;i&gt;tasks&lt;/i&gt; and tasks deliver &lt;i&gt;artefacts&lt;/i&gt; created by &lt;i&gt;roles&lt;/i&gt;. I'll detail more what each of these activities consist of in the next blog.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;The other aspect to this diagram is that of &lt;i&gt;iterations&lt;/i&gt;. As I've mentioned &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/03/is-agile-architecture-and-oxymoron.html"&gt;elsewhere&lt;/a&gt; I&amp;nbsp; believe the agile versus waterfall debate is essentially dead. We should deploy whatever processes make most sense for a particular project that can be accomplished in the most time efficient way possible. Using iterations usually makes sense so any process needs to allow for this as does this one. Each phase is iterative meaning that each iteration&lt;/span&gt;&lt;span style="font-size: small;"&gt; has elements of each discipline. You can view iterations as a wave which flows through the end-to-end process, early on the emphasis is on business modelling but also includes elements from the other disciplines whereas later on the emphasis shifts to operations and management even though the business process may still be being refined.&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;Like I say, next time I'll look at what each of the activities in this service based development process consists of and what artefacts they create.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;            &lt;/div&gt;&lt;ol style="text-align: left;"&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7504580990546134201?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7504580990546134201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/service-based-development-process-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7504580990546134201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7504580990546134201'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/service-based-development-process-part.html' title='A Service Based Development Process - Part 1'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-gGrsA9STVOA/TgzwuGhDNqI/AAAAAAAAAGs/9qGub2RpZig/s72-c/Service+Disciplines.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-4272871877017090914</id><published>2011-06-29T12:15:00.000+01:00</published><updated>2011-06-29T12:15:30.490+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Keeping Your Creative Mojo</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In &lt;a href="http://www.huffingtonpost.com/mary-beth-maziarz/9-ways-to-screw-up-your-c_b_870545.html"&gt;this&lt;/a&gt; article Mary Beth Maziarz proposes nine ways to "screw up your creative mojo". Sometimes, despite our best efforts, we inevitably find ourselves in a bit of a creative cul-de-sac that we feel unable to get out of. At times like this, or just as a way of approaching our work from a new angle, it helps to try and bring some creative, right-brained, thinking to problem solving. Here's how Mary's creativity tips might apply to the world of architecture.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;Collect the pieces when they come.&lt;/i&gt; Solutions to problems rarely arrive fully formed and on-demand. Sometimes solutions to problems arrive at inopportune times. We have enough digital devices at our disposal these days never to have the excuse of not capturing those thoughts as they occur whether it be in the middle of the night or when out walking the dog.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Stop talking and do it.&lt;/i&gt; Architects, especially it seems, are very good at talking around all aspects of a problem endlessly. Sometimes you just have to get on and do it. If you are not sure about something use prototypes or proofs of concept to help crystallize your ideas.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Decide the time is now.&lt;/i&gt; Architecture is all about compromise. The role of the architect is, as much as anything, about making decisions based on the best information available at the time. Don't prevaricate endlessly until you have the perfect solution, you never will!&lt;/li&gt;&lt;li&gt;&lt;i&gt;Detach from critical thoughts and circles.&lt;/i&gt;You are your own worst critic, there are always many, many reasons for not doing something but usually only one for doing it. Do what you think is right and learn from your mistakes. &lt;/li&gt;&lt;li&gt;&lt;i&gt;Find and believe in your strengths.&lt;/i&gt; Not thinking you are clever enough, educated enough or simply having the right level of authority in your organisation can sometimes prevent you from coming out with that great idea.This is about believing in yourself.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Focus your energies.&lt;/i&gt; This is about avoiding the distractions and trivia of everyday life (email, filling in that expense form, tweeting you're in the coffee shop etc) that prevent us from doing our art. Read Steven Presfield's &lt;a href="http://www.stevenpressfield.com/the-war-of-art/"&gt;War of Art&lt;/a&gt; (no, this is not written the wrong way round for all you business "warriors" who have read Sun Tzu's book). &lt;/li&gt;&lt;li&gt;&lt;i&gt;Try anything.&lt;/i&gt; Architects tend to be more logical, left-brain thinkers. Reach out to your left-brain to unblock your thoughts and improve your creativity.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Enjoy the journey and your companions.&lt;/i&gt; Getting there is part of the fun. Work with others to make the journey more pleasant. Learn from your colleagues (both junior and senior to you) and let them learn from you. Work together, not against each other and reject the cynics and the ne'er-do-well's.&lt;/li&gt;&lt;li class="last"&gt;&lt;i&gt;Be nice to yourself.&lt;/i&gt; It's increasingly difficult these days to justify that long lunchtime walk or afternoon away from the office as proper work. Enjoying yourself (as part of your work) helps those creative juices to flow though.&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-4272871877017090914?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/4272871877017090914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/keeping-your-creative-mojo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4272871877017090914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4272871877017090914'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/keeping-your-creative-mojo.html' title='Keeping Your Creative Mojo'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2205914566967166141</id><published>2011-06-17T10:01:00.000+01:00</published><updated>2011-06-17T10:01:45.996+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='togaf'/><category scheme='http://www.blogger.com/atom/ns#' term='spem'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>How to Avoid the Teflon Architecture Syndrome</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So you've sent all of your budding architects on &lt;a href="http://www.opengroup.org/togaf/"&gt;TOGAF&lt;/a&gt; (or similar) training, hired in some expensive consultants in sharp suits to tell you how to "do architecture" and bought a pile of expensive software tools (no doubt from multiple vendors) for creating all those architecture models&amp;nbsp; you've been told about but for some reason you're still not getting any better productivity or building the more reliable systems you were expecting from all this investment. You're still building siloed systems that don't inter-work, you're still misinterpreting stakeholder requests and every system you build seems to be "one-of-a-kind", you're not "leveraging reuse" and &lt;a href="http://www-01.ibm.com/software/solutions/soa/"&gt;SOA&lt;/a&gt; seems to be last years acronym you never quite got the hang of. So what went wrong? Why isn't architecture "sticking" and why does it seem you have given yourselves a liberal coating of &lt;a href="http://en.wikipedia.org/wiki/Teflon_%28nickname%29"&gt;Teflon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The plain fact of the matter is that all this investment will not make one jot of difference if you don't have a framework in place that allows the architects in your organisation to work together in a consistent and repeatable fashion. If it is to be effective the architecture organisation needs careful and regular sustenance. So, welcome to my &lt;i&gt;architecture sustenance framework&lt;/i&gt;*.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6yYxAqsoGLo/TfnPqKiva3I/AAAAAAAAAGo/i5SE9nx-S-A/s1600/Sustaining+Architecture.jpg" imageanchor="1"&gt;&lt;img border="0" height="433" src="http://2.bp.blogspot.com/-6yYxAqsoGLo/TfnPqKiva3I/AAAAAAAAAGo/i5SE9nx-S-A/s640/Sustaining+Architecture.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here's how it works, taking each of the above containers one at a time:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Common Language:&lt;/b&gt; Architects (as do any professionals) need to speak the same, common language. This needs to be the foundation for everything they do. Common languages can come from standards bodies (&lt;a href="http://www.omg.org/spec/UML/"&gt;UML&lt;/a&gt; and &lt;a href="http://www.omg.org/spec/SPEM/"&gt;SPEM&lt;/a&gt; are from the &lt;a href="http://www.omg.org/"&gt;OMG&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/IEEE_1471"&gt;IEEE 1471-2000&lt;/a&gt; is the architecture description standard from the IEEE) or may be ones your organisation has developed and is in your own glossary.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Community:&lt;/b&gt; Communities are where people come together to exchange ideas, share knowledge and create intellectual capital (IC) that can be shared more broadly in the organisation. Setting up an architecture Community of Practice (CoP) where your thought leaders can share ideas is vital to making architecture stick and become pervasive. Beware the &lt;a href="http://www.agilemodeling.com/essays/enterpriseModelingAntiPatterns.htm#IvoryTowerArchitecture"&gt;Ivory Tower Antipattern&lt;/a&gt; however.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Tools:&lt;/b&gt; If communities are to be effective they need to use tools that allow them to create and share information (&lt;a href="http://en.wikipedia.org/wiki/Enterprise_social_networking"&gt;enterprise social networking&lt;/a&gt; tools, sometimes referred to as &lt;a href="http://www.e2conf.com/boston/"&gt;Enterprise 2.0&lt;/a&gt;). They also need tools that allow them to create and maintain delivery processes and manage intellectual capital of all types.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Processes:&lt;/b&gt; Anything but a completely trivial system will need some level of system development lifecycle (SDLC) that enables it creation and brings a level of ceremony that the project team should follow. An SDLC brings order to the chaos that would otherwise ensue if people working on the project do not know what role they are meant to perform, what work products they are meant to create or what tasks they are meant to do to create those work products. Ideally processes are defined by a community that understands, not only the rules of system development, but also what will, and what will not, work in the organisation. Processes should be published in a method repository so that everyone can easily access them.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Guidance: &lt;/b&gt;Guidance is what actually enables people to do their jobs. Whereas a process shows &lt;i&gt;what&lt;/i&gt; to create &lt;i&gt;when&lt;/i&gt;, guidance shows how to create that content. Guidance can take many forms but some of the most common is &lt;i&gt;examples&lt;/i&gt; (how did someone else do it), &lt;i&gt;templates&lt;/i&gt; (show me what I need to do so I don't start with a blank sheet every time) and &lt;i&gt;guidelines&lt;/i&gt; (provide me with a step-by-step guide on how to perform my task) and tool mentors (how can I make use of a tool to perform this task and create my work product). Guidance should be published in the same (method) repository as the process so it is easy to jump between what I do as well as how I do it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Projects:&lt;/b&gt; A project is the vehicle for actually getting work done. Projects follow a process, produce work products (using guidance) to deliver a system. Projects (i.e. the work products they produce) are also published in a repository though ideally this will separate from the generic method repository. Projects are "instances" of a delivery process which is configured in a particular way for that project. The project repository stores the artefacts from the project which serve as examples for others to use as they see fit.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project and Method Repositories:&lt;/b&gt; The place where the SDLC and the output of multiple projects is kept. These should be well publicized as the place people know to go to to find out what to do as well as what others have done on other projects.&lt;/li&gt;&lt;/ul&gt;All of the above elements really do need to be in place to enable architecture (and architects) to grow and flourish in an organisation. Whilst these alone are not a guarantee of success without them your chances of creating an effective architecture team are greatly reduced. &lt;br /&gt;&lt;br /&gt;*This framework was developed with my colleague at IBM, Ian Turton.&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2205914566967166141?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2205914566967166141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/how-to-avoid-teflon-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2205914566967166141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2205914566967166141'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/how-to-avoid-teflon-architecture.html' title='How to Avoid the Teflon Architecture Syndrome'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-6yYxAqsoGLo/TfnPqKiva3I/AAAAAAAAAGo/i5SE9nx-S-A/s72-c/Sustaining+Architecture.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-6672308778821523822</id><published>2011-06-14T16:49:00.000+01:00</published><updated>2011-06-14T16:49:13.169+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Is Designing an Architecture an Oxymoron?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The word 'design' is both a noun (a plan or drawing produced to show the look and function or workings of a  building, garment, or other object before it is built or made) and a verb (decide upon the look and functioning of (a building, garment, or other object), typically by making a detailed drawing of it). Given an architecture is something you decide the look and function of, typically by making a drawing of it, saying you are designing an architecture is not as daft as it sounds. Grady Booch once remarked that "&lt;a href="http://softwarearchitecturezen.blogspot.com/2010/05/architect-vs-design.html"&gt;&lt;i&gt;all architecture is design but not all design is architecture&lt;/i&gt;&lt;/a&gt;". An architecture is what we create by applying good software engineering/design principles (separation of concerns, data hiding, contract-driven design, understanding stakeholder needs etc). An architecture can therefore be something that comes out of the process of design (by applying design thinking). However the architecture itself focuses on the essence of the [software] system and does not get bogged down in the detail.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-6672308778821523822?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/6672308778821523822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/is-designing-architecture-oxymoron.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6672308778821523822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6672308778821523822'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/06/is-designing-architecture-oxymoron.html' title='Is Designing an Architecture an Oxymoron?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7497358236047059386</id><published>2011-05-31T20:13:00.000+01:00</published><updated>2011-05-31T20:13:20.458+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><title type='text'>The Legacy Issue</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Much of the work we do as architects involves dealing with the dreaded "legacy systems". Of course legacy actually means the last system built, not one that is necessarily 5, 10, 20 or more years old. As soon as a system goes into production it is basically "legacy". As soon as new features get added that legacy system gets harder to maintain and&amp;nbsp; more difficult to understand; entropy (in the sense of an expression of disorder or randomness) sets in.&lt;br /&gt;&lt;br /&gt;Apple have recently been &lt;a href="http://www.guardian.co.uk/money/2011/may/21/apple-upgrades-itunes-version"&gt;in the news&lt;/a&gt; again for the wrong reasons because some of the latest iPod's do not work with previous versions of Mac OSX. Users have been complaining that they are being forced to to upgrade to the latest version of OSX in order to get their shiny new iPods to work. To make matters worse however Apple &lt;u&gt;do&lt;/u&gt; support the relatively ancient version of Windows XP. Apple have always taken a fairly hard line when it comes to legacy by not supporting backwards compatibility particularly well when their OS gets upgraded. The upside is the operating systems does not suffer from the "OS bloat" that Windows seems to (the last version of OSX actually had a smaller footprint than the previous version).&lt;br /&gt;&lt;br /&gt;As architects it is difficult to focus both on maintaining legacy systems and also figuring out how to replace them. As Seth Godin &lt;a href="http://sethgodin.typepad.com/seths_blog/2011/05/legacy-issues.html"&gt;says&lt;/a&gt;:&lt;i&gt;"Driving with your eyes on  the rearview mirror is difficult indeed". &lt;/i&gt;At some point you need to figure out whether it is better to abandon the legacy system and replace it or soldier on supporting an ever harder to maintain system. There comes a point where the effort and cost in maintaining legacy is greater than that needed to replace the system entirely. I'm not aware of any formal methods that would help answer this particularly hard architectural decision but it's one I think any architect should try and answer before embarking on a risky upgrade program that involves updating existing systems. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7497358236047059386?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7497358236047059386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/legacy-issue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7497358236047059386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7497358236047059386'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/legacy-issue.html' title='The Legacy Issue'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2736248921704777527</id><published>2011-05-26T13:01:00.001+01:00</published><updated>2011-05-31T08:43:16.446+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><title type='text'>Ethics and Architecture</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you've not seen the BBC2 documentary &lt;i&gt;&lt;a href="http://www.bbc.co.uk/programmes/b011k45f"&gt;All Watched Over By Machines of Loving Grace&lt;/a&gt;&lt;/i&gt; catch it now on the BBC &lt;a href="http://www.bbc.co.uk/iplayer/"&gt;iPlayer&lt;/a&gt; while you can (doesn't work outside the UK unfortunately). You can see a preview of the series (another two to go) on Adam Curtis' (the film maker) web site &lt;a href="http://www.bbc.co.uk/blogs/adamcurtis/2011/05/all_watched_over_by_machines_o.html"&gt;here&lt;/a&gt;. The basic premise of the first programme is as follows.&lt;br /&gt;&lt;br /&gt;Back in the 50's a small  group of people took up the ideas of the novelist &lt;a href="http://en.wikipedia.org/wiki/Ayn_Rand"&gt;Ayn Rand&lt;/a&gt; whose philosophy of &lt;a href="http://en.wikipedia.org/wiki/Objectivism_%28Ayn_Rand%29"&gt;Objectivism&lt;/a&gt; advocated reason as the only means of acquiring knowledge and rejecting all forms of faith and religion. They saw  themselves as a prototype for a future society where everyone could  follow their own selfish desires. One of the Rand 'disciples' was &lt;a href="http://en.wikipedia.org/wiki/Alan_Greenspan"&gt;Alan Greenspan&lt;/a&gt;. Cut to the 1990's where several Silicon Valley entrepreneurs,&amp;nbsp; also followers of Rand's philosophy, believed that the new  computer networks would allow the creation of a society where everyone  could follow their own desires without there being any anarchy. Alan Greenspan, now Chairman of the Federal Reserve, also became convinced that the computers were creating a new kind of  stable capitalism and convinced President Bill Clinton of a radical approach to cut the United States huge deficit. He proposed that Clinton cut government spending and reduce interest rates letting the markets control the fate of the economy, the country and ultimately the world. Whilst this approach appeared to work in the short term, it set off a chain of events which, according to Curtis' hypothesis, led to 9/11, the Asian financial crash of 1997/98, the current economic crisis and the rise of China as a superpower that will soon surpass that of the United States. What happened was that the "blind faith" we put in the machines that were meant to serve us led us to a "dream world" where we trusted the machines to manage the markets for us but in fact they were operating in ways we could not understand resulting in outcomes we could never predict.&lt;br /&gt;&lt;br /&gt;So what the heck has this got to do with architecture?&amp;nbsp; Back in the mid-80's when I worked in Silicon Valley I remember reading an article in the San Jose Mercury News about a programmer who had left his job because he didn't like the applications that the software he'd been working on were being put to (something of a military nature I suspect). Quite a noble act you might think (though given where he worked I suspect the guy didn't have too much trouble finding another job pretty quickly). I wonder how many of us really think about what the uses of the software systems we are working on are being put to?&lt;br /&gt;&lt;br /&gt;Clearly if you are working on the control software for a guided missile it's pretty clear cut what the application is going to be used for. However what about if you are creating some piece of generic middleware? Yes it could be put to good use in hospital information systems or food-aid distribution systems however the same software could be used for the ERP system of a tobacco company or in controlling surveillance systems that "watch over us with loving grace".&lt;br /&gt;&lt;br /&gt;Any piece of software can be used for both good and evil and the developers of that software can hardly have it on their conscious to worry about what that end use will be. Just like nuclear power leads to both good (nuclear reactors, okay, okay I know that's debatable given what's just happened in Japan) and bad (bombs) it is the application of a particular technology that decides whether something is good or bad. However, here's the rub. As architects aren't we the ones who are meant to be deciding on how software components are put together to solve problems, for both better and for worse? Is it not within our remit to control those 'end uses' therefore and to walk away from those projects that will result in systems that are being built for bad rather than good purposes? We all have our own &lt;a href="http://www.moralcompass.org/"&gt;moral compass&lt;/a&gt; and it is up to us as individuals to decide which way we point our own compasses. From my point of view I would hope that I never got involved in systems that in anyway lead to an infringement of a persons basic human rights but how do I decide or know this? I doubt the people that built the systems that are the subject of the Adam Curtis films ever dreamed they would be used in ways which have almost led to the economic collapse of our society? I guess it is beholden on all of us to research and investigate as much as we can those systems we find ourselves working on and decide for ourselves whether we think we are creating machines that watch over us with "loving grace" or which are likely to have more sinister intents. As ever, Aurthur C. Clarke predicted this several decades ago and if you have not read his short story &lt;i&gt;&lt;a href="http://variety-sf.blogspot.com/2007/11/arthur-clarke-dial-f-for-frankenstein_06.html"&gt;Dial F for Frankenstein&lt;/a&gt;&lt;/i&gt; now might be a good time to do so.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2736248921704777527?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2736248921704777527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/ethics-and-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2736248921704777527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2736248921704777527'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/ethics-and-architecture.html' title='Ethics and Architecture'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3184209392147763422</id><published>2011-05-19T15:43:00.000+01:00</published><updated>2011-05-19T15:43:43.912+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='zen'/><title type='text'>The Essence of Being an Architect</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There are many skills frameworks out there that tell us what skills we should have for 'doing architecture'. My company has (at least) one and I'm sure yours does as well. There are also organisations that specialise in creating such frameworks (check out the &lt;a href="http://www.sfia.org.uk/"&gt;Skills Framework for the Information Age&lt;/a&gt; for example). Whilst there are some very specific skills that software architects need (developing applications using xyz programming language, building systems using a particular ERP package and so on) which come and go as technology evolves there are some enduring skills which I believe all architects must acquire as they progress in their careers. What I refer to as being the &lt;i&gt;essence&lt;/i&gt; of being an architect. Seth Godin recently posted a blog entry called What's high school for? where he listed 10 things all schools should be teaching that should sit above any of the usual stuff kids get taught (maths, chemistry, history etc). A sort of list of meta-skills if you like. Borrowing from, and extending, this list gives me my list of essential architect skills.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;How to focus intently on a problem until it's solved.&lt;/b&gt; There is much talk these days about how the internet, the TV networks and the print media are leading to a &lt;a href="http://en.wikipedia.org/wiki/Dumbing_down"&gt;dumbed down&lt;/a&gt; society in which we have an inability to focus on anything for longer than 30 minutes. Today's business problems are increasingly complex and often require prolonged periods of time to really focus on what the problem is before charging in with a (software) solution. Unfortunately the temptation is always often to provide the cheapest or the quickest to market solution. You need to fight against these pressures and stay focused on the problem until it is solved.&lt;/li&gt;&lt;li&gt;&lt;b&gt;How to read critically.&lt;/b&gt; As architects we cannot hope to understand everything there is to know about every software product, technology or technique that is out there. Often we need to rely on what vendors tell us about their products. Clearly there is a danger here that they tell us what we, or our clients, want to hear glossing over faults or features that are more 'marketechture' than archihtecture. Learn how to read vendor product descriptions and whitepapers with a critical eye and ask difficult questions. &amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;The power of being able to lead groups of peers without receiving clear delegated authority.&lt;/b&gt; The role of an architect is to build solutions by assembling components in new and interesting ways. You are the person who needs to both understand what the business wants and how to translate those 'wants' into technology. Business people, by and large, cannot tell you how to do that. You need to lead your peers (both business people and technologists) to arrive at an effective solution.&lt;/li&gt;&lt;li&gt;&lt;b&gt;How to persuasively present ideas in multiple forms, especially in writing and before a group.&lt;/b&gt; Obvious really, you can have the greatest idea in the world but if you cannot &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/04/how-to-create-effective-technical.html"&gt;present it properly&lt;/a&gt; and effectively it will just stay that, an idea.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Project management, self-management and the management of ideas, projects and people.&lt;/b&gt; How to manage your and others time to stay focused and deliver what the client wants in a timely fashion.&lt;/li&gt;&lt;li&gt;&lt;b&gt;An insatiable desire (and the ability) to learn more.&lt;/b&gt; Forever! This job cannot be done without continuous learning and acquiring of knowledge. Everyone has their own learning style and preferences for how they acquire knwledge, find out what your style is and deploy it regularly. Don't stick to IT, I've discussed the role of the versatilist extensively (see here for example). Be &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/02/t-shaped-versus-v-shaped-architects.html"&gt;'V' shaped&lt;/a&gt; not 'T' shaped.&lt;/li&gt;&lt;li&gt;&lt;b&gt;The self-reliance that comes from understanding that relentless hard work can be applied to solve problems worth solving.&lt;/b&gt; Belief in ones ideas and the ability to deploy them when all around you are doubting you is probably one of the hardest skills to acquire. There is a fine balance between arrogance and self-belief. In my experience this is not an easily repeatable skill. Sometimes you will be &lt;a href="http://sethgodin.typepad.com/seths_blog/2011/05/the-privilege-of-being-wrong.html"&gt;wrong&lt;/a&gt;!&lt;/li&gt;&lt;li&gt;&lt;b&gt;Know how to focus on what is important and to ignore what is not.&lt;/b&gt; If you have not heard of &lt;i&gt;Parkinson's Law of Triviality&lt;/i&gt; take a &lt;a href="http://en.wikipedia.org/wiki/Parkinson%27s_Law"&gt;look&lt;/a&gt; at it.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Know who the real client is and focus on satisfying him/her/them.&lt;/b&gt; There can be lots of distractions in our working lives, and I'm not just talking about twittering, blogging (sic) and the rest of the social networking gamut. Projects can sometimes become too inward focused and lose track of what they are meant to be delivering. We live in a world where numbers have achieved ascendency over purpose. We can sometimes spend too much time measuring, reviewing and meeting targets rather than actually &lt;i&gt;doing&lt;/i&gt;. I love this quote from Deming: &lt;i&gt;"If you give a manager a numerical target, he’ll make it, even if he has to destroy the company in the process"&lt;/i&gt;. There is little merit in a well executed project that no one wants the output from.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Use software/system delivery lifecycle (SDLC) processes wisely.&lt;/b&gt; SDLC's are meant to be enablers but can end up being disablers! Always customise an SDLC to fit the project not the other way around.&lt;/li&gt;&lt;/ol&gt;If all of this seems hard work that's because it is. As Steven Pressfield says in his book &lt;a href="http://www.stevenpressfield.com/the-war-of-art/"&gt;&lt;i&gt;The War of Art&lt;/i&gt;&lt;/a&gt;: &lt;i&gt;"The essence of professionalism is the focus upon the work and its demands, while we are doing it, to the exclusion of all else"&lt;/i&gt;. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3184209392147763422?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3184209392147763422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/essence-of-being-architect.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3184209392147763422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3184209392147763422'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/essence-of-being-architect.html' title='The Essence of Being an Architect'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-673299552632789510</id><published>2011-05-13T18:18:00.002+01:00</published><updated>2011-05-13T18:21:58.340+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='technique'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Sketching with the UML</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In his book &lt;a href="http://martinfowler.com/books.html#uml"&gt;&lt;i&gt;UML Distilled – A Brief Guide to the Standard Object Modeling Language&lt;/i&gt;&lt;/a&gt; Martin Fowler describes three ways he sees UML being used: &lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;UML as sketch:&lt;/b&gt; Developers use UML to communicate some aspect of a system. These sketches can be used in both forward (i.e. devising new systems) as well as reverse (i.e. understanding existing systems) engineering. Sketches are used to selectively talk about those parts of the system of interest. Not all of the system is sketched. Sketches are drawn using lightweight drawing tools (e.g. whiteboards and marker pens) in sessions lasting anything from a few minutes to a few hours. The notation and adherence to standards is non-strict. Sketching works best in a collaborative environment. Sketches are explorative.&lt;/li&gt;&lt;li&gt;&lt;b&gt;UML as a blueprint:&lt;/b&gt; In forward engineering the idea is that developers create a blueprint that can be taken and built from (possibly with some more detailed design first). Blueprints are about completeness. The design/architecture should be sufficiently complete that all of the key design decisions have been made leaving as little to chance as possible, In reverse engineering blueprints aim to convey detailed information about the system, sometimes graphically. Blue prints require more sophisticated modelling tools rather than drawing tools. Blueprints are definitive. &lt;/li&gt;&lt;li&gt;&lt;b&gt;UML as a programming language:&lt;/b&gt; Here developers draw UML diagrams that are compiled down to executable code. This mode requires the most sophisticated tooling of all. The idea of forward and reverse engineering does not exist because the model is the code. Model Driven Architecture (MDA) fits this space.&lt;/li&gt;&lt;/ul&gt;In practice there is a spectrum of uses of UML which I've shown below in Figure 1.  In my experience very few organisations are up at level 10 and I would  say most are in the range 3 - 5. I would classify these as being those  folk who use UML tools to capture key parts of the system (either in a  forward or reverse engineering way) and export these pictures into  documents which are then reviewed and signed-off. &lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-f9cpvdad9T8/Tc1lzPjYxuI/AAAAAAAAAGI/4L9XrBz50iE/s1600/UML+Models.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="296" src="http://1.bp.blogspot.com/-f9cpvdad9T8/Tc1lzPjYxuI/AAAAAAAAAGI/4L9XrBz50iE/s640/UML+Models.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;An interesting addition to the 'UML as sketch' concept is that at least two vendors that I know of (&lt;a href="http://www.ibm.com/developerworks/rational/library/10/whats-new-in-rational-software-architect-8/index.html"&gt;IBM&lt;/a&gt; and &lt;a href="http://www.sparxsystems.com.au/products/betas.html"&gt;Sparx&lt;/a&gt;) are offering 'sketching' capabilities within their modeling tools. In Rational Software Architect the elements in a sketch include shapes such as rectangles, circles, cylinders, stick figures that represent people, and text labels. Checkout &lt;a href="http://www.youtube.com/IBMrational#p/search/0/8-Rrx1I8rBU"&gt;this&lt;/a&gt; YouTube video for a demo. Unlike other types of models, sketches have only a few types of elements and only one type of relationship between elements. Also, sketches do not contain multiple diagrams; each sketch is an independent diagram. You can however move from a sketch to a more formal UML diagram or create a sketch out of an existing UML diagram so allowing you to work with a diagram in a more abstract way.&lt;br /&gt;&lt;br /&gt;Below in Figure 2 is an example of a sketch for my example Hotel Management System, that I've used a few times now to illustrate some architectural concepts, drawn using the current version of Rational Software Architect. I guess you might call this an &lt;i&gt;Architecture Overview&lt;/i&gt; used to show the main system actors and architectural elements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-p10qHzLoFsM/Tc1l4FMJbQI/AAAAAAAAAGM/7sYqnidXh9M/s1600/Example+Sketch.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="384" src="http://1.bp.blogspot.com/-p10qHzLoFsM/Tc1l4FMJbQI/AAAAAAAAAGM/7sYqnidXh9M/s640/Example+Sketch.jpeg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I guess the ability to be able to sketch with modeling tools could be a bit of a double edged sword. On the one hand it means sketches are at least captured in a formal modeling environment which means they can be kept in one centrailsed repository and can be maintained more effectively. It also means they can potentially be turned into more formal diagrams thus providing a relatively automated way of moving along the scale shown in Figure 1. The downside might be that sketching is as far as people go and never bother to provide anything more formal. I guess only time will tell whether this kind of capability gains much traction amongst developers and architects alike. For my part I would like to see sketching in this way as a formal part of a process which encourages architects and developers to create models using this approach, get them roughly right and then turn them ino a more formal and detailed model.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-673299552632789510?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/673299552632789510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/sketching-with-uml.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/673299552632789510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/673299552632789510'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/sketching-with-uml.html' title='Sketching with the UML'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-f9cpvdad9T8/Tc1lzPjYxuI/AAAAAAAAAGI/4L9XrBz50iE/s72-c/UML+Models.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3354287619612975951</id><published>2011-05-10T07:25:00.000+01:00</published><updated>2011-05-10T07:25:55.138+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>Change Cases and the Limits of Testing</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://sethgodin.typepad.com/seths_blog/2011/01/a-culture-of-testing.html"&gt;This&lt;/a&gt; recent blog entry from Seth Godin on "the culture of testing" set me thinking about software architecture and testing. Is it possible to 'over test' applications or systems? Is there a point at which you need to stop testing and let your software 'go free' so users can 'complete' testing themselves? Let's be clear here:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Software needs testing very rigorously. No one wants to fly on an airplane where the on-board flight control software has not been fully tested.&lt;/li&gt;&lt;li&gt;I'm also not talking about the well established practice of releasing beta versions of software where you get together a bunch of early adopters to complete testing for you and iron out the "last few bugs".&lt;/li&gt;&lt;li&gt;Testing software against known requirements is most definitely a good thing to do and I'm not advocating just running your system tests against a subset of those functional and non-functional requirements.&lt;/li&gt;&lt;/ul&gt;Where it gets interesting is when you don't overly constrain the architecture so that it allows users to take resulting application or system and evolve it (test it) in new and interesting ways. When defining an architecture we usually talk about it having to address functional as well as non-functional requirements but there is a third, often overlooked, class of requirement referred to as &lt;a href="http://www.agilemodeling.com/artifacts/changeCase.htm"&gt;change cases&lt;/a&gt; or future requirements. Change cases are used to describe new potential requirements for a system or modifications to existing requirements. Change cases usually come from the specifier of the system (e.g. "in three years time we want introduce a loyalty scheme for our regular guests"). Some change cases however are not envisaged in advance and it's only when users of the application get hold of it that they explore and find new ways of using the application that may not have originally been thought of. Such applications need to be carefully architected, and tested, such that these change cases can be discovered without, of course, breaking the application altogether. &lt;br /&gt;&lt;br /&gt;So, by all means ship systems or application that do what they say on the tin but also lets users do other, possibly more interesting things, with them that may lead to new and innovative uses that the original specifiers of the software had not thought about.&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3354287619612975951?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3354287619612975951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/change-cases-and-limits-of-testing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3354287619612975951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3354287619612975951'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/05/change-cases-and-limits-of-testing.html' title='Change Cases and the Limits of Testing'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3155314568154468752</id><published>2011-04-27T22:21:00.001+01:00</published><updated>2011-04-28T07:46:20.675+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>Architectural Granularity</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There's an old joke about defining granularity:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Granularity is a bit like pornography, it's hard to define but you know it when you see it.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The whole topic of granularity of software components is important to the Software Architect for a number of reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you are creating too many fine-grained components then you are probably not doing architecture but design.&lt;/li&gt;&lt;li&gt;As I discussed &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/04/applying-architectural-tactics.html"&gt;previously&lt;/a&gt;, getting components at the right level of granularity is important when it comes to placing those components (on nodes) and satisfying non-functional requirements such as availability and performance.&lt;/li&gt;&lt;li&gt;The granularity of components impacts performance. Too many fine-grained components will probably result in increased traffic on the network because the client using the component must make several queries to complete a task or get the information it needs.&lt;/li&gt;&lt;li&gt;Generally speaking, the coarser grained a component the more likely it is to have a direct correlation to something the business finds useful (e.g. a 'Reservation' component that handles all aspects of allowing a customer to reserve a room is more useful than one that 'finds a vacant room'). &lt;/li&gt;&lt;/ul&gt;The terms “fine-grained”, “medium-grained” and “coarse-grained” are frequently used to describe architectural components (or indeed services) but there seems to be no common definition for these terms. This leads to confusion and ambiguity in their use. Whilst there is no agreed definition of what these terms mean there does seem to be a consensus that granularity is about more than just the number of operations an interface on a component has. Everware-CBDI (see their June 2005 edition which is only available via subscription) suggests that other factors might be (and I'm simplifying here):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The number of components (C) in the directed-acyclic-graph (DAG) that are invoked through a given operation on that components interface.&lt;/li&gt;&lt;li&gt;The function points (F) for each component.&lt;/li&gt;&lt;li&gt;The number of database tables (D) created, read, updated or deleted.&lt;/li&gt;&lt;/ul&gt;So one measure of granularity (G) might be:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;G = C + F + D&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Put simply, if a component is self-contained (C = 1), has a single function point (F = 1) and updates a single entry in a database (D = 1) it will have a granularity of '3'. Such a 'component' is going to be something like a class 'Integer' with a single operation such as 'increment' which adds one to the previous value. Whilst such a component may be infinitely reusable it is not particularly useful from an architectural (or business) standpoint. We could honestly call such a component 'fine-grained'. At the other extreme a CRM system will probably have C, F and D each equal to several thousand giving it a granularity in the tens of thousands. Again, from an architectural standpoint, this is not very useful. There is not much we can do with such a 'component' other than observe it is (very) coarse-grained. I suggest that we architects are more likely to be interested in creating, and (re)using components that sit somewhere in between these extremes (maybe in the low 100's region using this measure of granularity).&lt;br /&gt;&lt;br /&gt;What we are actually talking about here is what &lt;a href="http://www.zapthink.com/2011/02/23/functional-vs-interface-granularity-still-powerful-ideas/"&gt;ZapThink&lt;/a&gt; refer to as 'functional granularity' (as opposed to 'interface granularity') that is, granularity of the component itself rather than the granularity of any interfaces the component may expose. For the architect it is getting this functional granularity right that is most important. The coarser the (functional) granularity of the component the more likely it is to have a useful business context. So a 'Reservation' component that deals with all aspects of reserving a room for a customer (i.e. takes the dates, room preferences, hotel location, customer loyalty status etc) and finds a sutable room is a useful component at both an architectural level (i.e it addresses the points I started with above) as well as a business level (i.e. it is understandable by the business and can therefore be mapped to business users requirements).&lt;br /&gt;&lt;br /&gt;When composing systems into components working out what level of granularity you need is a key aspect of creating the systems architecture so you have the right number of components that are most useful in both an architectural as well as business context.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3155314568154468752?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3155314568154468752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/architectural-granularity.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3155314568154468752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3155314568154468752'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/architectural-granularity.html' title='Architectural Granularity'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>3</thr:total><georss:featurename>Dorridge, Solihull, West Midlands, UK</georss:featurename><georss:point>52.373617 -1.7532439999999951</georss:point><georss:box>52.350854500000004 -1.7758349999999952 52.3963795 -1.7306529999999951</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8204590353922326911</id><published>2011-04-20T19:38:00.000+01:00</published><updated>2011-04-20T19:38:36.847+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='enterprisearchitecture'/><category scheme='http://www.blogger.com/atom/ns#' term='emergence'/><title type='text'>EA Wars</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Lots of great discussion in the blogosphere right now on the relevance of Enterprise Architecture in the brave new world of the 'extended' enterprise and whether architecture is something that is planned or 'emerges'. This is largely prompted, I suspect, by the good folk at ZapThink asking &lt;a href="http://www.zapthink.com/2011/04/05/why-nobody-is-doing-enterprise-architecture/"&gt;&lt;i&gt;Why Nobody is Doing Enterprise Architecture&lt;/i&gt;&lt;/a&gt; (possibly to plant seeds of doubt in the minds of CIOs and send them rushing to one of their "licensed ZapThink architecture courses"). For a nice, succinct and totally dismissive riposte to the ZapThink article check out David Sprott's blog entry &lt;a href="http://davidsprottsblog.blogspot.com/2011/04/so-nobody-is-doing-ea-eh.html"&gt;here&lt;/a&gt;. For a more reasoned and skeptical discussion on whether emergent architecture actually exists (I think it does, see below) read Richard Veryard's blog entry &lt;a href="http://rvsoapbox.blogspot.com/2011/03/emergent-architecture.html"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;However... despite some real &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD'iness&lt;/a&gt; on the part of ZapThink there &lt;u&gt;are&lt;/u&gt; some elements in their argument that definitely ring true and which I have observed in a number of clients I have worked with over the last few years. In particular:&amp;nbsp; &lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Emergence (i.e. &lt;i&gt;"&lt;a href="http://en.wikipedia.org/wiki/Emergence"&gt;the way complex systems and patterns arise out of a multiplicity of relatively simple interactions&lt;/a&gt;"&lt;/i&gt;) is, like it or not, a definite factor in the architecture of modern-day enterprises. This is especially true when the human dimension is factored into the mix. The current Gen Y and upcoming &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/03/next-generation.html"&gt;Gen V&lt;/a&gt; are not going to hang around while the EA department figure out how to factor their 10th generation iPhone, which offers 3-D holographic body-time, into an EA blueprint. They are just going to bypass the current systems and use it regardless. The enterprise had better quickly figure out the implications of such devices (whatever they turn out to be) or risk becoming a technological backwater.&lt;/li&gt;&lt;li&gt;EA departments seem to very quickly become disjoint from both the business which they should be serving and the technicians which they should be governing. One is definitely tempted to ask "who is governing the governors" when it comes to the EA department? Accountability in many organisations definitely seems to be lacking. This feels to me like another example of &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/07/gapology.html"&gt;gapology&lt;/a&gt; that seems to be increasingly apparent in such organisations.&lt;/li&gt;&lt;li&gt;Even though we are better placed than ever to be able to capture &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/01/software-developments-best-kept-secret.html"&gt;good methodological approaches&lt;/a&gt; to systems development I still see precious little adoption of true systems development lifecycles (SDLC's) in organisations. Admittedly methods have had very bad press over the years as they are often seen as been an unnecessary overhead which, with the rise of agile, have been pushed into the background as something an organisation must have in order to be &lt;a href="http://en.wikipedia.org/wiki/ISO_9000"&gt;ISO 9000&lt;/a&gt; compliant or whatever but everyone really just gets on with it and ignores all that stuff.&lt;/li&gt;&lt;li&gt;Finally, as with many things in IT, the situation has been confused by having multiple and overlapping standards and frameworks in the EA space (TOGAF, Zachman and MODAF to name but three). Whilst none of these may be perfect I think the important thing is to go with one and adapt it accordingly to what works for your organisation. What we should not be doing is inventing more frameworks (and standards bodies to promote them). As with developing an EA itself the approach an EA department should take to selecting an EA framework is to start small and grow on an as needs basis.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8204590353922326911?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8204590353922326911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/ea-wars.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8204590353922326911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8204590353922326911'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/ea-wars.html' title='EA Wars'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7117136829150705496</id><published>2011-04-15T12:28:00.001+01:00</published><updated>2011-05-09T10:25:40.958+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='technique'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>Applying Architectural Tactics</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The use of architectural tactics, as proposed by the &lt;a href="http://www.sei.cmu.edu/"&gt;Software Engineering Institute&lt;/a&gt;, provides a systematic way of dealing with a systems non-functional requirements (sometime referred to as the systems quality attributes or just qualities). These can be both runtime qualities such as performance, availability and security as well as non-runtime such as maintainability, portability and so on. In my experience, dealing with both functional and non-functional requirements, as well as capturing them using a suitable modeling tool is something that is not always handled very methodically. Here's an approach that tries to enforce some architectural rigour using the Unified Modeling Language (UML) and any UML compliant modeling tool.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Architecturally, systems can be decomposed from an enterprise or system-wide view (i.e. meaning people, processes, data and IT systems), to an IT system view to a component view and finally to a sub-component view as shown going clock-wise in Figure 1. These diagrams show how an example hotel management system (something I've &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/11/architecture-drill-down-in-uml.html"&gt;used before&lt;/a&gt; to illustrate some architectural principles) might eventually be decomposed into components and sub-components.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dgnOBK1Bty4/Tabq6Hhyw5I/AAAAAAAAAGA/0dUu6m8n-as/s1600/System+Decomposition.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="506" src="http://4.bp.blogspot.com/-dgnOBK1Bty4/Tabq6Hhyw5I/AAAAAAAAAGA/0dUu6m8n-as/s640/System+Decomposition.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 1: System Decomposition&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This decomposition typically happens by considering what functionality needs to be associated with each of the system elements at different levels of decomposition. So, as shown in Figure 1 above, first we associate ‘large-grained’ functionality (e.g. we need a hotel system) at the system level and gradually break this down to finer and finer grained levels until we have attributed all functionality across all components (e.g. we need a user interface component that handles the customer management aspects of the system).&lt;br /&gt;&lt;br /&gt;Crucially from the point of view of deployment of components we need to have decomposed the system to at least that of the sub-component level in Figure 1 so that we have a clear idea of each of the types of component (i.e. do they handle user input or manage data etc) and know how they collaborate with each other in satisfying use cases. There are a number of patterns which can be adopted for doing this. For example the model-view-controller pattern as shown in Figure 2 is a way of ascribing functionality to components in a standard way using rules for how these components collaborate. This pattern has been used for the sub-component view of Figure 1.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bOcV7DNOYKE/TabbIzgBmRI/AAAAAAAAAF0/yzLYzS0dw6A/s1600/MVC.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/-bOcV7DNOYKE/TabbIzgBmRI/AAAAAAAAAF0/yzLYzS0dw6A/s400/MVC.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 2: Model-View-Controller Pattern&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;So far we have shown how to decompose a system based on functional requirements and thinking about which components will realise those requirements. What about non-functional requirements though? Table 1 shows how non-functional requirements can be decomposed and assigned to architectural elements as they are identified. Initially non-functional requirements are stated at the whole system level but as we decompose into finer-grained architectural elements (AKA components) we can begin to think about how those elements support particular non-functional requirements also. In this way non-functional requirements get decomposed and associated with each level of system functionality. Non-functional requirements would ideally be assigned as attributes to each relevant component (preferably inside our chosen &lt;a href="http://uml-directory.omg.org/vendor/list.htm"&gt;UML modelling tool&lt;/a&gt;) so they do not get lost or forgotten.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="5" cellspacing="5"&gt;&lt;caption&gt;Table 1&lt;/caption&gt;  &lt;tbody&gt;&lt;tr&gt; &lt;th style="background-color: #ffd966;"&gt;System Element&lt;/th&gt; &lt;th style="background-color: #ffd966;"&gt;Non-Functional Requirement&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td width="30%"&gt;Hotel System (i.e. including all actors and IT systems).&lt;/td&gt; &lt;td&gt;The hotel system must allow customers to check-in 24 hours a day, 365 days a year. Note this is typically the accuracy non-functional requirements are stated at initially. Further analysis is usually needed to provide measurable values.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td width="30%"&gt;Hotel Management System (i.e. the hotel IT system).&lt;/td&gt; &lt;td&gt;The hotel management system must allow the front-desk clerk to check-in a customer 24 hours a day, 365 days a year with a 99.99% availability value.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td width="30%"&gt;Customer Manager (i.e. a system element within the hotel’s IT system).&lt;/td&gt; &lt;td&gt;The customer manager system element (component) must allow customer details to be created, read or updated (but not deleted) 24 hours a day, 365 days a year with a 99.99% availability value.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td width="30%"&gt;Customer Manager Interface (i.e. the user interface that belongs to the Customer Manager system element).&lt;/td&gt; &lt;td&gt;The customer manager interface must allow customer details to be created, read or updated (but not deleted) 24 hours a day, 365 days a year with a 99.99% availability value.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Once it is understood what non-functional requirement each component needs to support we can apply the approach of &lt;a href="http://www.sei.cmu.edu/reports/03tr004.pdf"&gt;architectural&lt;i&gt; tactics&lt;/i&gt;&lt;/a&gt; proposed by the Software Engineering Institute (SEI) to determine how to handle those non-functional requirements.&lt;br /&gt;&lt;br /&gt;An architectural tactic represents “codified knowledge” on how to satisfy non-functional requirements by applying one or more patterns or reasoning frameworks (for example queuing or scheduling theory) to the architecture. Tactics show how (the parameters of) a non-functional requirement (e.g. the required response time or availability) can be addressed through architectural decisions to achieve the desired capability.&lt;br /&gt;&lt;br /&gt;In the example we are focusing on in Table 1 we need some tactics that allow the desired quality attribute of 99.99% availability (which corresponds to a downtime of 52 min, 34 sec per year) to be achieved by the customer manager interface. A detailed set of availability tactics can be found &lt;a href="http://www.sei.cmu.edu/reports/09tr006.pdf"&gt;here&lt;/a&gt; but for the purposes of this example availability tactics can be categorized according to whether they address fault detection, recovery, or prevention. Here are some potential tactics for these:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Employing good software engineering practices for fault prevention such as code inspections, usability testing and so on to the design and implementation of the interface.&lt;/li&gt;&lt;li&gt;Deploying components on highly-available platforms which employ fault detection and recovery approaches such as system monitoring, active failover etc.&lt;/li&gt;&lt;li&gt;Developing a backup and recovery approach that allows the platform running the user interface to be replaced within the target availability times.  &lt;/li&gt;&lt;/ul&gt;As this example shows, not all non-functional requirements can be realised suitably by a component alone; sometimes full-realisation can only be done when that component is placed (deployed) onto a suitable computer platform. Once we know what non-functional requirements need to be realised by what components we can then think about how to package these components together to be deployed onto the appropriate computer platform which supports those non-functional requirements (for example on a platform that will support 99.99% availability and so on). Figure 3 shows how this deployment can be modelled in UML adopting the &lt;a href="https://www.ibm.com/developerworks/patterns/edge/at1-runtime.html"&gt;Hot Standby Load Balancer&lt;/a&gt; pattern.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MfXarzXVCrk/TagfDcN0TCI/AAAAAAAAAGE/7e0Kxoj14Zw/s1600/Deployment+View.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="372" src="http://3.bp.blogspot.com/-MfXarzXVCrk/TagfDcN0TCI/AAAAAAAAAGE/7e0Kxoj14Zw/s640/Deployment+View.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 3: Deployment View&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Here we have taken one component, the ‘Customer Manager’, and showed how it would be deployed with other components (a ‘Room Manager' and a ‘Reservation Manager'’) that support the same non-functional requirements onto two application server nodes. A third UML element, an &lt;i&gt;artefact&lt;/i&gt;, packages together like components via a UML «manifest» relationship. It is the artefact that actually gets placed onto the nodes. An artefact is a standard UML element that “embodies or manifests a number of model elements. The artefact owns the manifestations, each representing the utilization of a packageable element”.&lt;br /&gt;&lt;br /&gt;So far all of this has been done at a logical level; that is there is no mention of technology. However moving from a logical level to a physical (technology dependent level) is a relatively simple step. The packaging notion of an artefact can equally be used for packaging physical components, for example in this case the three components shown in Figure 3 above could Enterprise Java components or .NET components.&lt;br /&gt;&lt;br /&gt;This is a simple example to illustrate three main points:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Architecting a system based on functional and non-functional requirements.&lt;/li&gt;&lt;li&gt;Use of a standard notation (i.e. UML) and modelling tool.&lt;/li&gt;&lt;li&gt;Adoption of tactics and patterns to show how a systems qualities can be achieved.&lt;/li&gt;&lt;/ol&gt;None of it rocket science but something you don't see done much.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7117136829150705496?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7117136829150705496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/applying-architectural-tactics.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7117136829150705496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7117136829150705496'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/applying-architectural-tactics.html' title='Applying Architectural Tactics'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dgnOBK1Bty4/Tabq6Hhyw5I/AAAAAAAAAGA/0dUu6m8n-as/s72-c/System+Decomposition.jpg' height='72' width='72'/><thr:total>1</thr:total><georss:featurename>Westminster, London, UK</georss:featurename><georss:point>51.5001524 -0.12623619999999391</georss:point><georss:box>51.322796399999994 -0.39052969999999393 51.6775084 0.1380573000000061</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8860434447087793770</id><published>2011-04-13T11:15:00.000+01:00</published><updated>2011-04-13T11:15:10.640+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Oops There Goes Our Reputation</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I'm guessing that up to two weeks ago most people, like me, had never heard of a company called &lt;a href="http://www.epsilon.com/"&gt;Epsilon&lt;/a&gt;. Now, unfortunately for them, too many people know of them for all the wrong reasons. If you sign up to any services from household names such as Marks and Spencer, Hilton, Marriott or McKinsey you will have probably had several emails in the last two weeks advising you of a security breach which led to "unauthorized entry into Epsilon's email system". Unfortunately because Epsilon is a marketing vendor that manages customer email lists for these and other well known household brands chances are your email has been obtained by this unauthorised entry as well. Now, it just might be a pure coincidence, but in the last two weeks I have also received emails from the Chinese government inviting me to a conference on some topic I've never heard of, from Kofi Annan, ex-Secretary General of the United Nations and from a lady in Nigeria asking for my bank account details so she can deposit $18.4M into the account so she can leave the country!&lt;br /&gt;&lt;br /&gt;According to the &lt;a href="http://www.epsilon.com/News%20&amp;amp;%20Events/Press_Releases_2011/Epsilon_Notifies_Clients_of_Unauthorized_Entry_into_Email_System/p1057-l3"&gt;information&lt;/a&gt; on Epsilon's web site the information that was obtained was limited to email addresses and/or customer names only. So, should we be worried by this and what are the implications on architecture of such systems?&lt;br /&gt;&lt;br /&gt;I think we should be worried for at least three reasons:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Whilst the increased spam that is seemingly inevitable following an incident such as this is mildly annoying a deeper concern is how could the criminal elements who now have information on the places I do business on the web put this information together to learn more about me and possibly construct a more sophisticated phishing attack? Unfortunately it's not only the good guys that have access to data analytics tools.&lt;/li&gt;&lt;li&gt;Many people probably have a single password to access multiple web sites. The criminals who now have your email as well as knowledge of which sites you do business at only have to crack one of these and potentially have access to multiple sites, some of which may have more sensitive information.&lt;/li&gt;&lt;li&gt;Finally how come information I trusted to well known (and by implication 'secure') brands and their web sites has been handed over to a third party without me even knowing about it? Can I trust those companies not to be doing this with more sensitive information and should I be withdrawing my business from them?. This is a serious breach of trust and I suspect that many of these brands own reputations will have been damaged.&lt;/li&gt;&lt;/ol&gt;So what are the impacts to us as IT architects in a case like this? Here are a few:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;As IT architects we make architectural decisions all the time. Some of these are relatively trivial (I'll assign that function to that component etc) whereas others are not. Clearly decisions about which part of the system to entrust personal information to is &lt;u&gt;not&lt;/u&gt; trivial. I always advocate documenting significant architectural decisions in a formal way where all the options you considered are captured as well as the rationale and implications behind the decision you made. As our systems get ever more complex and distributed the implications of particular decisions become harder to quantify. I wonder how many architects consider the implications to a companies reputation of entrusting even seemingly low grade personal information to third parties?&lt;/li&gt;&lt;li&gt;It is very likely that incidents such as this are going to result in increased legislation that covers personal information just like there is legislation on &lt;a href="http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard"&gt;Payment Card Industry&lt;/a&gt; (PCI) standards. This will demand more architectural rigour as new standards essentially impose new constraints on how we design our systems.&lt;/li&gt;&lt;li&gt;As we trundle slowly to a world where more and more of our data is to be held in the cloud using a so called multi-tenant deployment model it's surely only a matter of time before unauthorised access to one of our cloud data stores will result in access to many other data sources and a wealth of our personal information. What is needed here is new thinking around patterns of layered security that are tried and tested and, crucially, which can be 'sold' to consumers of these new services so they can be reassured that their data is secure. As Software-as-a-Service (SaaS) takes off and new providers join the market we will increasingly need to be reassured they are to be trusted with our personal data. After all if we cannot trust existing, large corporations how can we be expected to trust new, small startups?&lt;/li&gt;&lt;li&gt;Finally I suspect that it is only a matter of time before legislation aimed at systems designers themselves is enforced that make us as IT architects liable for some of those architectural decisions I mentioned earlier. I imagine there are several lawyers engaged by the parties whose customers email addresses were obtained and whose trust and reputation with those customers may now be compromised. I wonder if some of those lawyers will be thinking about the design of such systems in the first place and, by implication, the people who designed those systems?&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8860434447087793770?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8860434447087793770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/oops-there-goes-our-reputation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8860434447087793770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8860434447087793770'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/oops-there-goes-our-reputation.html' title='Oops There Goes Our Reputation'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-6767112896566054284</id><published>2011-04-05T20:12:00.000+01:00</published><updated>2011-04-05T20:12:47.263+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Open vs. Closed Architectures</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div&gt;There has been much Apple bashing in cyberspace as well as the 'dead-wood' parts of the press of late. To the extent that some people are now turning on those that own one of Apple's wunder-devices (an iPad) accusing them of being "&lt;a href="http://www.wired.co.uk/news/archive/2010-07/27/ipad-owners-selfish"&gt;selfish elites&lt;/a&gt;". Phew! I thought it was a typically British trait to knock anything and anyone that was remotely successful but it now seems that the whole world has it in for Mr Jobs' empire.&lt;br /&gt;&lt;br /&gt;Back in the pre-google days of 1994 Umberto Eco &lt;a href="http://www.themodernword.com/eco/eco_mac_vs_pc.html"&gt;declared that&lt;/a&gt; "&lt;i&gt;the Macintosh is Catholic and that DOS is  Protestant. Indeed, the Macintosh is counter-reformist and has been  influenced by the &lt;a href="http://en.wikipedia.org/wiki/Ratio_Studiorum"&gt;ratio studiorum&lt;/a&gt; of the Jesuits. It is cheerful,  friendly, conciliatory; it tells the faithful how they must proceed  step by step to reach -- if not the kingdom of Heaven -- the moment in  which their document is printed.&lt;/i&gt;" &lt;br /&gt;&lt;br /&gt;The big gripe most people have with Apple is their closed architecture which controls not only who is allowed to write apps for their OS's but who can produce devices that actually run those OS's (er, that would be Apple). It's one of life's great anomalies as to why Apple is so successful in building products with closed architectures when most everyone would agree that open architectures and systems are ultimately the way to go as, in the end, they lead to greater innovation, wider-usage and, presumably, more profit for those involved. The classic case of an open architecture leading to wide-spread usage is that of the original &lt;a href="http://en.wikipedia.org/wiki/IBM_Personal_Computer"&gt;IBM Personal Computer&lt;/a&gt;. Because IBM wanted to fast-track its introduction many of the parts were, unusually for IBM, provided by third-parties including, most significantly the processor (from Intel) and the operating system (from the fledgling Microsoft). This together with the fact that the technical information on the innards of the computer were made publicly available essentially made the IBM PC 'open'. This more than anything gave it an unprecedented penetration into the marketplace allowing many vendors to provide IBM PC 'clones'.&lt;br /&gt;&lt;br /&gt;There is of course a 'dark side' to all of this. Thousands of vendors all providing hardware add-ons and extensions as well as applications resulted in huge inter-working problems which in the early days at least required you to be something of a computer engineer if you wanted to get everything working together. This is where Apple stepped in. As Umberto Eco said, Apple guides the faithful every step of the way. What they sacrifice in openness and choice they gain in everything working out the box, sometimes in &lt;a href="http://www.youtube.com/watch?v=YHzM4avGrKI&amp;amp;feature=player_embedded"&gt;three simple steps&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, is open always best when it comes to architecture or does it sometimes pay to have a closed architecture? What does the architect do when faced with such a choice? Here's my take:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt; Know your audience. The early PC's, like it or not were bought by technophiles who enjoyed technology for the sake of technology. The early Mac's were bought by people who just wanted to use computers to get the job done. In those days both had a market.&lt;/li&gt;&lt;li&gt;Know where you want to go. Apple stuck solidly with creating user friendly (not to mention well designed devices) that people would want to own and use. The plethora of PC providers (which there soon were) couldn't by and large give a damn about design. They just wanted to sell as many devices as possible and let others worry about how to stitch everything together. This in itself generated a huge industry which in a strange self-fulfilling way led to more devices and world domination of the PC and left Apple in a niche market. Openness certainly seemed to be paying.&lt;/li&gt;&lt;li&gt; Know how to capitalise on your architectural philosopy. Ultimately openness leads to commoditization. When anyone can do it price dominates and the cheapest always wins. If you own the space then you control the price. Apple's recent success has been not to capitalise on an open architecture but to capitalise on good design which has enabled it to create high value, desirable products showing that good design trounces an open architecture. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;So how about combining the &lt;b&gt;utility&lt;/b&gt; of an open architecture with the &lt;b&gt;significance&lt;/b&gt; of a well thought through architecture to create a great &lt;b&gt;design&lt;/b&gt;? Which funnily enough is what &lt;a href="http://www.presentationzen.com/presentationzen/2006/08/from_design_to_.html"&gt;Dan Pink&lt;/a&gt; meant by this:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Significance + Utility = Design&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Huh, beaten to a good idea again!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-6767112896566054284?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/6767112896566054284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/open-vs-closed-architectures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6767112896566054284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6767112896566054284'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/04/open-vs-closed-architectures.html' title='Open vs. Closed Architectures'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3463689833563848710</id><published>2011-03-31T13:34:00.001+01:00</published><updated>2011-03-31T13:39:30.437+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><title type='text'>It's Only Television But I Like It</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Yes I know it's a television program and yes I know they are playing up to the camera and yes I know we only see the 'edited highlights' but &lt;a href="http://www.channel4.com/programmes/jamies-dream-school"&gt;&lt;i&gt;Jamie's Dream School&lt;/i&gt;&lt;/a&gt; on Channel 4 last night was an exemplar on how to deliver motivational talks to a disinterested audience. As I &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/03/on-lego-granularity-jamie-oliver-and.html"&gt;discussed last time&lt;/a&gt; the 'teachers' (actually people at the leading edge in their field) are truly inspirational, passionate individuals who use every trick in the book to engage with and inspire their students. Not only that they are incredibly humble, as typified by one of the pupils asking &lt;a href="http://www.guardian.co.uk/technology/2010/feb/27/robert-winston-my-bright-idea"&gt;Robert Winston&lt;/a&gt; if he &lt;i&gt;"had ever cured anything"&lt;/i&gt; to which he replied he &lt;i&gt;"thought they had helped with some advances, yes"&lt;/i&gt;. As well as all this inspirational and motivational teaching you will see there is not a single PowerPoint slide in sight. It's all about &lt;a href="http://presentationzen.blogs.com/presentationzen/2005/10/make_your_next_.html"&gt;naked presenting&lt;/a&gt; (well, apart from the odd prop or two) and story telling.&lt;br /&gt;&lt;br /&gt;I've recently been reading Nancy Duarte's book &lt;a href="http://www.duarte.com/books/"&gt;Resonate&lt;/a&gt; which looks at how storytelling as done by great writers and film-makers can be used by presenters to really engage with their audience. If you want a book that helps you with presentations that is something other than the boring 'how to' guides on structuring PowerPoint presentations then it's definitely worth a read.&lt;br /&gt;&lt;br /&gt;So what's this got to do with IT architecture? Nothing and everything! At one level architecture is just a pile of models and diagrams describing ways for solving business problems. However architecture also needs to be 'bought alive' if the ideas it encompasses are to be explained and the costs of implementing it justified to non-technical people. Explaining and presenting architecture is probably one of the most important aspects of the architects role and communication skills should definitely be up their as one of the key competencies possessed by architects. Without these architectures will just remain a bunch of ideas gathering virtual dust in a modeling tool.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3463689833563848710?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3463689833563848710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/its-only-television-but-i-like-it.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3463689833563848710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3463689833563848710'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/its-only-television-but-i-like-it.html' title='It&apos;s Only Television But I Like It'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-873972878348443763</id><published>2011-03-22T21:28:00.000Z</published><updated>2011-03-22T21:28:53.857Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>On Lego, Granularity, Jamie Oliver and Architecture</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There's a TV program running here in the UK called &lt;a href="http://www.channel4.com/programmes/jamies-dream-school"&gt;&lt;i&gt;Jamie's Dream School&lt;/i&gt; &lt;/a&gt;where the chef, entrepreneur, restaurateur and Sainsbury's promoter Jamie Oliver brings together some of Britain's most inspirational  individuals (Robert Winston, Simon Callow, Rankin and Rolf Harris to name but four) to see if they can persuade 20 young people who've left  school with little to show for the experience to give education a second  chance. The central theme seems to be one of hands-on student involvement and live demos, the more outrageous the better. The highlight so far being Robert Winston hacking away at &lt;a href="http://www.jamieoliver.com/videos/watch/jamie-s-dream-school-robert-winston-s-guide-to-open-rat-surgery/366"&gt;rats and pigs&lt;/a&gt; with scalpels and a circular saw resulting in several students vomiting in the playground.&lt;br /&gt;&lt;br /&gt;This set me thinking about how best to demonstrate software architecture to a bunch of students of a similar age to those in the Jamie Oliver program for a talk I gave at a UK university &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/03/skills-for-building-smarter-planet.html"&gt;last week&lt;/a&gt;. Much has been written about the analogy between LEGO (R) and services (see &lt;a href="http://www.zapthink.com/2006/12/11/the-legoreg-model-of-soa/"&gt;this&lt;/a&gt; article from Zapthink and &lt;a href="http://www.zdnet.com/blog/service-oriented/does-the-soa-lego-analogy-have-legs/780"&gt;another&lt;/a&gt; from ZDNet for example). Okay it may not be quite as imaginative as pig carcasses being hacked about but LEGO was the best I had at hand! Here's how the demo works:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;First I give them my favourite defnition of architecture, namely: &lt;i&gt;Architects take existing components and assemble them in interesting and important ways.&lt;/i&gt; (&lt;a href="http://sethgodin.typepad.com/seths_blog/2010/11/hire-an-architect.html"&gt;Seth Godin&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Then I invite an unsuspecting candidate to come and assemble the body (importantly excluding the wheels) of a car out of LEGO (actually Duplo as its bigger) making a big thing of tipping a bag of bricks out onto the table. This they usually do without too much hassle, the key learning point being that they have created an "interesting" construct out of "existing components".&lt;/li&gt;&lt;li&gt;I then ask them to add some wheels and tip out a bag of &lt;a href="http://www.knex.com/"&gt;K'NEX&lt;/a&gt; (R). As I'm sure even non-parents know K'NEX and LEGO are essentially different "systems" and the two don't (easily) connect to each other. This usually ends up in bemused looks and a good deal of fiddling around with wheels and bricks trying to figure out how to make the two systems connect to each other.&lt;/li&gt;&lt;/ol&gt;Depending on how much time and energy you have as well as the attention span of the students there are lots of great learning points to be made here. In order of increasing depth these are:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;LEGO (components) have a well defined interface and can easily be assembled in lots of interesting ways.&lt;/li&gt;&lt;li&gt;K'NEX is a different system and has been designed with a different interface. K'NEX and LEGO were not designed to work with each other. One of the jobs of an architect is to watch out for incompatible interfaces and figure out ways of making them work with each other. This is possibly done using a third party product e.g Sellotape (R). I guess an extension to this demo could be a roll of this.&lt;/li&gt;&lt;li&gt;It may be in the component providers interest to use different interfaces as it results in vendor lock-in which means you have to keep going back to that vendor for more components,&lt;/li&gt;&lt;li&gt;Granularity (i.e. in the case of LEGO the number of "nobbles") is important. Small bricks (few nobbles, fine-grained) may be very reusable but you need lots and lots of them to do anything interesting. Conversely LEGO have now taken to quite specialized pieces (not "bricks" any more but large-grained pieces) that perform one function well (the LEGO rocket for example) but cannot be reused so easily. The optimum for re-usability is somewhere in-between these two.&lt;/li&gt;&lt;li&gt;LEGO may be aimed at children who, with relatively little expertise or training, may be able to assemble interesting things but they are not about to build LEGOland. For that you need an architect!&lt;/li&gt;&lt;li&gt;Finally, if you are feeling really mean, disassemble the lovingly built construction of your student then ask her to re-build it &lt;i&gt;in exactly the same way. &lt;/i&gt;Chances are that even for a relatively simple system they won't be able to. What might have helped was some type of document that described what they had done.&lt;/li&gt;&lt;/ol&gt;I'm sure there are other interesting analogies to be drawn but I'll finish by saying that this is not quite as trivial as it sounds. Not only was this a good learning exercise for my students I happen to know a client who is using building blocks like LEGO to help their architects architect systems. The key thing it helps demonstrate is the importance of collaboration in assembling such systems.&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-873972878348443763?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/873972878348443763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/on-lego-granularity-jamie-oliver-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/873972878348443763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/873972878348443763'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/on-lego-granularity-jamie-oliver-and.html' title='On Lego, Granularity, Jamie Oliver and Architecture'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7547781114072448281</id><published>2011-03-17T20:56:00.000Z</published><updated>2011-03-17T20:56:57.823Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>Skills for Building a Smarter Planet</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is the transcript of a talk I gave to a group of sixth formers, who are considering a career in IT, at a UK university this week. The theme was "What do IT architects do all day" however I expanded it into "What will IT architects be doing in the future?".&lt;br /&gt;&lt;br /&gt;What I want to do in the next 30 minutes or so is not only tell you what I, as an IT architect, do but what I think you will be doing should you choose to take up a career as an IT architect and what skills you wil need to do the job. In particular I'd like to explain what I mean by this:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Today's world is full of &lt;b&gt;wicked problems&lt;/b&gt;. Solving these problems, and building a &lt;b&gt;smarter planet&lt;/b&gt; needs new skills. I believe that IT architects need to be a versatile and adaptive breed of &lt;b&gt;systems thinkers&lt;/b&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Here's the best explanation I've seen of what architects do:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Architects take existing components and assemble them in interesting and important ways.&lt;/i&gt; (&lt;a href="http://sethgodin.typepad.com/seths_blog/2010/11/hire-an-architect.html"&gt;Seth Godin&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;As an example of this consider something that we use everyday, the (world-wide) web. Invented by Tim Berners-Lee just 20 short years ago, Tim basically assembled the web from three components that already existed: hypertext, internet protocols and what are referred to as markup languages. All these things existed, what Tim did was to assemble them in an "interesting" way. So what I do is to use IT to try and solve interesting and important business problems by assembling (software) components. I'm not just interested in any problems though, the type of problems that interest me are the "wicked" variety. What do I mean by these?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cognexus.org/id42.htm"&gt;Wicked problems&lt;/a&gt; are ones that you often don't really understand until you've formulated a solution to it. It's often not even possible to really state what the problem is and because there is no clear statement of the problem, there can be no clear solution so you never actually know when you are finished. For wicked problems 'finished' usually means you have run out of time, money, patience or all three! Further, solutions to wicked problems are not "right" or "wrong". Wicked problems tend to have solutions which are 'better', or maybe 'worse' or just 'good enough'. Finally, every wicked problem is essentially novel and unique. Because there are usually so many factors involved in a wicked problem no two problems are ever the same and each solution needs a unique approach.&lt;br /&gt;&lt;br /&gt;But there's a problem! Here's a headline from last year Independent newspaper: &lt;a href="http://www.independent.co.uk/news/uk/politics/labours-computer-blunders-cost-16326bn-1871967.html"&gt;"Labour's computer blunders cost £26bn"&lt;/a&gt;. What's going on here? This is your and my money being wasted on failed IT projects. And it's not just government projects that are failing. Here's an estimate from the British Computer Society of how many IT projects re actually successful. 20%! How poor is that? It projects 'fail' for many reasons but interstingly it's rarely for just technical reasons. More often than not it's due to poor project and risk management, lack of effective stakeholder management or no clear senior management ownership. So we have a real problem here. As we'll see in a minute,&amp;nbsp; problems are not only getting harder to fix (more 'wicked') but our ability to solve them does not seem to be improving!!&lt;br /&gt;&lt;br /&gt;So what are these wicked problems I keep talking about? They are many and numerous but many of them are attributable to inefficiencies that exist in the "systems" that exist in the world. Economists estimate that globally we waste $15 trillion of the worlds precious resources each year. Much – if not most – of this inefficiency can be attributed to the fact that we have optimized the way the world works within silos, with little regard for how the processes and systems that drive our planet interrelate. These complex, systemic inefficiencies are interwoven in the interactions among our planet’s core systems. No business, government or institution can solve these issues in isolation. To root out inefficiencies and reclaim a substantial portion of that which is lost, businesses, industries, governments and cities will need to think in terms of systems, or more accurately, a system of systems approach. This means we will need to collaborate at unprecedented levels. For example no single organization owns the world’s food system, and no single entity can fix the world’s healthcare system. Success will depend upon understanding the full set of cause-and-effect relationships that link systems and using this knowledge to create greater synergy. Basically many of the problems the world faces today are cause by the fact that our systems don't talk to each other. What do I mean by this? Here's a simple example to illustrate the point.&lt;br /&gt;&lt;br /&gt;Imagine you are driving your car around town trying to find a parking space. You can be sure that somewhere in town there's a parking meter looking for a car to park in it. How do we marry your car with that parking meter? Actually the technology to do this pretty much exists already. However the challenge of actually fixing this problem stretches beyond just technology. A solution to this problem includes at least: intelligent sensors, communications, public and private finance, local government involvement, control and policing as well as well established open standards.&lt;br /&gt;&lt;br /&gt;Like I said, from a pure technology point of view we are in pretty good shape to solve problems like this. We now have an unprecedented amount of: instrumentation, interconnectedness and intelligence &lt;br /&gt;such that organisations (and societies) can think and act in radically new ways. However in order to solve problems like the parking one as well as significantly more 'wicked' ones I believe we need skills that stretch beyond the mere technological. If you are to help solve these problems then you need to be a versatile and adaptive systems thinker. A systems thinker is someone who not only uses her left-brained logical thinking capabilities but also uses her right-brained creative and artistic capabilities. Here are six attributes (from Dan Pink's book &lt;a href="http://www.danpink.com/whole-new-mind"&gt;&lt;i&gt;A Whole New Mind&lt;/i&gt;&lt;/a&gt;) that a good systems thinker needs to adopt which I think will help in solving some of the worlds wicked problems:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Design – It is no longer sufficient or acceptable to create a product or service that merely does the job. Today it is both economically critical as well as&amp;nbsp; aesthetcially rewarding to create something that is beautiful and emotionally engaging.&lt;/li&gt;&lt;li&gt;Story – We are living in a time of information overload. If you want your sales pitch or point of view to be heard above the cacophony of background noise that is out there you have to create a compelling narrative.&lt;/li&gt;&lt;li&gt;Symphony – We live in a world of silos. Siloed processes, siloed systems and siloed societies. Success in business and in life is about breaking down these silos and pulling all the pieces together. Its about synthesis rather than analysis.&lt;/li&gt;&lt;li&gt;Empathy – Our capacity for logical thought has gone a very way to creating the technological society we live in today. However in a world of ubiquitous information that is available at the touch of a button logic alone will no longer cut the mustard.In order to thrive we need to understand what makes our fellow humans tick and really get beneath their skin and to forge new relationships.&lt;/li&gt;&lt;li&gt;Play – In a world where we are all having to meet targets, pass tests and&amp;nbsp; achieve the right grades in order to get on it is easy to forget the importance of play. There is a lot of evidence out there of the benefits to our health and general well-being of the benefits of play, not only outside work but also inside.&lt;/li&gt;&lt;li&gt;Meaning – We live in a world of material plenty put spiritual scarcity. Seeking meaning in life that transcends above “things” is vital if we are to achieve some kind of personal fulfilment. &lt;/li&gt;&lt;/ul&gt;A Gartner &lt;a href="http://www.gartner.com/press_releases/asset_139314_11.html"&gt;report&lt;/a&gt; published in 2005 predicted that by 2010, IT professionals will need to possess expertise in multiple domains. Technical aptitude alone will no longer be enough. IT professionals must prove they can understand business realities – industry, core processes, customer bases, regulatory environment, culture and constraints. Versatility will be crucial. It predicted that by By 2011, 70 percent of leading-edge companies will seek and develop “versatilists” while deemphasizing specialists.&lt;br /&gt;&lt;br /&gt;Versatilists are people whose numerous roles, assignments and experiences enable them to synthesise knowledge and context in ways that fuel business value. Versatilists play different roles than specialists or generalists. Specialists generally have deep technical skills and narrow scope, giving them expertise that is recognized by peers, but it is seldom known outside their immediate domains. Generalists have broad scope and comparatively shallow skills, enabling them to respond or act reasonably quickly, but often at a cursory level. Versatilists, in contrast, apply depth of skill to a rich scope of situations and experiences, building new alliances, perspectives, competencies and roles. They gain the confidence of peers and partners. To attain versatilist skills, IT professionals should..&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Look outside the confines of current roles, regions, employers or business units. The more informed a professional is about a company, its industry segment and the forces that affect it, the greater the contextual grasp.&lt;/li&gt;&lt;li&gt;Lay out opportunities and assignments methodically. Focus on the areas and challenges that fall outside the comfort zone; those areas generally will be the areas of greatest growth.&lt;/li&gt;&lt;li&gt;Explore possibilities outside the world of corporate business. Not-for-profit ventures, startup companies, government agencies and consumer IT service providers offer powerful ways to bolster experiences, behavioral competencies or management skills.&lt;/li&gt;&lt;li&gt;Enroll in advanced degree programs or in qualified education courses to expand perspective.&lt;/li&gt;&lt;li&gt;Identify companies, projects, assignments, education and training that will increase professional value.&lt;/li&gt;&lt;/ul&gt;I believe we’ve only just begun to scratch the surface of what's possible on a “smarter planet”. However if we are to really address the truly wicked problems that are out there in order to make our world a better, and maybe even a fairer place, we need people like you to make it happen.&lt;br /&gt;&lt;br /&gt;Finally you might be tempted in these hard economic times when you are being asked to pay outrageous amounts for your education not to bother with university. However bear &lt;a href="http://sethgodin.typepad.com/seths_blog/2011/03/unskilled-labor.html"&gt;this&lt;/a&gt; in mind:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Unskilled labor is what you call someone who merely has skills that most everyone else has. If it's not scarce, why pay extra? Skills matter. The unemployment rate for US workers without a college education is almost triple that for those with one. Even the college rate is still too high, though.&amp;nbsp; On the other hand, the unemployment rate for skilled neurosurgeons, talented database designers and motivated recombinant DNA biologists is essentially zero, despite the high pay in all three fields. Unskilled now means not-specially skilled".&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The only real investment you have for the future is the piece of grey matter between your ears. Make sure you continue to nurture and nourish it throughout your life by stimulating both the left and right sides.&lt;br /&gt;&lt;br /&gt;Thank you and good luck with whatever path you choose to take in life.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7547781114072448281?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7547781114072448281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/skills-for-building-smarter-planet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7547781114072448281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7547781114072448281'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/skills-for-building-smarter-planet.html' title='Skills for Building a Smarter Planet'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2504034997990472144</id><published>2011-03-10T21:40:00.000Z</published><updated>2011-03-10T21:40:57.607Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>The Next Generation?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Demographers, social scientists and new media watchers are fond of dividing people into generations based on what recent (i.e. post-World War II) period of history they were born in. Whilst there are no consistent definitions of when these generations begin and end they roughly fall into these periods:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Baby-boomers: 1940 – 1960.&lt;/b&gt; Those born during the post–World War II demographic boom in births. This generation more than any other rejected the moral and religous beliefs of their parents and created their own sets of values. This is the generation that invented sex, drugs and rock'n'roll and is still largely the one that is ruling the roost so to speak (President Obama, born in 1961, catching the tail end of this particular demographic).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Generation X (post boomers): 1960 - 1980.&lt;/b&gt; This term was apparently coined by the great Magnum photographer Robert Capa in the early 1950s. He used it as the title for a photo-essay about young men and women growing up immediately after the Second World War. Sometimes referred to as the "unknow" or "lost" genaration this group has signified people without identity who face an uncertain, ill-defined (and perhaps hostile) future. This is the generation that grew up during the fall of the Berlin war, the end of the Cold War and various economic crises (such as the 1979 olil crisis) and were most likely to be the children of divorced parents.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Generation Y (the Millenial generation): 1980 – 2000.&lt;/b&gt; This is the culturally liberal generation that witnessed the start and wide-spread adoption of the internet and are the children of baby-boomers. This is the generation that owns, and is most comfortable with using, most computers, mobile phones and MP3 players.&lt;/li&gt;&lt;/ul&gt;So what is the next generation born during the last 10 years and possibly the next 10 to be called? The obvious name would be "&lt;a href="http://www.personneltoday.com/articles/2008/09/14/47303/generation-z-new-kids-on-the-virtual-block.html"&gt;Generation Z&lt;/a&gt;" although this would mean we will have run out of letters already so will have problems naming the post-2020 generation. Rather than following the obvious trend therefore how about naming this upcoming generation who will be entering the higher education system and workforce during the next 10 years "Generation V", the versatilist generation? These are the people, more than any others, who will need to adopt a whole new set of skills if they are to survive and prosper during their lifetimes. These are the ones who will be suffering the after-shocks of the baby-boom, X and Y generations and who will need to fix the wicked problems those generations have left in their wake. This is the generation that will probably have more jobs, in their lifetime, than the other three generations put together and who will, as &lt;a href="http://www.danpink.com/whole-new-mind"&gt;Daniel Pink&lt;/a&gt; has suggested have to survive in a world dominated by the three A's:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Automation - Jobs can be done faster and more efficiently by computers.&lt;/li&gt;&lt;li&gt;Abundance - We have more stuff than we know what to do with and it is increasingly being produced at cheaper and cheaper rates.&lt;/li&gt;&lt;li&gt;Asia (or Africa) - More and more work is outsourced to these low cost economies.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;The skills that this generation will need to adopt will be many and varied and include:&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Objectively viewing experiences and roles, learning from these (failures as well as successes) and using this knowledge to gain new roles.&lt;/li&gt;&lt;li&gt;Looking outside the confines of current roles, regions, employers or business units. The more informed a professional is about a company, its industry segment and the forces that affect it, the greater chance will the person have to predict and survive economic downturns.&lt;/li&gt;&lt;li&gt;Laying out opportunities and assignments methodically. Focusing on the areas and challenges that fall outside the comfort zone; those areas generally will be the areas of greatest growth. &lt;/li&gt;&lt;li&gt;Exploring possibilities outside the world of large, corporate business. Charities, startup companies, government agencies, even your own web-startup offer new and interesting ways to build experiences, learn new skills and maybe even modify behaviours.&lt;/li&gt;&lt;li&gt;Enrolling in advanced education courses to expand perspective, preferably outside your current discipline and area of expertise.&lt;/li&gt;&lt;li&gt;Targeting companies, projects, assignments, education and training courses that will increase professional value and make you more marketable.&lt;/li&gt;&lt;/ul&gt;Sadly Gartner seem to have coined the use of "&lt;a href="http://www.gartner.com/it/page.jsp?id=721008"&gt;Generation V&lt;/a&gt;" already, where V is for virtual. Pity, as they also coined the term "virtualist", missed opportunity I reckon. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2504034997990472144?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2504034997990472144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/next-generation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2504034997990472144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2504034997990472144'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/next-generation.html' title='The Next Generation?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2046563606975555325</id><published>2011-03-09T16:35:00.003Z</published><updated>2011-03-09T18:08:41.681Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='emergence'/><title type='text'>Is Agile Architecture an Oxymoron?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Much has been written by many great minds on agile development processes and how (or indeed whether) architecture fits into such processes. People like:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Scott Ambler (&lt;a href="http://www.agilemodeling.com/essays/initialArchitectureModeling.htm#Why"&gt;Architecture Envisioning: An Agile Best Practice&lt;/a&gt;). &lt;i&gt;"Some people will tell you              that you don’t need to do any              initial architecture modeling at              all.&amp;nbsp; However, my experience is              that doing some initial              architectural modeling in an              agile manner offers several              benefits"&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Mike Cohn (&lt;a href="http://blog.mountaingoatsoftware.com/"&gt;Succeeding with Agile&lt;/a&gt;). &lt;i&gt;"On an architecturally complicated or risky project, the architect will need to work closely with the product owner to educate the product owner about the architectural implications of items on the product backlog"&lt;/i&gt;. &lt;/li&gt;&lt;li&gt;Walker Royce (&lt;a href="http://www.informit.com/articles/article.aspx?p=1554972"&gt;Top 10 Management Principles of Agile Software Delivery&lt;/a&gt;) : &lt;i&gt;"Reduce uncertainties by addressing architecturally significant decisions first"&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Andrew Johnston (&lt;a href="http://www.agilearchitect.org/agile/role.htm"&gt;Role of the Agile Architect&lt;/a&gt;): &lt;i&gt;"In an agile development the architect has the main responsibility to consider change and complexity while the other developers focus on the next delivery".&lt;/i&gt; &lt;/li&gt;&lt;li&gt; Martin Fowler (&lt;a href="http://martinfowler.com/articles/designDead.html#SoIsDesignDead"&gt;Is Design Dead?&lt;/a&gt;):&amp;nbsp; &lt;i&gt;"XP does give us a new way to think about effective design because it has made evolutionary design a plausible strategy again".&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;/ul&gt;I've been contemplating how the discipline of architecture, as well as the role of the architect, fits with the agile approach to developing systems whilst reviewing the &lt;a href="http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle"&gt;systems development lifecycle&lt;/a&gt; (SDLC) for a number of clients of late. In my experience most people have an "either-or" approach when it comes to SDLC's. They &lt;u&gt;either&lt;/u&gt; do waterfall &lt;u&gt;or&lt;/u&gt; do agile and have some criteria which they use to decide between the two approaches on a project by project basis. Unfortunately these selection criteria are often biased toward the prejudices of the person writing the criteria and will push their favourite approach.&lt;br /&gt;&lt;br /&gt;Rather than treating agile and waterfall as mutually exclusive I would prefer to adopt a layered approach to defining SDLC's as shown here.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-4R6m6gxR02M/TXfAFGWDH3I/AAAAAAAAAE4/s_5KPQP0Uq4/s1600/Process+layers+v1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="https://lh3.googleusercontent.com/-4R6m6gxR02M/TXfAFGWDH3I/AAAAAAAAAE4/s_5KPQP0Uq4/s400/Process+layers+v1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The three layers have the following characteristics:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Basic Process.&lt;/b&gt; Assume all projects adopt the simplest approach to delivery as possible (but no simpler). For most software product development projects this will amount to an agile approach like Scrum which uses iterations (sprints) and a simplified set of roles, namely: Product Manager, Scrum Master and Team where Team is made up of people adopting multiple roles (architect, programmer, tester etc). On such projects decide up front which artefacts you want to adopt. These don't need to be heavy-weight documents but could be contained in tools or as sketches. Here the team member performing the architect role needs to manage an "emergent architecture". The role of architect maybe shared or not dedicated to a single individual.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Complex Process.&lt;/b&gt; At the next level of complexity where multiple-products need to be built as part of a single program of work and all these have dependencies some level of governance usually needs to be in place that ensures everything comes together at the right time and is of a consistent level of quality. At a micro-level this can be done using a scrum-of-scrums approach where a twice or thrice weekly scrum that brings together all the Scrum Masters happens. Here the architect role is cross-product as it needs to ensure all products fit together (including maybe third party products and packages). This may still be a shared role but is more likely to be a dedicated individual. This may involve some program level checkpoints that at least ensure all iterations have created a shippable product that is ready to integrate or deploy. The architecture is not just emergent any more but may also needs to be  "envisioned" up-front so everyone understands where their product fits with others.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Complex Integration Process.&lt;/b&gt; The final level of complexity is caused when not only multiple products are being developed but also existing systems need to be incorporated which have complex (or poorly understood) interfaces. Here the role of the architect is not only cross-product but cross-system as she has to deal with the complexity of multiple systems, some of which may need to be changed by people other than the core development team. Here the level of ceremony as well as the number of artefacts to control and manage the decisions around the complexity will increase. The architecture is certainly not emergent any more but also needs to be "envisioned" up-front so everyone understands where their product fits and also what interfaces they need to work with. This is something Scott Ambler suggests happens during "&lt;a href="http://www.agilemodeling.com/essays/agileArchitecture.htm#Lifecycle"&gt;iteration zero&lt;/a&gt;".&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Each of these layers is built on a common architectural as well as process "language" so everyone has a common understanding of terms used in the project. &lt;br /&gt;&lt;br /&gt;I'm much in &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/01/architecture-is-architecture.html"&gt;agreement&lt;/a&gt; with Mike Cohn's comment on his &lt;a href="http://blog.mountaingoatsoftware.com/"&gt;blog&lt;/a&gt; recently where, in &lt;a href="http://blog.mountaingoatsoftware.com/reflections-on-the-10-years-since-the-agile-manifesto"&gt;reflecting&lt;/a&gt; on the tenth anniversary of the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt; he says: &lt;i&gt;"The next change I’d like to see (and predict will occur) over the next  ten years also occurred in the OO world: We stop talking about agile" &lt;/i&gt;and goes on to say &lt;i&gt;"Rather than “agile software development” it is just “software development”—and of course it’s agile"&lt;/i&gt;. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I would like to see an agile or lean based approach as the de-facto standard that only adds additional artefacts or project checkpoints as needed rather than thinking that every time we need to either adopt an agile approach or a waterfall approach.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2046563606975555325?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2046563606975555325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/is-agile-architecture-and-oxymoron.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2046563606975555325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2046563606975555325'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/03/is-agile-architecture-and-oxymoron.html' title='Is Agile Architecture an Oxymoron?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-4R6m6gxR02M/TXfAFGWDH3I/AAAAAAAAAE4/s_5KPQP0Uq4/s72-c/Process+layers+v1.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8949010635883736131</id><published>2011-02-28T23:19:00.002Z</published><updated>2011-02-28T23:26:28.789Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><title type='text'>Forget T-Shaped, We Need V-Shaped Architects</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A recent &lt;a href="http://blog.opengroup.org/2011/02/17/t-shaped-people/"&gt;blog&lt;/a&gt; from the Open Group discusses the benefits of so called "T-shaped people". According to this blog, T-shaped people are what HR are looking for these days. To quote from the blog a T-shaped person is someone who: "&lt;i&gt;combines the broad level of skills and knowledge (the top horizontal part of the T) with specialist skills in a specific functional area (the bottom, vertical part of the T). They are not generalists because they have a specific core area of expertise but are often also referred to as generalizing specialists as well as T-shaped people&lt;/i&gt;". The picture below shows this.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-7I4o9-DWUdc/TWwqCeK93yI/AAAAAAAAAEw/OMsq_GN5gKg/s1600/T-Shaped.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="https://lh3.googleusercontent.com/-7I4o9-DWUdc/TWwqCeK93yI/AAAAAAAAAEw/OMsq_GN5gKg/s400/T-Shaped.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Traditionally for software architects the specialism that T-shaped people usually have has come from their entry-level skills or the ones that got them into the profession in the first place. This is usually a skill in a particular programming language,&amp;nbsp; development approach (agile, scrum or whatever) or other areas related to software development such as test or configuration management. As you progress through your career and begin to build on your skills (learning more programming languages, understanding more about design etc) you may add to the verticals in your T's with these other specialisms. This, at least, has traditionally been the approach. The problem is that in some organisations in order to "progress" (i.e. earn more money) you almost need to know more about less. You need to generalise more and more quickly. No one is going to employ you to be a Java programmer if your salary is ten times that of what a Java programmer in India or China earns. This is not meant to be a criticism against software professionals in India or China by the way. It's just the way of things. Soon people in India and China will be out-sourcing to lower cost regions and so the cycle will go on. It does however raise an interesting problem of how those core specialisms will be developed in people just entering the profession. I spent a good 15 years as a programmer before I moved into architecture and would like to think that what I learnt there gave me a good set of core, fundamental skills that I can still apply as an architect. I firmly believe that the fundamentals I learnt from programming (encapsulation, design by contract, the importance of loose coupling etc) never go out of fashion.&lt;br /&gt;&lt;br /&gt;As I have &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/03/v-is-for-versatilist.html"&gt;blogged before&lt;/a&gt;, I believe that whilst good "generalizing specialists" can also make good architects there is another dimension to what makes a true architect who has the skills necessary to solve the really hard business as well as socio-political (e.g. global warming, global terrorism, resource shortages etc) problems that the world faces today. Gartner coined the term "versatilist" &lt;a href="http://www.gartner.com/DisplayDocument?doc_cd=130462"&gt;back in 2005&lt;/a&gt; and whilst this does not seem to have really taken off (there is a versatilist &lt;a href="http://www.versatilist.org/"&gt;web site&lt;/a&gt; but it seems to be little used) I like the fact that the 'V' of versatilist makes a nice paradigm for what 21st century IT architects need to be. V-shaped people are not just ones who have deep skills in specific functional areas but also have skills in other disciplines. Further a good V-shaped person is one who has skills not just in technical disciplines but also business and artistic disciplines. So why does this matter?&lt;br /&gt;&lt;br /&gt;The concept of bringing interdisciplinary teams together to break down boundaries in solving difficult or wicked problems is not a &lt;a href="http://en.wikipedia.org/wiki/Interdisciplinarity"&gt;new one&lt;/a&gt;. It is recognised that pooling different academic schools of thought can often throw up solutions to problems that any of the individual disciplines could not. It follows therefore that if an individual can be well rounded and at least have some level of knowledge in an area completely outside his or her core discipliines then they to may be able to shed new light on difficult problems. This is what being a versatilist is about. As shown below its not just about specialising in different functional areas &lt;u&gt;within&lt;/u&gt; a discipline but also &lt;u&gt;across&lt;/u&gt; disciplnes. If these disciplines can be a mix of the arts as well as the sciences that exercise both right and left brains then so much the better.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-hkcgzqPFsfo/TWwqEk11bFI/AAAAAAAAAE0/FqDHP5HP89M/s1600/V-Shaped.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="https://lh4.googleusercontent.com/-hkcgzqPFsfo/TWwqEk11bFI/AAAAAAAAAE0/FqDHP5HP89M/s400/V-Shaped.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So how should versatilists develop their skills? Here are some suggestions I give to IT students when discussing how they might survive as professionals in the 21st century world of work: &lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt; Objectively view experiences and roles - When you have finished an assignment note down what you learnt from it, what you could have done better and maybe ask others what they thought of your performance.&lt;/li&gt;&lt;li&gt;Look further than current roles. Today you are working on a particular project however always have in mind what you want to do next and an idea of what you want to do after that. Don't become stereotyped, prepare to move on even if you are in an area you know well.&lt;/li&gt;&lt;li&gt;Plan opportunities and assignments - This follows on from the last one. make sure each assignment really builds on and develops your skills. Step out of your comfort zone in each new assignment.&lt;/li&gt;&lt;li&gt;Explore other possibilities. Never assume there is only one option. Think differently and look at alternatives. Like &lt;a href="http://en.wikipedia.org/wiki/Paul_Arden"&gt;Paul Arden&lt;/a&gt; said, "&lt;i&gt;Whatever You Think, Think The Opposite&lt;/i&gt;".&lt;/li&gt;&lt;li&gt;Pursue lifelong learning - What it says. never stop exploring!&lt;/li&gt;&lt;li&gt;Identify companies that will increase professional value. Companies are out to get what they can from you. make sure you do the same with them.&lt;/li&gt;&lt;/ul&gt;So as we enter the second decade of the 21st century can we not look for more T-shaped people but start the search for V-shaped people instead? These are the ones who will really make a difference and be able to address the really wicked problems that are out there. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8949010635883736131?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8949010635883736131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/t-shaped-versus-v-shaped-architects.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8949010635883736131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8949010635883736131'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/t-shaped-versus-v-shaped-architects.html' title='Forget T-Shaped, We Need V-Shaped Architects'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-7I4o9-DWUdc/TWwqCeK93yI/AAAAAAAAAEw/OMsq_GN5gKg/s72-c/T-Shaped.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7440391066994539304</id><published>2011-02-17T23:30:00.003Z</published><updated>2011-02-21T10:34:18.330Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='smarterplanet'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>Watson, Turing and Clarke</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So what do these three have in common?&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Thomas J. Watson Sr, CEO and founder of IBM (100 years old this year). Currently has a &lt;a href="http://www-943.ibm.com/innovation/us/watson/"&gt;computer&lt;/a&gt; named after him.&lt;/li&gt;&lt;li&gt;Alan Turing, mathematician and computer scientist (100 years old next year). Has a famous &lt;a href="http://en.wikipedia.org/wiki/Clarke%27s_three_laws"&gt;test&lt;/a&gt; named after him.&lt;/li&gt;&lt;li&gt;Aurthur C. Clarke, scientist and writer (100 years old in 1917). Has a set of &lt;a href="http://en.wikipedia.org/wiki/Clarke%27s_three_laws"&gt;laws&lt;/a&gt; named after him (and is also the creator of the fictional HAL computer in &lt;a href="http://en.wikipedia.org/wiki/2001:_A_Space_Odyssey"&gt;&lt;i&gt;2001: A Space Odyssey&lt;/i&gt;&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;Unless you have moved into a hut, deep in the Amazon rain forest you cannot have missed the publicity over IBM's 'Watson' computer having competed in, &lt;a href="http://www.youtube.com/watch?v=FC3IryWr4c8"&gt;and won&lt;/a&gt;, the American TV quiz show &lt;a href="http://jeopardy.com/"&gt;Jeopardy&lt;/a&gt;. I have to confess that until last week I'd not heard of Jeopardy, possibly because a) I'm not a fan of quizzes, b) I'm not American and c) I don't watch that much television. To those as ignorant as me on these matters the unique thing about Jeopardy is that contestants are presented  with clues in the form of answers, and must phrase their responses in the form of a  question.&lt;br /&gt;&lt;br /&gt;This, it turns out, is what makes this particular quiz such a hard nut for a computer to crack. The clues in the 'question' rely on subtle meanings, puns,  and riddles; something humans excel at and computers do not. Unlike IBM's previous game challenger &lt;a href="http://en.wikipedia.org/wiki/Deep_Blue_%28chess_computer%29"&gt;Deep Blue&lt;/a&gt;, which defeated chess world champion Gary Kasparov, it's not sufficient to rely on raw computing 'brute force' but this time the computer has to interpret meaning and the nuances of the human language. So has Watson achieved, met or passed the Turing test (which is basically a measure of whether computer can demonstrate intelligence)?&lt;br /&gt;&lt;br /&gt;The answer is almost certainly 'no'. Turing's test is a measure of a machines ability to exhibit human intelligence. The test, as originally proposed by Turing was that a questioner should ask a series of questions of both a human being and a machine and see whether he can tell which is which through the answers they give. The idea being that if the two were indistinguishable then the machine and the human must both appear to be as intelligent as each other. &lt;br /&gt;&lt;br /&gt;As far as I know Turing never stipulated any constraint on the range or type of questions that could be answered which leads us to the nub of the problem. Watson is supremely good at answering Jeopardy type questions just as Deep Blue was good at playing chess. However neither could do what the other does (at least as well). They have been programmed for that given task. Given that Watson is actually a cluster of &lt;a href="http://www-03.ibm.com/systems/uk/power/?csr=emuk_itsgpowe-20100524&amp;amp;cm=k&amp;amp;cr=google&amp;amp;ct=ITSGK001&amp;amp;S_TACT=ITSGK001&amp;amp;ck=power7&amp;amp;cmp=BLANK&amp;amp;mkwid=ss2uNzmhl_6076260147_4328nk2971"&gt;POWER7&lt;/a&gt; servers any suitably general purpose computer that could win at Jeopardy, play chess as well as exhibit the full range of human emotions and frailties that would be needed to fool a questioner would presumably occupy the area of several football pitches and consume the power of a small city.&lt;br /&gt;&lt;br /&gt;That however misses the point completely. The ability of a computer to almost flawlessly answer a range of questions, phrased in a particular way on a range of different subject areas, blindingly fast has enormous potential in fields of &lt;a href="http://washingtontechnology.com/articles/2011/02/17/ibm-watson-next-steps.aspx"&gt;medicine&lt;/a&gt;, law and other disciplines where questions based on a huge foundation of knowledge built up over decades need to be answered quickly (for example in accident and emergency where quick diagnoses may literally be a matter of life and death). This indeed is one of IBM's &lt;a href="http://www.ibm.com/smarterplanet/us/en/healthcare_solutions/ideas/index.html?ca=agus_brsphlthlp-20090227&amp;amp;me=vanity&amp;amp;met=healthvan&amp;amp;re=healthvan&amp;amp;s_tact=106aw01w&amp;amp;cm_mmc=agus_brsphlthlp-20090227-106aw01w-_-p-_-healthvan-_-healthvan"&gt;Smarter Planet&lt;/a&gt; goals.&lt;br /&gt;&lt;br /&gt;Which brings us to Clarke's third law which states that &lt;i&gt;"any sufficiently advanced technology is indistinguishable from magic"&lt;/i&gt;. This is surely something that &lt;u&gt;is&lt;/u&gt; attributable to Watson. The other creation of Clarke of course is HAL the computer aboard the spaceship Discovery One on a trip to Saturn that becomes overwhelmed by guilt at having to keep secret the true nature of the spaceships mission and starts killing members of the crew. The point of Clarke's story (or one of them) being that the downside to a computer that is indistinguishable from a human being is that the computer may also end up mimicking human frailties and weaknesses.&amp;nbsp; Maybe it's a good job Watson hasn't passed Turing's test then? &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7440391066994539304?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7440391066994539304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/watson-turing-and-clarke.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7440391066994539304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7440391066994539304'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/watson-turing-and-clarke.html' title='Watson, Turing and Clarke'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5627947296003448409</id><published>2011-02-14T16:01:00.000Z</published><updated>2011-02-14T16:01:46.270Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>Think Like An Architect</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A previous entry suggested &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/11/hire-architect.html"&gt;hiring an architect&lt;/a&gt; was a good idea because architects &lt;i&gt;take existing components and assemble them in interesting  and important ways.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So how should you "think architecturally" in order to create things that are not only interesting but also solve practical, real-world problems? Architectural thinking  is about balancing three opposing “forces”: what people want  (desirability), what technology can provide (feasibility) and what can  actually be built given the constraints of cost, resource and time  (viability).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tQcwUZpHwTo/TVWfXZfY_oI/AAAAAAAAAEo/C4ooqeelwY4/s1600/Architecture+Thinking.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-tQcwUZpHwTo/TVWfXZfY_oI/AAAAAAAAAEo/C4ooqeelwY4/s400/Architecture+Thinking.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;It is basically the role of the architect to help &lt;i&gt;resolve&lt;/i&gt; these forces by assembling components "in interesting ways". There is however a fourth aspect which is often overlooked but which is what separates great architecture from merely good architecture. That is the &lt;i&gt;aesthetics &lt;/i&gt;of the architecture.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p0HBvl-1bR0/TVWq8R0i2II/AAAAAAAAAEs/0DulqmZ2fiQ/s1600/Architecture+Thinking+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://3.bp.blogspot.com/-p0HBvl-1bR0/TVWq8R0i2II/AAAAAAAAAEs/0DulqmZ2fiQ/s400/Architecture+Thinking+2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Aesthetics is what separates a MacBook from a Dell, the &lt;a href="http://en.wikipedia.org/wiki/Millau_Viaduct"&gt;Millau Viaduct&lt;/a&gt; in France from the &lt;a href="http://blog.juergenspecht.com/2010/the-yamba-dam-another-megalomaniacal-project-58-years-in-the-making/index.html"&gt;Yamba Dam Bridge&lt;/a&gt; in Japan and the &lt;a href="http://www.fosterandpartners.com/projects/1004/default.aspx"&gt;St Mary Axe&lt;/a&gt; from the &lt;a href="http://www.esquire.com/the-side/DESIGN/hotel-of-doom-012808"&gt;Ryugyong Hotel&lt;/a&gt; in North Korea. Aesthetics is about good design which is what you get when you add 'significance' (aesthetic appeal) to 'utility' (something that does the job). IBM, the company I work for, is 100 years old this year (check out the centennial video &lt;a href="http://www.youtube.com/watch?v=39jtNUGgmd4"&gt;here&lt;/a&gt;) and Thomas Watson, IBM's founder, famously said that "good design is good business". Watson knew what Steve Jobs, Tim Brown and many other creative designers know; aesthetics is not only good for the people that use or acquire these computers/buildings/systems it's also good for the businesses that create them. In a world of over-abundance good design/architecture both differentiates companies as well as giving them a competitive advantage. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5627947296003448409?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5627947296003448409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/think-like-architect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5627947296003448409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5627947296003448409'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/think-like-architect.html' title='Think Like An Architect'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-tQcwUZpHwTo/TVWfXZfY_oI/AAAAAAAAAEo/C4ooqeelwY4/s72-c/Architecture+Thinking.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2131546437766992471</id><published>2011-02-03T23:32:00.000Z</published><updated>2011-02-03T23:32:06.193Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><title type='text'>How Much Does Your Software Weigh, Mr Architect?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Three apparently unrelated events actually have a serendipitous connection which have led to the title of this weeks blog. &lt;br /&gt;&lt;br /&gt;First off, Norman Foster (he of the "&lt;a href="http://en.wikipedia.org/wiki/30_St_Mary_Axe"&gt;Gherkin&lt;/a&gt;" and "&lt;a href="http://en.wikipedia.org/wiki/Millennium_Bridge_%28London%29"&gt;Wobbly Bridge&lt;/a&gt;" fame) has had a film released about his life and work called &lt;a href="http://www.imdb.com/title/tt1620785/"&gt;&lt;i&gt;How Much Does You Building Weigh, Mr Foster&lt;/i&gt;&lt;/a&gt;. As a result there have been a slew of articles about both Foster and the film including &lt;a href="http://www.ft.com/cms/s/0/7be3dd92-2b0f-11e0-a65f-00144feab49a.html#axzz1CpKSsdwp"&gt;this one&lt;/a&gt; in the Financial Times. One of the things that comes across from both the interviews and the articles about Foster is the passion he has for his work. After all, if you are still working at 75 then you must like you job a little bit! One of the quotes that stands out for me is this one from the FT article: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;“&lt;/i&gt;&lt;i&gt;The  architect has no power, he is simply an advocate  for the client. To be really effective as an architect or as a  designer, you have to be a good listener.”&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;How true. Too often we sit down with clients and a jump in with solutions before we have really got to the bottom of what the problem is. It's not just about listening to what the client says but also what she doesn't say. Sometimes people only say what they think you want them to hear not what they really feel, So, it's not just about listening but developing empathy with the person you are architecting for. Related to this is not closing down discussions too early before making sure everything has been said which brings me to the second event.&lt;br /&gt;&lt;br /&gt;I'm currently reading &lt;a href="http://www.duarte.com/books/resonate/www/"&gt;Resonate&lt;/a&gt; by Nancy Duarte which is about how to put together presentations that really connect with your audience using techniques adopted by professional story tellers (like film makers for example). In Duarte's book I came across the diagram below which Tim Brown also uses in his book &lt;a href="http://www.ideo.com/by-ideo/change-by-design?cbd"&gt;Change by Design&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5XxDXgH4TQI/TUmvlqtwK_I/AAAAAAAAAEg/aWO3dDyNzi4/s1600/Convergent+Diveregent.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://1.bp.blogspot.com/_5XxDXgH4TQI/TUmvlqtwK_I/AAAAAAAAAEg/aWO3dDyNzi4/s320/Convergent+Diveregent.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;For me the architects sits above the dotted line in this picture ensuring as many choices as possible get made and then making decisions (or compromises) that are the right balance of the sometimes opposing "forces" of the requirements that come from multiple choices. &lt;br /&gt;&lt;br /&gt;One of the big compromises that often needs to be made is how much can I deliver in the time I have available and, if its not everything, what is dropped? Unless the time can change then its usually the odd bit of functionality (good if these functions can be deferred to the next release) or quality (not good under any circumstances). This leads me to the third serendipitous event of the week: discovering "technical debt". &lt;br /&gt;&lt;br /&gt;Slightly embarrassingly I had not heard of the concept of technical technical debt before and it's been around for a long time. It was originally proposed by Ward Cunningham in 1992 who said the following:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite… The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation".&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Technical debt is a topic that has been taken up by the Software Engineering Institute (SEI) who are organising a &lt;a href="http://www.sei.cmu.edu/community/td2011/"&gt;workshop&lt;/a&gt; on the topic this year. One way of understanding technical debt is to see it as the gap between the current state of the system and what was originally envisaged by the architecture. Here, debt can be "measured" by the number of known defects and features that have not yet been implemented. Another aspect to debt however is the amount of entropy that has set in because the system has decayed over time (changes have been made that were not in line with the specified architecture). This is a more difficult thing to measure but has a definite cost in terms of ease of maintenance and general understandibility of the system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Which leads to the title of this weeks blog. Clearly software (being 'soft') carries no weight (the machines it runs on do not count) but nonetheless can have a huge, and potentially damaging weight in terms of the debt it may be carrying in unstructured, incorrect or hard to maintain code. Understanding the weight of this debt, and how to deal with it, should be part of the role of the architect. The weight of your software may not be measurable in terms of kilograms but it surely has a weight in terms of the "debt owed". &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2131546437766992471?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2131546437766992471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/how-much-does-your-software-weigh-mr.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2131546437766992471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2131546437766992471'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/02/how-much-does-your-software-weigh-mr.html' title='How Much Does Your Software Weigh, Mr Architect?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5XxDXgH4TQI/TUmvlqtwK_I/AAAAAAAAAEg/aWO3dDyNzi4/s72-c/Convergent+Diveregent.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2906773761831269325</id><published>2011-01-31T19:47:00.000Z</published><updated>2011-01-31T19:47:26.680Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><title type='text'>Learning Architecture (Or Anything really)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I spent most of 2010 travelling the world teaching &lt;i&gt;Architectural Thinking&lt;/i&gt; for a client. (&lt;a href="http://leonid%2Ebelorybkin%40db%2Ecom,%20,%20sayeed%2Echowdhury%40db%2Ecom,%20subhav-b%2Epatel@db.com/"&gt;Here&lt;/a&gt; is a reasonable description of &lt;i&gt;some&lt;/i&gt; of what this covers. It's the best publicly available description I can find but please contact me if you would like more information on this class).&lt;br /&gt;&lt;br /&gt;I always reckon that you learn just as much as a teacher as you do as a student (or should do) so here's some stuff I learnt myself. This is not rocket science and many people may consider this obvious but for those for whom this is not the case I hope you find it useful.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;People learn best when they have some fun. This doesn't mean you have to be a great comedian to deliver an effective training class however it does help if you can arrange some fun activities as part of the learning. Quizzes (that also inject an element of competition) work well as a way of re-enforcing peoples learning.&lt;/li&gt;&lt;li&gt;Ensure that at least half the time (and preferably two thirds of it) are spent on getting the attendees to do something. This does not have to be a full-blown case study (though you certainly need one of those) but should at least include plentiful opportunities for discussions and Q&amp;amp;A sessions (where the questions are not just asked by the students).&lt;/li&gt;&lt;li&gt;Less really is more. When delivering a lecture, or a complete class, especially one you are very familiar with. It is tempting to cram more and more information in as you deliver more classes. People ask a question, you answer it and think "hey, why don't I create a slide for that for next time". Don't. Slide-creep is one of the great evils of our time. Rather thank thinking "what can I add" think "what can I remove". Hand out detail as additional reading. Keep the main-deal brief.&lt;/li&gt;&lt;li&gt;Try, whenever you can, to tell stories rather than deliver dry facts. For me a teacher is, above all else, an experienced practitioner. Introducing your own "war stories" at appropriate points is what makes a great and teacher.&lt;/li&gt;&lt;li&gt;Great public speakers (&lt;a href="http://www.youtube.com/watch?v=qMd4KOI6LF0"&gt;Richard Feynman&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=RsQBSadnNAk"&gt;Steve Jobs&lt;/a&gt;, &lt;a href="http://www.ted.com/talks/benjamin_zander_on_music_and_passion.html"&gt;Banjamin Zander&lt;/a&gt;) inject passion into what they have to say. If you are not passionate about what you are saying then maybe you should not be standing up in front of others saying it! Think about what first made you interested in the topic you are delivering and weave that into the storyline. Injecting some of your personal self into a subject helps engage the audience and make them believe in what you have to say. &amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Finally take a look at this great advice from &lt;a href="http://sethgodin.typepad.com/"&gt;Seth Godin&lt;/a&gt; on &lt;a href="http://sethgodin.typepad.com/seths_blog/2010/12/how-to-organize-a-retreat.html"&gt;organising a retreat&lt;/a&gt;. It may not be a full blown retreat you are organising but it contains great advice for just about any learning event where you want to get the best out of people.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2906773761831269325?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2906773761831269325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/learning-architecture-or-anything.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2906773761831269325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2906773761831269325'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/learning-architecture-or-anything.html' title='Learning Architecture (Or Anything really)'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8777941121083700555</id><published>2011-01-21T01:05:00.001Z</published><updated>2011-01-21T01:05:00.703Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>2011 Architecture Survival Guide</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;An &lt;a href="http://www.guardian.co.uk/technology/2011/jan/16/facebook-zuckerberg-winklevoss-legal-battle?INTCMP=SRCH"&gt;article&lt;/a&gt; in last Sundays &lt;i&gt;Observer &lt;/i&gt;newspaper about Facebook has set me thinking about how we architects can not only survive in today's rapidly changing technological environment but also actually make a positive difference to the world (even if it's not on the scale of Facebook, assuming you think that has made a positive impact on the world).&lt;br /&gt;&lt;br /&gt;The article by &lt;a href="http://www.guardian.co.uk/profile/johnnaughton"&gt;John Naughton&lt;/a&gt; examines the claim by the Winklevoss twins that they were ripped off when they reached a settlement with Mark Zuckerburg in 2008 after they claimed it was they who had invented Facebook. Their claim is that the number of Facebook shares they acquired was based on a false valuation. For an entertaining view of this see, or rent, &lt;i&gt;&lt;a href="http://www.imdb.com/title/tt1285016/"&gt;The Social Network&lt;/a&gt;&lt;/i&gt; which goes into the history of how Facebook came into being. The article goes on to pose the question: would we now be looking at a social networking service with 600&amp;nbsp;million users if the Winklevoss twins had been the ones to develop Facebook? &lt;br /&gt;&lt;br /&gt;Naughton thinks not and goes on to explain that although the Winklevoss twins were not stupid they probably "laboured under two crippling disadvantages":&lt;br /&gt;&lt;ol&gt;&lt;li&gt; They were, and probably still are, conventional people who may have been good at "creating  businesses in established sectors but who find it hard to operate in  arenas where there are no rules".&lt;/li&gt;&lt;li&gt;The twins weren't techies and so had no real  insight into the technology they were creating and its possibilities. They were therefore  less likely to "spot the importance of allowing Facebook to become a  software platform on which other people could run applications". &lt;/li&gt;&lt;/ol&gt;Here's my takeaway from this if you want to come up with new ideas, at whatever scale, no one else has thought of.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Don't think conventionally.&lt;/b&gt;Conventional thinking will end up creating conventional business models. Conventional means doing what you've been told or what your peers do. Someone once said "&lt;i&gt;fear of our peers makes us conservative in our thinking&lt;/i&gt;". Zuckerburg was not only fearless of his peers (the Winklevoss twins) but had no qualms about using (some would say stealing) their ideas and using them for his own ends. I guess it poses an interesting moral dilemma about when it is right to steal someone elses idea because you think you can do more with it. Facebook paid for this by handing over cash and shares to the Winklevoss twins but have benefited from this 'investment' many times over.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Don't think like everyone else.&lt;/b&gt; &lt;a href="http://en.wikipedia.org/wiki/Walter_Lippmann"&gt;Walter Lippmann&lt;/a&gt; (a writer and political commentator) once said "&lt;i&gt;where we all think alike, no one thinks very much." &lt;/i&gt;Some people claim that Zuckeburg (if you believe the movie at any rate) exhibits characteristics that place him on the &lt;a href="http://www.autisable.com/734695343/the-social-network-mark-zuckerberg-has-aspergers/"&gt;autistic spectrum&lt;/a&gt;. (actually as having &lt;a href="http://en.wikipedia.org/wiki/Asperger%27s_syndrome"&gt;Asperger syndrome&lt;/a&gt;). One of the characteristics of someone with Aspergers is that they display behavior, interests, and activities that are restricted and repetitive and are sometimes abnormally intense or focused. Zuckeburg not only thought differently to everyone else but took an idea and focused on it intensely (many, many hours of programming) until Facebook was created.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Think visually.&lt;/b&gt; Interesting related to number 2. People on the autistic spectrum are often more &lt;a href="http://www.grandin.com/inc/visual.thinking.html"&gt;visual thinkers&lt;/a&gt; than those who are not. We often joke about "back of an envelope" or "back of a fag packet" designs but setting aside the medium the ability to visualise your thoughts quickly and succinctly is a key characteristic it's worth fostering. One of my more memorable ad-hoc design sessions took place over a meal in a restaurant where we used the table cloth as a our drawing canvas. Luckily it was a paper table cloth!&lt;/li&gt;&lt;li&gt;&lt;b&gt;Don't get out of touch with technology.&lt;/b&gt; One of the dangers of becoming an architect in order to make yourself "more valuable" (see Dilbert below) is you not only lose touch with technology but you lose the ability to exploit it in ways others may not see. Making Facebook an open platform has been one of the key factors in its runaway success. I've discussed before the importance of being a &lt;a href="http://softwarearchitecturezen.blogspot.com/search/label/versatilist"&gt;versatilist&lt;/a&gt; (broad in several disciplines and deep in a few specialisms) and this ones all about picking your technology (we can't all be good at everything) and specialising yourself in it!&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;a href="http://dilbert.com/strips/comic/2008-03-04/" title="Dilbert.com"&gt;&lt;img alt="Dilbert.com" border="0" src="http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/800/1890/1890.strip.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8777941121083700555?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8777941121083700555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/2011-architecture-survival-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8777941121083700555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8777941121083700555'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/2011-architecture-survival-guide.html' title='2011 Architecture Survival Guide'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-6864493324084343720</id><published>2011-01-13T17:11:00.000Z</published><updated>2011-01-13T17:11:56.935Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='omg'/><category scheme='http://www.blogger.com/atom/ns#' term='spem'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><title type='text'>Software Developments Best Kept Secret</title><content type='html'>A few people have asked what I meant in my previous &lt;a href="http://softwarearchitecturezen.blogspot.com/2011/01/architecture-is-architecture.html"&gt;entry&lt;/a&gt; when a said we should be "killing off the endless debates of agile versus waterfall." Don't get me wrong, I'm a big fan of doing development in as efficient a way as possible, after all why would you want to be doing things in a 'non-agile' way! However I think that the agile versus waterfall debate really does miss the point. If you have ever worked on anything but the most trivial of software development projects you will quickly realise that there is no such thing as a 'one size fits all' software delivery lifecycle (SDLC) process. Each project is different and each brings its own challenges in terms of the best way to specify, develop, deliver and run it. Which brings me to the topic of this entry, the snappily titled &lt;a href="http://www.omg.org/spec/SPEM/2.0/"&gt;Software and Systems Process Engineering Metamodel&lt;/a&gt; or 'SPEM' (but not SSPEM).&amp;nbsp; &lt;br /&gt;&lt;br /&gt;SPEM is a standard owned by the &lt;a href="http://www.omg.org/"&gt;Object Management Group&lt;/a&gt; (OMG), the body that also owns the Unified Modeling Language (UML), the Systems Modeling Language (SysML) and a number of other open standards. Essentially SPEM gives you the language (the metamodel) for defining software and system processes in a consistent and repeatable way. SPEM also allows vendors to build tools that automate the way processes are defined and delivered. Just like vendors have built system and software modeling tools based around UML so too can vendors build delivery process modeling tools built around SPEM.&lt;br /&gt;&lt;br /&gt;So what exactly does SPEM define and why should you be interested in it? For me there are two reasons why you should look at adopting SPEM on your next project.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5XxDXgH4TQI/TS7m6k_oVhI/AAAAAAAAAEY/1W0LSikrF2E/s1600/Method+Framework.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;SPEM separates out &lt;u&gt;what&lt;/u&gt; you create (i.e. the content) from &lt;u&gt;how&lt;/u&gt; you create it (i.e. the process) whilst at the same time providing instructions for how to do these two things (i.e. guidance).&lt;/li&gt;&lt;li&gt;SPEM (or at least tools that implement SPEM) allows you to create a customised process by varying what you create and when you create it.&lt;/li&gt;&lt;/ol&gt;Here's a diagram to explain the first of these.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="227" src="http://1.bp.blogspot.com/_5XxDXgH4TQI/TS7m6k_oVhI/AAAAAAAAAEY/1W0LSikrF2E/s400/Method+Framework.jpg" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;SPEM Method Framework&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The SPEM &lt;i&gt;Method Framework&lt;/i&gt; represents a consistent and repeatable approach to accomplishing a set of objectives based on a collection of well-defined techniques and best practices. The framework consists of three parts:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Content:&lt;/b&gt; represents the primary reusable building blocks of the method that exist outside of any predefined lifecycle. These are the work products that are created as a result of roles performing tasks.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Process:&lt;/b&gt; assembles method content into a sequence or workflow (represented by a work breakdown structure) used to organise the project and develop a solution. Process includes the phases that make up an end-to-end SDLC, the activities that phases are broken down into as well as reusable chunks of process referred to as 'capability patterns'.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Guidance:&lt;/b&gt; is the ‘glue’ which supports content development and process execution. It describes techniques and best-practice for developing content or 'executing' a process.&lt;/li&gt;&lt;/ul&gt;As well as giving us the 'language' for building our own processes SPEM also defines the rules for building those processes. For example phases consist of other phases or activities, activities group tasks, tasks take work products as input and output other work products and so on.&lt;br /&gt;&lt;br /&gt;This is all well and good you might say but I don't want to have to laboriously build a whole process every time I want to run a project. This is where the second advantage of using SPEM comes in. A number of vendors (&lt;a href="http://www-01.ibm.com/software/awdtools/rmc/index.html"&gt;IBM&lt;/a&gt; and &lt;a href="http://www.sparxsystems.com/"&gt;Sparx&lt;/a&gt; to name two) have built tools that not only automate the process for building a process but which also contain one or more 'ready-rolled' processes to get you started. You can either use those 'out of the box', extend them by adding your own content or start from scratch (not recommended for novices). What's more the &lt;a href="http://www.eclipse.org/org/"&gt;Eclipse foundation&lt;/a&gt; have developed an open software tool, called the &lt;a href="http://www.eclipse.org/epf/"&gt;Eclipse Process Framework&lt;/a&gt; (EPF) that not only gives you a tool for building processes but also comes with a number of existing processes, including OpenUP (open version of the Rational Unified Process) as well as &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;Scrum&lt;/a&gt; and &lt;a href="http://www.dsdm.org/"&gt;DSDM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you download and install EPF together with the appropriate method libraries you can use these as the basis for creating your own processes. Here's what EPF looks like when you open the OpenUP SDLC.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_5XxDXgH4TQI/TS8tRhIWSQI/AAAAAAAAAEc/GEeuPmS-4LQ/s1600/EPF+View1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="296" src="http://3.bp.blogspot.com/_5XxDXgH4TQI/TS8tRhIWSQI/AAAAAAAAAEc/GEeuPmS-4LQ/s400/EPF+View1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;EPF and OpenUP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The above view shows the browsing perspective of EPF, however there is also an authoring perspective which allows you to not only reconfigure a process to suit your own project but also add and remove content (i.e. roles, tasks and work products). Once you have made your changes you can republish the new process (as HTML) and anyone with a browser can then view the process together with all of it work products and, most crucially, associated guidance (i.e. examples, templates, guidelines etc) that allow you to use the process in an effective way.&lt;br /&gt;&lt;br /&gt;This is, I believe, the true power of using a tool like EPF (or IBM's &lt;a href="http://www-01.ibm.com/software/awdtools/rmc/index.html"&gt;Rational Method Composer&lt;/a&gt; which comes preloaded with the Rational Unified Process). You can take an existing SDLC (one you have created or one you have obtained from elsewhere) and &lt;i&gt;customise&lt;/i&gt; it to meet the needs of your project. The amount of agility and number of iterations etc that you want to run will depend on the intricacies of your project and not what some method guru tells you that you should be using!&amp;nbsp; &lt;br /&gt;&lt;br /&gt;By the way for an excellent introduction and overview of EPF see &lt;a href="http://www.eclipse.org/epf/general/EPFComposerOverviewPart1.pdf"&gt;here&lt;/a&gt; and &lt;a href="http://www.eclipse.org/epf/general/EPFComposerOverviewPart2.pdf"&gt;here&lt;/a&gt;. The Eclipse web site also contains a wealth of information on EPF. You can also download the complete SPEM 2 specification from the OMG web site &lt;a href="http://www.omg.org/spec/SPEM/2.0/PDF"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-6864493324084343720?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/6864493324084343720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/software-developments-best-kept-secret.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6864493324084343720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6864493324084343720'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/software-developments-best-kept-secret.html' title='Software Developments Best Kept Secret'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5XxDXgH4TQI/TS7m6k_oVhI/AAAAAAAAAEY/1W0LSikrF2E/s72-c/Method+Framework.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-6712988161653809060</id><published>2011-01-06T20:44:00.002Z</published><updated>2011-01-06T20:55:34.455Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Architecture is Architecture?</title><content type='html'>At OT 99 (that's Object Technology 1999, now known as SPA for &lt;a href="http://www.spaconference.org/spa2011/index.php"&gt;Software Process Advancement&lt;/a&gt;) I attended a session by &lt;a href="http://www.threeriversinstitute.org/Kent%20Beck.htm"&gt;Kent Beck&lt;/a&gt; called &lt;a href="http://www.spaconference.org/ot99/programme/Beck_Kent.htm"&gt;&lt;i&gt;Software is Software - Beyond the Horseless Carriage&lt;/i&gt;&lt;/a&gt;. The basic premise of Kent's talk was that it was about time the software business "grew up" and its practitioners recognise it for what it is, a discipline in its own right which no longer needs to continuously borrow terms and techniques from other industries and disciplines. The title of the session refers to the time when the automobile was first invented and people called them horseless carriages because &lt;i&gt;horse-drawn&lt;/i&gt; carriages were the only frame of reference they had. Unfortunately, 12 years later, I don't think we have quite got around to jettisoning our horseless carriages, especially in the upfront work that is done in trying to map out the major system components and their relationships, sometime referred to as architecture (a word which itself is borrowed from another profession of course). On the face of it this may not seem to be a problem; after all those other industries (civil engineering, auto-engineering even &lt;a href="http://c2.com/cgi/wiki?SoftwareAsFilmMaking"&gt;film making&lt;/a&gt;) have been around a lot longer and so must be able to offer good advice and guidance to the business of software mustn't they? Actually, I think there &lt;i&gt;is&lt;/i&gt; a problem and Kent Beck was, and still is, right.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The business of 'making' software is fundamentally different from any other human endeavor. Software is infinitely malleable and &lt;i&gt;potentially&lt;/i&gt; changeable right up to (and sometimes after) it has gone into production. No other engineering discipline has that flexibility. At some point drawings and blueprints have to be signed off, factories and production lines have to be built, building sites prepared and production begun. After this any change becomes prohibitively expensive. With software the perception (and sometimes the reality) is that code changes can be made right up to the moment the software ships.&lt;/li&gt;&lt;li&gt;Most other engineering disciplines have fairly well defined job roles, often with their own professional organisations, training programmes and qualifications and well understood and mature tools. These roles are usually carried out by separate individuals (in the construction industry it's unlikely the architect will roll her sleeves up and start laying bricks).&lt;/li&gt;&lt;li&gt;The engineering and manufacturing approach, or process, is by and large pretty well understood and has been refined over a long period of time (sometimes hundreds of years). The approaches can be taught and are an integral part of the role of being an architect or aero-engineer. Further, these approaches are built around a common language which is also taught and well understood by its practitioners.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;A rigorous approach to the field of software architecture needs to recognise the differences whilst at the same time understanding its constraints and build a solid, engineering based approach to its development. This should include killing off the endless debates of agile versus waterfall or structured versus object-oriented and any of the other interminable 'religious wars' that we seem to love embarking on and focus in on what matters: applying IT in a reasoned and structured way to solving real-world (and sometimes complex) business problems.&lt;br /&gt;&lt;br /&gt;As we enter the new year lets celebrate the field of software development for what it is and help forge the right amount of rigor and discipline in creating a 'proper' profession that finally loses the shackles of all those other industries. After all as this &lt;a href="http://gapingvoid.com/2011/01/05/greetings-from-las-vegas-here-for-c-e-s-and-intel/"&gt;guy&lt;/a&gt; says (far more eloquently than me) "the processor is an expression of human potential" and is "akin to a painter’s blank canvas" (see this great &lt;a href="http://scoop.intel.com/wp-content/uploads/2011/01/visibly-smart-3.jpg"&gt;drawing&lt;/a&gt;). I'd like to think of us architects as the painters ready to fill that canvas with great art. Oh heck, but that means we are now comparing architecture with art and that would &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/05/on-being-artitect.html"&gt;never do&lt;/a&gt;.&lt;b&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-6712988161653809060?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/6712988161653809060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/architecture-is-architecture.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6712988161653809060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/6712988161653809060'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2011/01/architecture-is-architecture.html' title='Architecture is Architecture?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5563663076570545536</id><published>2010-12-22T21:33:00.001Z</published><updated>2010-12-22T21:35:59.946Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='zen'/><title type='text'>On Being a Software Architect</title><content type='html'>Thanks to a wonderful bits of "webendipity" (something unexpected and useful found from surfing the web, a conjunction of web-serendipity) in this case a blog causing me to follow that blogger on twitter whose tweet pointed me to another blog, I came across &lt;a href="http://david.ing.name/2010/12/21/an-overly-long-guide-to-being-a-software-architect/"&gt;An Overly Long Guide to Being a Software Architect&lt;/a&gt; by David Ing today which nicely parallels my &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/12/you-can-no-longer-call-yourself.html"&gt;previous effort&lt;/a&gt; on how &lt;i&gt;not&lt;/i&gt; to be a (Software) Architect.&lt;br /&gt;&lt;br /&gt;I particularly like Ing's number 11:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Finally my last tip is to never take advice from Top 11 tip lists. In  nearly all cases there was only about 3 good points and with about 8  padding.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Definitely a lesson for me there I think. Maybe my New Years resolution should be to publish fewer lists!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5563663076570545536?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5563663076570545536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/on-being-software-architect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5563663076570545536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5563663076570545536'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/on-being-software-architect.html' title='On Being a Software Architect'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1575106127075038054</id><published>2010-12-21T12:00:00.001Z</published><updated>2010-12-21T12:00:57.866Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='axioms'/><title type='text'>You Can No Longer Call Yourself an Architect When...</title><content type='html'>Ten behaviours that might mean you can no longer call yourself an Architect...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The majority of your output is created using Microsoft's Office suite.&lt;/li&gt;&lt;li&gt;Your days are spent fighting the system rather than creating a system.&lt;/li&gt;&lt;li&gt;You're fitting business to technology rather than the other way around.&lt;/li&gt;&lt;li&gt;You think reuse is what you do with your shirt when you unexpectedly have to spend one extra day with the client (possibly wasting your time doing 2 above).&lt;/li&gt;&lt;li&gt;The only stakeholders you deal with are your non-vegetarian colleagues during your evening meals at the &lt;a href="http://www.angussteakhouse.co.uk/"&gt;Angus Steakhouse&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;You can no longer remember the difference between a &lt;a href="http://en.wikipedia.org/wiki/For_loop"&gt;For loop&lt;/a&gt; and a &lt;a href="http://en.wikipedia.org/wiki/While_loop"&gt;While loop&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;You think a &lt;a href="http://www.ibm.com/developerworks/rational/library/08/0108_cooks-cripps-spaas/"&gt;view&lt;/a&gt; is something you don't normally get from your room in the tourist class hotels your company puts you up in.&lt;/li&gt;&lt;li&gt;Your definition of a non-functional requirement is a functional requirement that isn't.&lt;/li&gt;&lt;li&gt;You spend more time in the box than &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/10/architecting-out-of-box.html"&gt;out of it&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Add your favourite reason below.&lt;/li&gt;&lt;/ol&gt;This is probably my last post of the year and most certainly the last one before Christmas. Merry Christmas to everyone out there and, as it used to say on the front of &lt;a href="http://www.beano.com/"&gt;The Beano&lt;/a&gt; at this time of year:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red; text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;Happy New Year to All My Readers!&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1575106127075038054?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1575106127075038054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/you-can-no-longer-call-yourself.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1575106127075038054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1575106127075038054'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/you-can-no-longer-call-yourself.html' title='You Can No Longer Call Yourself an Architect When...'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-2797499542158243351</id><published>2010-12-17T08:17:00.000Z</published><updated>2010-12-17T08:17:23.591Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><title type='text'>More Presentation Tips from the Frontline</title><content type='html'>Here are some more tips based on some experiences gained this year from giving (lots of) presentations. I've also included a few good suggestions that have been suggested by friends and colleagues (they know who they are and I am happy to acknowledge them by name if they don't mind being publicised here).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Don't give people negative information about you or your material. They will only use this against you in feedback. If you're not happy with the material you are delivering or its content you really should not be presenting it however at times we all have to deliver a presentation with dodgy slides or containing messages we may not agree with or fully understand. Try and spend time up front pulling out the key messages and deliver those rather than try to justify or apologise for poor slideware. Spending time practising is key.&lt;/li&gt;&lt;li&gt;Check out the room you will be presenting in ahead of time and if it is big or has poor acoustics which will make it difficult to project your voice make sure you get a microphone (or be prepared to shout all through the presentation).&lt;/li&gt;&lt;li&gt;Be aware of an audiences mood. Glazed eyes, playing with smartphones and doodling means you have lost them. Re-engage by throwing a question or two at the audience but better still follow 4 below.&lt;/li&gt;&lt;li&gt;In the excellent book &lt;a href="http://www.brainrules.net/"&gt;&lt;i&gt;Brain Rules&lt;/i&gt;&lt;/a&gt; its author, John Medina, says that audiences tend to "check out" after 10 minutes and it is therefore important to pepper your presentation with attention grabbing events. These can be anecdotes, personal stories, jokes (if they are relevant to the presentation) or maybe playing a short video. Medina even recommends designing your presentation in 10 minute chunks where the end of each 10 minutes has one of these attention grabbing events.&lt;/li&gt;&lt;li&gt;Buy yourself a good quality wireless presenter (AKA a 'clicker'). It gives you freedom to move around and blank the screen to avoid distractions during discussions. I have one of &lt;a href="http://us.kensington.com/html/11190.html"&gt;these&lt;/a&gt; which has served me well (always carry spare batteries though). Having a clicker more easily allows you to do number 6 as well.&lt;/li&gt;&lt;li&gt;&lt;span data-jsid="text"&gt;Don't stand still and just talk at the audience. If you, can walk around and engage with people (use eye contact when speaking). If you have any influence over the layout of the room make sure tables and chairs are laid out in such a way you can move in between them. Even if you are on a stage you can still move around (watch &lt;a href="http://www.youtube.com/watch?v=OBhYxj2SvRI"&gt;any&lt;/a&gt; Steve Jobs presentation to see what he does). Also u&lt;span class="text_exposed_show"&gt;se your pitch and volume to emphasis the key points of the presentation.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span data-jsid="text"&gt;&lt;span class="text_exposed_show"&gt;Don't be afraid to say you don't know when asked a question. Unless you are an extremely good bluffer you will be rumbled and lose all crediability. Better is to admit you don't know the answer and offer to follow up afterwards (which you should do if you say you will of course).&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;See also &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/04/how-to-create-effective-technical.html"&gt;here&lt;/a&gt; for tips on creating technical presentations and &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/10/five-things-not-to-say-when-presenting.html"&gt;here&lt;/a&gt; for what not to say when presenting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-2797499542158243351?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/2797499542158243351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/more-presentation-tips-from-frontline.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2797499542158243351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/2797499542158243351'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/more-presentation-tips-from-frontline.html' title='More Presentation Tips from the Frontline'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3438426638755632252</id><published>2010-12-07T22:01:00.001Z</published><updated>2010-12-07T22:08:38.226Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='enterprisearchitecture'/><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>Interprise Architecture and Ultra-Large-Scale Systems</title><content type='html'>In a &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/10/enterprise-architecture-is-dead-long.html"&gt;previous post&lt;/a&gt; I introduced the term “Interprise Architecture” to describe how the internet is breaking down the traditional boundaries of the enterprise and thus requires a new approach to Enterprise Architecture that's not just about describing what's inside the enterprise but also what's on the outside. No longer can Enterprise Architects create blueprints for some future state that the enterprise will one day reach with roadmaps for how that state will be achieved. There are too many disruptive influences and new technologies that are impinging on the enterprise that will not only mean the roadmap is sending you in the wrong direction but that you are probably using the wrong mode of transport to get there as well.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;I received a few comments on this from folk at the &lt;a href="http://www.sei.cmu.edu/"&gt;Software Engineering Institute&lt;/a&gt; (SEI)as well as &lt;a href="http://www.gartner.com/technology/home.jsp"&gt;Gartner&lt;/a&gt;. The work on &lt;a href="http://www.sei.cmu.edu/uls/"&gt;Ultra-Large-Scale (ULS) Systems&lt;/a&gt; from the SEI particularly drew my attention and resonates nicely with some of my own thoughts. Here are some of the key ideas from the SEI report &lt;a href="http://www.sei.cmu.edu/library/assets/ULS_Book20062.pdf"&gt;&lt;i&gt;Ultra-Large-Scale Systems - The Software Challenge of the Future&lt;/i&gt;&lt;/a&gt; plus some additional musings of my own on what constitutes Interprise Architecture. First, ULS:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The SEI report on ULS systems was funded by the United States Department of Defence (DoD) which asked the SEI to consider future systems that could not only contain of billions of lines of code but also exhibit some, possibly all, of the following characteristics: decentralisation; conflicting, unknowable, and diverse requirements; continuous evolution and deployment; heterogeneous and changing elements; erosion of the people/system boundary; and normal failures of parts of the system.&lt;/li&gt;&lt;li&gt;ULS systems are likely to mean that traditional software and systems engineering approaches will no longer be adequate or can be the primary means by which such systems are designed (architected) or built.&lt;/li&gt;&lt;li&gt;ULS systems can be compared with cities whereas traditional systems can be compared with buildings. Buildings can be designed and built to a blueprint whereas cities emerge and are continuously adapting over time.&lt;/li&gt;&lt;li&gt;ULS systems are comprised of a dynamic community of interdependent and competing organisms (in this case, people, computing devices, and organizations) in a complex and changing environment. These are referred to as socio-technical ecosystems.&lt;/li&gt;&lt;li&gt;ULS systems are ones that are continuously evolving with new behaviour constantly emerging. In this respect they have the attributes of wicked problems where the problem is never definitively solved (or indeed understood).&lt;/li&gt;&lt;li&gt;ULS systems expect failure to be the norm and that unusual situations and boundary conditions will occur often enough that something will always be failing. &lt;/li&gt;&lt;/ul&gt;The SEI report is primarily aimed at allowing the US military to develop new systems however I believe the key ideas that challenge the development of such systems also have wide applicability in business systems, the sort I'm most interested in. I see that what I have characterised as Interprise Architecture could therefore be applied to developing ULS business systems. Here are three examples of ULS business systems that might benefit from an Interprise Architecture approach:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Electronic Trading Systems. These are systems that trade securities (such as stocks, and bonds), foreign currency, and exchange traded derivatives electronically. They use IT to bring together buyers and sellers through electronic media and create a virtual market place. Such systems are typically built using proprietary software that has grown and evolved over many years. Investment banks have extremely complex technology requirements, as they have to interface with multiple exchanges, brokers and multi-dealer platforms, as well as their own pricing, profit and loss (P&amp;amp;L), trade processing and position-keeping systems. The challenge here then is not only the large numbers of systems but also the increasing complicated regulatory environment.&lt;/li&gt;&lt;li&gt;Electricity Generation and Metering. The generation and consumption of electricity faces a number of unique challenges including improved and more efficient use of green technologies as well as smart metering. Traditional electrical meters only measure total consumption and as such, provide no information of when the energy was consumed. Smart meters provide an economical way of measuring this information, allowing price setting agencies to introduce different prices for consumption based on the time of day and the season.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Retail Systems. As retailers look for ever more cunning ways to get consumers to part with their hard-earned cash, traditional (i.e. high street) and electronic retail will merge more and more. For example not only can I use my 3G enabled smart-phone from the store I happen to be in to quickly compare prices in other stores in the area, the store itself can potentially detect I am shopping there using location based services and make me an enticing offer to shop there. &lt;/li&gt;&lt;/ul&gt;So here are the seven challenges that I see Interprise Architecture must deal with in developing a ULS business system:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Requirements are unknowable. Sometimes the very act of capturing a requirement (in whatever form) changes the nature of that requirement. Interprise Architecture must not only allow for continuously changing requirements but must also recognise that some uses of the system cannot be known up-front; hence the need to build more adaptable systems.&lt;/li&gt;&lt;li&gt;The boundary between people and systems is at best blurred and at worst never established. Sometimes people will be users of the system, sometimes they (or at least the devices they own) will be part of the system.&lt;/li&gt;&lt;li&gt;Development never stops but is a continuous cycle. Development processes as well as the projects that deliver such systems must therefore support this never-ending cycle.&lt;/li&gt;&lt;li&gt;Systems continuously adapt and exhibit emergent behaviour. As new uses of the system are “discovered' by users the components that make up the system need to be able to adapt to satisfy those new behaviours.&lt;/li&gt;&lt;li&gt;Failure (of parts of the system) is inevitable. Just like a fire in a building in a city can be localised and extinguished without by and large affecting the whole of a city then so to must Interprise Architecture allow for partial failure and reconfiguration of some components.&lt;/li&gt;&lt;li&gt;Development tools and languages need to take account of the unpredictable and maybe even unspecifiable aspects of systems development. Traditional development tools favour left-brain thinkers where logic and reasoning can be applied to develop systems that move from abstract ideas to physical implementations (from models to code if you like). New tools for developing and describing Interprise Architectures need to be able to inject a bit of right-brain thinking by allowing creative multi-disciplinary elements to be added.&lt;/li&gt;&lt;li&gt;Governance needs to be de-centralised. Strong, top-down governance (the sort favoured by Enterprise Architects) cannot work in a system where all the parts may not even be known. Interprise Architecture needs to recognise that some components are outside its control or immediate sphere of influence and have policies in place that allow new components to be added which don't harm or damage the whole system. &lt;/li&gt;&lt;/ol&gt;As an interesting post-script to this the Financial Times recently published an &lt;a href="http://www.ft.com/cms/s/2/57933bb8-fcd9-11df-ae2d-00144feab49a.html#axzz17SmfRkJo"&gt;article&lt;/a&gt; on Facebook and the plans that CEO Mark Zuckerberg has for advancing his brainchild. Zuckerberg had just announced a new feature on Facebook called Deals which allows smartphone users who have downloaded the Facebook application to check in at a physical location such as a coffee shop and get a reward. Zuckerberg says:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;If you look five years out, every industry is going to be rethought in a social way. You can remake whole industries. That’s the big thing.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Facebook is one example of how external applications that allow users to impinge on the enterprise are changing how Enterprise Architects must think.&lt;br /&gt;&lt;br /&gt;Next, a story for what a ULS business system might look like and how it might work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3438426638755632252?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3438426638755632252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/interprise-architecture-and-ultra-large.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3438426638755632252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3438426638755632252'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/interprise-architecture-and-ultra-large.html' title='Interprise Architecture and Ultra-Large-Scale Systems'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5280927873149120139</id><published>2010-12-04T03:58:00.001Z</published><updated>2010-12-10T11:54:06.038Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='enterprisearchitecture'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>A Tale of Two Cities</title><content type='html'>I've recently been travelling in Asia working for a client delivering architectural training and was struck by the amazing contrast between the last two cities I visited, Singapore and Bangalore (or Bengaluru as it is now known). The contrast between these two cities set me thinking about Enterprise Architecture and how the approach to city planning can make or break how a city functions. For those not familiar with these two cities here are my fleeting observations (based on a few days spent in each).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Singapore"&gt;Singapore&lt;/a&gt; is a city state with a population of 5 million people. The predominant industries are shipping, financial services, manufacturing and tourism. Singapore's airport (Changi) is a modern airport which is the international hub for Singapore Airlines with good connections via the metro (known as MRT) to the city. The airport offers free wi-fi in all areas (I have a theory that the amount of free wi-fi you can get in a city is an indicator of the economic vitality of a place). Architecturally the city is a mix of old colonial style buildings (Raffles Hotel) and ultra-modern new buildings (the &lt;a href="http://www.marinabaysands.com/"&gt;Marina Bay Sands&lt;/a&gt; hotel for example). Walking around the city you are struck how there is no graffiti, virtually no litter and no begging as well as by the large number of malls with designer shopping on offer and the usual Western outlets (Starbucks, Marks and Spencers, DKNY etc). There is very little serious crime (there being the mandatory death penalty for murder, rape and dealing in drugs). Whilst there is a lot of traffic the roads are well laid out with no significant traffic delays (at least whilst I was there). See &lt;a href="http://www.wired.com/wired/archive/1.04/gibson.html"&gt;here&lt;/a&gt; for another view of this city/state.&lt;br /&gt;&lt;br /&gt;By contrast &lt;a href="http://en.wikipedia.org/wiki/Bangalore"&gt;Bengaluru&lt;/a&gt; is the third most populous city in India with an estimated population of 8 milllion and has seen rapid growth over the last 10 years due to it being the centre for outsourcing (especially IT with nearly all the large IT companies like Infosys, WiPro, HP and IBM having large development centres there). There is an international airport but with no good quality connections to the city. Virtually all visitors are business travellers with very little tourism. There is 15 minutes free wi-fi available in the business lounge only and even then only once you have surrendered your email and mobile phone number. A rapid transport system is being built (which was meant to be operational this month). Architecturally there are some modern buildings (mainly in the technology parks) together with large numbers of shanty towns and hastily constructed, low-cost apartments. Walking around the city you are struck by the vast amount of rubbish with dogs and cows wondering around. Despite it being a “high-tech” city there is still very obvious poverty with begging and homeless people sleeping on benches and in doorways. There are very few Western style shops&amp;nbsp; and virtually no designer outlets.&lt;br /&gt;&lt;br /&gt;So what Enterprise Architecture conclusions are to be drawn by comparing these two cities given we often compare Enterprise Architects with city planners and Solution Architects with building architects?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise Architects have a clear vision (captured as blueprints) of what IT systems the enterprise has and how they need to evolve to support the business strategy, maybe over a one, three and five year outlook. Walking around Singapore (and talking to people that live there) you get the impression there is a “master plan” being enacted. To some extent Singapore only exists because of the efficiency of its infrastructure and the quality of living it can provide to its citizens. This naturally pulls in people and businesses that can take advantage of that infrastructure.&lt;/li&gt;&lt;li&gt;Enterprise Architects define roadmaps showing how the enterprise will get from where it is today to where it needs to be (recognising that changes will be happening all the time). Singapore has clear plans for how the state will grow over the coming years. For example there are plans in place for various extensions of the MRT, some of which are currently under construction. It is expected that by the network will have of 540 km of track by 2050 which will be more than London's 408 km tube system.&lt;/li&gt;&lt;li&gt;Enterprise Architects need to be aware of both what functionality is required but also what qualities and constraints these functions will be delivered to. &lt;br /&gt;Enterprise Architects define clear principles that should be followed by Solution Architects architecting the individual buildings. Whilst there are several old colonial buildings as well as regional styles (China Town has some of the best Chinese architecture I have seen) Singapore has some of the most cutting edge modern architecture around. Despite this there is a strong sense of “harmony” amongst the styles and the feeling there are underlying principles that are in place to help achieve this harmony.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Enterprise Architects enforce strong governance to enforce the blueprints, roadmaps and principles and ensure they are being followed. Singapore has strong (and severe) governance that enforces its laws. There have been very few recorded murder cases over the last decade and those there have been have nearly always ended in the guilty person being executed.&lt;/li&gt;&lt;/ul&gt;Both cities are great places to visit, I'm sure Bengaluru will get to where Singapore is eventually, after all India is experiencing 8% growth which economists reckon will continue for some years to come. The Indian people have a tremendous attitude to work, what is needed is the good and honest governance of their leaders to turn cities like Bengaluru into a true, modern 21st century city.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5280927873149120139?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5280927873149120139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/tale-of-two-cities.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5280927873149120139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5280927873149120139'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/12/tale-of-two-cities.html' title='A Tale of Two Cities'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8857322435296526530</id><published>2010-11-22T19:54:00.001Z</published><updated>2011-05-09T10:29:57.622+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Architecture Drill Down in the UML</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Solution Architects need to create models of the systems they are building for a number of reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Models help to visualise the component parts, their relationships and how they will interact.&lt;/li&gt;&lt;li&gt;Models help stakeholders understand how the system will work.&lt;/li&gt;&lt;li&gt;Models, defined at the right level of detail, enable the implementers of the system to build the component parts in relative isolation provided the interfaces between the parts are well defined.&lt;/li&gt;&lt;/ul&gt;These models need to show different amounts of detail depending on who is looking at them and what sort of information you expect to get from them. &lt;a href="http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Main"&gt;Grady Booch&lt;/a&gt; says that "a good model excludes those elements that are not relevant to the given level of abstraction". Every system can be described using different views and different models. Each model should be "a semantically closed abstraction of the system" (that is complete at what ever level it is drawn). Ideally models will be both structural, emphasizing the organization of the system, as well as behavioral, emphasizing the dynamics aspects of the system.&lt;br /&gt;&lt;br /&gt;To support different views and allow models to be created at different levels of abstraction I use a number of different diagrams, created using the Unified Modeling Language (UML) in an appropriate modeling tool (e.g. &lt;a href="http://www.ibm.com/developerworks/rational/products/rsa/"&gt;Rational Software Architect&lt;/a&gt; or &lt;a href="http://www.sparxsystems.com.au/"&gt;Sparx Enterprise Architect&lt;/a&gt;). Using a process of "architecture drill-down" I can get both high level views as well as detailed views that are relevant to the level of abstraction I want to see. Here are the views and UML diagrams I create. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise View (created with a UML Package diagram). This sets the context of the whole enterprise and shows actors (users and other external systems) who interact with the enterprise.&lt;/li&gt;&lt;li&gt;System View (Package diagram). This shows the context of an individual system within the enterprise and shows internal workers and other internal systems.&lt;/li&gt;&lt;li&gt;Subsystem View (Package diagram). This shows the breakdown of one of the internal systems into subsystems and the dependencies between them.&lt;/li&gt;&lt;li&gt;Component View (Component diagrams and Sequence diagrams). This shows the relationships between components within the subsystems, both static dependency type relationships (through the UML Component diagram) as well as interactions between components (through the UML Sequence diagram).&lt;/li&gt;&lt;li&gt;Component Composition View (Composite Structure diagram). This shows the internal structure of a component and the interfaces it provides.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Note hat a good tool will link all these together and ideally allow them to be published as HTML allowing people without the tool to use them and also navigate through the different levels. Illustrative examples of the first three of the diagrams mentioned above are shown below. These give increasing levels of detail for a hypothetical hotel system. Click on the picture to get a bigger view.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5XxDXgH4TQI/TOrJ35B1YEI/AAAAAAAAAEQ/WMxj0knGtc8/s1600/Enterprise.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_5XxDXgH4TQI/TOrJ35B1YEI/AAAAAAAAAEQ/WMxj0knGtc8/s200/Enterprise.jpg" width="173" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Enterprise View&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_5XxDXgH4TQI/TOrIfDMrHII/AAAAAAAAAEI/JA5QZ0P2QXk/s1600/System.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="185" src="http://4.bp.blogspot.com/_5XxDXgH4TQI/TOrIfDMrHII/AAAAAAAAAEI/JA5QZ0P2QXk/s200/System.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;System View&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_5XxDXgH4TQI/TOrIg1Hwy8I/AAAAAAAAAEM/cKSXc0JS45c/s1600/Subsystem.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_5XxDXgH4TQI/TOrIg1Hwy8I/AAAAAAAAAEM/cKSXc0JS45c/s200/Subsystem.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Subsystem View&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;In the actual tool, Sparx Enterprise Architect in this case, each of these diagrams is linked so when I click on the package of the first it opens up the second and son on. When published as HTML this "drill-down" gets maintained as hyperlinks allowing for easy navigation and review of the architecture.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8857322435296526530?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8857322435296526530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/architecture-drill-down-in-uml.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8857322435296526530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8857322435296526530'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/architecture-drill-down-in-uml.html' title='Architecture Drill Down in the UML'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5XxDXgH4TQI/TOrJ35B1YEI/AAAAAAAAAEQ/WMxj0knGtc8/s72-c/Enterprise.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8119656609721553737</id><published>2010-11-15T13:33:00.000Z</published><updated>2010-11-15T13:33:05.014Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><title type='text'>Five Inspirational Videos</title><content type='html'>As a follow-up to my &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/09/five-non-it-books-for-it-architects.html"&gt;six non-IT books&lt;/a&gt; here are five videos I have found some inspiration from recently (plus one that whilst cannot be described as inspirational is at least amusing in a vaguely nerdy programmer kind of way):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Steve Jobs (A CEO): &lt;a href="http://www.ted.com/talks/steve_jobs_how_to_live_before_you_die.html"&gt;How to Live Before You Die&lt;/a&gt; Steve Jobs steps out from his usual Apple presentation mode and delivers this keynote to students at Stanford. He highlights three things which have had a major impact on his life and how important it is to learn from such life experiences.&lt;/li&gt;&lt;li&gt;Winston Royce (A Methodologist): &lt;a href="http://www.youtube.com/watch?v=X1c2--sP3o0"&gt;The Rise and Fall of Waterfall&lt;/a&gt; Not actually by Winston Royce but a humorous look at how we ended up with waterfall. An example of how to get a point across by telling a story (and using wonderfully simple graphics).&lt;/li&gt;&lt;li&gt;Grady Booch (A Software Architect): &lt;a href="http://espanol.video.yahoo.com/watch/577305/2839970"&gt;The Promise, The Limits, The Beauty of Software&lt;/a&gt; Grady is an inspirational speaker on all things software related. We were lucky enough to get him to write the forword to our &lt;a href="http://www.amazon.co.uk/gp/product/0321357485/ref=s9_simz_gw_s0_p14_i1?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=1C96XCQK4V67KRN19HAX&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=470938131&amp;amp;pf_rd_i=507846"&gt;book&lt;/a&gt; (which I'm sure has done its sales the world of good). &lt;/li&gt;&lt;li&gt;Sir Ken Robinson (An Innovator and Educationalist): &lt;a href="http://video.google.co.uk/videoplay?docid=-4964296663335083307#"&gt;Do Schools Kill Creativity&lt;/a&gt; SKR (as he calls himself on his &lt;a href="http://sirkenrobinson.com/skr/"&gt;website&lt;/a&gt;) has some strong views on how our present education system is letting down youngsters.For a great rendition of another of Sir Ken's talks see &lt;a href="http://www.youtube.com/watch?v=zDZFcDGpL4U"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; David Eustace (A Photographer): &lt;a href="http://www.theanthropologist.net/#/DavidEustace/InSearchOfEustace/Film"&gt;In Search of Eustace&lt;/a&gt; Nothing to do with IT but related to one of my other passions. This simple and beautifully filmed video set to music will resonate with anyone on life's journey.&lt;/li&gt;&lt;/ol&gt;And finally... &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Lady Gaga (A Singer) Lookalike: &lt;a href="http://kottke.org/10/08/lady-gaga-sings-about-java-programming"&gt;Sings About Java Programming&lt;/a&gt; An example of how creativity (the video production) can be used to improve even the worst ideas (the song). What else can I say!&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8119656609721553737?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8119656609721553737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/five-inspirational-videos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8119656609721553737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8119656609721553737'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/five-inspirational-videos.html' title='Five Inspirational Videos'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7792394702532572350</id><published>2010-11-14T22:18:00.000Z</published><updated>2010-11-14T22:18:13.844Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Hire an Architect</title><content type='html'>&lt;a href="http://sethgodin.typepad.com/"&gt;Seth Godin&lt;/a&gt; has a great definition of what an architect is in his blog &lt;a href="http://sethgodin.typepad.com/seths_blog/2010/11/hire-an-architect.html"&gt;here&lt;/a&gt;. Here's the description:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Architects don't manufacture nails, assemble windows or chop down trees.  Instead, they take existing components and assemble them in interesting  and important ways.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He goes on to say that:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;...intentionally building a structure and a strategy and a position, not  focusing your energy on the mechanics, because mechanics alone are  insufficient. Just as you can't build a class A office building with  nothing but a skilled carpenter, you can't build a business for the ages  that merely puts widgets into boxes.&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;I like this because for me this is absolutely the essence of what an architect does, take existing components and put them together in new and interesting ways. That's exactly what Tim Berners-Lee did when he &lt;a href="http://softwarearchitecturezen.blogspot.com/search/label/creativity"&gt;created&lt;/a&gt; the web. The key skill is not to get bogged down in the detail but to maintain the big picture of whatever it is you are doing. It applies equally to IT systems just as much as it does to buildings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7792394702532572350?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7792394702532572350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/hire-architect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7792394702532572350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7792394702532572350'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/hire-architect.html' title='Hire an Architect'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1391330017343351192</id><published>2010-11-11T23:59:00.002Z</published><updated>2010-12-20T13:55:08.306Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='antipattern'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>When a Bridge Falls Down is the Architect to Blame?</title><content type='html'>Here's a question. When a bridge or building falls down whose "fault" is it. Is it the architect who designed the bridge or building in the first place, is it the the builders and construction workers who did not build it to spec, the testers for not testing the worst-case scenario or the people that maintain or operate the building or bridge? How might we use disasters from the world of civil engineering to learn about better ways of architecting software systems?&lt;br /&gt;&lt;br /&gt;Here are four well known examples of architectural disasters (resulting in increasing loss of life) from the world of civil engineering: &lt;br /&gt;&lt;ol&gt;&lt;li&gt;The &lt;a href="http://en.wikipedia.org/wiki/Millennium_Bridge_%28London%29"&gt;Millenium Bridge&lt;/a&gt; in London, a steel suspension bridge for  pedestrians across the Thames. Construction of the bridge began in 1998,  with the opening on 10 June 2000. Two days after the bridge opened the  participants in a charity walk felt an unexpected  swaying motion. The  bridge  was closed for almost two years while modifications were made to   eliminate the "wobble" which was caused by a positive feedback  phenomenon, known as Synchronous Lateral Excitation. The natural sway  motion of people walking caused small sideways oscillations which in  turn caused people on the bridge to sway in step increasing the  amplitude of the bridge oscillations and continually reinforcing the  effect. Engineers added dampers to the bridge to prevent the horizontal  and vertical movement. No people or animals were injured in this incident. &lt;/li&gt;&lt;li&gt;The &lt;a href="http://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge"&gt;Tacoma Narrows Bridge&lt;/a&gt; was opened to traffic on July 1st 1940 and &lt;a href="http://www.youtube.com/watch?v=3mclp9QmCGs"&gt;collapsed&lt;/a&gt; four months later. At the time of its construction the bridge was the  third longest suspension bridge in the world. Even from the time the deck was built, it began to move vertically in windy  conditions, which led to it being given the  nickname Galloping Gertie. Several measures aimed at stopping the  motion were ineffective, and the bridge's main span finally collapsed  under 40 mph wind conditions on November  7, 1940. No people were injured in this incident but a dog was killed.&lt;/li&gt;&lt;li&gt;On 28 January 2006, the roof of one of the buildings at the Katowice International Fair &lt;a href="http://en.wikipedia.org/wiki/Katowice_Trade_Hall_roof_collapse"&gt;collapsed&lt;/a&gt; in Katowice, Poland. There were 700 people in the hall at the time. The collapse was due to the weight of the snow on the roof. A later inquiry found numerous design and construction flaws that contributed to  the speed of collapse. 65 people were killed when the roof collapsed.&lt;/li&gt;&lt;li&gt; The twin towers of the &lt;a href="http://en.wikipedia.org/wiki/Collapse_of_the_World_Trade_Center"&gt;World Trade Center&lt;/a&gt; (WTC) in downtown Manhattan collapsed on September 11 2001when al-Qaeda terrorists hijacked two commercial passenger jets and flew them into the skyscrapers. A government report that looked at the collapse declared that the WTC design had been sound and attributed the  collapses to "extraordinary factors beyond the control of the  builders". 2,752 people died, including all 157 passengers and crew aboard the two airplanes.&lt;/li&gt;&lt;/ol&gt;In at least one of these cases (the Katowice International Fair building) various people (including the designers) have been indicted for "directly  endangering lives of other people” and face up to 12 years of prison. They are also charging the buildings operator for "gross negligence" in not removing snow quickly enough.&lt;br /&gt;&lt;br /&gt;So what can we learn from these natural and man made disasters and apply to the world of software architecture? In each of these cases the constructions were based on well known "patterns" (suspension bridges, trade halls and skyscrapers have all successfully been built before and have not collapsed). What was different in each of these cases was that the non-functional characteristics were not taken into account. In the case of the bridges, oscillations caused by external factors (people and winds) were not adequately catered for. In the case of the trade hall in Katowice the building's roof was not engineered to handle the additional weight caused by snow. Finally, in the case of the WTC, the impact of a modern passenger jet, fully laden with fuel, crashing into the building was simply not conceived of (although interestingly an "aircraft-impact analysis", involving the impact of a Boeing 707 at 600 mph was actually done which concluded that although there would "a horrendous fire" and "a lot of  people would be killed," the building itself would not collapse. Here are some lessons I would draw from these incidents and how we might relate them to the field of software architecture:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Architects need to take into account &lt;u&gt;all&lt;/u&gt; non-functional requirements. Obviously this is easier said than done. Who would have thought of such an unexpected event as a passenger jet crashing into a skyscraper? Actually, to their credit, the buildings architects did but what they lacked was the ability to properly model the effect of such impacts on the structures, especially the effects of the fires.&lt;/li&gt;&lt;li&gt;For complex systems, architects should build models to model all aspects of the architecture. Tools appropriate to the task should be deployed and the right "level" of modelling needs to be done. Prototyping as a means of testing new or interesting technical challenges should also be adopted.&lt;/li&gt;&lt;li&gt;Designers should faithfully implement the architectural blueprints and the architect should remain on the project during the design and implementation phases to check their blueprints are implemented as expected.&lt;/li&gt;&lt;li&gt;Testing should be taken into account early and thought given to &lt;i&gt;how&lt;/i&gt; the non-functional characteristics can be tested. Real limits should be applied taking into account the worst case (but realistic) scenario. &lt;/li&gt;&lt;li&gt;Operations and maintenance should be involved from an early stage to make sure they are aware of the impact of unexpected events (for example a complete loss of all systems because of an aircraft crashing on the data centre) and have operational procedures in place to address such events.&lt;/li&gt;&lt;/ol&gt;As a final, and sobering, footnote to the above here's a quote from a report produced by the British Computer Society and Royal Academy of Engineers called &lt;a href="http://www.bcs.org/upload/pdf/complexity.pdf"&gt;&lt;i&gt;The Challenges of Complex IT Projects&lt;/i&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Compared with other branches of engineering in their formative years, not enough people (are known to) die from software errors. It is much easier to hide a failed software project than a collapsing bridge or an exploding chemical plant."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The implications of this statement would seem to be that it's only when software has major, and very public, failures that people will really take note and maybe start to address problems before they occur. There are plenty of learning points (anti-patterns) in other industries that we can learn from and should probably do so before we start having major software errors that cause loss of life.&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;You may be interested in the &lt;a href="http://www.bcs.org/upload/pdf/casestudy2.pdf"&gt;follow up&lt;/a&gt; to the above report which describes some success stories and why they worked (just in case you thought it was all bad).&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;  &lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1391330017343351192?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1391330017343351192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/when-bridge-falls-down-is-architect-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1391330017343351192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1391330017343351192'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/when-bridge-falls-down-is-architect-to.html' title='When a Bridge Falls Down is the Architect to Blame?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1595137581290052452</id><published>2010-11-05T09:57:00.000Z</published><updated>2010-11-05T09:57:28.711Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='smarterplanet'/><category scheme='http://www.blogger.com/atom/ns#' term='wickedproblems'/><title type='text'>On Being a Versatilist</title><content type='html'>&lt;div style="margin-bottom: 0cm; margin-top: 0cm;"&gt;The world is full of wicked problems. As stated &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/02/wicked-problem-is-one-that-for-each.html"&gt;previously&lt;/a&gt; a wicked problem is one that is:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Unique&lt;/li&gt;&lt;li&gt;Difficult  to define&lt;/li&gt;&lt;li&gt;Linked  to other problems&lt;/li&gt;&lt;li&gt;Not  always clear when its been solved&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0cm; margin-top: 0cm;"&gt;Some wicked problems can benefit from the reasoned application of information technology to help in solving them. Solving wicked problems needs an innovative approach and the use of design thinking. A &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/03/v-is-for-versatilist.html"&gt;versatilist&lt;/a&gt; is someone who knows how to apply design thinking and can orchestrate the skills of multiple disciplines in solving wicked problems. A versatilist is also someone who:  &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Applies  both left (logical) and right (artistic) brain thinking to the  problem.&lt;/li&gt;&lt;li&gt;Uses  rapid prototyping to test out solutions.&lt;/li&gt;&lt;li&gt;Understands  that everything is connected to everything else and that sometimes  solving one problem results in many more.&lt;/li&gt;&lt;li&gt;Is  not afraid to disrupt the status quo and risk ridicule from his  peers.&lt;/li&gt;&lt;li&gt;Is not  afraid to propose a solution to a problem before the problem is  completely understood.&lt;/li&gt;&lt;li&gt;Iterates  (maybe many times) rather than expecting to arrive at a solution  following a (simple-minded) analysis of the problem.&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0cm; margin-top: 0cm;"&gt;The world needs more versatilists if we are to solve the truly wicked problems. Solving wicked problems is one of the things we must do if we are to build a &lt;a href="http://www.ibm.com/smarterplanet/uk/"&gt;Smarter Planet&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1595137581290052452?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1595137581290052452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/on-being-versatilist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1595137581290052452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1595137581290052452'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/11/on-being-versatilist.html' title='On Being a Versatilist'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-4382012210701305490</id><published>2010-10-31T10:52:00.000Z</published><updated>2010-10-31T10:52:20.494Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>Five Things Not To Say When Presenting</title><content type='html'>Whilst I cannot confess to have never said any of these myself here are five phrases that you should avoid at all costs when delivering a technical (or indeed any) presentation.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;I'm sorry you can't see this at the back.&lt;/i&gt; Are you really sorry? I suspect not otherwise you will have made sure everyone could see what you are presenting before showing the slide. Know how big your room is and how big the screen is. As a matter of course never make any font size less than 24 point. Better still avoid words altogether and use pictures or diagrams instead.&lt;/li&gt;&lt;li&gt;&lt;i&gt;I'm just going to skip over the next few slides.&lt;/i&gt; Why? Either the slides are relevant to what you have to say or they are not. If they are not then they should not be there. There is always a great temptation to include extra slides "just in case". Don't! You should include only that which is relevant to what you have to say and discard everything else.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Sorry but the colours on this slide don't show up very well.&lt;/i&gt; Using colour in presentations is a great way of getting across information. When used properly colour can be used for emphasis as well as categorising data or information. However, be aware that the way colour can appear on a computer screen and how it can appear on a data projector can be very different. Always use bold colours and, if possible, check out the projector you are going to use before starting your presentation.&lt;/li&gt;&lt;li&gt;&lt;i&gt;You probably can't hear this but I'll play it anyway.&lt;/i&gt; Use of sound and video can be a great way of getting information across and also helps to keep your audiences attention. However if you are using sound make sure you have an effective sound system and don't, what ever you do, rely on the speakers on your laptop. If you are using sound or video make sure there is adequate kit in the room. As a standby carry a set of portable speakers with you but these will only have limited reach. &lt;/li&gt;&lt;li&gt;&lt;i&gt;I've only got 30 minutes and we need t get through 75 slides.&lt;/i&gt; Or any other large number that will be impossible in the given time. Actually there is no golden rule for how many slides you can present in a given amount of time. If each slide has only a single word or picture then 75 slides in 30 minutes is entirely reasonable. However most times those 75 slides are densely packed with information which is impossible to assimilate in the amount of time allotted. As I've said &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/04/how-to-create-effective-technical.html"&gt;elsewhere&lt;/a&gt; don't pack too much information into your presentation. Instead just focus on the key points and use handouts for detailed stuff.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-4382012210701305490?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/4382012210701305490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/five-things-not-to-say-when-presenting.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4382012210701305490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/4382012210701305490'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/five-things-not-to-say-when-presenting.html' title='Five Things Not To Say When Presenting'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7650071985846097093</id><published>2010-10-23T22:49:00.000+01:00</published><updated>2010-10-23T22:49:02.074+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Why Didn't I Do That?</title><content type='html'>You know how annoying it is when someone does something that is so blindingly obvious in retrospect you ask yourself the question “why didn't I do that”? I'm convinced that the next big thing is not going to be the invention of something radically new but rather a new use of some of the tools we already have. When Tim Berners-Lee invented the world-wide web he didn't create anything new. Internet protocols, mark-up languages and the idea of hypertext already existed. He just took them and put them together in a radically new way. What was the flash of inspiration that led to this and why did he do it and not someone else? After all that is basically the job of a Solution Architect, to apply technology in new and innovative ways that address business problems. So why did Tim Berners-Lee invent the world-wide web and not you, I or any of the companies we work for? Here are some observations thoughts.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Tim  had a clear idea of what he was trying to do. If you look at the  &lt;a href="http://www.nic.funet.fi/index/FUNET/history/internet/w3c/proposal.html"&gt;paper&lt;/a&gt;  Berners-Lee wrote, proposing what became the world-wide web, the  first thing you'll see it has a very clear statement of what it is  he's trying to do. Here is his statement of the problem he's trying  to solve together with an idea for the solution: &lt;i&gt;Many of the  discussions of the future at CERN and the LHC era end with the  questions - “Yes, but how will we ever keep track of such a large  project?” This proposal provides an answer to such questions.  Firstly, it discusses the problem of information access at CERN.  Then, it introduces the idea of linked information systems, and  compares them with less flexible ways of finding information. It  then summarise my short experience with non-linear text systems  known as “hypertext”, describes what CERN needs from such a  system, and what industry may provide. Finally, it suggests steps we  should take to involve ourselves with hypertext now, so that  individually and collectively we may understand what we are  creating. &lt;/i&gt;&lt;span style="font-style: normal;"&gt;Conclusion: Having a  very idea or vision of what it is you are trying do helps focus the  mind wonderfully and also helps to avoid woolly thinking. Even  better is to give yourself a (realistic but aggressive) timescale in  which to come up with a solution.&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Tim  knew how to write a mean architecture document. The paper describing  the idea behind what we now call “the web” (&lt;a href="http://www.nic.funet.fi/index/FUNET/history/internet/w3c/proposal.html"&gt;&lt;i&gt;Information  Management: A Proposal&lt;/i&gt;&lt;/a&gt;) is a masterpiece in understated  simplicity. As well as the clear statement on what the problem is  the paper goes on to describe  the requirements that such an  information management system should have as well as the solution,  captured in a few beautifully simple architecture overview diagrams.  I think this paper is a lesson to all of us in what a good  architectural deliverable should be.&lt;/li&gt;&lt;li&gt;Tim  didn't give up. In his book &lt;i&gt;Weaving the Web&lt;/i&gt; Berners-Lee  describes how he had a couple of abortive attempts at convincing his  superiors of the need for his proposal for an information management  system. Conclusion: Having a great idea is one thing. If you can't  explain that idea to others who, for example have the money to fund  it, then you may as well not have that idea. Sometimes getting your  explanation right takes time and a few attempts. The moral here is  don't give up. Learn from your failures and try again. It will test  your perseverance and the faith you have in your idea but that is  probably what you need to convince yourself it's worth doing.&lt;/li&gt;&lt;li&gt;Tim  prototyped. Part of how Tim convinced people of the worth of what he  was doing was to build a credible prototype of what it was he wanted  to do. Tim was a C programmer and used his  NeXT computer to build a  working system of what it was he wanted to do. He actively  encouraged his colleagues to use his prototype to get them to buy  into his idea. Having a set of users already in place who are  convinced by what you are doing, is one sure fire way of promoting  the worth of your new system.&lt;/li&gt;&lt;li&gt;Tim gave it all away. In may ways this is the most incredible thing of all about what Tim Berners-Lee did with the web; he gave it all away. Imagine if he patented his idea and took a 'cut' which gave him 0.00001¢ every time someone did a search or hit a page (I don't know if this is legally possible, I'm no lawyer, but you get the idea). He would be fabulously rich beyond any of our most wildest dreams! And yet he (and indeed CERN) decided not to go down this path. This has surely got to be one of the all time most altruistic actions that anyone has ever taken.&lt;/li&gt;&lt;/ol&gt;&lt;ol style="margin-left: 0.2in;"&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7650071985846097093?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7650071985846097093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/why-didnt-i-do-that.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7650071985846097093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7650071985846097093'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/why-didnt-i-do-that.html' title='Why Didn&apos;t I Do That?'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7744987747576211255</id><published>2010-10-15T03:07:00.002+01:00</published><updated>2010-10-15T03:37:32.541+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='creativity'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Architecting Out of the Box</title><content type='html'>I got this from a blog by &lt;a href="http://sethgodin.typepad.com/"&gt;Seth Godin&lt;/a&gt;. He was thinking about it in respect of marketers but it so applies to what we do as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_5XxDXgH4TQI/TLNvpUzs4xI/AAAAAAAAAD4/yFiXWHUFJIk/s1600/Box.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://4.bp.blogspot.com/_5XxDXgH4TQI/TLNvpUzs4xI/AAAAAAAAAD4/yFiXWHUFJIk/s400/Box.jpg" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Most of the time, we (IT architects or anyone else) think of our job as a set of tasks that take place in a box. We take inputs from upstream, add some value(hopefully) and create some outputs that we send downstream.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;It turns out, though (according to Seth), that if we go upstream and alter the stuff that comes to us, it's a lot easier to do great work. And if we go downstream and teach people how to work with what we created, the final (work) product is better as well.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Seth gives as an example how a medical doctor can consider her work in the box of the examining room. But if she figures out how to get people to quit smoking before they come in, her results are better. If she figures out how to get people to take their pills after they leave, same thing.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;As Seth says “the challenge lies in spending a lot of time and money on the upstream and downstream parts of the work, instead of always assuming that your [box] is just what happens inside your cubicle, or as a direct result of your actions”.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So here's how I would translate this for the humble IT architect:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Visit your business sponsors by walking over to their desk (or calling them up on the phone if they happen to be on a different continent). Talk to them. Ask them what is troubling them today and see how you can help.&lt;/li&gt;&lt;li&gt;Take a long hard look at those requirements and make a point to go back to the person that wrote them if you don't understand them. Don't just assume stuff.&lt;/li&gt;&lt;li&gt;One persons architecture is another ones requirements. What you create will be used by designers and coders to build systems from. Make sure they really understand what you want. Go and visit them (possibly virtually) to see what makes them tick.&lt;/li&gt;&lt;li&gt;Here's a really revolutionary idea. Write some code to a) convince youreself you can remember how to do it and b) show your downstream designers/implementers that you know what you are doing and have some empathy.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Most of what we do all day, intentionally or not, is aimed at keeping us in our boxes. Buck the trend and make an effort to get out of that box and make a difference. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7744987747576211255?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7744987747576211255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/architecting-out-of-box.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7744987747576211255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7744987747576211255'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/architecting-out-of-box.html' title='Architecting Out of the Box'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5XxDXgH4TQI/TLNvpUzs4xI/AAAAAAAAAD4/yFiXWHUFJIk/s72-c/Box.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1414800659886844159</id><published>2010-10-11T20:24:00.000+01:00</published><updated>2010-10-11T20:24:02.906+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Challenging What Architects Do</title><content type='html'>For most of this year I've been fortunate (sic) enough to travel around several countries (and indeed continents) delivering a series of architecture workshops to a client. These workshops aim to teach, through the use of instructor led case studies, best practice approaches to building solution architectures. The workshops take a holistic approach to developing architecture by ensuring both the application as well as infrastructure aspects are considered together and both the functional and non-functional requirements are taken into account.&lt;br /&gt;&lt;br /&gt;An enjoyable side-effect of these workshops is I get to meet lots of different people who like to challenge the approach and test my understanding (I sometimes think I'm learning more than the workshop participants). Here's one such challenge (paraphrased) I received recently: “The problem with architects and the work products they produce (for example models built using the Unified Modeling Language) is that the work products become an end in their own right and we can easily lose track of the fact that actually what we want to build is a system with running code on real hardware”. The clear implications behind this challenge could be described via three architecture anti-patterns:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Antipattern:&lt;/b&gt; Architecture Overkill. &lt;b&gt;Symptoms:&lt;/b&gt; Architects create work that no one understands or cares about. Multiple artefacts with overlapping content get created that no one actually reads. They are too large, too complex and may even be delivered too late.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Antipattern:&lt;/b&gt; Ivory Tower Architecture. &lt;b&gt;Symptoms:&lt;/b&gt; Architects are out of touch with real-world technical aspects. Instead they just sit in their ivory-towers making their pronouncements (which most of the time no one listens to).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Antipattern:&lt;/b&gt; Work Creation. &lt;b&gt;Symptoms:&lt;/b&gt; The role of the architect becomes self-fulfilling. They create work products which only they understand and therefore need more architects to help create these work products.&lt;/li&gt;&lt;/ul&gt;Here's my response:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Any architectural work product needs to have either an up-stream (e.g. to the business) or down-stream (e.g. to the implementers) justification. Each of these groups of stakeholders needs to be able to recognise how the architecture, as encompassed in the work products, addresses their particular concerns otherwise the work product really is only for its own sake. There are other stakeholders who will have interests or concerns in the architecture but I just focus on these to illustrate my point.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The role of the architect needs to be clearly defined and work produced around that role. The role may change as business needs etc evolve but the work created should be in tune with that role and ultimately fulfil the needs of the business. This does not, of course, mean that part of what architects&amp;nbsp; do is research new technology or try out new ideas. Indeed if they don't do this the next point will be tricky to fulfil.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;One of the difficulties with the role of the architect is that it can mean the architect easily becomes out of touch with the latest trends etc in programming. This can be caused by a number of things including: architects are paid too much to do programming, architects are too senior to do programming, architects are too busy to do programming etc. This particular problem is particularly endemic in many services organisations where architects may be charged out at premium rates and where the role of programming is seen as almost too “menial”. What to do? It's vital that this is not the case. There must always be time allowed in any software architects work day to stay in touch with the stuff that gives him his reason for being.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1414800659886844159?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1414800659886844159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/challenging-what-architects-do.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1414800659886844159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1414800659886844159'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/challenging-what-architects-do.html' title='Challenging What Architects Do'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1602817550156891777</id><published>2010-10-01T02:37:00.002+01:00</published><updated>2010-12-04T09:34:22.414Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='enterprisearchitecture'/><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='emergence'/><title type='text'>Enterprise Architecture is Dead. Long Live Interprise Architecture</title><content type='html'>ZapThink have recently been drip-feeding a series of ZapFlashes predicting the end of Enterprise Architecture (possibly allowing them to derive some further consulting/education business by creating a little fear, uncertainty and doubt). Here are some of their predictions and my thoughts. Comments welcome. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.zapthink.com/2010/05/07/the-secret-to-twenty-first-century-software-innovation/"&gt;The secret to 21st century software innovation&lt;/a&gt;. Is, according to ZapThink, in harnessing the power of complex systems (i.e. rather than just enterprise-wide systems). A complex system is one that shows some form of emergent behaviour where the properties of the system as a whole exhibit behaviour that the individual components do not. Most people don't get this confusing systems that are just complicated with ones that are complex. For me this is spot on. As the enterprise morphs into basically the whole of the internet traditional governance models breakdown. The boundaries of the enterprise can no longer be nicely defined and who is in the enterprise and who is not becomes harder to pin down. People who get this and who can successfully harness the “interprise” (my new word of the month) by using the positive effects of social networking etc will win out over the next few years. Of course this involves huge risks not least of which around how will enterprises keep control of their data and intellectual capital.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zapthink.com/2010/05/31/rip-enterprise-software/"&gt;RIP enterprise software&lt;/a&gt;. Enterprise software as provided by the large package providers is seen as large and inflexible and not delivering on the benefits promised by SOA. Companies are finding themselves encumbered with expensive and hard to maintain software they can't “bend” to do what they want. ZapThink's take is that whilst enterprise software may have failed SOA has also failed to deliver on its promise of providing flexible business processes that can be quickly adopted to new needs. My take is that like everything else in our industry nothing is given chance to bed in before the next wave comes and sweeps everyone along with it. Many clients I see are still grappling with getting an effective process in place for developing traditional systems let alone service-based ones and definitely cannot deal with complex systems properly.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zapthink.com/2010/09/10/the-beginning-of-the-end-for-enterprise-architecture-frameworks/"&gt;The beginning of the end for Enterprise Architecture frameworks&lt;/a&gt;. Architecture frameworks (especially enterprise ones like Zachman and DoDAF) are counterproductive to developing an effective EA strategy. These frameworks are inflexible, sometimes encouraging what ZapThink refer to as &lt;a href="http://www.zapthink.com/2010/06/15/the-dangers-of-checklist-architecture/"&gt;checklist architecture&lt;/a&gt;. Checklist architecture focuses on achieving goals laid down by the architecture framework rather than the changing needs of the business. True but having no framework at all leads to even greater chaos in my experience. A framework is a structure which is meant to contain relevant guidance and work products to deliver real-world solutions. Frameworks that become too theoretical are always doomed to fail as they should. I hope &lt;a href="http://www.ibm.com/developerworks/rational/library/08/0108_cooks-cripps-spaas/"&gt;this&lt;/a&gt; forms the basis of something more relevant to the real world.&lt;/li&gt;&lt;/ul&gt;So how would I characterise “interprise architecture”?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Interprise architecture recognises that it is not enterprise architecture that is dead but trying to constrain architecture by the bounds of the enterprise that is no longer achievable. The 'architecture' bit still applies, but not the 'enterprise' bit.&lt;/li&gt;&lt;li&gt;Governance models need to recognise that this extended enterprise includes people and other systems that are not controlled by the IT department (people using social networking software who will periodically 'overlap' with the enterprises systems).&lt;/li&gt;&lt;li&gt;The 'architecture' bit needs to take into account the fact that systems are complex (in the emergent sense of the word) and it's not always possible to tie down the requirements in a nice orderly way. Indeed fully defining the requirements may be counter-productive and not allow emergent behaviour. Processes for developing such complex systems need to take this into account.&lt;/li&gt;&lt;/ol&gt;To be sure this is not a complete list. This idea is not yet fully-formed in my own mind and needs a bit more time to 'emerge' properly. Watch this space as they say.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1602817550156891777?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1602817550156891777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/enterprise-architecture-is-dead-long.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1602817550156891777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1602817550156891777'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/10/enterprise-architecture-is-dead-long.html' title='Enterprise Architecture is Dead. Long Live Interprise Architecture'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-5836647204949575193</id><published>2010-09-27T10:47:00.000+01:00</published><updated>2010-09-27T10:47:57.769+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='emergence'/><title type='text'>Social Networking and All That Jazz</title><content type='html'>I was recently asked what I thought the impact of Web 2.0 and social networking has had or is about to have, on our profession. Here is my take:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The current generation of students going through secondary school and university (that will be hitting the employment market over the next few years) have spent most of their formative years using Web 2.0. For these people instant messaging, having huge groups of “friends” and organising events online is as second nature as sending emails and using computers to write documents is to us. How will this change the way we do our jobs and software and services companies do business?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Instant and informal networks (via Twitter, Facebook etc) will set up, share information and disappear again. This will allow vendors and customers to work together in new ways and more quickly than ever before.D&lt;/li&gt;&lt;li&gt;Devices like advanced smart phones and tablets which can be carried anywhere and are always connected will speed up even more how quickly information gets disseminated and used.&lt;/li&gt;&lt;li&gt;Whilst the current generation berates the upcoming one for the time wasted sending pointless messages to friends and creating blog entries hardly anyone reads they at least are doing something different and liberating, creating as opposed to simply consuming content. So what if 99.99% of that content is rubbish? 0.01 or even 0.001 amongst a population of several billion is still a lot of potentially good and innovative thoughts and ideas. The challenge is of course finding the good stuff.&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Email as an effective communication aid is coming to its natural end. The new generation who have grown up on blogs, Twitter and Facebook will laugh at the amount of time we spend sweating over mountains of email. New tools will need to be available that provide effective ways of quickly and accurately searching the content that is published via Web 2.0 to find the good stuff (and also to detect early potential good stuff).&lt;/li&gt;&lt;li&gt;More 20th century content distributors (newspapers, TV companies, book and magazine publishers) will go the way of the music industry if they cannot find a new business model to earn money. This is both an opportunity (we can help them create the new opportunities) and a threat (loss of a large customer base if they go under) to IT professionals and service companies.&lt;/li&gt;&lt;li&gt;The upcoming generation will not have loyalties to their employers but only to the network they happen to be a part of at the time. This is the natural progression from outsourcing of labour, destruction of company pension schemes and everyone being treated as freelancers. Whilst this has been hard for the people who have gone through that shift, for the new workers in their late teens and early 20's they will know nothing else and forge new relationships and ways of working using the new tools at their disposal. Employee turnover and the rate at which people change jobs will increase 10 fold according to some pundits (google 'Shift Happens' for some examples).&lt;/li&gt;&lt;li&gt;Formal classroom type teaching is essentially dead. New devices with small cameras will allow virtual classrooms to spring up anywhere. Plus the speed with which information changes will mean material will be out of date anyway by the time a formal course is prepared. This coupled with further education institutions having to keep raising fees to support increasing numbers of students will lead to a collapse in the traditional ways of delivering learning.&lt;/li&gt;&lt;li&gt;The real value of networks comes from sharing information between as diverse a group of people as possible. Given that companies will be relying less on permanent employees and more on freelancers these networks will increasingly use the internet. This provides some interesting challenges around security of information and managing intellectual capital. The domain of enterprise architecture has therefore just increased exponentially as the enterprise has just become the internet. How will companies manage and govern a network most of which they have no or little control over?&lt;/li&gt;&lt;li&gt;The new models for distributing software and services (e.g. application stores, cloud providers) as well as existing ones such as open source will mark the end of the traditional package and product software vendors. Apple overtook Microsoft earlier this year in terms of size as measured by market capitalisation and is now second only to Exxon. Much of this revenue was, I suspect, driven by the innovative ways Apple have devised to create and distribute software (i.e. third parties, sometimes individuals create it and Apple distribute it through their App store).&lt;/li&gt;&lt;/ul&gt;For two good opposing views on what the internet is doing to our brains read the latest books by Clay Shirky and Nicholas Carr.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-5836647204949575193?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/5836647204949575193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/social-networking-and-all-that-jazz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5836647204949575193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/5836647204949575193'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/social-networking-and-all-that-jazz.html' title='Social Networking and All That Jazz'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-373904826441496466</id><published>2010-09-20T16:23:00.001+01:00</published><updated>2010-09-20T16:23:58.743+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versatilist'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Six Non-IT Books for IT Architects</title><content type='html'>There are now several myriad books out there on the topic of software architecture, including &lt;a href="http://www.processofsoftwarearchitecting.com/"&gt;this one&lt;/a&gt; I have contributed to. There are other skills an architect needs to do their job which are not just to be found in IT books however. Here are six books which have helped me in my job together with a few reasons why I think they are useful:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.ideo.com/cbd"&gt;Change by Design&lt;/a&gt; by Tim Brown. Tim Brown is the CEO of IDEO a design company based in Palo Alto, California. Introduces the concepts of "design thinking" that can be applied to any problem and shows how empathy, play, storytelling and prototyping can all be bought together in coming up with new and innovative designs. Top tip: Deploy interdisciplinary teams of multi-talented people (i.e. true &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/03/v-is-for-versatilist.html"&gt;versatilists&lt;/a&gt;) to solve hard design problems. Even if you don't get the book at least visit the link I've given to view the wonderful mid map.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.presentationzen.com/presentationzen/2007/07/presentation-ze.html"&gt;Presentation Zen&lt;/a&gt; by Garr Reynolds. Garr is the master of giving advice on how to create simple, clear and relevant presentations. Here he applies the zen principles of simplicity that will change how you think about creating presentations using PowerPoint or Keynote. Top tip: Picture superiority effect. Pictures are remembered better than words. Humans are hardwired for using images to communicate. Go visual wherever and whenever you can.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.danpink.com/whole-new-mind"&gt;A Whole New Mind&lt;/a&gt; by Dan Pink. Dan describe how, if we are to survive in the 21st century world of work, we must make more use of the left side, the creative side, of our brain rather than the traditional right (logical thinking) side. Top tip: Use stories to help illustrate your ideas. Stories represent a pathway to understanding that doesn't run through the left side of the brain.&lt;/li&gt;&lt;li&gt;&lt;a href="http://sinet.ca/patterns/index.php?title=Notes_on_the_Synthesis_of_Form"&gt;Notes on the Synthesis of Form &lt;/a&gt;by Christopher Alexander. Alexander recognises that problems come with multiple, poorly understood requirements that  interact with each other, creating conflicts and contradictions. Something we in IT have known for years. This book describes an approach for dealing with often multiple conflicting requirements to come up with the "best fit" solution. Top tip: It is difficult to specify a complete set of requirements that need to  be met to achieve a "best fit".  A practical approach is to define 'good  fit' as the absence of 'misfits', since these are usually what makes the  problem obvious and can be ascertained through inspection of prior  designs.  Although designers may argue over the importance of a  particular misfit, they are less likely to disagree on whether the  misfit exists. &lt;/li&gt;&lt;li&gt;&lt;a href="http://gapingvoid.com/books/"&gt;Ignore Everybody&lt;/a&gt; by Hugh MacLeod. Hugh is an artist that makes a living creating art on the back of business cards, selling wine and running an extremely insightful web site on applying creativity to help you improve your job as well as your life. Top tip: Don't try to stand out from the crowd, avoid crowds altogether.&amp;nbsp; &lt;/li&gt;&lt;li&gt;&lt;a href="http://carminegallo.com/stevejobsbook/"&gt;The Presentation Secrets of Steve Jobs&lt;/a&gt; by Carmine Gallo. Great book with lots of example on how Steve Jobs creates, prepares for and delivers his presentations to introduce new Apple gadgetry on the world. Top tip from book: Use plain English and photographs rather than techno mumbo-jumbo and slides densely packed with indecipherable text and bullet points.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-373904826441496466?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/373904826441496466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/five-non-it-books-for-it-architects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/373904826441496466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/373904826441496466'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/five-non-it-books-for-it-architects.html' title='Six Non-IT Books for IT Architects'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-7912799515873481957</id><published>2010-09-16T08:14:00.001+01:00</published><updated>2010-12-20T13:56:22.507Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecturethinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='nonfunctionalrequirements'/><title type='text'>When Systems Fail</title><content type='html'>This week I was a direct victim of a systems failure that set me thinking about how even mundane activities that we have been doing for several tens, if not hundreds, of years, like checking into a hotel&amp;nbsp; in this case, rely on systems that we take for granted and which, when they fail, throw everything into complete chaos.&lt;br /&gt;&lt;br /&gt;It's a long and not particularly interesting story but in summary I checked into one of the large chain&amp;nbsp; hotels, which I use a lot, only to find when I opened my room door that the room was in a state of complete chaos and had clearly not been visited by housekeeping that day. On trying to change to another room I was told the system had been down since 4am (it was now 8pm) that morning and the staff could not tell what state rooms were in. Clearly not a great state of affairs and not great for client relations (there were a lot of grumpy people queueing in reception, some of whom I would guess would not be going back to that hotel). So what would an architect of such a system do to mitigate against such a system failure?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I don't profess to know too much about how hotel management systems work and whether they are provided centrally or locally however I would have thought one of the basic non-functional characteristics of such systems would have been a less than one hour recovery following a system failure (not 16 hours and counting). &lt;b&gt;Learning point:&lt;/b&gt; Clarify your availability non-functional requirements (NFRs) and realise them in the relevant parts of the system. Maybe not all components need to be highly available (checking in a customer maybe more important then checking her out for example) but those that are need to be suitable 'placed' on high-availability platforms.&lt;/li&gt;&lt;li&gt;There was a clear and apparent need for a disaster recovery plan that involved more than the staff apologising to customers. &lt;b&gt;Learning point:&lt;/b&gt; Have a disaster recovery policy and test it regularly.&lt;/li&gt;&lt;li&gt;A system is about more than just the technology; the people that use the system are a part of it as well. &lt;b&gt;Learning point:&lt;/b&gt; The architecture of the system should include how the people that use that system interact with it during both normal and abnormal operating conditions.&lt;/li&gt;&lt;li&gt;Often NFRs are not quantified in terms of their business value (or cost). When a problem occurs is the impact to the business (in terms of lost revenue, irate customers who won't come back etc) really understood? &lt;b&gt;Learning point:&lt;/b&gt; Risk associated with not meeting NFRs needs to be quantified so the right amount of engineering can be deployed to address problems that may occur when NFRs are not met.&lt;/li&gt;&lt;/ol&gt;Formal approaches to handling non-functional requirements in a systems architecture are a little thin on the ground. One approach suggested by the &lt;a href="http://www.sei.cmu.edu/"&gt;Software Engineering Institute&lt;/a&gt; is through the use of &lt;i&gt;&lt;a href="http://www.sei.cmu.edu/reports/03tr004.pdf"&gt;architectural tactics&lt;/a&gt;&lt;/i&gt;. An architectural tactic is a way of satisfying a desired system quality (such as performance) by considering the parameters involved (for example desired execution time), applying one or more standard approaches or patterns (such as scheduling theory or queuing theory) to address potential combinations of parameters and arriving at a reasoned (as opposed to random) architectural decision. Put another way an architectural tactic is a way of putting a bit of “science” behind the sometime arbitrary approach to making architectural decisions around satisfying non-functional requirements.&lt;br /&gt;&lt;br /&gt;I think this is a field that is ripe for more work with some practical examples required. Maybe a future hotel management system that adopts such an approach to during its development will allow a smoother check-in process as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-7912799515873481957?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/7912799515873481957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/when-systems-fail.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7912799515873481957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/7912799515873481957'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/when-systems-fail.html' title='When Systems Fail'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-3572138312303229223</id><published>2010-09-13T22:55:00.000+01:00</published><updated>2010-09-13T22:55:52.759+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>New Dog, Old Tricks</title><content type='html'>I can't believe this but today I have observed no less than three people using the latest wonder-gadget from Apple (the &lt;a href="http://store.apple.com/uk/browse/home/shop_ipad/family/ipad?afid=p202%7CGOUKE338080457&amp;amp;cid=OAS-EMEA-KWG-+UK_iPad-UK"&gt;iPad&lt;/a&gt;) to play solitaire, Tetris and some other game which seemed to involve nothing more than poking the screen at moving shapes! Having just bought my own iPad and being convinced it conforms to Aurthur C. Clarke's &lt;a href="http://en.wikipedia.org/wiki/Clarke%27s_three_laws"&gt;third law&lt;/a&gt; (any sufficiently advanced technology is indistinguishable from magic) I am aghast that such a technological wonder is being used for such mind numbing activities; just dust off your &lt;a href="http://en.wikipedia.org/wiki/ZX_Spectrum"&gt;ZX Spectrums&lt;/a&gt; guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-3572138312303229223?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/3572138312303229223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/new-dog-old-tricks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3572138312303229223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/3572138312303229223'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/09/new-dog-old-tricks.html' title='New Dog, Old Tricks'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-511065654793556693</id><published>2010-08-30T11:04:00.001+01:00</published><updated>2010-09-02T05:17:44.151+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>The Three C's of IT Architects</title><content type='html'>This is a completely unscientific observation but over the years of being an architect I have observed the following characteristics in people that claim to be members of this profession.&amp;nbsp; I refer to these as the three C's of being an IT architect. Some people have only one of these but most have a mix of all three, with maybe one being dominant. The three C's are:&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Creatives&lt;/b&gt; – These are the ideas people, that are keen to do new stuff. They are the people that build the solutions that address the business requirements. They have an intimate knowledge of technology (in their particular area of interest or concern) and want to use that technology. If you don't have these people in your project/team/organisation then nothing will actually get done. The downside of having too much of this attribute is that eventually you have to stop creating and ship something so you need to know when to stop.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Consumers&lt;/b&gt; – These are the people that use what the creatives create. Whilst they may not create anything new this type of architect is not without merit. They often combine what others have done in new and innovative ways. We sometimes refer to this activity as reuse, one of the Holy Grails of IT so it is not to be underestimated. If you don't have these people in your project/team/organisation then chances are the ideas from the creatives will not get fully realised. The downside of having too much of this attribute is that there is a limit to what you can build out of reusing stuff and eventually someone has to come up with some new ideas.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Connectors&lt;/b&gt; – These are the people that don't create or reuse but know people that can do these things and join the two together. Again this is not to be an underestimated skill. After all if a seller cannot find a buyer what's the point! If you don't have these people in your project/team/organisation then the two previous types won't find each other. The downside of having too much of this attribute is that you ain't going to do anything if all you do is push ideas of others around without creating or reusing things.&lt;/li&gt;&lt;/ul&gt;From my observations I reckon a ratio of Creatives to Consumers to Connectors needs to be something like 4:2:1.&lt;br /&gt;Incidentally, my guess is that these actually apply to other professions as well but I have even less scientific evidence about those.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-511065654793556693?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/511065654793556693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/this-is-completely-unscientific.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/511065654793556693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/511065654793556693'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/this-is-completely-unscientific.html' title='The Three C&apos;s of IT Architects'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-114420714323518497</id><published>2010-08-27T22:04:00.000+01:00</published><updated>2010-08-27T22:04:39.487+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='method'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>10 Things I (Should Have) Learned in (IT) Architecture School</title><content type='html'>Inspired by &lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?tid=11266&amp;amp;ttype=2"&gt;this&lt;/a&gt; book I discovered in the &lt;a class="zem_slink" href="http://www.tate.org.uk/modern" rel="homepage nofollow" title="Tate Modern"&gt;Tate Modern&lt;/a&gt; book shop this week I don't (yet) have 101 things I can claim I should have learned in IT Architecture School but this would certainly be my 10 things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The best architectures are full of patterns. This from &lt;a href="http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Main"&gt;Grady Booch&lt;/a&gt;. Whilst there is an increasing&amp;nbsp; need to be innovative in the architectures we create we also need to learn from what has gone before. Basing architectures on well-tried and tested patterns is one way of doing this. &lt;/li&gt;&lt;li&gt; Projects that develop IT systems rarely fail for technical reasons. In &lt;a href="http://www.bcs.org/server.php?show=conWebDoc.1167"&gt;this&lt;/a&gt; report the reasons for IT project failures are cited and practically all of them are because of human (communication) failures rather than real technical challenges. Learning point: effective IT architects need to have soft (people skills) as well as hard (technical skills). See my thoughts on this &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/03/why-do-complex-systems-projects-still.html"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The best architecture documentation contains multiple &lt;a href="http://en.wikipedia.org/wiki/View_model"&gt;viewpoints&lt;/a&gt;. There is no single viewpoint that adequately describes an architecture. Canny architects know this and use viewpoint frameworks to organise and categorise these various viewpoints. Here's a &lt;a href="http://www.ibm.com/developerworks/rational/library/08/0108_cooks-cripps-spaas/"&gt;paper&lt;/a&gt; myself and some IBM colleagues wrote a while ago describing one such viewpoint framework. You can also find out much more about &lt;a href="http://www.amazon.co.uk/Process-Software-Architecting-Peter-Eeles/dp/0321357485"&gt;this &lt;/a&gt;in the book I wrote with Peter Eeles last year.&lt;/li&gt;&lt;li&gt;All architecture is design but not all design is architecture. Also from Grady. This is a tricky one and alludes to the thorny issue of "what is architecture" and "what is design". The point is that the best practice of design (separation of concerns, design by contract, identification of clear component responsibilities etc) is also the practice of good architecture how architectures focus is on the significant elements that drive the overall shape of the system under development. For more on this see &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/07/on-thinking-architecturally.html"&gt;here&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;A project without a system context diagram is doomed to fail. Quite simply the system context bounds the system (or systems) under development and says what is in scope and what is out. If you don't do this early you will spend endless hours later on arguing about this. Draw a system context early, get it agreed and print it out at least A2 size and pin it in highly visible places. See &lt;a href="http://softwarearchitecturezen.blogspot.com/2009/08/two-diagrams-all-architects-need.html"&gt;here&lt;/a&gt; for more discussion on this.&lt;/li&gt;&lt;li&gt;Complex systems may be complicated but complicated systems are not necessarily complex. For more discussion on this topic see my blog entry &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/07/complex-systems-versus-complicated.html"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Use architectural blueprints for building systems but use architectural drawings for communicating about systems. A blueprint is a formal specification of what is to be. This is best created using a formal modeling language such as &lt;a href="http://www.uml.org/"&gt;UML&lt;/a&gt; or &lt;a href="http://www.archimate.org/"&gt;Archimate&lt;/a&gt;. As well as this we also need to be able to communicate our architectures to none or at least semi-literate IT people (often the people who hold the purse). Such communications are better done using drawings, not created using formal modeling tools but done with drawing tools. It's worth knowing the difference and when to use each.&lt;/li&gt;&lt;li&gt;Make the process fit the project, not the other way around. I'm all for having a 'proper' software delivery life-cycle (SDLC) but the first thing I do when deploying one on a project is customise it to my own purposes. In software development as in gentleman's suits there is no “one size fits all”. Just like you might think you can pick up a suit at Marks and Spencers that perfectly fits you can't. You also cannot take an off-the-shelf SDLC that perfectly fits your project. Make sure you customise it so it does fit.&lt;/li&gt;&lt;li&gt;Success causes more problems than failure.This comes from Clay Shirky's new book &lt;a href="http://www.amazon.co.uk/Cognitive-Surplus-Creativity-Generosity-Connected/dp/1846142172"&gt;&lt;i&gt;Cognitive Surplus&lt;/i&gt;&lt;/a&gt;. See &lt;a href="http://www.ted.com/talks/clay_shirky_how_cognitive_surplus_will_change_the_world.html"&gt;this&lt;/a&gt; link at TED for Clay's presentation on this topic. You should also check &lt;a href="http://www.sciencedaily.com/releases/2010/08/100823162322.htm"&gt;this&lt;/a&gt; out to see why organisations learn more from failure than success. The point here is that you can analyse a problem to death and not move forward until you think you have covered every base but you will always find some problem or another you didn't expect. Although you might (initially) have to address more problems by not doing too much up front analysis in the long run you are probably going to be better off. Shipping early and benefitting from real user experience will inevitably mean you have more problems but you will learn more from these than trying to build the 'perfect' solution but running the risk of never sipping anything.&lt;/li&gt;&lt;li&gt;Knowing how to present an architecture is as important as knowing how to create one. Although this is last, it's probably the most important lesson you will learn. Producing good presentations that describe an architecture, that are targeted appropriately at stakeholders, is probably as important as the architecture itself. For more on this see &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/04/how-to-create-effective-technical.html"&gt;here&lt;/a&gt;. &lt;/li&gt;&lt;/ol&gt;&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=38424d8a-1ffa-4bd3-a26e-7f12a7bf3a7d" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-114420714323518497?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/114420714323518497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/10-things-i-should-have-learned-in-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/114420714323518497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/114420714323518497'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/10-things-i-should-have-learned-in-it.html' title='10 Things I (Should Have) Learned in (IT) Architecture School'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-8883317445147302056</id><published>2010-08-18T11:22:00.000+01:00</published><updated>2010-08-18T11:22:04.614+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Default Architecture</title><content type='html'>One of the attributes that many (if not all) complex systems have is the ability to change (customise) them in controlled ways. Indeed this, by definition, is why some systems are complex (that is exhibit&amp;nbsp; emergent behaviour) because sometimes the users of those systems select options or make choices that enable unexpected behaviour to occur. Giving users such choices clearly has a number of implications on the architecture of a system.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Users have to make a choice, no choice is actually a choice itself as it means they are choosing the default.&lt;/li&gt;&lt;li&gt;Making systems customisable assumes users have the will (and the time) to decide which options they want to change. Many times they don't so the default becomes very important as it will dictate how the users actually use the system, possibly forever.&lt;/li&gt;&lt;li&gt;The more options that are built into a system the more difficult it becomes to test each potential combination of those options. Indeed there comes a point at which it becomes impossible to test every combination (at least in a reasonable amount of time), hence the importance of beta software (let the users do the testing). &lt;/li&gt;&lt;/ol&gt;In his blog entry &lt;a href="http://www.kk.org/thetechnium/archives/2009/06/triumph_of_the.php"&gt;Triumph of the Default&lt;/a&gt; Kevin Kelly points out how “the influence of a default is so powerful that one single default can act as a very tiny nudge that can sway extremely large and complex networks”. The oft quoted example of how defaults can influence behaviour is that of organ donation. If you make the donation of organs upon death automatically an "opt out" choice (it happens unless you refuse beforehand) versus "opt in" (it does not happen unless you sign up). A opt out donor system greatly increases the number of organs donated.&lt;br /&gt;&lt;br /&gt;For complex systems then, the default architecture of the system becomes very important. The choices the architect makes on behalf of the users of that system will not only dictate how the users will actually use the system but may also influence their behaviour (in both positive and negative ways). Defining the defaults is as important an architectural decision as to what technologies should be used and sufficient time should always be planned in to allow such decisions to be made in a sensible way. The system architecture that results can profoundly affect how that system will be used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-8883317445147302056?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/8883317445147302056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/default-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8883317445147302056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/8883317445147302056'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/default-architecture.html' title='Default Architecture'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1421306884841378881</id><published>2010-08-05T21:57:00.000+01:00</published><updated>2010-08-05T21:57:40.025+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='method'/><title type='text'>Evolutionary Systems Development Process</title><content type='html'>As I'm now into my second year I reckon I can become more experimental in my blogs. This entry is therefore completely off the scale and will either not go any further or be the start of something much bigger. Comments suggesting which it is are welcome.&lt;br /&gt;&lt;br /&gt;If we want to be able to build real complex systems (see &lt;a href="http://softwarearchitecturezen.blogspot.com/2010/07/complex-systems-versus-complicated.html"&gt;previous entry&lt;/a&gt; for what these are) what might we do differently to ensure we allow truly emergent properties to appear? Is there a development process that we could adopt that both ensured something was delivered in a timely fashion but that also allowed sufficient 'flex' such that emergent behaviour was not prevented from happening? In other words is it possible to allow systems to evolve in a managed way where those properties that we value are allowed to grow and thrive but those that are of no use can be prevented from appearing or stopped early on?&lt;br /&gt;&lt;br /&gt;Here are some properties I think any such a development process (an evolutionary systems development process) should have if we are to build truly complex systems&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The process needs to be independent of any project. Normally we use processes to derive some kind of work breakdown structure which is used to plan the project that will deliver the system. In other words there is a well defined start and end point with clear steps stating who does what by when in between. However for a complex system there is by definition no stopping point; just a number of evolutions where each introduces new (and possible unpredictable) behaviour.&lt;/li&gt;&lt;li&gt;The process should be driven not so much by what users want but by what users do. Most processes start with a list of requirements, possibly expressed as use cases, which describe scenarios for how the system will be used. The problem with this approach is that use cases only describe what a user can envisage doing with the system and will not capture what they actually end up doing with the system. In other words the system is deemed to be 'complete' once all the use cases have been realised. However what if the act of delivering the system itself results in new use cases emerging. Ones that were not planned for? How do they get realised?&lt;/li&gt;&lt;li&gt;The process must be both flexible enough to allow users to experiment and envisage doing new things whilst at the same time being robust enough not to allow negative emergent behaviour that will prevent any system being delivered or lead to the system deteriorating over time.&lt;/li&gt;&lt;li&gt;If new behaviour is to be adopted this must be of overall benefit to the majority and must still meet (a possibly changed) set of business objectives. The process must therefore allow for some kind of voting system where the majorities behaviour is allowed to dominate. The trick is not allow new and innovative behaviour to be crushed early on.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The underlying rules that control how the systems responds to external stimuli must themselves be easily adaptable. The process must therefore treat as peers the rules that govern (allowable) behaviour together with the description of the behaviour itself. Rules set some kind of constraint on what is allowable and not allowable by the system.&lt;/li&gt;&lt;/ol&gt;Of course not all systems that we build will or should be complex ones. As noted previously safety-critical systems need to behave in entirely predictable ways and users should not be allowed to change the behaviour of these where lives could be put at risk. So what type of systems might benefit from an evolutionary approach to development?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Social networking systems where the users are intimately bound up with the system itself.&lt;/li&gt;&lt;li&gt;Commerce systems where the buying behaviour of users might change how and when certain products are sold and at what price.&lt;/li&gt;&lt;li&gt;Financial systems where money markets may affect what users do and how they respond.&lt;/li&gt;&lt;li&gt;Government systems where responses to new legislation or the behaviour of citizens needs fast responses.&lt;/li&gt;&lt;li&gt;Other, you decide?&lt;/li&gt;&lt;/ol&gt;My next step is to think about what the elements (process phases, work products etc) of an evolutionary systems development process might be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-1421306884841378881?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/1421306884841378881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/evolutionary-systems-development.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1421306884841378881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/1421306884841378881'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/08/evolutionary-systems-development.html' title='Evolutionary Systems Development Process'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-955244001393754642</id><published>2010-07-28T09:00:00.004+01:00</published><updated>2010-07-28T09:00:00.195+01:00</updated><title type='text'>One Year Old Today</title><content type='html'>Hey I'm one year old today, well my blog is. Here's a &lt;a href="http://www.wordle.net/"&gt;wordle&lt;/a&gt; image of what I've been talking about after the last year. Interesting that 'design' is bigger (i.e. discussed more) than 'architecture'.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5XxDXgH4TQI/TDW2DF-5flI/AAAAAAAAADA/lXGYLKAGXpQ/s1600/Wordle.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="418" src="http://1.bp.blogspot.com/_5XxDXgH4TQI/TDW2DF-5flI/AAAAAAAAADA/lXGYLKAGXpQ/s640/Wordle.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3404576921963061261-955244001393754642?l=softwarearchitecturezen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarearchitecturezen.blogspot.com/feeds/955244001393754642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/07/one-year-old-today.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/955244001393754642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3404576921963061261/posts/default/955244001393754642'/><link rel='alternate' type='text/html' href='http://softwarearchitecturezen.blogspot.com/2010/07/one-year-old-today.html' title='One Year Old Today'/><author><name>Peter Cripps</name><uri>http://www.blogger.com/profile/05710807540870986490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_5XxDXgH4TQI/Sm8y3UcL0uI/AAAAAAAAAAg/Ik4vQna3Ug0/S220/IMG_3059.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5XxDXgH4TQI/TDW2DF-5flI/AAAAAAAAADA/lXGYLKAGXpQ/s72-c/Wordle.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3404576921963061261.post-1342011161529503580</id><published>2010-07-25T22:32:00.000+01:00</published><updated>2010-07-25T22:32:19.619+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complexsystems'/><category scheme='http://www.blogger.com/atom/ns#' term='systemsthinking'/><category scheme='http://www.blogger.com/atom/ns#' term='quote'/><category scheme='http://www.blogger.com/atom/ns#' term='emergence'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Complex Systems versus Complicated Systems</title><content type='html'>&lt;i&gt;Controlling complexity is the essence of computer programming.&lt;/i&gt;&lt;br /&gt;&lt;a href="http://en.wikiquote.org/wiki/Brian_Kernighan"&gt;Brian Kernighan&lt;/a&gt;, 1976 &lt;br /&gt;&lt;br /&gt;We live in a world where the systems that we use or come across in our day to day lives seem to be ever more complicated. The flight software system that controls a modern aircra
