Doubly linked list with different dependencies
Task depends on Dependency (not very troubling in itself) :

public class Task {
    private List&lt;Dependency&gt; parents = new ArrayList&lt;Dependency&gt;();


Also Dependency depends on concrete class Task (somewhat more troubling):

public interface Dependency {
    Task getTask();


Although dependency cycles of size 2 are not intrinsically a problem, in this case interface Dependency is pretty much useless, [if we look at the implementation, which is a hybrid holder and wrapper for Task]. Too generic a name and getters and setters on the interface are also signs that this interface does not pull its weight.

If the problem model is a graph it is expected that class that represents the node of that graph should be depend on itself. Dependency cycles of 1 is generally better than 2.

My Suggestion

The only methods that contain logic in the implementation of Dependency is setBackwards and setForwards. But when we read them we see that they manipulate the insides of Task, and therefore should be moved into that class. After the said move you can remove Dependency and EA, and directly use Task instead.