Modular Programming defines the application as a collection of intercoupled modules. This increases the modularity of the application and hence its maintainability. The total system complexity is greatly reduced. Interface Based Programming adds more to modular Programming in that it insists that Interfaces are to be added to these modules. The entire system is thus viewed as Components and the interfaces that helps them to coact.
This is particularly convenient when third parties develop additional components for the established system. They just have to develop components that satisfy the interface specified by the parent application vendor. This is somewhat like a mobile phone manufacturer specifying a Mobile Charger Interface and third parties making their own Mobile Phone Chargers, adhering to these standards/Interface(Pin Arrangement, AC-DC Conversion Voltages etc.).
Thus the publisher of the interfaces assures that he will not change the interface and the subscriber agrees to implement the interface as whole without any deviation. An interface is therefore said to be a Contractual agreement and the programming paradigm based on this is termed as "interface based programming".