Metodologie di programmazione - Guida rapida

Quando i programmi vengono sviluppati per risolvere problemi della vita reale come la gestione dell'inventario, l'elaborazione delle buste paga, l'ammissione degli studenti, l'elaborazione dei risultati degli esami, ecc., Tendono ad essere enormi e complessi. Viene chiamato l'approccio all'analisi di problemi così complessi, alla pianificazione dello sviluppo del software e al controllo del processo di sviluppoprogramming methodology.

Tipi di metodologie di programmazione

Esistono molti tipi di metodologie di programmazione prevalenti tra gli sviluppatori di software:

Programmazione procedurale

Il problema è suddiviso in procedure o blocchi di codice che eseguono un'attività ciascuno. Tutte le procedure prese insieme formano l'intero programma. È adatto solo per piccoli programmi che hanno un basso livello di complessità.

Example- Per un programma di calcolo che esegue addizioni, sottrazioni, moltiplicazioni, divisioni, radici quadrate e confronti, ciascuna di queste operazioni può essere sviluppata come procedure separate. Nel programma principale ogni procedura verrebbe richiamata in base alla scelta dell'utente.

Programmazione orientata agli oggetti

Qui la soluzione ruota attorno a entità o oggetti che fanno parte del problema. La soluzione si occupa di come memorizzare i dati relativi alle entità, come si comportano le entità e come interagiscono tra loro per fornire una soluzione coesa.

Example - Se dobbiamo sviluppare un sistema di gestione delle buste paga, avremo entità come dipendenti, struttura salariale, regole di ferie, ecc. Attorno alle quali deve essere costruita la soluzione.

Programmazione funzionale

Qui il problema, o la soluzione desiderata, è suddiviso in unità funzionali. Ogni unità svolge il proprio compito ed è autosufficiente. Queste unità vengono poi cucite insieme per formare la soluzione completa.

Example - Un'elaborazione delle buste paga può avere unità funzionali come la gestione dei dati dei dipendenti, il calcolo dello stipendio base, il calcolo dello stipendio lordo, l'elaborazione delle ferie, l'elaborazione del rimborso del prestito, ecc.

Programmazione logica

Qui il problema è suddiviso in unità logiche piuttosto che in unità funzionali. Example:In un sistema di gestione scolastica, gli utenti hanno ruoli molto definiti come insegnante di classe, insegnante di materia, assistente di laboratorio, coordinatore, responsabile accademico, ecc. Quindi il software può essere suddiviso in unità a seconda dei ruoli utente. Ogni utente può avere un'interfaccia, autorizzazioni, ecc. Differenti.

Gli sviluppatori di software possono scegliere una o una combinazione di più di una di queste metodologie per sviluppare un software. Si noti che in ciascuna delle metodologie discusse, il problema deve essere suddiviso in unità più piccole. Per fare ciò, gli sviluppatori utilizzano uno dei seguenti due approcci:

  • Approccio dall 'alto verso il basso
  • Approccio dal basso verso l'alto

Approccio top-down o modulare

Il problema è suddiviso in unità più piccole, che possono essere ulteriormente suddivise in unità ancora più piccole. Ogni unità è chiamata amodule. Ogni modulo è un'unità autosufficiente che dispone di tutto il necessario per svolgere il proprio compito.

La figura seguente mostra un esempio di come è possibile seguire un approccio modulare per creare moduli diversi durante lo sviluppo di un programma di elaborazione delle buste paga.

Approccio bottom-up

Nell'approccio bottom-up, la progettazione del sistema inizia con il livello più basso di componenti, che vengono quindi interconnessi per ottenere componenti di livello superiore. Questo processo continua finché non viene generata una gerarchia di tutti i componenti del sistema. Tuttavia, nello scenario di vita reale è molto difficile conoscere tutti i componenti di livello più basso all'inizio. Quindi l'approccio dal basso verso l'alto viene utilizzato solo per problemi molto semplici.

Esaminiamo i componenti di un programma di calcolatrice.

Un tipico processo di sviluppo del software segue questi passaggi:

  • Raccolta dei requisiti
  • Definizione del problema
  • Sistema di design
  • Implementation
  • Testing
  • Documentation
  • Formazione e supporto
  • Maintenance

I primi due passaggi aiutano il team a comprendere il problema, il primo passo più cruciale per ottenere una soluzione. Viene chiamato il responsabile della raccolta dei requisiti, della definizione del problema e della progettazione del sistemasystem analyst.

