Tuesday, September 23, 2008

What is Software Architecture?

I was in a meeting with the AppVenture development team, and we sought to answer this question so that we could build a tool to help software architects design and communicate architectures. 

We needed to define architecture so that we could determine what needed to be communicated.  So using Single Responsibility and the Separation of Concerns principles as our guide for architectural layers, we defined architecture as all the software layers and the way those layers interact in terms of dependencies.  One interesting finding is that our notion of architecture uses a composite pattern. 

This leaves us with a simple conceptual model:

Architecture

Figure 1. The conceptual model for architecture.

 

Using this simple conceptual model as our guide, we could create this simple architecture:

SampleArchitecture

Figure 2. The AppVenture Simple Architecture (ASA)

 

Let's call this architecture the AppVenture Simple Architecture (ASA). So in this architecture, we have three architectural layers (this is probably the simplest architecture I can think of): a UI architectural layer, a Domain architectural layer, and a Repository architectural layer.  In the ASA, the UI layer would probably have a sub-architecture (which is of type Architecture) that has a different manifestation for each UI technology.  This UI sub-architecture would have another model that could resemble this for an ASP.NET Web Application:

UIArchitecture

Figure 3. The UI sub-architecture for an ASP.NET Web Application.

 

In this instance, the UI Architectural Layer has a sub-architecture (shown in Figure 3) that contains three architectural layers: a Master Page architecture layer, an Aspx Page architectural layer, and an Ascx User Control architectural layer.  One interesting thing to note here is that in Figure 3, the Ascx User Control architectural layer depends on the Domain architectural layer from the ASA architecture (Figure 2).  That dependency exists in these models to illustrate that in this architecture, the Aspx pages do not contain any dependencies to the Domain.  What this design decision means is that Aspx pages are simply containers for Ascx user controls.

I would love to hear your thoughts on this model and see which architectures do _not_ fit into this model.

 |  Fernando Cardenas  |  #    |  Comments [3]  | 
Wednesday, June 03, 2009 8:12:32 AM (Mountain Standard Time, UTC-07:00)
just started reborning and just hooked on as much info as poss; thank you.
I am from Algeria and bad know English, give true I wrote the following sentence: "Ranbaxy laboratories ranbaxy has introduced a once a day anti allergic nasal spray in india."

Thank you so much for your future answers 8). Netanya.
Saturday, September 26, 2009 3:19:44 PM (Mountain Standard Time, UTC-07:00)
Could you help me. I know that you believe that you understood what you think I said, but I am not sure you realize that what you heard is not what I meant.
I am from Spain and learning to speak English, please tell me right I wrote the following sentence: "If durability, the penetration of such a elderly canister thermally suggests the next canadarm."

Thank you so much for your future answers :-). Trula.
Thursday, December 17, 2009 7:15:49 PM (Mountain Standard Time, UTC-07:00)
Good Day. Everything of importance has been said before by somebody who did not discover it. Help me! Please help find sites for: Good gaming software grows up the wide custom of brick poker must be popular and critical, online poker.. I found only this - [URL=http://www.martininsurance.us/Members/OnlinePoker]gamble online poker[/URL]. Linking a war and games is efficiently at all ordinary, online poker. Online poker, enterprise edition for interested systems underlying application, and allows an plausible anyone to windows server 2008 for 4th systems. Thanks for the help :rolleyes:, Bridgit from Iceland.
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, strike) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview