Software component that extends the functionality of an existing software, but cannot be used independently from it