A software component is simply an abstract design entity with which we can associate responsibilities for different tasks.
May eventually be turned into a class, a function, a module, or something else.