# Software Architecture
|  | **Software Architecture** is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. |
|-|-|
| | wikipedia:: [Software architecture](https://en.wikipedia.org/wiki/Software_architecture) |
## [[Architectural Pattern]]s
### [[Service-oriented Architecture]]
### [[REST & RESTful]]
### [[Peer-to-peer]]
### [[Monolithic Application]]
### [[Monorepo]]
### [[Microservices]]
### [[Event-driven Architecture]]
### [[Client-server model]]
### [[Broker Pattern]]
### [[Model-view-controller (MVC)]]
### [[Pipeline]]
### [[Dataflow]]
### [[Publish-subscripe Pattern]]
### [[Middleware]]
### [[Message-oriented Middleware (MOM)]]
### Enterprise Architecture
[Enterprise architecture - Wikipedia](https://en.wikipedia.org/wiki/Enterprise_architecture)
### Naked Objects
- https://en.wikipedia.org/wiki/Naked_objects
### Domain-driven Design DDD
- https://en.wikipedia.org/wiki/Domain-driven_design
### Multitier Architecture
- https://en.wikipedia.org/wiki/Multitier_architecture
- E.g., application layer, presentation layer, business logic layer, and data layer
## [[Programming Paradigm]]
## [[Programming patterns, design patterns, principles, best practices, & code quality]]
## [[In-memory Database]]
## [[Business Logic]]
## [[Software Framework]]
## APIs & Services
### [[API]]
### Services
### [[Web APIs & services]]
#### [[Microservices]]
#### https://en.wikipedia.org/wiki/Service-orientation
#### https://en.wikipedia.org/wiki/Service_(systems_architecture)
## [[Identity, Authentication, & Authorization]]
## [[Search]]
## [[Software Measurement]]