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)''