Raccolta dei requisiti

Di solito, i clienti o gli utenti non sono in grado di definire chiaramente i loro problemi o requisiti. Hanno una vaga idea di quello che vogliono. Pertanto, gli sviluppatori di sistemi devono raccogliere i requisiti del cliente per comprendere il problema che deve essere risolto o cosa deve essere consegnato. La comprensione dettagliata del problema è possibile solo comprendendo prima l'area di business per la quale si sta sviluppando la soluzione. Alcune domande chiave che aiutano a comprendere un business includono:

  • Cosa si sta facendo?
  • Come viene fatto?
  • Qual è la frequenza di un'attività?
  • Qual è il volume delle decisioni o delle transazioni?
  • Quali sono i problemi riscontrati?

Alcune tecniche che aiutano a raccogliere queste informazioni sono:

  • Interviews
  • Questionnaires
  • Studio dei documenti di sistema esistenti
  • Analisi dei dati aziendali

Gli analisti di sistema devono creare un documento dei requisiti chiaro e conciso ma completo al fine di identificare i requisiti SMART - specifici, misurabili, concordati, realistici e basati sul tempo. In caso contrario, si ottiene:

  • Definizione incompleta del problema
  • Obiettivi del programma errati
  • Rielabora per fornire il risultato richiesto al cliente
  • Aumento dei costi
  • Consegna ritardata

A causa della profondità delle informazioni richieste, la raccolta dei requisiti è nota anche come detailed investigation.

Definizione del problema

Dopo aver raccolto i requisiti e averli analizzati, la dichiarazione del problema deve essere espressa chiaramente. La definizione del problema dovrebbe indicare in modo inequivocabile quale o quali problemi devono essere risolti. È necessario disporre di una chiara dichiarazione del problema per:

  • Definisci l'ambito del progetto
  • Mantieni la squadra concentrata
  • Mantieni il progetto in pista
  • Convalidare che il risultato desiderato è stato raggiunto alla fine del progetto

Spesso si suppone che la codifica sia la parte più essenziale di qualsiasi processo di sviluppo software. Tuttavia, la codifica è solo una parte del processo e potrebbe effettivamente richiedere un tempo minimo se il sistema è progettato correttamente. Prima che il sistema possa essere progettato, è necessario identificare una soluzione per il problema in questione.

La prima cosa da notare sulla progettazione di un sistema è che inizialmente l'analista di sistema può trovare più di una soluzione. Ma la soluzione finale o il prodotto può essere solo uno. Un'analisi approfondita dei dati raccolti durante la fase di raccolta dei requisiti può aiutare a giungere a una soluzione unica. Anche definire correttamente il problema è fondamentale per arrivare alla soluzione.

Di fronte al problema di più soluzioni, gli analisti cercano ausili visivi come diagrammi di flusso, diagrammi di flusso di dati, diagrammi di relazione tra entità, ecc. Per comprendere ogni soluzione in profondità.

Diagramma di flusso

Il diagramma di flusso è il processo di illustrazione dei flussi di lavoro e dei flussi di dati in un sistema tramite simboli e diagrammi. È uno strumento importante per assistere l'analista di sistema nell'identificazione di una soluzione al problema. Rappresenta visivamente i componenti del sistema.

Questi sono i vantaggi del diagramma di flusso:

  • La rappresentazione visiva aiuta a comprendere la logica del programma

  • Agiscono come schemi per la codifica del programma reale

  • I diagrammi di flusso sono importanti per la documentazione del programma

  • I diagrammi di flusso sono un aiuto importante durante la manutenzione del programma

Questi sono gli svantaggi del diagramma di flusso:

  • La logica complessa non può essere rappresentata utilizzando i diagrammi di flusso

  • In caso di qualsiasi cambiamento nella logica o nel flusso di dati / lavoro, il diagramma di flusso deve essere ridisegnato completamente

Diagramma del flusso di dati

Il diagramma del flusso di dati o DFD è una rappresentazione grafica del flusso di dati attraverso un sistema o sottosistema. Ogni processo ha il proprio flusso di dati e ci sono livelli di diagrammi di flusso di dati. Il livello 0 mostra i dati di input e output per l'intero sistema. Quindi il sistema viene suddiviso in moduli e DFD di livello 1 mostra il flusso di dati per ciascun modulo separatamente. I moduli possono essere ulteriormente suddivisi in sottomoduli, se necessario, e possono essere disegnati DFD di livello 2.

