Software Architecture: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
 
(38 intermediate revisions by the same user not shown)
Line 5: Line 5:
* Pimp My Architecture - Rearchitecting an Application without Rewriting it from Scratch http://www.infoq.com/presentations/north-pimp-my-architecture
* Pimp My Architecture - Rearchitecting an Application without Rewriting it from Scratch http://www.infoq.com/presentations/north-pimp-my-architecture
* http://www.oodesign.com/design-principles.html
* http://www.oodesign.com/design-principles.html
=TODO=
* Clean Architecture https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164/


=Internal=
=Internal=
* [[Software Engineering]]
* [[Software Engineering]]
* [[Software Development]]
* [[EvoA|Building Evolutionary Architectures: Automated Software Governance 2nd Edition]] by Neal Ford, Rebecca Parsons, Patrick Kua, Pramod Sadalage
* [[System Design]]
=Overview=
The art of software architecture belongs under the larger domain of [[Software_Engineering#Software_Architecture|software engineering]], alongside [[Software_Development#Overview|software development]].


=Subjects=
=Subjects=
Line 19: Line 17:
* [[The Law of Demeter]]
* [[The Law of Demeter]]
* [[12 Factor App]]
* [[12 Factor App]]
* [[Blue-Green Deployment]]
* [[DRY|Don't Repeat Yourself (DRY)]]
* [[Design Patterns]]
* [[Design Patterns]]
* [[Actor Model]]
* [[Actor Model]]
Line 28: Line 24:
* [[Real-Time Computing]]
* [[Real-Time Computing]]
* [[Eventually Consistent Systems]]
* [[Eventually Consistent Systems]]
* [[Stream Processing]]
* [https://martinfowler.com/bliki/FluentInterface.html Fluent Interface]
* [https://martinfowler.com/bliki/FluentInterface.html Fluent Interface]
* [[Universal Scalability Law]], [[Amdahl Law]]
* [[Universal Scalability Law]], [[Amdahl's Law]]
* [[Conway's Law]]
* [[Domain-Driven Design]]
* [[Domain-Driven Design]]
* [[Single Page Application (SPA)]]
* [[Single Page Application (SPA)]]
Line 37: Line 31:
* [[Distributed Systems]]
* [[Distributed Systems]]
* [[Software Security]]
* [[Software Security]]
* <span id='Cohesion'></span>[[Cohesion]]
* <span id='Coupling'></span>[[Coupling]]
* [[ACID]]
* [[ACID]]
* <span id='Microservices'></span>[[Microservices]] Architecture
=Concepts=
==Software Architecture==
===Evolutionary Software Architecture===
Evolutionary software architecture is the sum of software engineering practices and techniques, as well as structural architectural patterns that allow incremental guided change across multiple dimensions of a software system. The dimensions in question include first and foremost the [[#Domain|domain]], but also multiple other [[#Architectural_Characteristics|architectural characteristics]] the system designers deem as important.
==Requirements==
Functional requirements (related to [[#Domain|domain]]) and non-functional requirements, associated to [[#Architectural_Characteristics|architectural characteristics]].
==Domain==
==Architectural Characteristics==
==Framework==
==Platform==
==Architectural Governance==
<font color=darkkhaki>Definition. TO DO.</font>
Architectural governance includes code reviews, architecture review boards (manual, bureaucracy).
==Change==
Incremental change.
==Architectural Patterns==
==Coupling and Cohesion==
<font color=darkkhaki>Referred by:
* [[Infrastructure_as_Code_Concepts#Infrastructure_Code_Management|Infrastructure as Code Concepts &#124; Infrastructure Code Management]]</font>
===Connascence===
{{Internal|Connascence|Connascence}}
===Bounded Context===


=Organizatorium=
=Organizatorium=
Line 46: Line 71:
* Next Architecture: https://www.oreilly.com/ideas/3-emerging-trends-tech-leaders-should-watch#next-architecture
* Next Architecture: https://www.oreilly.com/ideas/3-emerging-trends-tech-leaders-should-watch#next-architecture
* Banking startup that uses Java, deploys on AWS, and builds "microliths" https://www.infoq.com/podcasts/cloud-based-banking-startup-java
* Banking startup that uses Java, deploys on AWS, and builds "microliths" https://www.infoq.com/podcasts/cloud-based-banking-startup-java
* [[Architectural Decision Records]]
* [[Behavior-Driven Development]]
=TODO=
* Clean Architecture https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164/

Latest revision as of 04:16, 31 December 2023

External

Internal

Overview

The art of software architecture belongs under the larger domain of software engineering, alongside software development.

Subjects

Concepts

Software Architecture

Evolutionary Software Architecture

Evolutionary software architecture is the sum of software engineering practices and techniques, as well as structural architectural patterns that allow incremental guided change across multiple dimensions of a software system. The dimensions in question include first and foremost the domain, but also multiple other architectural characteristics the system designers deem as important.

Requirements

Functional requirements (related to domain) and non-functional requirements, associated to architectural characteristics.

Domain

Architectural Characteristics

Framework

Platform

Architectural Governance

Definition. TO DO.

Architectural governance includes code reviews, architecture review boards (manual, bureaucracy).

Change

Incremental change.

Architectural Patterns

Coupling and Cohesion

Referred by:

Connascence

Connascence

Bounded Context

Organizatorium

TODO