In software architecture, what is the primary purpose of defining explicit interfaces between components?