Studying Software Engineering Patterns for Designing Machine Learning Systems
This work addresses the problem of software complexity and quality in ML systems for developers and researchers, but it is incremental as it focuses on compiling existing patterns rather than introducing new ones.
The authors tackled the lack of systematic collection and classification of software engineering design patterns for machine learning systems by conducting a systematic literature review to gather and categorize good and bad patterns, providing developers with a preliminary organized resource.
Machine-learning (ML) techniques have become popular in the recent years. ML techniques rely on mathematics and on software engineering. Researchers and practitioners studying best practices for designing ML application systems and software to address the software complexity and quality of ML techniques. Such design practices are often formalized as architecture patterns and design patterns by encapsulating reusable solutions to commonly occurring problems within given contexts. However, to the best of our knowledge, there has been no work collecting, classifying, and discussing these software-engineering (SE) design patterns for ML techniques systematically. Thus, we set out to collect good/bad SE design patterns for ML techniques to provide developers with a comprehensive and ordered classification of such patterns. We report here preliminary results of a systematic-literature review (SLR) of good/bad design patterns for ML.