Il programmazione modulare è una tecnica utilizzata per lo sviluppo del software, dove il programma è suddiviso in tanti componenti o piccoli blocchi autonomi chiamati moduli, che sono gestibili, logici e funzionali.
Il modulo è un blocco di istruzioni che risolve un problema particolare. Ogni modulo contiene tutto il necessario per adempiere alla propria funzionalità e può essere modificato o modificato senza influire sul resto del progetto..
Questo modo di programmazione si ottiene mantenendo un'interfaccia del modulo permanente che viene utilizzata dagli altri componenti del software per accedere alle funzioni di ciascun modulo..
I moduli impongono confini logici tra i componenti, migliorando la manutenibilità. Sono incorporati tramite interfacce, progettate in modo tale da ridurre al minimo la dipendenza tra i diversi moduli.
Indice articolo
Un modulo principale e diversi moduli secondari sono ciò che compone la programmazione modulare. Le chiamate alle funzioni dei moduli ausiliari vengono effettuate dal modulo principale.
Questi plug-in esistono come file eseguibili separati, che vengono caricati quando viene eseguito il modulo principale. Ogni modulo ha un nome univoco assegnato nell'istruzione PROGRAM.
I team di lavoro possono sviluppare diversi moduli separatamente senza dover conoscere tutti i moduli del sistema. Ciascuna delle applicazioni modulari è associata a un numero di versione per fornire flessibilità agli sviluppatori nella manutenzione del modulo..
Un computer non necessita di una versione scomposta del codice per eseguirlo. Sono le limitazioni cognitive umane che ti costringono a scrivere codice in blocchi più piccoli.
Un programma può contenere altre funzioni e può anche fare riferimento a funzioni che si trovano in altri file. Queste funzioni o moduli sono serie di istruzioni utilizzate per eseguire un'operazione o calcolare un valore.
Per mantenere la semplicità e la leggibilità in programmi grandi e complessi, viene utilizzata una funzione principale breve in combinazione con altre funzioni, piuttosto che una funzione principale lunga.
Separando un programma in gruppi di moduli, ogni modulo risulterà più facile da capire, rispettando così le linee guida di base della programmazione strutturata..
Una funzione consiste in una dichiarazione della sua definizione seguita da comandi e istruzioni. La forma generale di una funzione è:
Nome_funzione (dichiarazione del parametro)
frasi;
comandi;
espressione di ritorno;
- La dichiarazione dei parametri rappresenta le informazioni che vengono passate alla funzione.
- Le variabili aggiuntive utilizzate specificamente dalla funzione sono definite nelle istruzioni.
- Tutte le funzioni devono includere un'istruzione return.
Le variabili dichiarate all'interno della funzione principale o nelle funzioni definite dall'utente sono chiamate variabili locali. Hanno un valore quando la funzione viene eseguita, ma il loro valore non viene mantenuto quando la funzione viene completata.
Le variabili dichiarate esterne al programma principale o alle funzioni definite dall'utente sono chiamate variabili globali. Queste variabili possono essere prese da qualsiasi funzione trovata all'interno del programma.
La programmazione modulare è piuttosto procedurale, poiché è completamente orientata alla scrittura di codice per funzioni, senza tener conto dei dati.
Supponiamo che una casa abbia l'elettricità, con diverse prese elettriche sui muri. Questo sistema consente di collegare vari dispositivi elettrici, ad esempio microonde, lavatrice, asciugatrice, ecc..
Questi dispositivi sono progettati per svolgere il loro compito specifico quando collegati e accesi, indipendentemente da dove si trovano..
I moduli di un'applicazione devono seguire questa stessa filosofia. Ciò significa che devono solo eseguire il loro compito specifico, indipendentemente dalla parte dell'app in cui si trovano o anche dall'app a cui sono connessi..
Inoltre, proprio come un dispositivo elettrico può essere facilmente scollegato dalla presa, un modulo deve essere progettato in modo tale da poter essere facilmente rimosso da un'applicazione..
Proprio come la rimozione di un dispositivo elettrico non influisce sulla funzionalità degli altri dispositivi collegati, la rimozione di moduli da un'applicazione non dovrebbe influire sulla funzionalità degli altri moduli di tale applicazione..
In Java i moduli sono scritti come funzioni indipendenti. Ad esempio, puoi avere una funzione o un blocco di codice per calcolare il GPA di uno studente in base ai suoi voti in tutti i corsi che hanno seguito..
La funzione deve ottenere l'elenco dei voti come input e quindi restituire la media dei voti calcolata:
Questa funzione si chiama CalculateAverageNote. Riceve in input un elenco di note, utilizzando un array di tipo di dati double, e restituisce la media calcolata.
Nella funzione, la variabile locale sum viene inizializzata a zero e quindi, utilizzando un ciclo for, tutte le qualifiche vengono aggiunte a sum. Infine, la somma ottenuta viene divisa per il numero di note, restituendo il valore risultante.
Se la matrice di input avesse le note 3.5, 3.0 e 4.0, dopo averle sommate, avrebbe sommato il valore di 10.5 e poi sarebbe stato diviso per 3, perché ci sono tre note. La funzione restituirà il valore 3.5.
Più programmatori possono lavorare sullo stesso progetto se è suddiviso in moduli. Diversi programmatori possono progettare in modo indipendente diversi moduli del programma, che è ciò che è richiesto per un programma ampio e complesso.
I programmi possono essere sviluppati più rapidamente, poiché i piccoli moduli autonomi sono più facili da comprendere, progettare e testare rispetto ai programmi di grandi dimensioni.
Il programmatore può fornire l'input necessario e verificare che il modulo sia corretto esaminandone l'output..
Il codice scritto per un programma è spesso utile in altri. La programmazione modulare consente di salvare queste sezioni per un utilizzo futuro. Poiché il codice è riposizionabile, i moduli salvati possono essere collegati a qualsiasi altro programma che soddisfi i requisiti di input e output..
Con la programmazione monolitica, tali sezioni di codice sono incorporate nel programma e non sono disponibili per l'uso da parte di altri programmi..
Un modulo è più piccolo di un programma completo, facilitando il test. Ogni modulo può essere scritto e testato separatamente dal resto del programma. Dopo che un modulo è stato testato, può essere utilizzato in un nuovo programma senza doverlo testare di nuovo.
Quando un programma deve essere modificato, la programmazione modulare semplifica il lavoro. I moduli nuovi o di cui è stato eseguito il debug possono essere collegati a un programma esistente senza che il resto del programma venga modificato.
Questa programmazione utilizza interfacce, che è un'idea piuttosto efficace. Per trarne vantaggio, alcuni framework sono dotati di un set completo di classi intercambiabili. Ad esempio, per gestire la persistenza, potrebbero esserci più classi che implementano un'interfaccia di persistenza.
Tuttavia, gli ambienti di sviluppo integrato (IDE) si confondono su questo. Ad esempio, potresti provare a trovare l'origine di un metodo e l'IDE non saprà quale metodo vuoi vedere, visualizzando così un lungo elenco di file in cui esiste un metodo con quel nome..
Ci sono molti moduli che contengono solo una funzione molto piccola. Ogni modulo richiede tempo di analisi ed elaborazione aggiuntivo, oltre alla sua intestazione nel codice.
Pertanto, l'utilizzo di molti piccoli moduli aggiungerà un sovraccarico al sistema di compilazione, aumentando la dimensione del pacchetto.
Alcuni codici non cambiano quasi mai. In questi casi potrebbe non avere molto senso cercare di farlo sembrare più pulito o con una logica astratta, se il solo utilizzo funziona già bene.
Ci sono codici che non sembrano troppo belli e tuttavia non sono cambiati molto negli ultimi anni. Non vi è alcun motivo per scomporre il codice che non è mai cambiato e che funziona già correttamente..
La programmazione modulare è solo un concetto. La sua pratica può essere applicata a qualsiasi linguaggio di programmazione, specialmente quelli di natura procedurale, che hanno un programma compilato separatamente.
Le librerie di componenti create da moduli compilati separatamente possono essere combinate in un set utilizzando uno strumento di programmazione chiamato linker.
I nomi delle funzioni nei diversi moduli devono essere univoci per facilitarne l'accesso nel caso si debbano esportare le funzioni utilizzate dal modulo principale..
Tra i linguaggi di programmazione che supportano il concetto di programmazione modulare ci sono C, Ada, PL / I, Erlang, Pascal, Algol, COBOL, RPG, Haskell, Python, HyperTalk, IBM / 360 Assembler, MATLAB, Ruby, IBM RPG, SmallTalk , Morpho, Java (i pacchetti sono considerati moduli), Perl, ecc..
La programmazione modulare può essere applicata in linguaggio C perché permette di ovviare ad una difficoltà di grande entità separandola in più moduli.
Ciascuno di questi moduli risolve un problema particolare, mentre il programma principale, che è l'insieme di tali procedure, risolve il problema nel suo complesso..
Ogni funzione definita in C è accessibile globalmente per impostazione predefinita. Questo può essere fatto includendo un file di intestazione, dove viene definita l'implementazione della funzione.
Ad esempio, vogliamo dichiarare un tipo di dati stack e anche che l'implementazione e la struttura dei dati sono nascoste agli utenti.
Questo può essere fatto definendo prima un file pubblico chiamato stack.h, che conterrà i dati generici con il tipo di dati stack e le funzioni supportate dal tipo di dati stack..
stack.h:
extern stack_var1;
extern int stack_do_something (void);
Ora puoi creare un file chiamato stack.c che contiene l'implementazione del tipo di dati stack:
Nessun utente ha ancora commentato questo articolo.