Pseudocodice

Dopo che il sistema è stato progettato, viene consegnato al project manager per l'implementazione, ovvero la codifica. La codifica effettiva di un programma viene eseguita in un linguaggio di programmazione, che può essere compreso solo da programmatori addestrati in quel linguaggio. Tuttavia, prima che avvenga la codifica effettiva, i principi operativi di base, i flussi di lavoro e i flussi di dati del programma vengono scritti utilizzando una notazione simile al linguaggio di programmazione da utilizzare. Tale notazione è chiamatapseudocode.

Ecco un esempio di uno pseudocodice in C ++. Il programmatore deve solo tradurre ogni istruzione nella sintassi C ++ per ottenere il codice del programma.

Identificazione delle operazioni matematiche

Tutte le istruzioni al computer vengono infine implementate come operazioni aritmetiche e logiche a livello di macchina. Queste operazioni sono importanti perché:

  • Occupa spazio di memoria
  • Prenditi tempo per l'esecuzione
  • Determina l'efficienza del software
  • Influisce sulle prestazioni complessive del software

Gli analisti di sistema cercano di identificare tutte le principali operazioni matematiche mentre identificano la soluzione unica al problema in questione.

Un problema nella vita reale è complesso e grande. Se viene sviluppata una soluzione monolitica, pone questi problemi:

  • Difficile scrivere, testare e implementare un grande programma

  • Le modifiche dopo la consegna del prodotto finale sono quasi impossibili

  • Manutenzione del programma molto difficile

  • Un errore può arrestare l'intero sistema

Per superare questi problemi, la soluzione dovrebbe essere divisa in parti più piccole chiamate modules. Viene chiamata la tecnica di scomporre una grande soluzione in moduli più piccoli per facilitare lo sviluppo, l'implementazione, la modifica e la manutenzionemodular technique di programmazione o sviluppo di software.

Vantaggi della programmazione modulare

La programmazione modulare offre questi vantaggi:

  • Consente uno sviluppo più rapido poiché ogni modulo può essere sviluppato in parallelo

  • I moduli possono essere riutilizzati

  • Poiché ogni modulo deve essere testato in modo indipendente, il test è più veloce e più robusto

  • Debug e manutenzione dell'intero programma più facili

  • I moduli sono più piccoli e hanno un livello di complessità inferiore, quindi sono facili da capire

Identificazione dei moduli

Identificare i moduli in un software è un compito sbalorditivo perché non può esserci un modo corretto per farlo. Ecco alcuni suggerimenti per identificare i moduli:

  • Se i dati sono l'elemento più importante del sistema, creare moduli che gestiscano i dati correlati.

  • Se il servizio fornito dal sistema è diversificato, suddividere il sistema in moduli funzionali.

  • Se tutto il resto fallisce, suddividere il sistema in moduli logici in base alla propria comprensione del sistema durante la fase di raccolta dei requisiti.

Per la codifica, ogni modulo deve essere nuovamente suddiviso in moduli più piccoli per facilitare la programmazione. Questo può essere fatto di nuovo utilizzando i tre suggerimenti condivisi sopra, combinati con regole di programmazione specifiche. Ad esempio, per un linguaggio di programmazione orientato agli oggetti come C ++ e Java, ogni classe con i suoi dati e metodi potrebbe formare un singolo modulo.

Soluzione passo passo

Per implementare i moduli, il flusso di processo di ogni modulo deve essere descritto passo dopo passo. La soluzione passo passo può essere sviluppata utilizzandoalgorithms o pseudocodes. Fornire una soluzione passo passo offre questi vantaggi:

  • Chiunque legga la soluzione può comprendere sia il problema che la soluzione.

  • È ugualmente comprensibile da programmatori e non programmatori.

  • Durante la codifica, ogni istruzione deve semplicemente essere convertita in un'istruzione di programma.

  • Può essere parte della documentazione e assistere nella manutenzione del programma.

  • I dettagli di livello micro come i nomi degli identificatori, le operazioni richieste, ecc. Vengono elaborati automaticamente

Diamo un'occhiata a un esempio.

Strutture di controllo

Come puoi vedere nell'esempio sopra, non è necessario che venga eseguita una logica di programma sequentially. Nel linguaggio di programmazione,control structuresprendere decisioni sul flusso del programma in base a determinati parametri. Sono elementi molto importanti di qualsiasi software e devono essere identificati prima che inizi la codifica.

