A Method for Software Architecture Blueprint

Atul Agrawal
4 min readApr 7, 2022

--

There are different methods that software architects use from time to time for coming up with the blueprint of software architecture.

In this post, I have outlined a method that is easy to use and remember by using an example of movie booking application.

Step 1: Essence

Essence is the basic or most important idea or quality of something.

The purpose of this step is to capture the essence of business capability and map it to the conceptual view of the system. This step involves asking the basic questions such as:

  • What is being built out?
  • Why it is being built out?
  • Who is going to use it and how they will use it?

In case of Movie Booking application, the essential capabilities that are required to be enabled are :

Customers should be able to book or cancel the movie ticket by using the Web Experience. Customer to be notified via Email for booking or cancellation status.

Admin should be able to manage the movies and showtimes by using the Web Experience.

Note: In this post, we will only cover moving booking use case for customers.

Once the basic questions are clarified, we can draw the conceptual view of the system as shown in following diagram.

Step 2 : Engagement

The purpose of this step is to capture the customer engagement for the identified business capabilities.

The following diagram depicts the high level engagement flow from customer’s perspective for booking movie ticket.

Once we have caputured how customer are going to engage, we can add more logical components to the conceptual system diagram.

The logical component from this step will be evolved into web apps and services in subsequent phases.

Step 3: Experience

The purpose of this step is to discuss and define the quality attributes that are critical for a great customer experience. The quality attributes (performance, availability, maintainability etc.) plays significant role when the conceptual view to translated to implementable view of the system.

Architect and stakeholders can discuss about the quality attributes by asking questions such as:

It is important to do industry research and find out how the competitors are doing.

In case of movie booking app, let’s assume that search movies has 20X traffic and require high availability while for booking movie ticket, consistency is more important.

This assumption leads to the conclusion that search movie will have to mapped to its own component so that 20X traffic and availability requirements can be fulfilled.

Please note that the components within the services are still well encapsulated. This means that if quality attributes changes than component can be decomposed to separate micro services or to some other architecture.

4. Environment

The purpose of this step is to discuss about the environmental constraints from business and system perspective.

The environmental constraints can be identified by asking following questions.

In case of moving booking, let’s assume that Payment and Email will be managed by Third Party Vendor and team size is limited.

Please note that the components within the services are still well encapsulated. This means that as business requirement changes, the movie booking application can be de-composed to separate micro-services or to some other architecture.

5. Evaluation

Once this approach is followed across all use cases, you will get following blueprint that you can discuss with team and stakeholders for evaluation and validation.

Note : The Movie Management App doesn’t have any orchestration layer because admin use case is simple and have CRUD like operations.

Next Phase — Evolution

After the 1st Launch, business would add more capabilities such as customer registration, login etc and architect can follow similar approach to come up with high level blueprint as shown in below diagram:

Please note that the above blueprint architecture diagrams are for explaining the approach and shouldn’t be used as reference architecture for any app.

--

--

Responses (3)