Each abstraction (e.g. a resource, class, 'define', or module) should be designed to specify the properties of a single piece of software. In other words, each abstraction should follow single responsibility principle. An abstraction suffers from multifaceted abstraction when the elements of the abstraction are not cohesive.
The smell may occur in the following two forms: 1) a resource (file, package, or service) declaration specifies attributes of more than one physical resources, or 2) all the language elements declared in a class, 'define', or a module are not cohesive.
The following set of tools detects this smell: Puppeteer(for Puppet)
T. Sharma, M. Fragkoulis, D. Spinellis, “Does Your Configuration Code Smell?”. MSR 2016, pp. 189–200.
All rights reserved (c) Tushar Sharma 2017-23.