Los sistemas distribuidos son requeridos para incrementar la potencialidad de los servicios, aumentando la performance (velocidad), la tolerancia y la seguridad. Estos funcionan sobre grandes redes físicas, cuyo comportamiento puede no ser predecible.
Este tipo de sistemas está formado por procesos y recursos / servicios que son compartidos por los mismos. Para el correcto funcionamiento de los procesos es necesario contar con mecanismos que sincronicen los procesos cooperantes, o que controlen la utilización de recursos / servicios que sólo un número acotado de procesos pueden utilizar en un determinado momento.
Por ende, el desarrollo de sistemas distribuidos es muy complejo.
En todos los tipos de sistemas es necesario poder entender el dominio del problema y que este se encuentre documentado; en especial en este tipo de sistemas que son tan complejos y que se están convirtiendo en indispensables para varias aplicaciones y organizaciones. Una buena manera para manejar / controlar el incremento de la complejidad es a través de formas estructurales, observándolo en diferentes niveles de abstracción y como descomposición paralela de los componentes que interactúan.
Para poder especificar las propiedades de los sistemas distribuidos se utilizan modelos. El propósito del modelo es definir precisamente las propiedades o características de un sistema a construir o analizar y proveer las bases para la verificación de las propiedades.