è nato a Bologna nel 1970. Ha conseguito la Laurea in Scienze dell'Informazione nel 1994 e il Dottorato di Ricerca in Informatica nel 1999, presso l'Università di Bologna.
Dal 1999 al 2001 è stato ricercatore di informatica presso l'Università di Torino e dal 2001 al 2018 professore associato di informatica presso l'Università di Urbino. Dal 2018 è professore ordinario di informatica presso l'Università di Urbino.
È autore di più di 100 pubblicazioni scientifiche nel campo dell'informatica teorica, con particolare riferimento alla semantica dei linguaggi di programmazione e alla verifica di correttezza del software, tra cui il libro A Process Algebraic Approach to Software Architecture Design edito da Springer nel 2010. Ha tenuto insegnamenti universitari di Programmazione Procedurale, Programmazione Logica, Programmazione Funzionale, Algoritmi e Strutture Dati e ha organizzato e diretto dal 2001 al 2016 la serie di scuole estive di dottorato denominata SFM - International School on Formal Methods for the Design of Computer, Communication and Software Systems.
Presso l'Università di Urbino ha ricoperto gli incarichi di Presidente del Corso di Laurea in Informatica Applicata, Direttore del Master in Domotica, Delegato Rettorale all'Innovazione Tecnologica, Vice-Direttore del Centro Integrato Servizi Didattici ed E-Learning e componente del Consiglio di Amministrazione, svolgendo altresì ruoli di rappresentanza per l'Ateneo in seno a CINECA, GARR e CRUI. Durante la sua attività gestionale si è occupato in maniera significativa di digitalizzazione in ambito universitario, ideando e guidando tra gli altri il progetto UniDem - Sistema Integrato per la Dematerializzazione di Modulistica e Processi Amministrativi Universitari, del quale fanno parte le applicazioni UniContr e UniConv.