De varias maneras.
1.- La vieja y universal estrategia: Divide y Venceras.
Hacen que algo complejo pueda ser analizado y tratado en varias partes simples.
2.- Niveles de abstraccion
Puede haber modulos especializados en el negocio o la funcionalidad, otros en seguridad, otros en la impresion otros en la comunicacion entre equipos.
Esos niveles de abstraccion hacen que cada modulo tenga elementos que pueden ser divididos para que los traten profesionales especializados en ellos y que no todos tengan que conocer de todo.
3.- Reutilizacion
Si se separan bien los modulos estos pueden tener una funcionalidad que sea reutilizada por otros sistemas . Entonces cuando construimos una nueva aplicacion no tenemos que hacer todo de nuevo.
Por ejemplo tanto si hacemos una aplicacion para llevar la contabilidad de una empresa o para hacer planos de arquitectura, el modulo de login y registracion de usuarios podria ser utilizado por las dos
4,. Distribucion
Cada modulo puede ser instalado en distintos equipos, y hasta ser desarrollados en distintos lenguajes, de tal forma que aprovechemos mejor la potencia de calculo, o los recursos que tenemos.
5.-Flexibilidad
Relacionado con la capacidad de los equipos podemos tener instalados los modulos en distintos equipo y si los podemos replicar, es decir instalar el mismo modulo en mas de un equipo y eso nos da mas potencia, podemos escalar las partes que tengan mayor exigencia en los periodos que se necesiten. Como por ejemplo, replicar mas puntos de entrada para el frontend o los modulos de atencion web para dias festivos en los que hay muchas compras.
6.- Otros.
Hay muchos mas casos.
Algunos los estare compartiendo mas adelante en mi sitio