Un contratto è definito come un accordo tra due o più parti tra cui vengono identificati fornitori e consumatori. I primi erogano una serie di servizi e i secondi ne beneficiano. Un servizio può essere non atomico, cioè può essere composto da altri servizi (di supporto, di terze parti, e cosi via). In questo modo otteniamo una catena di servizi dove si possono distinguere diversi accordi. In un contratto, generalmente, vengono specificati i servizi facenti parte dell’accordo, i livelli di servizio e le relative penalità. Tutto questo viene formalizzato nei contratti attraverso gli SLA (Service Level Agreement). In particolare, i livelli dei servizi vengono specificati tramite delle metriche denominate KPI(Key Performance Indicator). Esistono vari tipi di indicatori che dipendono dal particolare campo di applicazione. Un servizio composto avrà metriche specifiche che dipenderanno da quelle dei servizi da cui è formato, ottenute dalla particolare composizione utilizzata. L’obiettivo di questo progetto è fornire uno strumento che permetta l’identificazione automatica della composizione ottimale di una catena di servizi, in modo tale da ottenere il livello di servizio più favorevole per le parti presenti nel contratto. In questo modo un’azienda potrà migliorare la propria offerta e sfruttare appieno le proprie potenzialità fornendo servizi ottimizzati. Parallelamente, verrà migliorata la gestione delle penali in caso di mancato raggiungimento dei livelli di servizio.