AASAN || Tech by Wajid Khan

Share this post

📐HOW TO ARCHITECT SOFTWARE?

blog.iamwajidkhan.com

Discover more from AASAN || Tech by Wajid Khan

AASAN explains computer stuff in a simple and engaging manner, so that even non-techies can easily understand, delivered to your inbox weekly.
Over 4,000 subscribers
Continue reading
Sign in

📐HOW TO ARCHITECT SOFTWARE?

Concept & Fundamental : As a Software Architecture /Engineer you will need to combine art & science to deliver system solution in satisfactory manner.

Wajid Khan
Nov 23, 2022
2
Share this post

📐HOW TO ARCHITECT SOFTWARE?

blog.iamwajidkhan.com
Share

Software architecture definitions vary widely. Let's look at two of them.

“Group of principles and constraints about how software solutions have to be built within a given boundary”

"Truth can be found only in one place: the code." This quote was spoken by Robert C. Martin

MacBook Pro on brown wooden table beside white mug

As a Software Architecture /Engineer you will need to combine art & science to deliver system solution in satisfactory manner.

🧱 “Code serves as bricks in software architect”

Share


Concept and Fundamental

  • Software Architecture focus more on “Structure” instead of implementation details.

  • Identify the anticipated expensive choice after the system implementation.

  • Making core decision for high quality software.


Functional Requirements

Functional requirements means what system should do. To comprehend the functional requirements, we'll use "Resturant Website" as an example here. The following can be the functional requirements in our example Resturant website.

  • Search Inventory

  • Manage Product

  • Place Order

  • Order Fulfilment

These functional requirements are mostly align with the product features.


Non-Functional Requirements

Non-Functional Requirements describe how the system should behave. Here are the few of them.

  • Reliability : System is available 24/7.

  • Efficiency: Latency short response time.

  • Maintainability: Developed and maintainable for several years.

  • Scalability: Able to serve millions of users.

As a software architect you will have to consider the non functional requirements as well. You implemented the perfect product feature but due to latency issue, your customer may abandon your website.


Restrictions

Apart from functional and non-functional requirements you will have the system restrictions.

🛑 “RESTRICTIONS will limit your choices for software architecture design” e.g. Legal compliance, standard, time to market, cost etc.

As a software architect you must determine how to handle these restriction.


Prioritize

After you know what we need (functional requirements) and how system behave the non-functional requirements and what are the restriction we need to consider. Now you need to prioritize them.

So, there may be a conflict between the requirement and restriction. For example, if we have a strict time to market (time to market vs features) we need to drop some features. It could be a non-functional requirement, e.g. portability. If we do not need to deploy on multiple platforms, then we can drop the portability in favor of scalability etc. You need to design the priority list and tradeoff for approval.


Designing the Architecture

Now you prioritize the requirements start with things one by one instead of taking care of all things (avoid over engineered) . What are more obvious start working on it, may be something is not obvious now make more context at later stage.

Now start designing the software architecture. There are several architectural patterns like layered, event driven, microservices pattern etc.

The layered architecture is my favorite one. The layered architecture composed of several separate layers that function together as a single unit of software.

  • UI layer  

  • Business Logic layer

  • Data Access Layer

  • Database Layer Store

The frontend is comprised of the UI (User Interface) layer, whereas the system backend is comprised of the business logic layer, data access layer, and database layer.


Hi, I’m Wajid Khan. I am trying to explain computer stuff in a simple and engaging manner, so that even non-techies can easily understand, and delivered to your inbox weekly.


Thanks for reading AASAN || Tech by Wajid Khan! Subscribe for free to receive new posts and support my work.

📊What is MVC Design Pattern?

Explore My GitHub

My Blog Home Page

My Social Link Tree

2
Share this post

📐HOW TO ARCHITECT SOFTWARE?

blog.iamwajidkhan.com
Share
Comments
Top
New
Community

No posts

Ready for more?

© 2023 Wajid Khan
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing