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 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
- Process & Management. IT Management, IT Governance
- Architecture Description (Documentation). Modelling and representing architectures
- 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:
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!