Constraint-Driven Separation Architecture