Homogenization and Structural Topology Optimization, Theory, Practice and Software