Software Development

What is architecture?

On a regular basis we hear people talk of good and bad architecture, but what is architecture?939140-architecture-photography-gallery

 

Before I describe software architecture, let’s see if we can come to an agreement of what architecture is.  What are the components of architecture, and what value does architecture have.

 

Architecture provides the structural and connective framework required for a system of components to function.  Architecture is specific to a context, good architecture for a software system is different from that of a car or a building.

architecture

Architecture in general is not visible, it is present in the system but under other visible design components.  Before a discussion of software architecture, it would be best to describe architecture using physical objects.

Architectural Elements

Architecture involves two elements:

  1. Structure
  2. connective elements.

Let’s look at these two elements with respect to a building.

modern_architecture-t2

Structure for a building involves the foundation and the pieces that provide support to the entire building; it is the skeleton of the building.  If a building has an interesting shape it is because underneath the framework of rebar and concrete support the shape.

Connective elements can be structural, but they provide a way of linking different structural components for the purposes of transporting something.  Connective elements in a building transport air, water, and electricity.

The structural capability of the framework will dictate how high a building can go; generally speaking architecture determines
size.  If the building has a framework of rebar and concrete that will support a 10 story structure, it will be difficult to add additional floors over 10 easily. Adding additional floors will require effort expended to reinforce the existing structural strength of the building

4493189011_6736a717d2_m
If a connective element is missing then adding it will be expensive.  For example, old brick buildings often didn’t plan for plumbing or electricity.  If this element is added afterwards, then it will be much more expensive to put in.

If plumbing is added afterwards then you will see the plumbing running outside the walls. This can lead to problems if the building experiences sub-zero weather.

It is similarly inconvenient to add electricity or air-conditioning to a building which has not had these connective elements designed into the building when it was built.

For comparison purposes, let’s look at architecture in a couple of  contexts:

ObjectStructural componentConnective elements
Building
  • Steel frame
  • Concrete
  • Bricks
  • Plumbing
  • Electrical system
  • HVAC system
  • Elevator
  • Emergency stairwell
Car
  • Chasis
  • Tires
  • Drive train
  • Steering column
  • Gas conduits
  • Electrical system
  • HVAC system

Architecture and Visibility

In the two examples above, several things about architecture stand out:

  1. Structural components are generally hidden unless they are functional
  2. Connective elements are covered up in the final object

So for a building the structural element of the steel frame is invisible hidden under finishing elements. But there are cases where we see concrete or brick walls exposed.  Structural elements are generally not attractive and so we put in extra effort (i.e. cost) to hide the structural elements. Sometimes in the case of concrete or brick walls we will leave them exposed because the visual need to hide these elements are not there, i.e. a warehouse.

clean-a-sewer-line_300_200
Connective elements are almost always hidden.  The sight of electrical wires, plumbing, or HVAC tubes is not aesthetically pleasing and we generally hide these elements.  If we are hiding a connective element, they are cheapest to put in when an object is being created the first time.

Cost of Fixing Hidden Connective Elements

Repairing a hidden connective element is expensive.  For example, fixing plumbing and electrical wires in a house are expensive depending on how hard it is to access the connective element.

Adding a connective element after the fact is much more expensive and much less attractive.  There are brick buildings that were built prior to indoor plumbing and electricity being available.  A good example of these buildings are the residences at Harvard or old brick warehouses that are now office space.  In the case of the Harvard residences the plumbing runs outside the residences and due to the winter weather in Boston, is subject to freezing.  Adding electricity to a brick warehouse involves running metal conduits inside the walls; since they are exposed, they are subject to water accidents.

Visible Structural Elements

In the case of a car the tires are a structural element, but they are exposed to view.  This is why effort goes into making the tires as attractive as possible, i.e. white wall tires, decorative hub caps, etc.

Purpose of Architecture

Once the architecture is set it determines two things:

  1. The size of an object
  2. The functional capabilities of the object

As previously mentioned, the structural architecture of a building will dictate its maximum size and the connective elements will outline its capabilities.  Connective elements are always about functional capabilities.

The purpose of structural architecture is to partition an object into sub-components that are independent and can be designed separately.  For example, in a building, the structural architecture allows you to subsequently design each of the apartments separately without worrying about how the design of one room affects another.

For a car, the main structural element of the chassis allows you to design the following sub-components separately:

  • engine
  • doors
  • lights
  • seats

By allowing sub-components to be designed separately we subdivide a problem (i.e. divide-and-conquer), which reduces the complexity of overall design.  It allows separate teams to work on the sub-components.  Good architecture facilitates strong polymorphism in the sub-components.

In an apartment, each apartment can be designed differently and by different people.  In a car, the engine can be designed by one group of people different from that designing the doors, lights, or other part of the car.

The connective components in each object either: 1) provides a shared service that is accessible to multiple components, or 2) provides a coordination of sub-components to achieve a higher level function.

Electricity, plumbing, and HVAC are all examples of shared services that are available to an entire building.  The usage of electricity in one room does not dictate the usage of electricity in another room, however, aggregate usage of electricity is sized by the architecture.

system_lpi
Elevators for a building and steering columns and the gas system of a car are examples of components that are coordinated across multiple levels of the object.  They provide an overall functionality when all of the sub-components coordinated are functioning.

In general, if one of the sub-components is not functioning then the entire set of coordinating objects will fail to function.  For a car, if any component in the diagram fails then the engine itself will fail.

Summary

In any object composed of multiple sub-objects there is architecture.  Architecture provides two different but related functions that is:

  1. Structural components
  2. Connective elements

The architecture of an object dictates how large it can be and determines how separately each sub-component can be designed.

This article focused on physical objects, the next article will focus on software architecture.

Reference: What is architecture? from our JCG partner Dalip Mahal at the Accelerated Development blog.

Dalip Mahal

Dalip is a principal consultant at Accelerated Development and has worked his way through all aspects of software development. He started as a software engineer and worked his way through engineering and product management.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Afonso Faria
Afonso Faria
5 years ago

From a Buildings Architect point of view, I find it very interesting but I don’t totalylly agree with your definition.
https://www.linkedin.com/pulse/defining-architecture-afonso-leite-de-faria/?published=t

Nasser Iqbal mughal
Nasser Iqbal mughal
5 years ago

Almost help full searching about software architecture article

Greg Bjorg
Greg Bjorg
3 years ago

Such an interesting article! Thanks for sharing. I didn’t know many aspects of it

Bergins
Bergins
3 years ago

Thank you very much for such a detailed article on the subject of architecture. I know a lot more now. I especially really liked these different designs and styles. I would also be interested in looking at architectural solutions for the interior. Maybe you should try contemporary rugs? Don’t you think it’s too old-fashioned?

Bamakirel
Bamakirel
3 years ago

Now I understand what architecture is, but now I have to understand what interior design and interior design are. With this knowledge, I can make a renovation.

Jijnya
Jijnya
3 years ago

If you want to learn more about interior design, for example, for your kitchen, then it will probably be useful for you to search the Internet for more information on the subject. Maybe it will be useful for you to visit the site https://kitchensearch.com/ to look at ready-made kitchen options. In any case, I want to wish you good luck in your development.

Back to top button