Reverse-engineering architecture diagrams from your Java app

Track: Architecture
Abstract
You've adopted the C4 model and have a collection of zoomable system context and container diagrams. These are useful for having high-level conversations, but they don't cover the internal implementation details of your Java app. You consider creating a C4 component diagram. Unfortunately the size and complexity of your Java codebase makes manually drawing this out of the question, and reverse-engineering the codebase with a generic tool produces a cluttered diagram that literally shows everything. How do you create useful component level diagrams that remain up to date with minimal effort? Is this even possible?

Join me for a discussion of how to tackle this problem, where I'll cover the theory and tactics behind how to reverse-engineer meaningful component diagrams, before presenting a live demo of how to use the open source Structurizr DSL to put the techniques into action.
Simon Brown
Simon is an independent consultant specialising in software architecture, and the author of “Software Architecture for Developers” (a developer-friendly guide to software architecture, technical leadership and the balance with agility). He is also the creator of the C4 model for visualising software architecture, and the founder of Structurizr. Simon is a regular speaker at international software development conferences, and travels the world to help organisations visualise and document their software architecture.