In this thesis, we address the library-client co-evolution problem from the nounal and the verbal views. On the one hand, the nounal view allows us to empirically understand the nature of the library-client co-evolution phenomenon. In particular, we study (i) best practices to define dependencies as a way of preventing the propagation of breaking changes, and; (ii) syntactic breaking changes and their impact on client projects in relation with semantic versioning.