2009-06-22 1 views

risposta

7

Direi che la risposta dipende da chi chiedi.

Penso che la differenza sia di granularità e di ruolo. Un componente software per la mia comprensione è un'entità indipendente con un'interfaccia ben definita (e preferibilmente stabile) che interagisce con le parti restanti del sistema, e che ha significato rilevante dal punto di vista architettura di sistema. Un esempio potrebbe essere un livello di astrazione di accesso ai dati.

Un modulo per me sarebbe piuttosto un bundle di codice sorgente distribuibile contenente codice che condivide uno scopo comune, ma non svolge alcun ruolo significativo nel sistema (il che significa che la sua sostituzione non richiederebbe modifiche all'architettura generale del sistema) . Un esempio potrebbe essere un serializzatore JSON in un servizio web.

4

I moduli sono la capacità di dare al software nuove funzionalità.

I componenti sono elementi

0

Un componente è un solo un altro nome per il modulo, sono la stessa cosa. Di solito componente è il termine che è possibile trovare in un libro di ingegneria del software, mentre il modulo ha un utilizzo più diffuso.

+0

Non è corretto. Componente e modulo non sono esattamente la stessa cosa Anche se, spesso erroneamente utilizzati in modo intercambiabile. – iCrus

2

I componenti sono generalmente considerati elementi indipendenti e collegabili che seguono una sorta di specifica dell'interfaccia software. Un buon esempio sono gli elementi della GUI come caselle di testo avanzate e menu a discesa. Fondamentalmente tutto ciò che non è un programma completo, ma che può essere inserito in un altro programma per migliorare la sua funzionalità.

La parola Modulo è caduto in disgrazia negli ultimi anni. Il modulo è un termine più generico, ma alcuni linguaggi lo hanno come parola chiave, ad esempio Modula 2. VB.NET ha una parola chiave Module, ma questa è solo una classe ordinaria con membri statici e la mia comprensione è che la maggior parte dei programmatori VB preferisce usare la parola chiave Class.

1

componente: modulo scatola nera.

Ma non c'è alcuna differenza significativa, davvero. Non cercare di cercare un significato profondo qui.

6

Generalmente parlando,

  • un componente è un raggruppamento relativamente finemente grani di elementi che servono un particolare servizio nella soluzione .
  • un modulo è in grana courser e funge da raggruppamento di uno o più servizi correlati forniti dal software .

Un modulo tenderà a utilizzare molti componenti per fornire i propri servizi mentre un componente sarà probabilmente costruito da una manciata di classi e altri componenti.

In ogni caso la sua soggettiva e dipende dalla scala dell'applicazione. Per una piccola applicazione è probabile che ci sia un singolo programma (un modulo) e un numero di componenti. Nell'applicazione di medie dimensioni potrebbero esserci diversi moduli e molti componenti. In una grande applicazione potresti voler introdurre il termine sottosistema che è ancora più granuloso di un modulo!

+4

Interessante - nella mia esperienza le definizioni sono esattamente l'opposto. Gli standard di sviluppo del software tendono ad utilizzare "test del modulo" in modo intercambiabile con "test dell'unità", ad esempio. – JeffP

1

Le componenti sono definite a livello di sistema software (come visto/pensato in fase di esecuzione). Sono gli elementi di un sistema di esecuzione e insieme compongono un sistema più grande. Questi componenti/elementi interagiscono tra loro usando connettori (interfacce). Immagina scatole nere che comunicano tra loro, non viene data alcuna attenzione alla loro implementazione/codice sorgente.

Il modulo è definito a livello di linguaggio di programmazione (ad esempio, un insieme di 5 classi comprende un modulo che fornisce alcune funzionalità). Sono definiti a livello di codice sorgente secondo la funzionalità fornita da quella raccolta di codice. (esempio: classi di persistenza nella propria applicazione responsabili dell'interazione con il database).

Si noti che, il modulo è anche un tipo di componente (andando per categorizzazione e condivide un'associazione "is-a" con componente).

Riferimento: Len Bass, Software arch. in pratica e Dr. Timothy Lethbridge lecture