About the course
Our Architecture for Software Developers course is aimed at teams who need to gain a strong understanding of good strategic planning practices to ensure a successful and sustainable development life cycle.
This is about architecture for developers - as opposed to "Architect as a role."
You'll learn about the importance of building a sense of ownership for technical decisions among the whole team - so whether you're a junior coder or a senior engineer, we'll help you define a set of practices that enhances all stages of your software design and release life cycle.
This largely platform-agnostic theory-based course includes plenty of discussion and is highly suitable for customisation - so we can talk about the real-world issues facing your team and your business.
Online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.
-
- What do we really mean by Software Architecture?
- Understanding the Software Architect role
- Managing and Mitigating Risk
- Useful visualisation techniques - Diagrams, UML
- Documentation good practices
- Tooling considerations
-
The key audience is software developers of all technical level, with the aim of bringing common understanding of good practices for the whole team.
We can also customise the delivery and focus on specific syllabus topics for in-house courses, to also accommodate others working in a software delivery function - for instance, testers, database developers / administrators, business analysts, project managers.
-
Delegates will ideally have at least 6 months' experience of working within a software development environment - we are happy to adapt the delivery for people who are newer to the industry, for instance for graduate intake training schemes.
-
This Software Architecture course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).
Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.
-
Software Architecture
What is “software architecture”?
Architecture as a noun - structure
Architecture as a verb - vision
Types of architecture
Towards a definition of “software architecture”
Enterprise architecture - strategy rather than code
Developers and their interaction within TOGAF
Architecture domains: Business, Application, Data and Technology
The Developer and Agile
Architecture vs design
Is software architecture important?
Does every software project need software architecture?
Architectural drivers
Functional requirements
Quality Attributes (non-functional requirements)
Defining the project scope
Architecture Principles
The Software Architect Role
Architectural drivers
Designing software
Technical leadership
Quality assurance
Technical leadership
SCRUM, Kanban and DevOps
Collaborative technical leadership is not easy
Do agile teams need software architects?
Mind the gap: Gap analysis techniques
Software architects and coding
A step back in time
Should software architects write code?
The tension between coding and being senior
Software as an engineering discipline
The skills and knowledge of a software architect
Technology skills
Soft skills
Domain knowledge
Domain-driven design and bounded context
The developer as architect in an agile context
Software Architecting
Managing technical risks
Quantifying and prioritising risks
Identifying risks
Mitigating risks
Risk ownership
Software architecture in the delivery process
The conflict between agile and architecture
Technical vs functional design
Software architecture provides boundaries
How much up-front design should you do?
Avoid big up-front design
Contextualising just enough up-front design
Introducing software architecture
The essence of software architecture
Separation of concerns: The API
Microservice Architecture
Contract-first development
Migrating the Monolith
Approach
We have a failure to communicate
What happened to SSADM, RUP, UML, etc?
A lightweight approach
Moving fast requires good communication
Where do we start?
Common problems
The hidden assumptions of diagrams
A shared vocabulary
Common abstractions over a common notation
Static and dynamic structure
Software systems
Containers. (example: Docker)
Container orchestration. (example: Kubernetes)
Components vs classes
Non-OO components
Modules and subsystems
Platforms, frameworks and libraries
Visualisation
UML or SysML usage
Use Case diagram
Sequence diagram
Process analysis: BPMN diagrams to the rescue
Component diagram
Class diagram
Deployment diagram
Package diagram
Developers and ArchiMate
Documentation
Working from a Product backlog
Interpreting User stories and acceptance criteria
Behaviour-driven design
The code doesn’t tell the whole story
Our duty to deliver documentation
Lightweight, supplementary documentation
Describe what you can’t get from the code
Product vs project documentation
Keeping documentation up to date
Documentation length
Functional Overview
Constraints
Software Architecture
Infrastructure Architecture
Deployment
Operation and Support
Development Environment
Decision Log
Tooling Considerations
The Developer and DevOps
Interacting with a deployment pipeline
Infrastructure as code, using cloud.
You build it, you run it!
Choosing a suitable Case tool
Sketches, diagrams, models and tooling
Reverse-engineering the software architecture model
Architecture description languages
Minimise the model-code gap
UML: final thoughts
Exploring your software architecture model
Dependency maps
Component size or complexity
Agile, evolvable Architecture
-
https://scrumguides.org/scrum-guide.html - the Scrum Guide
https://www.uml.org/ - the home of UML
https://www.bpmn.org/ - the home of BPMN
Trusted by



