Cálculo de sistemas comunicantes
# Cálculo de sistemas comunicantes

El cálculo de sistemas comunicantes o CCS es un lenguaje de especificación formal basado en el álgebra de procesos, para la especificación y modelado de sistemas discretos comunicantes.

El lenguaje CCS fue propuesto ("A Calculus of Communicating Systems") por Robin Milner para ejemplificar su idea de un álgebra para representar simbólicamente los procesos que conforman un sistema de software paralelo, su proposición fue hecha poco antes que la de CSP de Tony Hoare ("Communicating Sequential Processes"), formando ambos lenguajes los ejemplos por excelencia de lo que es un álgebra de procesos.

CCS propone una notación textual y otra visual para representar la existencia dentro de un sistema de lo que llama proceso y la definición de estos. Los procesos son vistos como bloques herméticos que comunican con el mundo externo o ambiente por medio de puertos bien específicos, que conforman lo que se conoce como interfaz del proceso. Los procesos definen su comportamiento enunciando explícitamente la secuencia entera de operaciones elementales que dicho proceso efectúa durante toda su existencia.

## Notación visual

La imagen a la derecha muestra un ejemplo de la notación gráfica de CCS, en este caso, dos procesos llamados Proceso 1 y Proceso 2 respectivamente. Los puntos oscuros en el borde los procesos representan los puertos, en CCS los puertos sirven para el envío o la recepción de símbolos a través de un canal, siendo los puertos y canales unidireccionales. Por convención, un puerto de entrada a se llamará del mismo modo pero utilizando una barra horizontal sobre él para denotar que es un puerto de salida.

## Extensiones

* Cálculo de procesos con ubicaciones para sistemas poblacionales es una extensión de CCS con escogencia probabilística, y con ubicaciones y atributos para las ubicaciones.
