Applying an iterative development when teams are not
co-located is a bigger challenge, and one of the solutions is
breaking up the system into clearly defined subsystems,
components, or increments that separate teams working in parallel can design, build, and test as independent modules,
at least to some degree