Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Software Engineering Tutorial
  • Software Development Life Cycle
  • Waterfall Model
  • Software Requirements
  • Software Measurement and Metrics
  • Software Design Process
  • System configuration management
  • Software Maintenance
  • Software Development Tutorial
  • Software Testing Tutorial
  • Product Management Tutorial
  • Project Management Tutorial
  • Agile Methodology
  • Selenium Basics
Open In App
Next Article:
Fundamentals of Software Architecture Design
Next article icon

Fundamentals of Software Architecture Design

Last Updated : 25 Mar, 2021
Comments
Improve
Suggest changes
Like Article
Like
Report

Prerequisite : Fundamentals of Software Architecture

Software Architecture Design :
Software architecture design, software architectural modelling or software architectural patterns are used to represent how the system will act on the basis of software elements, relationships and properties. It is mostly used as the blueprint of the project which is to be built. Software architecture design helps to connect the technical and operational aspects by defining and structuring a solution. The architecture and designing part can be broken down into two pieces

  • Software Architecture - 
    Architecture defines the blueprints of a system. It serves as a communication and coordination mechanism for the elements. It designs a structured solution while keeping the performance, security etc. in check. It impacts the quality, maintainability and overall performance of the system.
     
  • Software Design -
    Software design is the method of coming up with a plan that takes the user requirements, available resources to find an optimal design. This lays the path for the developers and the managers to develop the project to meet the customer’s demands.

Importance Of Software Design Architecture :

  • Bring the focus onto the structure while keeping the implementation hidden
  • To address the demands of the customers
  • Optimal use of resources while providing effective product
  • Improve the trust in the organizations
  • Realize the use-cases and scenarios
  • Predict the product release beforehand

Software Architecture Design Factors :
When a structured framework is designed for the product to conceptualize its behavior, software elements and relationship etc. in that case different aspects related to the software product are considered for designing the software architecture. The below figure represents all these factors.


Major Goals Of Software Design Principles :

  • Establishes a bridge between business and technical requirements
  • To identify those requirements that concern the structure of the project
  • To make the project’s architecture scalable, stable and testable
  • Consider the overall consequences of the decisions
  • Make the project flexible

Design principles :
When different design principles are followed during software architecture design it not only makes the designing process simpler but also it results easier and faster development of the product with low cost, low effort, and minimized requirement maintenance and follow-up.

  1. Separation Of Concerns - 
    This principle states that the software should be distinguished based on the working of the software. For example this can be achieved by segregating the business model from the implementation part so that the different people concerned for each module do not have to worry about the other one.
  2. Encapsulation -
    It helps in hiding parts of application from the other parts. This helps in improving the project as it ensures changes in one part will not affect to the other part of the application.
  3. Don't Repeat Yourself (DRY) -
    Avoids the duplication of the functionality which comes within a single application. Means avoids repetition and implement one piece of code for a single component. This principle will decrease the complexity of the application.
  4. Principle of Least Knowledge -
    It is also called as LoD (Law of Demeter) which helps in avoiding interdependency in between the components. As the components are unknown about internal architecture of the product which contains other components or objects.

Next Article
Fundamentals of Software Architecture Design

S

Satyabrata_Jena
Improve
Article Tags :
  • Software Engineering

Similar Reads

    Fundamentals of Software Architecture
    In today's world, people of all ages, from children to adults, use smartphones, laptops, computers, and PDAs to solve both simple and complex tasks online using various software programs. To the user, everything may seem simple and easy to use. And that’s the point of good software to provide high-q
    5 min read
    Architectural Design - Software Engineering
    The software needs an architectural design to represent the design of the software. IEEE defines architectural design as "the process of defining a collection of hardware and software components and their interfaces to establish the framework for the development of a computer system." The software t
    4 min read
    Differences between Software Design and Software Architecture
    Software design and software architecture, though closely related, serve different purposes in system development. Software design focuses on the detailed implementation of individual components and their interactions, guiding how the code is structured and written. In contrast, software architectur
    4 min read
    Architecture of a CASE Environment - Software Engineering
    The design of a typical trendy CASE (Computer power-assisted software package Engineering) atmosphere is shown graphically below. The vital elements of a contemporary CASE atmosphere are a computer program, tool set, object management system (OMS), and a repository. Architecture of a CASE Environmen
    3 min read
    Types of Software Architecture Patterns
    Software architecture is like the blueprint for building software, showing how different parts fit together and interact. It helps the development team understand how to build the software according to customer requirements. There are many ways to organize these parts, called software architecture p
    12 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences