El diseño arquitectónico de software se centra en decisiones sobre la organización lógica del sistema a través de subsistemas que ofrecen servicios relacionados. Este proceso incluye la identificación de subsistemas, el modelado de relaciones de control y la descomposición modular, así como la consideración de requerimientos no funcionales. Las principales arquitecturas incluyen modelos de repositorio, cliente-servidor y de capas, cada uno con sus ventajas y desventajas en la comunicación y gestión de datos.