Machine Learning Software Design