Software Architecture and Software Design

Based on both key definitions, software architecture and software design, we can lay down an organization of software principles, methodologies and patterns currently applied in modern software development and technology innovations.

Software…


This content originally appeared on DEV Community and was authored by Franck Mercado

Based on both key definitions, software architecture and software design, we can lay down an organization of software principles, methodologies and patterns currently applied in modern software development and technology innovations.

Software Architecture

It's a high level blueprint for a system.
It defines the structural elements like subsystems, roles, relationships and responsibilities meaning it lays down the architecture patterns that will guide the software design.
Software architecture directly deals with arranging this elements like servers, databases, APIs, clients or users of the software application, etc in order to fulfill business requirements.

Software Design

Implies decisions at a lower level of detail as it provides an implementation plans for the laid out architecture.
Software designers will decide on the specifications, contracts used in these subsystems that later software engineers will implement.

Organization of software principles, methodologies and patterns

Index of software concepts.

  1. Software architecture patterns
  2. Software architecture strategies
  3. Software design methodologies
  4. Software design patterns
  5. Programming paradigms
  6. Clean code principles

1. Software Architecture Patterns

Based on separation of concerns

  • Layered architecture (N-tier)
  • Hexagonal architecture (Ports & Adapters)

Based on distribution of the application

  • Monolith architecture
  • Microservices architecture
    • Microservices patterns

Based on events

  • Event Driven architecture

Based on cloud services

  • Serverless architecture

2. Software Architecture Strategies

Based on data management

  • Database per Service
  • Shared database
  • CQRS
  • Domain event
  • Event sourcing

Based on transactional messaging

  • Transactional outbox

Based on security

  • Access tokens
  • Oauth
  • Session

Based on observability

  • Log aggregation
  • Application metrics
  • Exception tracking
  • Health check API

Expand on software architecture strategies.

3. Software Design Methodologies

  • Domain Driven Design (DDD)
  • Behavior Driven Development (BDD)
  • Test Driven Development (TDD)

4. Software Design Patterns

  • Creational Patterns
  • Structural Patterns
  • Behavioral Patterns

Expand on software design patterns

5. Programming Paradigms

  • Object Oriented Programming (OOP)
    • Composition over inheritance
    • SOLID
      • Single-responsiblity Principle
      • Open-closed Principle
      • Liskov Substitution Principle
      • Interface Segregation Principle
      • Dependency Inversion Principle
  • Functional Programming

6. Basic principles

  • Clean Code
  • DRY: Don't repeat yourself
  • KISS: Keep it stupid simple
  • YAGNI: You aren't going to need it

Take into account that all these architectural principles, methodologies and patterns are no substitute for making your own decisions. You need to balance them according to business requirements of your software application.


This content originally appeared on DEV Community and was authored by Franck Mercado


Print Share Comment Cite Upload Translate Updates
APA

Franck Mercado | Sciencx (2022-07-27T16:03:35+00:00) Software Architecture and Software Design. Retrieved from https://www.scien.cx/2022/07/27/software-architecture-and-software-design/

MLA
" » Software Architecture and Software Design." Franck Mercado | Sciencx - Wednesday July 27, 2022, https://www.scien.cx/2022/07/27/software-architecture-and-software-design/
HARVARD
Franck Mercado | Sciencx Wednesday July 27, 2022 » Software Architecture and Software Design., viewed ,<https://www.scien.cx/2022/07/27/software-architecture-and-software-design/>
VANCOUVER
Franck Mercado | Sciencx - » Software Architecture and Software Design. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/07/27/software-architecture-and-software-design/
CHICAGO
" » Software Architecture and Software Design." Franck Mercado | Sciencx - Accessed . https://www.scien.cx/2022/07/27/software-architecture-and-software-design/
IEEE
" » Software Architecture and Software Design." Franck Mercado | Sciencx [Online]. Available: https://www.scien.cx/2022/07/27/software-architecture-and-software-design/. [Accessed: ]
rf:citation
» Software Architecture and Software Design | Franck Mercado | Sciencx | https://www.scien.cx/2022/07/27/software-architecture-and-software-design/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.