An executable file which exposes an interface. By using this interface,
another executable can use its services without seeing its source code.
-- SavasAlparslan

Why does it have to be a file?  Why can't you think of a web server that
provides a SOAP interface as being a software component?  What if it is
something stored in a database, one file that contains many components?
What about downloading a Java component over the internet, which might
be a file on the other machine but you don't really know for sure?

''There is a web server which provides a SOAP service. When a SOAP request arrives, it
sends me an email. Then, I type a reply in SOAP protocol, the web server gets
my reply and sends it to the requester. So, am I a SoftwareComponent?''

----
And how is this different from a Program? Based on your definition I can't
find any sentence in which "Software Component" cannot be interchanged
with "Program".

''A program is a software component which has an interface that provides an entry-point (like main() in CeeLanguage)''