Algoritmi e pseudocodes aiutare analisti e programmatori a identificare dove sono necessarie le strutture di controllo.

Le strutture di controllo sono di questi tre tipi:

Strutture di controllo delle decisioni

Le strutture di controllo decisionale vengono utilizzate quando il passaggio successivo da eseguire dipende da un criterio. Questo criterio è in genere una o più espressioni booleane che devono essere valutate. Un'espressione booleana restituisce sempre "true" o "false". Un insieme di istruzioni viene eseguito se il criterio è "vero" e un altro insieme viene eseguito se il criterio restituisce "falso". Ad esempio, if statement

Strutture di controllo della selezione

Le strutture di controllo della selezione vengono utilizzate quando la sequenza del programma dipende dalla risposta a una domanda specifica. Ad esempio, un programma ha molte opzioni per l'utente. L'istruzione da eseguire successivamente dipenderà dall'opzione scelta. Per esempio,switch dichiarazione, case dichiarazione.

Strutture di controllo ripetizione / loop

La struttura di controllo delle ripetizioni viene utilizzata quando un insieme di istruzioni deve essere ripetuto molte volte. Il numero di ripetizioni potrebbe essere noto prima che inizi o potrebbe dipendere dal valore di un'espressione. Per esempio,for dichiarazione, while dichiarazione, do while dichiarazione, ecc.

Come puoi vedere nell'immagine sopra, sia la selezione che le strutture decisionali sono implementate in modo simile in un diagramma di flusso. Il controllo della selezione non è altro che una serie di dichiarazioni di decisione prese in sequenza.

Ecco alcuni esempi di programmi per mostrare come funzionano queste affermazioni:

Un insieme finito di passaggi che devono essere seguiti per risolvere qualsiasi problema è chiamato un file algorithm. L'algoritmo viene generalmente sviluppato prima che venga eseguita la codifica effettiva. È scritto usando un linguaggio simile all'inglese in modo che sia facilmente comprensibile anche da non programmatori.

A volte gli algoritmi vengono scritti utilizzando pseudocodes, cioè un linguaggio simile al linguaggio di programmazione da utilizzare. L'algoritmo di scrittura per risolvere un problema offre questi vantaggi:

  • Promuove una comunicazione efficace tra i membri del team

  • Consente l'analisi del problema a portata di mano

  • Agisce come modello per la codifica

  • Aiuta nel debug

  • Entra a far parte della documentazione del software per riferimento futuro durante la fase di manutenzione

Queste sono le caratteristiche di un algoritmo buono e corretto -

  • Ha una serie di input

  • I passaggi sono definiti in modo univoco

  • Ha un numero finito di passaggi

  • Produce l'output desiderato

Algoritmi di esempio

Prendiamo prima un esempio di una situazione di vita reale per la creazione di algoritmi. Ecco l'algoritmo per andare al mercato ad acquistare una penna.

Il passaggio 4 in questo algoritmo è di per sé un'attività completa e per esso è possibile scrivere un algoritmo separato. Creiamo ora un algoritmo per verificare se un numero è positivo o negativo.

Flowchartè una rappresentazione schematica della sequenza dei passaggi logici di un programma. I diagrammi di flusso utilizzano semplici forme geometriche per rappresentare i processi e le frecce per mostrare le relazioni e il flusso di processo / dati.

Simboli del diagramma di flusso

Di seguito è riportato un grafico per alcuni dei simboli comuni utilizzati nel disegno dei diagrammi di flusso.

Simbolo Nome simbolo Scopo
Start / Stop Utilizzato all'inizio e alla fine dell'algoritmo per mostrare l'inizio e la fine del programma.
Processi Indica processi come operazioni matematiche.
Input Output Utilizzato per denotare input e output del programma.
Decisione Sta per dichiarazioni di decisione in un programma, dove la risposta è solitamente Sì o No.
Freccia Mostra le relazioni tra diverse forme.
Connettore sulla pagina Collega due o più parti di un diagramma di flusso, che si trovano sulla stessa pagina.
Connettore off-page Collega due parti di un diagramma di flusso distribuite su pagine diverse.

Linee guida per lo sviluppo di diagrammi di flusso

