A set of lightweight techniques using agile and Domain Driven Design (DDD) principles that help teams plan enough to start modernizing software systems
2-4 days if done end-to-end
Business stakeholders, architects, technical leads, developers
Align business leaders and technical practitioners. Use this approach to break down a system of systems, and develop a notional architectural plan that maps future goals with the way the system “wants to behave.” We’ve found this to be especially important for critical systems modernization. - Inform decisions on how to organize development teams, and prioritize work from both a business and technical perspective. It’s also helpful as a “catch-all” way to define a path between the status quo and the desired state.
Jumpstart application modernization initiatives in an iterative fashion. This is the core method of the App Navigator, which can be a short consulting engagement that quickly reviews current business functionality and plans “to be” architecture. Our experts practice the Swift method to discover architecture, boundaries, points of risk or concern, and then map a direction to move from current state to future state.
Event Storm the system, using language that business and technical people understand.
Conduct a Boris exercise that models the relationships between capabilities in a system. Conduct a SNAP that documents the technical capabilities identified during Boris in real time.
Identify thin slices of modernization.
Thin slices are short domain event flows. Vertical slices are identified by choosing short, domain event flows in the core domain and leveraging the services coming out of Boris to produce those events. Think of them as the architectural components required to produce those events. Thin slices are informed by Event Storming, Boris and SNAP activities.
Prioritize the thin slices, with an eye to balancing business value, technical risk, and effort. The goal is to incrementally move the system toward behaving “the way it wants to;” the implementation of each successive slice gets us that much closer to this goal.
The thin slices become actionable when captured in the backlog as MVPs (Minimum Viable Products) or collections of stories. In some cases, VMware Tanzu Labs will partner with the customer team to identify and prioritize the thin slices, with an eye to balancing business value, technical risk, and effort.
As you define the slices, leverage tactical implementation patterns like anti-corruption layer, Facade, Docket Based Choreography, and Strangler so that the newer or strangled services coexist together with the older legacy system
Create a backlog of prioritized user stories tied back to goals (practice coming soon) / OKRs. Map user stories to MVP or releases.
Start hands-on experimentation, feedback, and iterative progress.
A good facilitator should be able to drive out how a system should be designed based on supporting the business capabilities from a DDD perspective.
This notional architecture now represents a good first cut direction of the system. When used as a tool for modernizing existing systems, Boris reveals the likely target architecture. Other activities in the Swift Method help define how to get from Current State to Modernized.
Swift Method: Event Storming, Boris the Spider and Other Techniques (YouTube video) talk at ExploreDDD 2019 by Shaun Anderson