Applicazione monolitica

Nell’ingegneria del software, un’applicazione monolitica descrive un’applicazione software a livello singolo in cui l’interfaccia utente e il codice di accesso ai dati sono combinati in un unico programma da un’unica piattaforma.

Un’applicazione monolitica è autonoma e indipendente da altre applicazioni informatiche. La filosofia di progettazione è che l’applicazione è responsabile non solo per un particolare compito, ma in grado di eseguire ogni passo necessario per completare una particolare funzione. Oggi, alcune applicazioni di finanza personale sono monolitiche nel senso che aiutano l’utente a svolgere un compito completo, end to end, e sono silos di dati privati piuttosto che parti di un sistema più ampio di applicazioni che lavorano insieme. Alcuni word processor sono applicazioni monolitiche. Queste applicazioni sono talvolta associate a computer mainframe.

Nell’ingegneria del software, un’applicazione monolitica descrive un’applicazione software progettata senza modularità. La modularità è auspicabile, in generale, in quanto supporta il riutilizzo di parti della logica dell’applicazione e facilita anche la manutenzione consentendo la riparazione o la sostituzione di parti dell’applicazione senza richiedere la sostituzione all’ingrosso.

La modularità è raggiunta in varie dimensioni da diversi approcci di modularizzazione. La modularità basata sul codice consente agli sviluppatori di riutilizzare e riparare parti dell’applicazione, ma sono necessari strumenti di sviluppo per eseguire queste funzioni di manutenzione (ad esempio, potrebbe essere necessario ricompilare l’applicazione). La modularità basata su oggetti fornisce l’applicazione come una raccolta di file eseguibili separati che possono essere mantenuti e sostituiti indipendentemente senza ridistribuire l’intera applicazione (ad esempio file “dll” di Microsoft; file “shared object” di Sun/UNIX). Alcune funzionalità di messaggistica degli oggetti consentono la distribuzione di applicazioni basate su oggetti su più computer (ad esempio Microsoft COM+). Le architetture orientate ai servizi utilizzano specifici standard/protocolli di comunicazione per comunicare tra i moduli.

Nel suo uso originale, il termine “monolitico” descriveva enormi applicazioni mainframe senza modularità utilizzabile. Ciò, in combinazione con il rapido aumento della potenza computazionale e quindi un rapido aumento della complessità dei problemi che potrebbero essere affrontati dal software, ha portato a sistemi non manutenibili e alla “crisi del software”.