Questi sono alcuni punti da tenere a mente durante lo sviluppo di un diagramma di flusso:

  • Il diagramma di flusso può avere solo un simbolo di inizio e un simbolo di arresto

  • I connettori sulla pagina vengono referenziati tramite numeri

  • I connettori off-page sono referenziati utilizzando alfabeti

  • Il flusso generale dei processi è dall'alto verso il basso o da sinistra a destra

  • Le frecce non dovrebbero incrociarsi

Diagrammi di flusso di esempio

Ecco il diagramma di flusso per andare al mercato per acquistare una penna.

Ecco un diagramma di flusso per calcolare la media di due numeri.

Come sapete, il computer non ha intelligenza propria; segue semplicemente ilinstructions fornito dall'utente. Instructionssono gli elementi costitutivi di un programma per computer e quindi di un software. Dare istruzioni chiare è fondamentale per costruire un programma di successo. In qualità di programmatore o sviluppatore di software, dovresti prendere l'abitudine di scrivere istruzioni chiare. Ecco due modi per farlo.

Chiarezza delle espressioni

L'espressione in un programma è una sequenza di operatori e operandi per eseguire un calcolo aritmetico o logico. Ecco alcuni esempi di espressioni valide:

  • Confronto di due valori
  • Definizione di una variabile, un oggetto o una classe
  • Calcoli aritmetici utilizzando una o più variabili
  • Recupero dati dal database
  • Aggiornamento dei valori nel database

Scrivere espressioni inequivocabili è un'abilità che deve essere sviluppata da ogni programmatore. Ecco alcuni punti da tenere a mente durante la scrittura di tali espressioni:

Risultato inequivocabile

La valutazione dell'espressione deve fornire un risultato netto. Ad esempio, gli operatori unari dovrebbero essere usati con cautela.

Evita le espressioni complesse

Non cercare di ottenere molte cose in un'unica espressione. Spezza in due o più espressioni nel momento in cui le cose iniziano a complicarsi.

Semplicità delle istruzioni

Non è solo per i computer che devi scrivere istruzioni chiare. Chiunque legga il programma più tardi (anche tu stesso !!) dovrebbe essere in grado di capire cosa sta cercando di ottenere l'istruzione. È molto comune per i programmatori non capire i propri programmi quando lo rivisitano dopo che è trascorso un po 'di tempo. Ciò indica che la manutenzione e la modifica di tali programmi sarebbe piuttosto difficile.

Scrivere semplici istruzioni aiuta ad evitare questo problema. Ecco alcuni suggerimenti per scrivere semplici istruzioni:

  • Avoid clever instructions - Le istruzioni intelligenti potrebbero non sembrare così intelligenti in seguito se nessuno è in grado di capirle correttamente.

  • One instruction per task - Cercare di fare più di una cosa alla volta complica le istruzioni.

  • Use standards- Ogni lingua ha i suoi standard, seguili. Ricorda che non stai lavorando da solo al progetto; seguire gli standard e le linee guida del progetto per la codifica.

In questo capitolo vedremo come scrivere un buon programma. Ma prima di farlo, vediamo quali sono le caratteristiche di un buon programma:

  • Portable- Il programma o il software dovrebbe essere eseguito su tutti i computer dello stesso tipo. Con lo stesso tipo si intende che un software sviluppato per personal computer dovrebbe funzionare su tutti i PC. Oppure un software per la scrittura per tablet dovrebbe funzionare su tutti i tablet con le giuste specifiche.

  • Efficient- Un software che esegue rapidamente i compiti assegnati è considerato efficiente. L'ottimizzazione del codice e l'ottimizzazione della memoria sono alcuni dei modi per aumentare l'efficienza del programma.

  • Effective- Il software dovrebbe aiutare a risolvere il problema in questione. Un software che lo fa si dice che sia efficace.

  • Reliable - Il programma dovrebbe fornire lo stesso output ogni volta che viene fornito lo stesso set di input.

  • User friendly - L'interfaccia del programma, i collegamenti e le icone cliccabili, ecc. Dovrebbero essere facili da usare.

  • Self-documenting - Qualsiasi programma o software i cui nomi identificativi, nomi di moduli, ecc. Possono descrivere se stesso a causa dell'uso di nomi espliciti.

Ecco alcuni modi in cui è possibile scrivere buoni programmi.

Nomi identificativi corretti

