Teoria urmelor se referă la modul în care hardware-ul și software-ul computerului procesează comenzile simultan. Uneori se face referire la calculul concurent și poate fi comparat cu ideea de calcul paralel. Ideea principală din spatele calculului concurent este că mai multe procese folosesc aceeași resursă și sunt dependente unul de celălalt. Esențial pentru teoria urmei este ideea că există un număr infinit de modele și relații posibile pe care procesele le pot forma.
Majoritatea hardware-ului computerului și a limbajelor de programare sunt concepute în jurul teoriei urmelor. Calculul simultan examinează ceea ce este procesat și cum are loc activitatea de procesare. În timp ce procesele simultane care utilizează aceleași resurse sunt de obicei independente unele de altele, ele pot, de asemenea, interacționa. Ideea proceselor interdependente alcătuiește nucleul calculului concurent și al graficelor de dependență.
Chiar dacă fiecare proces de calcul poate avea loc separat, graficele de dependență arată ce procese ar putea folosi același hardware sau software. În aceste grafice și calcule, factorul dependent poate fi etichetat cu litera „C” sau „D”. Graficele de dependență ilustrează că, dacă două procese folosesc un anumit factor, atunci și alte procese care conțin identificatori identici vor fi dependente de același factor.
Deoarece teoria urmelor încearcă să explice modul în care apar diferite procese de calcul și comenzi, graficele de dependență nu identifică doar ce resurse sunt utilizate, ci și căile și rutele pe care procesele le parcurg. Este important să luăm în considerare faptul că teoria afirmă că există doar un anumit număr de dependențe sau relații care pot apărea cu un singur factor. În timp ce numărul de modele în calculul concurent este infinit, doar un număr selectat de procese vor forma aceeași dependență sau vor folosi aceeași resursă.
Teoria urmelor ilustrează faptul că procesele paralele sunt matematic egale între ele. Este similar cu ideea de a lua două linii paralele, de a trasa o linie de intersectare prin ele și de a măsura unghiurile de pe partea opusă a fiecărui punct de intersectare. Chiar dacă liniile paralele în sine nu se intersectează, ele sunt identice între ele și au aceeași valoare. În cazul calculului concurent, linia de intersectare ar fi echivalentă cu o dependență.
Limbajul folosit pentru a reprezenta diferitele procese care folosesc aceleași dependențe este binar. De exemplu, un proces poate fi reprezentat de literele „AC”, în timp ce un al doilea proces este reprezentat de literele „AB”. Valoarea binară de „0” ar putea fi atribuită procesului „AC”, iar valoarea binară de 1 ar putea fi atribuită procesului etichetat „AB”.