Uma explicação simples e clara (do curso de fundamentos do Magento U):
Dependência total
Implica que um módulo não pode funcionar sem os outros módulos dos quais depende.
Exemplos de dependências físicas incluem:
- O módulo contém código que usa diretamente a lógica de outro módulo (instâncias, constantes de classe, métodos estáticos, propriedades de classe pública, interfaces e características).
- O módulo contém seqüências de caracteres que incluem nomes de classe, nomes de métodos, constantes de classe, propriedades de classe, interfaces e características de outro módulo.
- O módulo desserializa um objeto declarado em outro módulo.
- O módulo usa ou modifica as tabelas de banco de dados usadas por outro módulo.
Magento_AdminNotification
tem uma forte dependência de Magento_Store
Dependência suave
Implica que um módulo pode funcionar sem os outros módulos dos quais depende.
Exemplos de dependências simples:
- O módulo verifica diretamente a disponibilidade de outro módulo.
- O módulo estende a configuração de outro módulo.
- O módulo estende o layout de outro módulo.
Magento_AdvancedPricingImportExport
tem uma dependência suave de Magento_CatalogImportExport
código como este:
if (!$model instanceof \Magento\CatalogImportExport\Model\Export\Product\Type\AbstractType) {
throw new \Magento\Framework\Exception\LocalizedException(
__(
'Entity type model must be an instance of'
. ' \Magento\CatalogImportExport\Model\Export\Product\Type\AbstractType'
)
);
}
Se um módulo usa código de outro módulo, ele deve declarar a dependência explicitamente.
EDIT: observei que isso também é explicado claramente no documento oficial: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html