Che cos'è effettivamente un modulo in ingegneria del software? [chiuso]


18

Secondo Stephen Schach, "Ingegneria del software classica e orientata agli oggetti", capitolo 6:

un modulo è costituito da un singolo blocco di codice che può essere invocato nel modo in cui viene invocata una procedura, una funzione o un metodo

Questo sembra molto vago e ampio. Qualcuno potrebbe spiegarlo chiaramente e mostrare alcuni esempi concreti di come suddividere un requisito in moduli? Grazie.

Risposte:


16

Un modulo,

  • incapsula codice e dati per implementare una particolare funzionalità.
  • ha un'interfaccia che consente ai client di accedere alla sua funzionalità in modo uniforme.
  • è facilmente collegabile con un altro modulo che si aspetta la sua interfaccia.
  • di solito è confezionato in una singola unità in modo che possa essere facilmente distribuito.

Ad esempio, dapper.net incapsula l'accesso al database. Ha un'API per accedere alla sua funzionalità. È un singolo file che può essere inserito in un albero dei sorgenti da costruire.

Il concetto di modulo deriva dal paradigma di programmazione modulare che sostiene che il software dovrebbe essere composto da componenti separati e intercambiabili chiamati moduli suddividendo le funzioni del programma in moduli, ognuno dei quali svolge una funzione e contiene tutto il necessario per raggiungere questo obiettivo.


se abbiamo un sacco di requisiti in modo che ogni requisito possa essere considerato come un modulo? Ad esempio: il requisito "Aggiunta di un dipendente" può essere un modulo?
Hoan,

1
No o dipende. Le funzioni del programma dovrebbero essere suddivise in unità coesive. Se i requisiti possono essere suddivisi in tal modo, può essere sì. Ma non ho ancora visto niente del genere. Inoltre, "Aggiunta di un dipendente" non dovrebbe essere un candidato per il modulo. Di solito i moduli sono strutture di livello superiore che scompongono i programmi in unità logicamente coerenti.
thed

12

Il modulo potrebbe essere un termine sovraccarico, al punto che Wikipedia lo descrive sotto il termine Programmazione Modulare quando ne discute l'uso relativo al software. Ne discutono in termini di programmazione strutturata basata su un approccio progettuale dall'alto verso il basso. Caratteristiche chiave della modularità legate all'uso di accoppiamento basso e alta coesione .

Il mio uso è stato che in un linguaggio come C o persino C ++, un modulo è correlato alla definizione di un'unità compilata separatamente da un file di origine (.c o .cpp) e in genere un file di intestazione associato (.h). Altre lingue usano il modulo come descrizione e il linguaggio Modula-2 mette la struttura attorno ai moduli in primo piano e nel suo nome e nel suo approccio.

Storicamente, il modulo ha alcune altre implicazioni come sono state descritte nel documento di DL Parnas "Sui criteri da utilizzare nella decomposizione del software in moduli" . Si occupa principalmente di discutere i vantaggi della sostituzione della decomposizione funzionale con la decomposizione orientata ai dati, che è stato un grande passo verso il nostro stato dell'arte attuale che è la decomposizione orientata agli oggetti.

I linguaggi orientati agli oggetti sono organizzati attorno alle classi, quindi forse il termine modulo è meno importante e meno preciso in quel contesto.


7

Non esiste una definizione formale di un modulo e ciò che un modulo è (o non è) nel contesto del progetto dipende in gran parte dalla natura e dal design del progetto.

In generale, un modulo è un pezzo di codice autonomo che fornisce funzionalità specifiche e strettamente collegate, i moduli definiscono e impongono limiti logici nel codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.