Software reusability metrics estimation: Algorithms, models and optimization techniques. (July 2018)