La arquitectura de software define los componentes abstractos de un sistema, sus interfaces y comunicaciones. Existen varios tipos comunes como la descomposición modular, arquitecturas de dominio específico, multiprocesador, cliente-servidor, distribuida y tiempo real. Esta última debe responder a eventos del mundo real en tiempos estrictos guiada por hardware, software y requisitos de la aplicación.