Architecture
[Draft]
Why you need to understand what is Software Architecture and how to use it concepts?
TL;DR: This page presents various foundational concepts, principles, methods, patterns, heuristics, and best practices related to software architecture.
Definition
definitions list and it’s analysis
Ontology
key components, terminology
key elements
basic concepts
Practicality Lens
Different authors ans scholars highlight numerous diverse concepts for building software systems. There is a wide range of concept types: (best) practices, approaches, methods, laws, principles, theories, heuristics, and more.
However, what matters most to me is the ability to adapt and employ this variety as a practical toolbox for creating effective systems.
Looking ahead, my key focus will be to develop a holistic set of tools, clearly structured and integrated, for practical use in software architecture and design.
A key challenge in this pursuit is that principles can sometimes conflict and contradict each other. The real question is not just which principles to follow but how to balance and apply them effectively to the problem at hand.
Toolbox
One notable example is provided by Mark Richards and Neal Ford, who identified several universally applicable ideas about software architecture and codified them as “laws.” You can find more details about these laws in the Laws section.
engineering principles, like
.. (insert other tools here) ..
Concepts such as the definition of software architecture or architectural characteristics could also fit into this toolbox, as they guide our understanding and modeling of software systems. However, I’ve chosen not to explicitly include these foundational definitions as part of the toolbox, viewing them instead as general conceptual instruments that underlie our practical work. Nevertheless, keep in mind their implicit importance and usage.
Architectural Characteristics
list of characteristics, applicability, mapping to the parts of the system, definitions, how to specify them
Decisions
paper “Decision-Making Techniques for Software Architecture Design: A Comparative Survey”
Software architects must understand and analyze software systems deeply, in all their complexity, and must make important trade-off decisions, sometimes with incomplete information (analyze). Software architects make exactly the kinds of decisions that AI cannot, evaluating trade-offs within complex, changing contexts.
Architecture, like much art, can only be understood in context. Architects base their decisions on the realities of their environment.
add link to decision making framework
decisions withing a more broad context of businness discource
https://en.wikipedia.org/wiki/Architectural_decision https://adr.github.io/ https://github.com/joelparkerhenderson/architecture-decision-record?tab=readme-ov-file
ADRs
Resources
Personalies
Ralph Johnson, Martin Fowler Neal Ford, Mark Richards
Barry O’reilly and residual theory
(?) Derek Comartin and Code Opinion youtube channel
Sources
https://martinfowler.com/architecture/ https://www.youtube.com/watch?v=DngAZyWMGR0 https://www.youtube.com/watch?v=u_LnubpBDCA https://www.youtube.com/watch?v=lurbDAEU0KM https://www.youtube.com/watch?v=0TwoubGSXpc https://www.youtube.com/watch?v=CjCJ76oZXTE https://www.youtube.com/watch?v=MZnrxjw602E
https://www.youtube.com/watch?v=LcJKxPXYudE war stories, reflections
“# Fundamentals of Software Architecture: A Modern Engineering Approach” 2nd Edition by Mark Richards, Neal Ford
https://www.youtube.com/watch?v=bmSAYlu0NcY
interesting “What Software Architects Do That Programmers DON’T” https://www.youtube.com/watch?v=IwrvE-wHm84
Barry https://www.youtube.com/watch?v=H8ZOp8ayluU
https://www.youtube.com/watch?v=36I_eW8K1EY interesting advices and reflections
https://www.reddit.com/r/architecture/comments/16crcsv/architecture_vs_software_engineering/
https://www.youtube.com/watch?v=wQYRl--58zM
https://www.youtube.com/watch?v=_ZvwRJnSsQ4
https://www.youtube.com/watch?v=0tEBv2kAuNY
https://www.youtube.com/watch?v=n6G5qtJHmgw
https://www.youtube.com/watch?v=W7Krz__jJUg
https://www.youtube.com/watch?v=v_nhv6aY1Kg
https://www.youtube.com/watch?v=9Az0q2XHtH8
https://www.cloudwaydigital.com/
https://www.youtube.com/watch?v=_CXPDDRn6to agility and architecture https://www.youtube.com/watch?v=CXCkDKM0OX0 hopre and farley https://www.youtube.com/watch?v=aCiejroMUmc paper “Agility and Architecture” by Babel
https://github.com/justinamiller/SoftwareArchitect
https://levelup.gitconnected.com/software-architecture-things-that-no-one-has-told-you-c098bbb70a61
https://www.thoughtworks.com/insights/topic/architecture
“Good Enough Architecture” https://www.youtube.com/watch?v=RtRpL3Ndi0c
katas, practice https://fundamentalsofsoftwarearchitecture.com/katas/list.html
https://martinfowler.com/architecture/
https://roadmap.sh/software-design-architecture https://roadmap.sh/software-architect
https://khalilstemmler.com/articles/software-design-architecture/full-stack-software-design/
Common dev practices
https://www.youtube.com/@HealthyDev/videos
https://www.youtube.com/watch?v=2ClljZaK6_A
https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/
other https://awesome-architecture.com/
Simon Brown videos
https://learn.microsoft.com/en-us/azure/architecture/patterns/
Vsevolodovich (?) https://www.youtube.com/@architectureweekly/videos also it has some system design interviews and blog https://blog.vvsevolodovich.dev/
book “Cloud Native Spring in Action” contains in its first chapters good material about cloud native and what does it mean