The Coexistence of SOLID Principles, Clean Architecture and MVVM