Un nome che identifica qualsiasi variabile, oggetto, funzione, classe o metodo è chiamato identifier. Assegnare nomi di identificatori appropriati rende un programma auto-documentato. Ciò significa che il nome dell'oggetto dirà cosa fa o quali informazioni memorizza. Facciamo un esempio di questa istruzione SQL:

Guarda la riga 10. Indica a chiunque legga il programma che l'ID, il nome e il numero di uno studente devono essere selezionati. I nomi delle variabili lo rendono autoesplicativo. Questi sono alcuni suggerimenti per creare nomi di identificatori corretti:

  • Usa le linee guida della lingua

  • Non esitare a dare nomi lunghi per mantenere la chiarezza

  • Usa lettere maiuscole e minuscole

  • Non dare lo stesso nome a due identificatori anche se la lingua lo consente

  • Non assegnare gli stessi nomi a più di un identificatore anche se hanno un ambito che si esclude a vicenda

Commenti

Nell'immagine sopra, guarda la riga 8. Indica al lettore che le prossime righe di codice recupereranno l'elenco degli studenti la cui pagella deve essere generata. Questa riga non fa parte del codice ma è data solo per rendere il programma più facile da usare.

Una tale espressione che non è compilata ma scritta come nota o spiegazione per il programmatore è chiamata a comment. Guarda i commenti nel seguente segmento di programma. I commenti iniziano con //.

I commenti possono essere inseriti come -

  • Prologo al programma per spiegare il suo obiettivo

  • All'inizio e / o alla fine di blocchi logici o funzionali

  • Prendi nota di scenari o eccezioni speciali

Dovresti evitare di aggiungere commenti superflui in quanto ciò potrebbe rivelarsi controproducente interrompendo il flusso di codice durante la lettura. Il compilatore può ignorare commenti e rientri ma il lettore tende a leggerli ognuno di essi.

Rientro

Viene chiamata la distanza del testo dal margine sinistro o destro indent. Nei programmi, l'indentazione viene utilizzata per separare blocchi di codice separati logicamente. Ecco un esempio di segmento di programma rientrato:

Come puoi vedere, il programma rientrato è più comprensibile. Flusso di controllo dafor loop per if e di nuovo a forè molto chiaro. L'indentazione è particolarmente utile in caso di strutture di controllo.

Anche l'inserimento di spazi o linee vuote fa parte del rientro. Ecco alcune situazioni in cui puoi e dovresti usare il rientro:

  • Righe vuote tra blocchi logici o funzionali di codice all'interno del programma

  • Spazi vuoti intorno agli operatori

  • Schede all'inizio di nuove strutture di controllo

Viene chiamata l'identificazione e la rimozione degli errori da un programma o software debugging. Il debug è idealmente parte del processo di test, ma in realtà viene eseguito in ogni fase della programmazione. I programmatori dovrebbero eseguire il debug del più piccolo dei loro moduli prima di andare avanti. Ciò riduce il numero di errori generati durante la fase di test e riduce significativamente il tempo e lo sforzo di test. Esaminiamo i tipi di errori che possono verificarsi in un programma.

Errori di sintassi

Syntax errorssono gli errori grammaticali in un programma. Ogni lingua ha il proprio insieme di regole, come la creazione di identificatori, la scrittura di espressioni, ecc. Per la scrittura di programmi. Quando queste regole vengono violate, vengono chiamati gli errorisyntax errors. Molti moderniintegrated development environmentspuò identificare gli errori di sintassi durante la digitazione del programma. Altrimenti, verrà mostrato quando si compila il programma. Facciamo un esempio:

In questo programma, la variabile prod non è stata dichiarata, che viene lanciata dal compilatore.

Errori semantici

Semantic errors sono anche chiamati logical errors. L'istruzione non ha errori di sintassi, quindi verrà compilata ed eseguita correttamente. Tuttavia, non darà l'output desiderato poiché la logica non è corretta. Facciamo un esempio.

Guarda la riga 13. Qui il programmatore vuole controllare se il divisore è 0, per evitare la divisione per 0. Tuttavia, invece di usare l'operatore di confronto ==, è stato usato l'operatore di assegnazione =. Ora ogni volta che l '"espressione if" restituirà true e il programma restituirà un output come "Non è possibile dividere per 0". Sicuramente non quello che era previsto !!

Gli errori logici non possono essere rilevati da alcun programma; devono essere identificati dal programmatore stesso quando non si ottiene l'output desiderato.

Errori di runtime

