Managing Computational Complexity Through Using Partitioning, Approximation And Coordination