1. A computer-implemented method for facilitating the development and maintenance of a software program, comprising: obtaining a role associated with a dependency of a consumer in the software program on an interface; obtaining a compatibility policy for the interface; and using the role and the compatibility policy to manage use of the interface by the consumer in the software program.