Я вижу, что эти термины довольно часто используются разными авторами, но я не могу зафиксировать окончательные определения.
В моем POV программный интерфейс - это «тип», определяющий способ использования программного компонента другими программными компонентами.
Но в чем именно состоит программный компонент, я не совсем уверен (и, похоже, никто другой не уверен). То же самое относится и к программному модулю и программному модулю, хотя я подозреваю, что программный модуль меньше, ах, единицы, чем компонент, а программный модуль как-то связан с упаковкой.
Я надеюсь, что это не будет считаться (и будет опровергнуто) слишком легкомысленным, так как у меня есть серьезное намерение спросить.