# Software Architecture

Quote

If you think good architecture is expensive, try bad architecture © Brian Foote

# Buzzwords

Design Patterns Microservices Monolithic application Business Logic Model-View-Controller Test plan SRE SLI, SLO, SLI NALSD UML ATAM ACDM QAS

# Quality Attributes

Famous ilities. Used to formalized qualities of a system that are important for us. Here are some of the quality attributes:

  • Debuggability
  • Availability
  • Performance
  • Modifiability
  • Testability
  • Scalability

To properly describe quality attributes there is a method called Quality Attribute Scenarios. Here (opens new window) you can read more about the method

# System Design

# ADCM

Architecture Centric Design Method

An approach where the product development moves from an architecture review to an architecture review instead of moving from a prototype to a prototype:

  1. Define Architectural Drivers
  2. Define current iteration scope
  3. Design/Update current Architecture based on the previous steps
  4. Design experiments and hypotheses to test
  5. Develop
  6. Release

# ATAM

Architecture Tradeoff Analysis Method

Helps to evaluate the current architecture

  1. Present current architecture state and business context
  2. Investigate used design patterns and tactics
  3. Build Quality Attributes Utility Tree
  4. Analyse market, risks and propose trade-offs
  5. Select the most critical scenarios with the help of stakeholders
  6. Conclude with trade-offs, risks and decisions to make

# Design Patterns

There are many repeating problems in system design. So, people have collected solutions to them and called those solutions Design Patterns

# Distributed Systems

Modern systems are mostly distributed, so it is good to know the practices of distributed systems design

# Documentation

Decisions should be properly documented to remove questions like "Why have we used this library instead of that one?"

# System views

There are multiple prisms through which we can look at a system. To name a few:

  • Module View
  • Component View
  • Deployment View
  • Allocation View

# Diagram tools

Here are several tools that can help you with documentation

# Books

# Websites

Last Updated: 5/15/2021, 1:24:30 PM