În cazul unor sisteme informatice ce includ activități concurente se acutizează efectele de dispersie a funcționalităților și a codului confuz. Sincronizarea și comunicarea inerentă acestor sisteme face elaborarea de software dificilă implicând dificultăţi de reutilizare din cauza unor conflicte dintre codul de implementare a funcționalităților de bază și a funcționalităților de organizare a concurenței (sincronizare, planificare, protecție, etc.). Aceste conflicte au fost intens studiate și le găsim în lucrări de specialitate cu numele de anomalii de moștenire (inheritance anomaly – l. eng.).
Mai mulţi cercetători din domeniu (Satoshi Matsuoka, Akinori Yonezawa în [1]; Lobel Crnogorac în [2]; Denis Kafura, Greg Lavender în [3]; și alții) au încercat să clasifice și să formalizeze aceste anomalii ce fac nejustificată sau chiar imposibilă reutilizarea prin moștenire a claselor de bază, căci implică redefinirea a unui număr prea mare de metode. Aceleaşi anomalii le regăsim menționate și în relativ mai recenta lucrare [4] (din 2004, autori fiind Giuseppe Milicia și Vladimiro Sassone), în care se susține că nici limbajele populare moderne de programare nu exclud apariția anomaliilor.
Conform lucrărilor menționate se disting trei clase generice pentru anomalii în care conceptul moștenirii ca formă de reutilizare este mult diminuat:
- Anomalii determinate de istoric (history-sensitive anomaly – l. eng.);
- Anomalii de partiționare a stărilor abstracte (partitioning of states – l. eng.);
- Anomalii de modificare a stărilor abstracte (modification of acceptable states – l. eng.).