Thriving.dev Learning Resources for Software Architects and Engineers
Online Course

Software Architecture Concepts & Methodologies

Discover the multifaceted domain of Software Architecture and the role and characteristics of the Software Architect. Learn essential skills and techniques to effectively conduct, model, describe, document, and communicate architecture.

Planned for Q2/2024

What you'll learn

  • Definition of
    • Software Architecture
    • Software Architect (role)
  • Characteristics that make a great software architect
  • Thorough overview of enterprise architecture frameworks
    • Points of contact with SA
    • Distinction from SA
  • Use and traits of architecture viewpoints
  • How Software Architecture fit’s into / enables agile ways of working
  • Recognized architectural patterns and styles
  • Design principles in Software Architecture
  • Architecture documentation & description
  • Architecture diagrams
    • Available tools, standards
    • Best practices, anti-patterns
  • Making architectural decisions
    • Howto and HowNOTto
    • Architectural Decision Records
  • Design Docs & RFC Process
  • Conducting architectural analysis & synthesis (design)
  • L3P Architectural approach

What to expect

  • Well-rounded overview of all aspects that make up Software Architecture
  • Kept relatively compact on purpose
  • Stimulus to think and shape your own approach and style
  • Predominantly neutral content, own opinions and experiences are marked clearly

Prerequisites

  • Open to all levels
  • Basic understanding of software engineering
  • Plus but not a must: practical experience working on a software project
  • No coding skills are required

What -not- to expect

  • NO practical examples of software architecture
    (check out my other course for that)
  • NO hands-on practice lessons, tasks, quizzes or similar
  • NO technical details, programming or coding
  • NOT about enterprise architecture frameworks. The course will introduce major EAF and cover their fundamentals and principles but not in greater depth.

Audience

  • Software Engineers, Developers
  • Software/Solution Architects
  • Business Analysts, Product Owners

All Things Architecture

A brief chronicle

Software Architecture has come a long way since the origins of this concept dating back to the late 1960s, through research done in the 1980s/90s with the development of architectural styles (/patterns), architecture description languages, and fundamental aspects of architecture documentation, and formal methods.

During the same period (the 80s/90s) enterprise architecture frameworks emerged from gov bodies, with initiatives in the early 2000s worldwide for most financial institutions (banks, insurance companies, government, etc.).

Throughout the 2000s, with the massive growth and importance of the internet, smartphones, mobile data, origins of on-demand cloud computing platforms, new generations of DBs (NoSQL, "Big Data") and programming languages, the IT sector expanded drastically.

The past decade saw even more innovation and massive leaps in (information) technological advances in many areas (single page applications, serverless, edge, cloud-native, containers + orchestration, stream processing - to name a few) and continues to advance at a fast pace. The way software was developed, hosted, delivered, and architected in 2010 was very different from today, and it will continue to evolve in the future.

What makes a Software Architect?

Technical breadth, technical depth, and technical credibility (:= to be a domain expert) are without a doubt major traits of the Software Architect.

Further, the Architect, as a technical leader, is involved from the early stages on, helps to drive a common vision, set the architectural approach, and guides the engineering process throughout the project lifecycle.

The Architect creates and evolves the architecture, and provides solutions to meet the system requirements. S/he makes high-level design choices, builds consensus, and is able to describe and efficiently communicate those.

…more on the ‘characteristics of the Software Architect’ is covered in the course.

Having the right tools in your arsenal

“Everyone starts out green, but getting a handle on a few important resources will move you to the experienced side much faster.”
Quote: Miguel Gutierrez

Over all these years a wealth of knowledge, best practices, procedures, standards, methodologies, techniques, and frameworks have become prominent, established by brilliant and leading figures of the IT industry.

While there’s a lot to learn from all of these, one can easily feel overwhelmed even trying to get an overview, to understand how they fit in with the disciple of Software Architecture.

Putting aside technical expertise, and analytical and problem-solving skills, subjects can be categorised into

  1. Process & Management. IT Management, IT Governance
  2. Architecture Description (Documentation). Modelling and representing architectures
  3. Architectural Synthesis. The process of creating an architecture

This course will help to differentiate, classify, and understand the fundamentals of the following topics, frameworks and standards:

ITIL
Information Technology Infrastructure Library
TOGAF
The Open Group Architecture Framework
Zachman
Zachman Framework - enterprise ontology
COBIT
Control Objectives for Information and Related Technologies
SAFe
Scaled Agile Framework®
DSDM
Dynamic Systems Development Method - agile project delivery framework
C4 Model
Lean graphical notation technique for modelling the architecture of software systems
4+1 View Model
Used to describe the architecture of software-intensive systems, based on the use of multiple, concurrent views
Viewpoints
A view model or viewpoints framework defines a coherent set of views to be used in the construction of an architecture.
ADL
Architecture Description Language
ADR
Architectural Decision Record
RFC
Request for Comments (Process)
UML
Unified Modeling Language
Styles, Patterns
An architectural style/pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.
Principles
Set of rules and aphorisms applicable to software engineering / programming.
L3P Approach
L3P (3 Levels + Platform) is a practical architectural approach which guides the architecture analysis, design and evaluation process.

Same as with any aspect of life, there’s not a single right path, no all-in-one solution for Software Architecture.

This course aims to build a solid foundation and grow your arsenal of tools to face your next project.

The path to a successful and enjoyable career as a Software Engineer / Architect is to share and absorb knowledge, be inspired, be experimental, develop your own ideas, create your own individual style, and be confident!

Course Curriculum

Coming soon.
CC BY-NC-SA 4.0 2022-2024 © Thriving.dev