Passion * Technology * Ruthless Competence

Tuesday, August 30, 2005

Architecture at the Intersection

Arnon Rotem-Gal-Oz left a comment yesterday disagreeing with my characterization of engineering vs. architecture problems:

I can't say I totally agree that it is the software architect's role to come up with the list of functional requirements. That's what business analysts or requirement engineers do. The role of the architect is to identify which requirements are important and to surface the significant quality attributes (non-functional requirements) of the system (again, the architect is not the source of the quality attributes but his role is to determine which the most important ones are).

I'm glad Arnon responded. His blog looks pretty interesting and he's working with Architect MVP Udi Dahan. Subscribed.

However, I wasn't talking about architects, I was talking about architecture. That may seem like a subtle difference, but between the wide variance in the definition of architecture and the wide variance in types of companies, trying to figure out a general description of architect across all that variance seems like chasing your tail.

So with that in mind, here's an interesting distinction between building architects and engineers. I think Pat Helland told me this, but I forget. If you know the origin of this comment, please drop me a line.

Engineering is about walls. Architecture is about the space between the walls.

I love that distinction. That leads to my personal definition about architecture in the enterprise and/or software realm:

Architecture is the intersection between business and IT.

Most of what I see passed off as architecture lives purely in the realm of IT. For example, as much as I like Fowler's PoEAA, I would argue that those are engineering patterns as they have little to do with business. If you're building a system for an enterprise, there's a business driver funding that system construction. The business folks don't really care which domain logic or data access patterns you use. Domain Model vs. Table Module? Table Data Gateway vs. Row Data Gateway? Come on, you think business people care about that?

If a decision doesn't effect a business person, it's not an architecture decision. I'm not saying it's not important - I think the role of the software engineer is critical in large-scale enterprise system design and construction. And I will readily admit that often a single person is responsible for both architecture and engineering. But that doesn't make them the same activity. As long as we continue to confuse the two disciplines, we hold them both back.

Tomorrow, who's doing all this architecting?

Posted By Harry Pierson at 5:08 PM Pacific Daylight Time
Tuesday, August 30, 2005 11:08:55 PM (Pacific Standard Time, UTC-08:00)
As one that works in the defense industry I must say that things look a little different here. Could it be that the "definition" of Architecture (with a big 'A') is domain dependent? I hope not. Personally I prefer Fowler's description (as opposed to definition):

Architecture is the set of decisions we hope to get right at the beginning of a project.

Obviously only at the end of the project can we know what the quality of our original architecture was.
Wednesday, August 31, 2005 4:48:10 AM (Pacific Standard Time, UTC-08:00)
Is there an intersection between business and IT?

To quote Dave Welsh -

"Business is from Mars, Technology is from Venus."

Hal Pierson
Wednesday, August 31, 2005 4:50:36 AM (Pacific Standard Time, UTC-08:00)
Hey Harry, your mailbox is sending out:

Final-Recipient: rfc822;harry@devhawk.net
Action: failed
Status: 5.5.0
Diagnostic-Code: smtp;552 Mailbox size limit exceeded

Of course, I don't know if you'll get this either, but please send me an alternate email.. Thanks!
Thursday, September 01, 2005 9:01:16 AM (Pacific Standard Time, UTC-08:00)
Harry

I certainly agree that an architect 'should' sit at the intersection between business and IT to ensure that the resulting architecture aligns with business requirements and priorities. It's not so much bottom-up or top-down as middle-out. That's why I get so frustrated with much of the commentary surrounding SOA which is largely driven from a software development and integration perspective rather than considering the different types of services which constitute a service-oriented approach to IT.

Neil
Comments are closed.

SoCal Code Camp

PDC08

patterns & practices
Summit 2008

Change Congress
Recent Bookmarks
Tags .NET Framework (2) ADO.NET (5) Agile (7) AJAX (3) Architecture (284) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (93) Web Services (5) ASP.NET (24) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (115) dasBlog (11) Podcasting (4) BPM (1) C# (10) C++ (4) Capitals (5) CardSpace (3) CLR (2) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (13) Dependency Injection (2) Development (117) C Plus Plus (1) Embedded (5) Lanugages (37) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (16) Domain Specific Languages (13) Durable Messaging (5) Dynamic Languages (10) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (51) Functional Programming (17) Game Development (2) Guidance Automation (3) Hardware (8) HawkEye (3) Hockey (29) Home Electronics (1) Home Network (5) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (44) IronRuby (12) Java (2) Job (3) LINQ (22) Live Mesh (2) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (30) MIX06 (2) Mobile Phone (1) Monads (5) Morning Coffee (172) Object Oriented (4) Office (5) Open Source (5) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (31) Games (18) General Geekery (26) Home Theater (1) Movies (23) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (15) Parallel Programming (3) Parsing Expression Grammar (16) patterns & practices (2) PDC08 (5) Politics (47) PowerPoint (2) PowerShell (34) Presentation (5) Projects (1) HawkWiki (1) Python (4) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (2) Rock Band (3) Rome (5) Ruby (23) Ruby on Rails (1) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (18) Social Software (1) Software + Services (2) Software Design (1) Software Factories (11) Software Industry (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (6) Unified Client (1) Unit Testing (4) USC (1) UX (1) Virtual PC (2) Visual Basic (1) Visual Studio (20) Volta (2) Washington Capitals (34) WCF (31) Web 2.0 (65) Web Services (5) WF (21) Windows Live (23) WPF (7) Xbox (1) Xbox 360 (53) XML (10) XNA (14) Zune (3)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.