Architecture in Practice

Work in progress. This note is still being written and incomplete.

Software Architectural Styles

software architecture is developing into a robust discipline based on knowledge gained from different system development experiences.

Software architectural styles provide an important basis for creating complex software systems.

The Software Architect

The architect has a distinctive role and character within a project.

An architect requires broad knowledge and experience, including:

  • Engineering competence
  • Extensive experience
  • A sense of aesthetics
  • Deep understanding of the application domain
  • Understanding of customer needs

Understanding the domain includes knowing how customers work and use the system.

First-rate programming skills alone are not sufficient for creating complex software applications.

Characteristics of Software Architecture

Software architecture has several characteristics that make architectural design important for complex software systems.

Key Characteristics

  • Software requires a methodical and analytical approach to design.
  • Software is intangible, making progress and design qualities more difficult to measure.
  • Software is highly malleable, so its structure can be changed more easily than physical systems.
  • Software deployment is an important part of the software lifecycle.
  • Software architecture focuses on the structure and behaviour of the software system.

Power of Software Architecture

Giving architecture a central role provides potential benefits such as:

  • Intellectual control
    Provides overall control and understanding of the software system’s structure.
  • Conceptual integrity
    Keeps the system’s design consistent and coherent.
  • Effective knowledge reuse
    Allows useful architectural knowledge to be reused in other systems.
  • Reuse of experience, designs, and code
    Helps reuse previous experience, designs, and existing code.
  • Effective project communication
    Provides a common structure for communication among project members.
  • Management of variant systems
    Helps manage different versions or variations of a software system.

A limited-term focus on architecture does not provide significant benefits.

Importance of Software Architecture

Software architecture should be at the heart of software system design and development.

It should remain in the foreground throughout the entire software development process.

Architecture should have prominence over:

  • Process alone
  • Component analysis alone
  • Programming alone

Important Point

All software systems have an architecture.

Architectures can differ in quality, and the goal of software design should be to develop the skills needed to create effective architectures.

Architecture in Action: The World Wide Web

The World Wide Web (WWW) provides an example of software architecture in practice.

WWW in a Nutshell

The Web is a collection of resources.

Each resource has a unique name known as a Uniform Resource Locator (URL).

A resource represents some information.

A Uniform Resource Identifier (URI) can be used to identify the machine on the Internet, known as the origin server, where the resource can be found.

Clients and Servers

Communication is initiated by clients, also called user agents.

User agents make requests to servers.

Written by October 7, 2026 3 min read
Was this helpful?