What is Architecture?

Why should you care? If you'e a software architect, you might want to have some idea of what it is you're supposed to be delivering. If you're a manager, you might want to have some idea of what an architecture can do for your project. If you're a developer you might want to know what an architecture can do for your design and development. If you're none of these things then you must really have something better to do than read this blog right?

So despite my earlier post about the woes of an industry that relies on using analogies with other endeavours, I thought I would take a stab at defining what Architecture is - at least so far as it relates to Software Development. Why would I want to do this? Well, mainly because I've heard the cry 'what we need here is an architecture' or 'what we need here is an architect' pretty often but no one seems to be able to really say what Architecture is. What problems should it address? What are the deliverables? There seems to be no clear definition. Many definitions are self referential a bit like these two entries from dictionary.com:

hill[hil] –noun

1. a natural elevation of the earth's surface, smaller than a mountain.


moun‧tain[moun-tn] –noun

1. a natural elevation of the earth's surface rising more or less abruptly to a summit, and attaining an altitude greater than that of a hill

Well. That's cleared that up then. Fortunately for us we all have a fairly clear concept in our head of what a hill is and what a mountain is. Unfortunately for us that concept varies greatly depending on where you live - A mountain in Scotland barely classes as a bump in the road in the Himalayas. The situation with software architecture is no better, and I would go so far as to say it is much worse. Fortunately for you, lucky reader, by the time you've finished reading this post you'll be in no doubt about what software architecture is (hooray for me) that is if you haven't died of boredom first,

Read the rest of this entry »

Matched Client & Server Cryptography

I've been putting together a portal site - partly because I want a portal that does what I want, partly because its one way to learn ruby/rails. I'm very happy with my host (dreamhost ), but one thing I don't get with my plan is SSL. Well, as you might imagine, I store a significant number of passwords and I want to be able to edit them straight from my portal. Not to mention that I would like to be able to log in without sending my password in cleartext across the wire. So, what to do? Read the rest of this entry »

Software Development Analogies

I've been planning to write a series of articles about architectural patterns and was just running over an introduction to them in my head. You know, like: 'What are architectural patterns and why did I feel the need to write them?'. Well, the reason I felt the need was that there simply weren't any. But 'hang on' I hear you say - what about the "Pattern Oriented Software Architecture" books? What about 'Patterns of Enterprise Application Architecture'? Sure; they're useful books - they make you think about the design problems you face every day when you're putting together enterprise applications, but notice I said 'design' there not 'architecture'? So what is 'architecture' exactly? Or more precisely, what is 'software architecture'? Read the rest of this entry »

Todo Lists, Visualization & XML

I've been looking for some software to help me plan my work tasks for some time. Something in between a todo list and a project plan. Oh, and free too.

I'd spent some time searching for this mythical beast a few months ago and came up empty and then my frustration at trying to plan my work using the outliner in Microsoft Word came to the boil again recently so I had another go at finding something. Well what do you know? I found two things that looked like they might fit the bill. The first is ToDoList. Its a fairly simple hierarchical todo list, but what it does it does very well. The second is Free Mind, which shows a graphical representation of a tree of related ideas.

Well, for me at least Todo List is much better suited to project planning - that's what it was written for and it shows. Free Mind, on the other hand displays information in a way that makes it easy to see the big picture and navigate around. Fortunately for me, both applications store their information in XML files so I bit the bullet and wrote a XSL stylesheet to convert from the ToDoList file format to the Free Mind format. I wanted something that would quickly show me the relative priority of each task (so I could jump on the important things) so I took a lead out of the tag cloud book and used color and size to encode that information. This is the result. Read the rest of this entry »

Judge’s Random Ramblings