Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

Software Architecture

The definition and fundamentals


What is Software Architecture?
Many definitions, Multiple perspectives
the set of significant a coherent set of abstract
decisions about the patterns, or principles,
organization of a software guiding the design of each
system aspect of a large software
system...

An iterative framework A configurable skeleton of


between software
any kind of software beast
components required
to meet the stated on which you hang
objectives of the implementation
business

A style that is proven


scientifically & adopted by the
engineering discipline
Software Architecture is the blueprint of the system, its
components & their relationships, with defined principles &
constraints to comply with.
Do we have a standardized definition?
IEEE - Institute of Electrical and Electronics Engineers, New Jersey, US
ISO - International Organization for Standardization, Geneva, Switzerland
IEC - International Electrotechnical Commission, London, UK

There are three international standards organizations, which define technical standards & specificiations
for Software Architecture
ISO/IEC/IEEE 42010 - Systems and software
engineering

An international standard for architecture descriptions


of systems and software.

Let’s understand the definition defined by 42010 standard…


Software architecture is the fundamental organization of a
system, embodied in its components, their relationships to
each other and the environment, and the principles
governing its design and evolution.
Reference:
ISO/IEC/IEEE 42010 Standard
Let’s break the definition further by understanding
the fundamental organization, which defines how
the components making up a software architecture
are organized
Front-end driven Experience Tier

Reverse Proxy

Micro-services Application
Fundamental Organization of a
F4FF81 Search App Rewards App

System Search Results My Account My Profile

- A simple view to communicate the logical


layers of software architecture
API Gateway

Services Layer

Endeca API Content API Rewards API


Another important aspect is to communicate the
relationship between components of the software
architecture
Components & their
relationships F4FF81
- To understand how components are
interacting with each other

Source: https://msdn.microsoft.com/en-us/library/dd409393.aspx
The last part is to understand the environment or
context in which the software architecture is being
formulated
Environment

Business Social Technical

Architecture gets created in the context of the environment, which comprises of business
needs (meeting requirements), social needs (meeting communication requirements) and
technology needs (meeting non-functional requirements).
So, key part is to understand that architecture itself is not
good or bad – need to understand the context behind
creating the software architecture, before we determine the
effectiveness of the architecture.
Let’s look at few industry examples depicting
software architecture
Netflix - Personalization &
Recommendation Architecture F4FF81
Source: http://techblog.netflix.com/2013/03/system-architectures-for.html
Source: http://aws.amazon.com/blogs/aws/category/architecture/
Before we conclude the definition and basics of software
architecture, it is essential to understand that when you
start a new project, don’t try to define all views of
architecture in initial days - use incremental approach to
work towards it
You can start with simple view of architecture
using system context diagram during initial phase
and detail it out in future iterations
Customer
Search System
For Customer Relationship System
searching communicatio
hotel ns &
properties interactions

Travel Agents
Customer Identity Data Customer
Identity Store
Hotel
Reservation Rewards & loyalties

System
Backoffice
Rewards

For user behavioral tracking


Analytics

For customized experience


Clients Personalization
For hotel reservation
For product recommendations
Recommendations Engine
Reservation System

System Context Diagram – to communicate high-level view of architecture


Now, that we understand the basics of defining
software architecture, refer to following standard to
understand the depth of it
ISO/IEC/IEEE 42010 - Systems and
software engineering
Source: https://www.viewpoints-and-perspectives.info/

Alternatively, you can also refer to


this book to understand all aspects of
software architecture in detail (highly
recommended) which is also aligned
to 42010 standard

Software Systems Architecture: Working With


Stakeholders Using Viewpoints and Perspectives
Book by Eoin Woods and Nick Rozanski
Thank You

You might also like