—Software clustering is a method for increasing software system understanding and maintenance. Software designers, first use MDG graph to model the structure of software system. In MDG, system modules (e.g. files ,classes) are represented as nodes and their relationships (e.g. function calls , inheritance relationships) as directed edges that connect the nodes. Once the MDG created, clustering algorithms are applied and create a partitioned MDG. Graph partitioning is a NP-Complete problem, So many algorithms for solving it has been reported in the literatures. In this paper two approximate algorithms have been proposed. The first algorithm is based on object migration learning automata and the second algorithm is a hybrid evolutionary algorithm obtained from combining object migration learning automata and genetic algorithm. The second algorithm by using learning automata and genetic algorithm accelerates the searching process and also prevents the algorithm from getting stuck in loc...