Vi tilbyr kurs om Software Architecture for Developers med Simon Brown. Kurset vil gi deg et bredere perspektiv og gi deg et større spekter av ferdigheter innen systemutvikling. Det vil gjøre deg mer oppmerksom på arkitektur i utviklingsprosessen og gjøre deg i stand til å utvikle bedre systemer.
Content:
Designing software given a vague set of requirements and a blank sheet of paper is a good skill to have, although not many people get to do this on a daily basis. However, with agile methods encouraging collective ownership of the code, it’s really important that everybody on the team understands the big picture. In order to do this, you need to understand why you’ve arrived at the design that you have. In a nutshell, everybody on the team needs to be a software architect.
This is a 2-day training course about pragmatic software architecture, designed by software architects that code. It will show you what “just enough” up front design is, how it can be applied to your software projects and how to communicate the big picture through a collection of simple, effective sketches. Aimed at software developers, it fills the gap between software development and high-level architecture that probably seems a little “enterprisey” for most developers.
Agenda:
Day 1:
kl 09:00 - 09:15 Introduction
kl 09:15 - 09:45 Architecture:
• What is software architecture
• Architecture vs design
• The importance of software architecture
kl 09:45 - 10:15 Architectural drivers:
• Requirements
• Quality attributes
• Constraints
• Principles
• Agility
kl 10:15 - 10:45 Morning break
kl 10:45 - 12:30 Software design exercise:
• Software design exercise
• Design exercise review #1
kl 12:30 - 13:30 Lunch
kl 13:30 - 14:30 Architects:
• A definition of the software architecture role
• Technical leadership and the different leadership styles
• Technical skills
• Soft skills
• Software architecture and coding
kl 14:30 - 15:00 Afternoon break
kl 15:00 - 16:15 Visualising software architecture:
• Design exercise review #2
• Diagramming anti-patterns and typical problems
• The "model-code gap"
kl 16:15 - 16:30 Discussion, questions and wrap-up
Day 2:
kl 09:00 - 10:15 C4 model - core diagrams:
• Abstractions and creating a shared vocabulary with a ubiquitous language
• An overview of the C4 model
• Notation and tips for better diagrams
• System Context diagrams
• Container diagrams
• Component diagrams
kl 10:15 - 10:45 Morning break
kl 10:45 - 12:30 Software design exercise:
• Software design exercise
• Design exercise review #3
kl 12:30 - 13:30 Lunch
kl 13:30 - 14:00 C4 model - supplementary diagrams:
• C4 and UML
• System Landscape diagrams
• Dynamic diagrams
• Deployment diagrams
• Frequently asked questions
kl 14:00 - 14:30 Documenting software architecture:
• The importance of documentation
• Writing lightweight supplementary documentation using a "software guidebook" or arc42
• Architecture decision records
kl 14:30 - 15:00 Afternoon break
kl 15:00 - 15:30 Tooling:
• Diagrams vs models
• Extracting software architecture information from code and "architecturally-evident coding styles"
kl 15:30 - 16:15 Software architecture in the delivery process:
• Quantifying and prioritising risk
• Identifying risk with risk-storming
• Design exercise review #4
• Waterfall, RUP, agile, etc
• The conflict between architecture and agile
• Approaching software architecture in a pragmatic, lightweight way
• How much up front design is enough
kl 16:15 - 16:30 Discussion, questions and wrap-up
Our Approach to Training:
The course is interactive, with a combination of presentation, group discussion and group working. Throughout the course you’ll solidify everything you learn by defining the architecture for a small software system through a series of exercises focused around a software design exercise and case study.
There is a practical element:
Yes, you’ll be broken up into groups and asked to design a small software system from nothing but a set of requirements and a whiteboard.
This includes:
• Defining the architecture for the case study solution
• Deciding on the technologies that would be used to implement it
• Drawing up different views of the architecture to illustrate the software components and their interactions
• Assessing and justifying that the architecture will satisfy the functional and non-functional requirements
• Comparing and reviewing what each of the groups has come up with; discussing the choice of technologies, diagram notation and process used to define the architecture.
Kursinstruktør: Simon Brown
Simon er en internasjonalt anerkjent stemme innen programvarearkitektur. Han har en pragmatisk og praktisk tilnærming til temaet og foreleser innen teknisk lederskap, kommunikasjon og hvordan balansere "up-front" design med smidige metoder. Simon praktiserer også det han foreleser og har utviklet Structurizr, en samling av verktøy for å hjelpe team med å visualisere og dokumentere software-arkitektur. Han er også mannen bak C4 modellen for programvarearkitektur og har også skrevet bøkene «Software Architecture for Developers».
Målgruppe for kurset:
Kurset er rettet mot utviklere og arkitekter uavhengig av teknologi og plattform, det passer like godt om du lager systemer for Java, .NET eller noe annet.