Un DLL
di per sé non costituisce un design del modulo o migliora la flessibilità. Definisce in modo significativo lo stato in cui è presente il codice sorgente compilato e viene trasportato nell'applicazione.
di personalizzazione
Di solito implica un livello API che consente agli sviluppatori di integrare funzionalità aggiuntive come funzionalità opzionali, caratteristiche richieste dai clienti o per separare lo sviluppo di funzionalità dallo sviluppo del framework applicativo.
I professionisti
- L'isolamento del codice sorgente garantisce che uno sviluppatore di plugin non apporti modifiche inutili all'applicazione.
- Possibilità di caricare le funzionalità su richiesta.
- Possibilità di espandere l'applicazione nel tempo.
- Definire chiaramente i confini tra i livelli consente team di sviluppo diversi con set di abilità diversi. (ovvero un team principale, un team di interfaccia utente e un team di funzioni).
- Diversi programmi di rilascio per i diversi moduli possono semplificare le scadenze di riunione.
I contro
- Lo stretto accoppiamento tra plug-in e API dell'applicazione può causare maggiori costi di sviluppo quando l'API deve essere modificata.
- Il costo di implementazione di una funzione può aumentare in quanto il livello API deve sempre essere adattato per soddisfare i nuovi requisiti.
- I vantaggi dei componenti sostituibili non vengono mai utilizzati dall'azienda. Vedo che questo accade molto, dove gli sviluppatori cantano le lodi del design modulare ma il business non ne trae mai vantaggio.
- La necessità di supportare il minimo comune denominatore. Piuttosto che supportare l'ultima versione di qualcosa come OpenGL. L'applicazione è bloccata utilizzando una versione precedente, perché l'API è troppo generica e il miglioramento dell'API è troppo costoso.
- Se diversi team di sviluppo creano moduli, l'applicazione può risentire dell'esperienza utente diversa per le funzionalità.