Gli errori di runtime sono errori che si verificano durante l'esecuzione del programma. Ciò implica che il programma non ha errori di sintassi. Alcuni degli errori di runtime più comuni che il tuo programma potrebbe incontrare sono:

  • Ciclo infinito
  • Divisione per "0"
  • Valore errato inserito dall'utente (ad esempio, stringa invece di numero intero)

Ottimizzazione del codice

Viene chiamato qualsiasi metodo mediante il quale il codice viene modificato per migliorarne la qualità e l'efficienza code optimization. Code qualitydetermina la durata del codice. Se il codice può essere utilizzato e mantenuto per un lungo periodo di tempo, trasferito da prodotto a prodotto, la sua qualità è considerata elevata e ha una vita più lunga. Al contrario, se un pezzo di codice può essere utilizzato e mantenuto solo per brevi periodi, diciamo fino a quando una versione non è valida, è considerato di bassa qualità e ha una vita breve.

Determina l'affidabilità e la velocità di un codice code efficiency. L'efficienza del codice è un fattore importante per garantire prestazioni elevate di un software.

Esistono due approcci all'ottimizzazione del codice:

  • Intuition based optimization (IBO)- Qui il programmatore cerca di ottimizzare il programma in base alle proprie capacità ed esperienze. Questo potrebbe funzionare per piccoli programmi ma fallisce miseramente con l'aumentare della complessità del programma.

  • Evidence based optimization (EBO)- Qui vengono utilizzati strumenti automatizzati per scoprire i colli di bottiglia delle prestazioni e quindi le parti rilevanti vengono ottimizzate di conseguenza. Ogni linguaggio di programmazione ha il proprio set di strumenti di ottimizzazione del codice. Ad esempio, PMD, FindBug e Clover vengono utilizzati per ottimizzare il codice Java.

Il codice è ottimizzato per il tempo di esecuzione e il consumo di memoria perché il tempo è scarso e la memoria è costosa. Ci deve essere un equilibrio tra i due. Setime optimization aumenta il carico sulla memoria o memory optimization rende il codice più lento, lo scopo dell'ottimizzazione andrà perso.

Ottimizzazione del tempo di esecuzione

L'ottimizzazione del codice per il tempo di esecuzione è necessaria per fornire un servizio rapido agli utenti. Ecco alcuni suggerimenti per l'ottimizzazione del tempo di esecuzione:

  • Usa comandi che hanno l'ottimizzazione del tempo di esecuzione incorporata

  • Usa switch invece di if condition

  • Ridurre al minimo le chiamate di funzione all'interno di strutture di loop

  • Ottimizza le strutture dati utilizzate nel programma

Ottimizzazione della memoria

Come sai, i dati e le istruzioni consumano memoria. Quando diciamo dati, ci si riferisce anche a dati provvisori che sono il risultato di espressioni. Dobbiamo anche tenere traccia di quante istruzioni stanno costituendo il programma o il modulo che stiamo cercando di ottimizzare. Ecco alcuni suggerimenti permemory optimization -

  • Usa comandi con ottimizzazione della memoria incorporata

  • Mantenere al minimo l'uso di variabili che devono essere memorizzate nei registri

  • Evita di dichiarare variabili globali all'interno di cicli che vengono eseguiti molte volte

  • Evita di utilizzare funzioni che richiedono un uso intensivo della CPU come sqrt ()

Viene chiamato qualsiasi testo scritto, illustrazione o video che descriva un software o un programma ai suoi utenti program or software document. L'utente può essere chiunque, da un programmatore, analista di sistema e amministratore all'utente finale. In varie fasi dello sviluppo è possibile creare più documenti per diversi utenti. Infatti,software documentation è un processo critico nel processo di sviluppo software complessivo.

Nella programmazione modulare la documentazione diventa ancora più importante perché diversi moduli del software sono sviluppati da diversi team. Se qualcun altro oltre al team di sviluppo vuole o ha bisogno di capire un modulo, una buona e dettagliata documentazione renderà il compito più facile.

Queste sono alcune linee guida per la creazione dei documenti:

  • La documentazione dovrebbe essere dal punto di vista del lettore

  • Il documento dovrebbe essere univoco

  • Non dovrebbero esserci ripetizioni

  • Dovrebbero essere utilizzati gli standard del settore

  • I documenti dovrebbero essere sempre aggiornati

  • Qualsiasi documento obsoleto dovrebbe essere eliminato gradualmente dopo la debita registrazione dell'eliminazione graduale

