A case-based reasoning approach to reuse quality-driven designs in service-oriented architectures. (September 2018)