Software Re-Modularization based on Structural and Semantic Metrics