A software component
(a) Implements some functionality
(b) Has explicit dependencies through provides and required interfaces
(c) Communicates through its interfaces only
(d) All of the mentioned
This question was addressed to me in an interview for internship.
This key question is from Component Level Design topic in section Design and Implementation of Software Engineering