Software connectors are architectural elements that model interactions between components. They define rules governing interactions and provide channels for transferring control and data. In software systems, connectors are often not explicitly implemented but distributed across code, while in architectures they are first-class entities with identities. Treating connectors independently from components supports separation of interaction from computation and facilitates software evolution.