Slide 1

Slide 1 text

Software Architecture The definition and fundamentals

Slide 2

Slide 2 text

What is Software Architecture?

Slide 3

Slide 3 text

the set of significant decisions about the organization of a software system Many definitions, Multiple perspectives a coherent set of abstract patterns, or principles, guiding the design of each aspect of a large software system... A configurable skeleton of any kind of software beast on which you hang implementation An iterative framework between software components required to meet the stated objectives of the business A style that is proven scientifically & adopted by the engineering discipline

Slide 4

Slide 4 text

Software Architecture is the blueprint of the system, its components & their relationships, with defined principles & constraints to comply with.

Slide 5

Slide 5 text

Do we have a standardized definition?

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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…

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Let’s break the definition further by understanding the fundamental organization, which defines how the components making up a software architecture are organized

Slide 10

Slide 10 text

F4FF81 Fundamental Organization of a System - A simple view to communicate the logical layers of software architecture Micro-services Application Search App Reverse Proxy Front-end driven Experience Tier Services Layer Endeca API Content API Rewards API Rewards App API Gateway Search Results My Account My Profile

Slide 11

Slide 11 text

Another important aspect is to communicate the relationship between components of the software architecture

Slide 12

Slide 12 text

F4FF81 Components & their relationships - To understand how components are interacting with each other Source: https://msdn.microsoft.com/en-us/library/dd409393.aspx

Slide 13

Slide 13 text

The last part is to understand the environment or context in which the software architecture is being formulated

Slide 14

Slide 14 text

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).

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

Let’s look at few industry examples depicting software architecture

Slide 17

Slide 17 text

F4FF81 Netflix - Personalization & Recommendation Architecture Source: http://techblog.netflix.com/2013/03/system-architectures-for.html

Slide 18

Slide 18 text

Source: http://aws.amazon.com/blogs/aws/category/architecture/

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

You can start with simple view of architecture using system context diagram during initial phase and detail it out in future iterations

Slide 21

Slide 21 text

Customer Relationship System Customer Identity Store Reservation System Analytics Rewards Backoffice Clients For hotel reservation Rewards & loyalties Customer Identity Data For searching hotel properties Travel Agents Personalization System Context Diagram – to communicate high-level view of architecture Search System Customer communicatio ns & interactions Recommendations Engine For user behavioral tracking For customized experience For product recommendations Hotel Reservation System

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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 Source: https://www.viewpoints-and-perspectives.info/

Slide 24

Slide 24 text

Thank You