Channels ▼

Arnon Rotem-Gal-Oz

Dr. Dobb's Bloggers

Think Holistically

August 31, 2008

Software architecture is not a three-layer diagram -- UI/Business logic/Data. As an architect, you need to consider the project/solution at hand from a lot of different angles and take care for all sorts of concerns from the technical, team, managerial, and event esoteric ones.

  • Technical- you need to consider things like threading models, data flow data structure, testability, security , user interface. A solution is only as strong as its weakest link. If the UI is great but the system is not stable, you will fail. If the system scales well but the security is flawed,  you will fail.
  • Team - You have to understand the limitations and capabilities of your teams and thier structure. If everybody knows Cobol, maybe Rails is not a good option. if the teams are spread out geographically, you need to make sure you partition the system into chunks that will allow them to progress independently as possible.
  • Managerial - brings to the forefront things like "What's the budget for the project?", "How much time do we have?" so can you really plan on using a rule engine if it eats 80% of your budget (maybe ?). Can you plan a cool piece of infrastructure if it will take four months to build?
  • Esoteric - Sometimes you even need to consider the less than common stuff. There aren't general examples here since its, well, esoteric. A couple of examples I've seen include a project where we had to see how much power the hardware we use needs (since it was to be deployed on a truck) or on another project where we designed a multi-monitor UI we had to figure out if it is better to design the UI for side-by-side or one atop the other
You should note that most probably you will not be able to be master of all the needed domains. you do need to be aware that they exist and work with other experts to cover the other bases of the solution.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.