Software Architecture

4 min. read

Software Architecture

The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them and properties of both.

Software Architects designs complete systems.

A model simplifies the problem

Failure Risks

Designs

Slicing up the tasks and defining separate layers is the biggest challenge for the architect

Implementation stacks comes last

● System architect.
○ Affects one system and builds connections within it.
○ Focuses on the technical component of the development.
○ Helps the project manager to make management decisions.
○ Has deep knowledge of the technologies.

● Solution architect.
○ Participates in discussions of business.
○ Creates connections between several systems.
○ Provides communication between several teams.
○ Designs connections between systems.
○ Codes independently only solution prototypes.
○ Acts as a universal soldier of business and technology.

● Enterprise architect.
○ Affects all development of the company.
○ Works with high-level abstractions of the created systems.
○ Provides technical communications throughout the company.
○ Does not interact with the code.
○ Focuses on the business component.
○ Has a broad technical horizon.
○ Owns several domains.

Architectural Pattern
Layered (n-tier) architecture

Model-View-Controller (MVC)
separation of concerns
Maintainable
Testable
Easy to assign separate “roles”
Easy to update and enhance layers separately
sinkhole anti-pattern

Event-driven architecture

Microkernel architecture

Microservices architecture

Design Patterns

Creational Patterns
Singleton
Prototype
Builder
Factory Method
Abstract Factory
Structural Patterns
Behavioral Patterns

Learning Software Architecture

Software Architecture Foundations

References
Software Architecture

Courses

https://www.linkedin.com/learning/software-architecture-foundations

What is Software Architecture?
https://www.youtube.com/watch?v=Rn1g6V-vlHw
https://techbeacon.com/top-5-software-architecture-patterns-how-make-right-choice
https://medium.com/@nvashanin/types-of-software-architects-aa03e359d192
https://www.amazon.com/Software-Architecture-Practice-3rd-Engineering/dp/0321815734
https://en.wikipedia.org/wiki/Software_architect
https://www.sei.cmu.edu/research-capabilities/all-work/display.cfm?customel_datapageid_4050=21328
https://www.synopsys.com/software-integrity/resources/knowledge-database/software-architecture.html
https://blog.leanix.net/en/enterprise-architect-vs-solution-architect-whats-the-difference
https://blogs.msdn.microsoft.com/gabriel_morgan/2007/09/02/enterprise-architect-vs-solution-architect/
https://www.wintellect.com/four-key-differences-between-a-solution-architect-and-an-enterprise-architect/
https://dzone.com/articles/solution-architecture-vs-software-architecture
https://www.quora.com/What-is-the-difference-between-a-Software-Architect-and-a-Solutions-Architect
https://www.linkedin.com/pulse/solution-architecture-vs-software-david-shilman/
https://en.wikipedia.org/wiki/Software_architecture
https://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Architecture
https://www.iasaglobal.org/itabok/capability-descriptions/software-architecture-development-methodologies-and-processes/
https://melsatar.blog/2013/01/05/difference-between-software-architecture-software-structure-and-software-design/
https://www.slideshare.net/preetimishra14661/architecture-design-in-soft
https://www.linkedin.com/pulse/difference-between-software-development-architecture-david-dillard/
http://c2.com/ppr/ams.html
https://en.wikipedia.org/wiki/Architectural_pattern
http://www.nyu.edu/classes/jcf/g22.2440-001_sp06/slides/session8/g22_2440_001_c82.pdf
https://stackoverflow.com/questions/4192887/software-architecture-design-patterns
https://herbertograca.com/2017/07/28/architectural-styles-vs-architectural-patterns-vs-design-patterns/
http://pubs.opengroup.org/architecture/togaf8-doc/arch/chap28.html
https://www.ibm.com/developerworks/rational/library/feb06/eeles/index.html
https://www.youtube.com/watch?v=lTkL1oIMiaU

https://medium.com/@nvashanin/the-path-to-becoming-a-software-architect-de53f1cb310a