Vantaggi della documentazione

Questi sono alcuni dei vantaggi di fornire la documentazione del programma:

  • Tiene traccia di tutte le parti di un software o programma

  • La manutenzione è più facile

  • I programmatori diversi dallo sviluppatore possono comprendere tutti gli aspetti del software

  • Migliora la qualità complessiva del software

  • Aiuta nella formazione degli utenti

  • Assicura la decentralizzazione della conoscenza, riducendo i costi e gli sforzi se le persone lasciano il sistema all'improvviso

Documenti di esempio

Un software può avere molti tipi di documenti associati. Alcuni di quelli importanti includono:

  • User manual - Descrive le istruzioni e le procedure per gli utenti finali per utilizzare le diverse funzionalità del software.

  • Operational manual - Elenca e descrive tutte le operazioni in corso e le loro interdipendenze.

  • Design Document- Fornisce una panoramica del software e descrive in dettaglio gli elementi di progettazione. Documenta dettagli comedata flow diagrams, entity relationship diagrams, eccetera.

  • Requirements Document- Ha un elenco di tutti i requisiti del sistema, nonché un'analisi della fattibilità dei requisiti. Può contenere casi utente, scenari di vita reale, ecc.

  • Technical Documentation - È una documentazione dei componenti di programmazione effettivi come algoritmi, diagrammi di flusso, codici di programma, moduli funzionali, ecc.

  • Testing Document - Registra il piano di test, i casi di test, il piano di convalida, il piano di verifica, i risultati dei test, ecc. Il test è una fase dello sviluppo del software che richiede un'intensa documentazione.

  • List of Known Bugs- Ogni software presenta bug o errori che non possono essere rimossi perché sono stati scoperti molto tardi o sono innocui o richiederanno più tempo e impegno del necessario per la rettifica. Questi bug sono elencati con la documentazione del programma in modo che possano essere rimossi in un secondo momento. Inoltre aiutano gli utenti, gli implementatori e gli addetti alla manutenzione se il bug è attivato.

Program maintenance è il processo di modifica di un software o di un programma dopo la consegna per ottenere uno di questi risultati -

  • Correggi gli errori
  • Migliorare la prestazione
  • Aggiungi funzionalità
  • Rimuovi le porzioni obsolete

Nonostante la percezione comune che la manutenzione sia necessaria per correggere gli errori che si verificano dopo che il software è entrato in funzione, in realtà la maggior parte del lavoro di manutenzione comporta l'aggiunta di funzionalità minori o maggiori ai moduli esistenti. Ad esempio, alcuni nuovi dati vengono aggiunti a un rapporto, un nuovo campo aggiunto ai moduli di iscrizione, un codice da modificare per incorporare le leggi governative modificate, ecc.

Tipi di manutenzione

Le attività di manutenzione possono essere classificate in quattro voci:

  • Corrective maintenance- Qui vengono corretti gli errori che si verificano dopo l'implementazione in loco. Gli errori possono essere segnalati dagli utenti stessi.

  • Preventive maintenance - Le modifiche apportate per evitare errori in futuro sono chiamate manutenzione preventiva.

  • Adaptive maintenance- I cambiamenti nell'ambiente di lavoro a volte richiedono modifiche nel software. Questa è chiamata manutenzione adattiva. Ad esempio, se la politica educativa del governo cambia, devono essere apportate le modifiche corrispondenti nel modulo di elaborazione dei risultati degli studenti del software di gestione scolastica.

  • Perfective maintenance- Le modifiche apportate al software esistente per incorporare nuovi requisiti dal cliente sono chiamate manutenzione perfettiva. L'obiettivo qui è essere sempre aggiornati con le ultime tecnologie.

Strumenti di manutenzione

Gli sviluppatori di software e i programmatori utilizzano molti strumenti per assisterli nella manutenzione del software. Ecco alcuni dei più utilizzati:

  • Program slicer - seleziona una parte del programma che sarebbe interessata dalla modifica

  • Data flow analyzer - tiene traccia di tutti i possibili flussi di dati nel software

  • Dynamic analyzer - traccia il percorso di esecuzione del programma

  • Static analyzer - consente la visualizzazione generale e il riepilogo del programma

  • Dependency analyzer - aiuta a comprendere e analizzare l'interdipendenza delle diverse parti del programma