Obiettivi dell'Ingegneria del Software

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quale dei seguenti è un esempio di qualità interna del software?

  • Verificabilità (correct)
  • Portabilità
  • Facilità d'uso
  • Efficienza

Cosa significa che un software è 'corretto'?

  • Che è compatibile con diversi sistemi operativi
  • Che soddisfa tutti i requisiti specificati (correct)
  • Che è privo di bug
  • Che è facile da usare

Quale delle seguenti affermazioni sull'affidabilità del software è FALSA?

  • L'affidabilità può migliorare nel tempo con gli aggiornamenti.
  • Un software non corretto può comunque essere affidabile.
  • L'affidabilità è misurabile con la probabilità di funzionamento corretto nel tempo.
  • Un software corretto è sempre affidabile. (correct)

Quali sono i prodotti intermedi che vengono generati durante lo sviluppo del software?

<p>Tutti i precedenti (B)</p> Signup and view all the answers

Qual è l'obiettivo principale dell'ingegneria del software?

<p>Sviluppare software di alta qualità che sia gestibile ed efficiente (A)</p> Signup and view all the answers

Quale delle seguenti è una qualità esterna del software?

<p>Usabilità (B)</p> Signup and view all the answers

Quale delle seguenti affermazioni sulla correttezza del software è VERA?

<p>La correttezza dipende dalla chiarezza e accuratezza delle specifiche dei requisiti. (D)</p> Signup and view all the answers

Quale delle seguenti è una conseguenza di un processo di sviluppo software ben strutturato?

<p>Riduzione dei costi di manutenzione (C)</p> Signup and view all the answers

Secondo la Legge di Eagleson, qual è il problema principale relativo alla comprensibilità del codice?

<p>Anche lo sviluppatore originale può dimenticare come funziona il codice dopo un po' di tempo (A)</p> Signup and view all the answers

Quali sono i vantaggi di un codice comprensibile?

<p>Facilita la manutenzione e l'evoluzione, riduce il rischio di errori e facilita la collaborazione tra sviluppatori (C)</p> Signup and view all the answers

Quale delle seguenti opzioni rappresenta un esempio di interoperabilità?

<p>Un'app che può interagire con un servizio esterno come Google Drive (C)</p> Signup and view all the answers

Quali sono i modi per ottenere l'interoperabilità?

<p>Adottare formati di dati standard, implementare API e protocolli standard e utilizzare framework e tecnologie compatibili (B)</p> Signup and view all the answers

Quali sono le principali qualità di processo nello sviluppo software?

<p>Produttività, tempestività, visibilità (A)</p> Signup and view all the answers

Quale dei seguenti fattori influenza la produttività nello sviluppo software?

<p>L'utilizzo di strumenti di sviluppo avanzati e metodologie di sviluppo efficaci (B)</p> Signup and view all the answers

Cosa significa garantire la tempestività nello sviluppo software?

<p>Rilasciare il software al momento giusto per il cliente e non obsoleto al momento del rilascio (B)</p> Signup and view all the answers

Quale strategia può aiutare a garantire la tempestività nello sviluppo software?

<p>Definire obiettivi e tempi realistici per ogni fase di sviluppo (B)</p> Signup and view all the answers

Cosa si intende per visibilità nello sviluppo software?

<p>La chiarezza e la trasparenza del processo di sviluppo (C)</p> Signup and view all the answers

Come si può migliorare la visibilità nello sviluppo software?

<p>Documentando il codice, utilizzando strumenti di tracciamento e adottando processi di sviluppo strutturati (D)</p> Signup and view all the answers

Quale dei seguenti è un esempio di strumento di tracciamento utile per migliorare la visibilità nello sviluppo software?

<p>Jira (B)</p> Signup and view all the answers

Quale dei seguenti fattori è importante per bilanciare la produttività con la qualità nello sviluppo software?

<p>Scrivere codice di alta qualità, anche se questo richiede più tempo (A)</p> Signup and view all the answers

Qual è il problema principale relativo alla tempestività nello sviluppo se si dà priorità alla qualità piuttosto che alla velocità?

<p>Il software potrebbe essere rilasciato in ritardo (D)</p> Signup and view all the answers

Quale è il problema principale relativo alla visibilità se il progetto è gestito da un solo sviluppatore?

<p>Lo sviluppatore potrebbe non ricevere feedback dagli altri membri del team (B)</p> Signup and view all the answers

Quale dei seguenti è un esempio di come si può migliorare la produttività nello sviluppo software?

<p>Utilizzare librerie e moduli già esistenti per evitare di riscrivere il codice da zero (C)</p> Signup and view all the answers

Quale delle seguenti affermazioni NON è vera riguardo alla robustezza di un software?

<p>La robustezza di un software è strettamente legata alla sua usabilità, in quanto un'interfaccia intuitiva rende il software più resistente agli errori. (D)</p> Signup and view all the answers

Quale delle seguenti situazioni NON è un esempio di software con prestazioni scarse?

<p>Un database che gestisce query veloci anche con milioni di utenti. (B)</p> Signup and view all the answers

Quale dei seguenti elementi NON è un fattore chiave per la valutazione dell'usabilità di un software?

<p>La velocità di esecuzione del software. (C)</p> Signup and view all the answers

Quale delle seguenti affermazioni NON è vera riguardo alla verificabilità di un software?

<p>La verificabilità è una qualità interna strettamente legata alla manutenibilità. (D)</p> Signup and view all the answers

Quale tipo di manutenzione del software è più costoso, in base al testo?

<p>Perfettitiva (C)</p> Signup and view all the answers

Quale delle seguenti soluzioni è più appropriata per affrontare il problema del software legacy?

<p>Ristrutturare il software per renderlo più moderno e manutenibile. (D)</p> Signup and view all the answers

Quale dei seguenti è un esempio di software con elevata riusabilità?

<p>Un'app che utilizza librerie di autenticazione per gestire l'accesso dell'utente. (D)</p> Signup and view all the answers

Quale delle seguenti affermazioni NON è vera riguardo alla portabilità di un software?

<p>La portabilità di un software è strettamente legata alla sua riusabilità, in quanto un software riusabile è automaticamente anche portabile. (D)</p> Signup and view all the answers

Quali fattori contribuiscono alla complessità del software, rendendolo meno manutenibile?

<p>Costante riprogettazione e aggiunta di nuove funzionalità senza pianificazione. (B)</p> Signup and view all the answers

Secondo la legge di Postel, come dovrebbe essere il software riguardo all'input e all'output?

<p>Flessibile nell'input e rigoroso nell'output. (D)</p> Signup and view all the answers

Quali sono i vantaggi della riusabilità del software?

<p>Riduzione dei costi e dei tempi di sviluppo e miglioramento della qualità del software. (B)</p> Signup and view all the answers

Quale dei seguenti è un esempio di software legacy?

<p>Un sistema informatico aziendale che è in uso da decenni. (D)</p> Signup and view all the answers

Quale delle seguenti affermazioni descrive correttamente il reverse engineering nel contesto del software legacy?

<p>Analizzare il codice legacy per comprendere il suo funzionamento. (B)</p> Signup and view all the answers

Quale dei seguenti elementi NON è un fattore che influenza la reparabilità e l'evolvibilità del software?

<p>La conformità alle normative di sicurezza. (D)</p> Signup and view all the answers

Quale termine indica la capacità di un software di funzionare su diverse piattaforme hardware e sistemi operativi?

<p>Portability (C)</p> Signup and view all the answers

Quale delle seguenti affermazioni riguardo ai sistemi informativi è corretta?

<p>I sistemi informativi devono garantire l'affidabilità dei dati. (A)</p> Signup and view all the answers

Qual è una caratteristica chiave dei sistemi in tempo reale?

<p>Devono rispondere a eventi entro tempi prestabiliti. (B)</p> Signup and view all the answers

Cosa si intende per tolleranza ai guasti nei sistemi distribuiti?

<p>Il sistema deve continuare a funzionare anche se alcune macchine falliscono. (A)</p> Signup and view all the answers

Qual è un esempio di sistema embedded?

<p>Centraline elettroniche nelle automobili. (C)</p> Signup and view all the answers

Quale delle seguenti qualità non è tipica dei sistemi informativi?

<p>Elevata complessità funzionale. (D)</p> Signup and view all the answers

Qual è il principale obiettivo dei sistemi in tempo reale?

<p>Rispondere a eventi in tempo strettamente definito. (B)</p> Signup and view all the answers

Quale affermazione caratterizza i sistemi distribuiti?

<p>Funzionano su più computer connessi in rete. (C)</p> Signup and view all the answers

Cosa rappresenta la 'schedulazione' nei sistemi in tempo reale?

<p>Selezione di quale attività eseguire in base a priorità o deadline. (B)</p> Signup and view all the answers

Quale delle seguenti sfide non è associata ai sistemi embedded?

<p>Evitare l'integrazione con software complesso. (C)</p> Signup and view all the answers

Quale metrica misura la complessità del codice sorgente?

<p>Cyclomatic Complexity. (B)</p> Signup and view all the answers

Quale dei seguenti sistemi non può essere considerato un sistema distribuito?

<p>Software di gestione aziendale su un singolo server. (B)</p> Signup and view all the answers

Quale delle seguenti affermazioni è vera riguardo ai sistemi embedded?

<p>Possono operare senza interfacce utente dirette. (D)</p> Signup and view all the answers

Qual è la sfida principale dei sistemi distribuiti?

<p>Assicurare buone prestazioni mantenendo la sicurezza dei dati. (C)</p> Signup and view all the answers

Qual è l'obiettivo principale del principio di rigore e formalità nell'ingegneria del software?

<p>Garantire la qualità e l'affidabilità del software (A)</p> Signup and view all the answers

In quale modo la separazione degli interessi aiuta nella gestione di un progetto software?

<p>Semplifica la gestione affrontando aspetti separatamente (D)</p> Signup and view all the answers

Quale delle seguenti affermazioni descrive correttamente il concetto di modularità?

<p>Creare unità indipendenti che possono essere sviluppate e testate separatamente (D)</p> Signup and view all the answers

Qual è l'importanza dell'astrazione nello sviluppo del software?

<p>Focalizzarsi sugli aspetti essenziali ignorando i dettagli irrilevanti (D)</p> Signup and view all the answers

Cosa comporta l'anticipazione del cambiamento nella progettazione del software?

<p>Progettare in modo che i cambiamenti siano localizzati in moduli specifici (D)</p> Signup and view all the answers

Qual è l'obiettivo del principio di generalità?

<p>Risolvere problemi in modo generico per la creazione di soluzioni riutilizzabili (A)</p> Signup and view all the answers

In cosa consiste l'approccio di incrementalità nello sviluppo software?

<p>Sviluppare il software in più fasi successive, migliorandolo gradualmente (B)</p> Signup and view all the answers

Qual è una conseguenza della modularità nel software?

<p>Possibilità di sviluppo, testing e manutenzione indipendenti dei moduli (C)</p> Signup and view all the answers

Quale dei seguenti esempi illustra meglio il principio di separazione degli interessi?

<p>Progettare il database in relazione alla struttura concettuale dei dati (D)</p> Signup and view all the answers

Cosa implica la modularità in termini di accoppiamento?

<p>Basso accoppiamento per prevenire dipendenze eccessive (D)</p> Signup and view all the answers

Come si realizza l'astrazione in un linguaggio di programmazione?

<p>Costruendo un modello generale ignorando dettagli irrilevanti (A)</p> Signup and view all the answers

Quale principio supporta la progettazione di software flessibili e adattabili?

<p>Anticipazione del cambiamento (D)</p> Signup and view all the answers

Qual è un vantaggio dell'approccio incrementale nello sviluppo di software?

<p>Consente di rilasciare i prodotti in modo anticipato (A)</p> Signup and view all the answers

Flashcards

Obiettivi dell'Ingegneria del Software

Sviluppare software di alta qualità in modo efficiente e gestibile.

Qualità del Software

Caratteristiche che valutano un software rispetto a criteri di affidabilità, usabilità ed efficienza.

Qualità Esterne

Qualità percepite dagli utenti finali, come usabilità e affidabilità.

Qualità Interne

Qualità importanti per sviluppatori e manutentori, come la manutenibilità del codice.

Signup and view all the flashcards

Correttezza

Un software è corretto se funziona come specificato nei requisiti.

Signup and view all the flashcards

Affidabilità

Misura la probabilità che un software funzioni correttamente in un certo intervallo di tempo.

Signup and view all the flashcards

Qualità del Processo

La qualità delle fasi di sviluppo che influenzano quel prodotto finale.

Signup and view all the flashcards

Qualità del Prodotto

Il prodotto finale consiste in codice, manuali e documentazione consegnati al cliente.

Signup and view all the flashcards

Sistemi Distribuiti

Sistemi che operano su più macchine e garantiscono tolleranza ai guasti e scalabilità.

Signup and view all the flashcards

Sistemi Embedded

Software integrato con hardware, progettato per prestazioni e affidabilità.

Signup and view all the flashcards

Principi dell'Ingegneria del Software

Linee guida generali che descrivono le caratteristiche desiderabili del software.

Signup and view all the flashcards

Metodi nello Sviluppo Software

Procedure strutturate che aiutano a ottenere risultati applicando i principi.

Signup and view all the flashcards

Tecniche nel Software

Strumenti e strategie specifiche usate nei metodi per migliorare il processo.

Signup and view all the flashcards

Metodologie

Insiemi coordinati di metodi e tecniche che seguono un approccio comune.

Signup and view all the flashcards

Rigore e Formalità

Garantisce qualità e affidabilità attraverso processi strutturati.

Signup and view all the flashcards

Separazione degli Interessi

Affronta aspetti diversi dello sviluppo software separatamente.

Signup and view all the flashcards

Modularità

Divisione del software in moduli indipendenti per sviluppo e manutenzione.

Signup and view all the flashcards

Astrazione

Concentrarsi sugli aspetti essenziali trascurando dettagli irrilevanti.

Signup and view all the flashcards

Anticipazione del Cambiamento

Progettare software per modifiche future facili e locali.

Signup and view all the flashcards

Generalità

Creare soluzioni riutilizzabili per problemi comuni.

Signup and view all the flashcards

Incrementalità

Sviluppo del software in fasi successive per miglioramenti graduali.

Signup and view all the flashcards

Applicazione ai Compilatori

Come i principi si applicano nello sviluppo di compilatori.

Signup and view all the flashcards

Alta Coesione e Basso Accoppiamento

Moduli devono avere componenti legate e dipendere poco tra loro.

Signup and view all the flashcards

Visibilità

Mantenere il processo chiaro e documentato per tutti.

Signup and view all the flashcards

Sistemi Informativi

Gestiscono e organizzano grandi quantità di dati in un'organizzazione.

Signup and view all the flashcards

Esempi di Sistemi Informativi

Sistemi bancari, bibliotecari e ERP.

Signup and view all the flashcards

Qualità dei Sistemi Informativi

Integrità, sicurezza, disponibilità, prestazioni e usabilità dei dati.

Signup and view all the flashcards

Sistemi in Tempo Reale

Devono rispondere a eventi entro tempi predefiniti.

Signup and view all the flashcards

Esempi di Sistemi in Tempo Reale

Monitoraggio industriale, controllo volo, dispositivi di input.

Signup and view all the flashcards

Schedulazione nei Sistemi in Tempo Reale

Usano scheduler per gestire attività in base a priorità o deadline.

Signup and view all the flashcards

Esempi di Sistemi Distribuiti

Cloud computing, blockchain, sistemi di streaming.

Signup and view all the flashcards

Qualità dei Sistemi Distribuiti

Distribuzione dati, tolleranza ai guasti e consistenza dei dati.

Signup and view all the flashcards

Esempi di Sistemi Embedded

Centraline elettroniche, robot industriali, dispositivi medici.

Signup and view all the flashcards

Qualità dei Sistemi Embedded

Efficienza, affidabilità e comunicazione tra componenti.

Signup and view all the flashcards

Metriche Software

Metrificano qualità del software come Lines of Code e Function Points.

Signup and view all the flashcards

Sfida nelle Metriche

Difficoltà a quantificare usabilità e manutenibilità.

Signup and view all the flashcards

Comprensibilità

Facilità con cui il codice può essere letto e capito da uno sviluppatore.

Signup and view all the flashcards

Legge di Eagleson

Qualsiasi codice non rivisto da sei mesi potrebbe sembrare scritto da qualcun altro.

Signup and view all the flashcards

Interoperabilità

Capacità del software di comunicare e lavorare con altri sistemi.

Signup and view all the flashcards

Formati di dati standard

Formati come JSON, XML e CSV che facilitano l'interoperabilità.

Signup and view all the flashcards

Produttività

Misura dell'efficienza nel processo di sviluppo software.

Signup and view all the flashcards

Fattori di produttività

Elementi che influenzano quanto velocemente e bene il software è sviluppato.

Signup and view all the flashcards

Tempestività

Capacità di rilasciare il software al momento giusto e non obsoleto.

Signup and view all the flashcards

Pianificazione accurata

Definizione chiara di obiettivi e tempi per ogni fase di sviluppo.

Signup and view all the flashcards

Milestone

Fasi intermedie con obiettivi chiari in un progetto.

Signup and view all the flashcards

Documentazione chiara

Registro dettagliato di codice, requisiti e decisioni tecniche.

Signup and view all the flashcards

Strumenti di tracciamento

Software come Jira o Trello che aiutano a monitorare il progresso.

Signup and view all the flashcards

Processi formali di sviluppo

Metodologie come Agile e Scrum con aggiornamenti regolari.

Signup and view all the flashcards

Strutturazione del codice

Organizzazione del codice in componenti ben definiti per migliorare la visibilità.

Signup and view all the flashcards

Riuso del software

Utilizzare librerie e moduli già esistenti per risparmiare tempo.

Signup and view all the flashcards

Robustezza

Un software è robusto se gestisce input imprevisti senza errori.

Signup and view all the flashcards

Esempio di robustezza

Un modulo di login che ignora caratteri speciali è robusto.

Signup and view all the flashcards

Legge di Postel

Sii conservativo in ciò che fai e liberale in ciò che accetti.

Signup and view all the flashcards

Prestazioni del software

Le prestazioni misurano l'efficienza nell'uso delle risorse hardware.

Signup and view all the flashcards

Esempio di scarsa prestazione

Un'app che impiega 5 minuti per caricare una pagina ha prestazioni scarse.

Signup and view all the flashcards

Usabilità

L'usabilità è la facilità con cui gli utenti usano il software.

Signup and view all the flashcards

Caratteristiche di un software usabile

Interfaccia intuitiva, design chiaro e feedback visivo.

Signup and view all the flashcards

Qualità interne del software

Proprietà che influenzano manutenzione ed evoluzione del codice.

Signup and view all the flashcards

Verificabilità

Facilità di controllare la correttezza del software rispetto ai requisiti.

Signup and view all the flashcards

Tipi di manutenzione

Correttiva, adattiva e perfettiva: tre modi di mantenere il software.

Signup and view all the flashcards

Software legacy

Sistema obsoleto, usato da molto tempo, critico per un'organizzazione.

Signup and view all the flashcards

Riparabilità

Facilità con cui si eliminano difetti dal software.

Signup and view all the flashcards

Riusabilità

Capacità di riutilizzare parti di software in altri progetti.

Signup and view all the flashcards

Portabilità del software

Capacità di funzionare su piattaforme diverse.

Signup and view all the flashcards

Standard multipiattaforma

Utilizzo di tecnologie compatibili con diversi hardware e sistemi operativi.

Signup and view all the flashcards

Study Notes

Obiettivi dell'Ingegneria del Software

  • Lo scopo dell'ingegneria del software è sviluppare software di alta qualità in modo efficiente e gestibile.
  • La qualità del software è fondamentale per la correttezza, l'affidabilità, l'efficienza e l'usabilità.
  • L'applicazione di metodologie e best practice garantisce software scalabile e manutenibile.

Qualità del Software

  • Il software, pur essendo intangibile, può essere valutato secondo criteri di qualità.
  • Le qualità del software si suddividono in: esterne (visibili all'utente) e interne (importanti per sviluppatori e manutentori).
  • Le qualità interne sono essenziali per garantire quelle esterne.
  • L'esempio di qualità esterna (affidabilità) richiede qualità interna (verificabilità).

Qualità del Processo e del Prodotto

  • Il prodotto (software, manuali) è frutto di un processo con fasi (analisi, progettazione, implementazione, test).
  • Ogni fase genera prodotti intermedi che devono rispettare gli standard qualitativi finali.
  • Un processo ben strutturato porta a un software di qualità superiore.

Qualità Esterne del Software

  • Sono le qualità percepite dagli utenti.

Correttezza

  • Il software è corretto se funziona come specificato.
  • La correttezza assoluta (sì/no) non basta; servono altre metriche.

Affidabilità

  • Misura la probabilità di funzionamento corretto in un determinato intervallo di tempo.
  • Un software corretto non è sempre affidabile.
  • L'affidabilità può migliorare con aggiornamenti e manutenzione.
  • Esempio: un sito e-commerce con bug minori è affidabile, uno bancario con problemi di bonifici non lo è.

Robustezza

  • Il software gestisce situazioni impreviste senza blocchi o errori critici.
  • Un software può essere corretto ma non robusto.
  • Esempio: un login che si blocca con caratteri speciali non è robusto, mentre uno che li ignora o segnala l'errore lo è.
  • Legge di Postel: essere conservativi nell'azione e liberali nell'accettazione.

Prestazioni

  • Dipendono dall'efficienza nell'utilizzo delle risorse (CPU, memoria, rete).
  • Si valutano attraverso test, simulazioni e metriche.
  • Prestazioni scarse rendono il software inutilizzabile o non scalabile.
  • Esempio: un'app con caricamento lento ha prestazioni pessime, un database efficiente gestisce query veloci anche con molti utenti.

Usabilità

  • È la facilità d'uso per gli utenti.
  • È soggettiva, influenzata dall'esperienza dell'utente e dall'interfaccia.
  • Un software usabile ha interfaccia intuitiva, coerente e con feedback visivi.
  • Esempio: pulsanti chiari, flusso logico aiutano l'usabilità; menu disordinati, mancanza di istruzioni la rendono difficile.
  • Modernità: standardizzazione delle interfacce migliora l'usabilità.

Qualità Interne del Software

  • Sono proprietà che influenzano la manutenibilità, l'evoluzione e la gestione del codice.
  • Non sono visibili agli utenti ma influenzano la qualità esterna.

Verificabilità

  • Misura la facilità di controllare la correttezza e di valutare le prestazioni.
  • Programmazione modulare, norme di codifica sistematiche, linguaggi appropriati migliorano la verificabilità.
  • Esempio: un sistema bancario deve essere verificabile per garantire la sicurezza delle transazioni.

Manutenibilità

  • Indica la facilità di modifica, correzione e miglioramento del software.
  • I costi di manutenzione sono elevati (circa il 60% del costo totale).
  • Tipi di manutenzione: correttiva (20%), adattiva (20%), perfettiva (60%).

Software Legacy e Modernizzazione

  • Software legacy: sistemi vecchi e critici per un'azienda.
  • Problema: utilizzo di tecnologie obsolete, rendendo le modifiche difficili e costose.
  • Soluzioni: reverse engineering, reengineering.

Riparabilità ed Evolvibilità

  • Riparabilità: facilità di eliminazione di difetti.
  • Evolvibilità: facilità di aggiornamento e miglioramento.
  • Fattori che influenzano: software modulare, progettazione flessibile, strumenti di debugging/test automatici.

Riusabilità

  • Capacità di riutilizzare parti di software in altri progetti.
  • Esempi: librerie, moduli, linguaggi orientati agli oggetti (Java, C++, Python).
  • Vantaggi: riduzione di tempi e costi di sviluppo e miglioramento qualità.

Portabilità

  • Capacità di funzionare su diverse piattaforme (hardware e sistemi operativi).
  • Esempi: app web su diverse piattaforme, videogiochi su PC e console.
  • Come ottenere portabilità: evitare dipendenze rigide, utilizzare tecnologie multipiattaforma, isolare le dipendenze.

Comprensibilità

  • Facilità per uno sviluppatore di leggere e capire il codice.
  • Problema: anche chi ha scritto il codice potrebbe non capirlo più dopo tempo!
  • Legge di Eagleson: il codice scritto da te e non più guardato da 6 mesi potrebbe essere stato scritto da qualcun altro.
  • Buone pratiche: codice ben commentato, nomi di variabili/funzioni descrittive, stile di scrittura coerente.
  • Vantaggi: semplifica manutenzione e evoluzione, riduce il rischio di errori.

Interoperabilità

  • Capacità del software di comunicare e lavorare con altri sistemi.
  • Esempi: software di elaborazione testi che importa/esporta formati diversi, app che usa servizi cloud.
  • Come ottenere interoperabilità: usare formati standard dati (JSON, XML, CSV), API e protocolli standard, tecnologie compatibili con più sistemi.

Qualità di Processo

  • Proprietà che influenzano l'efficacia e l'efficienza dello sviluppo software.
  • Riguarda il modo in cui il software viene prodotto, a differenza di qualità interne/esterne.

Produttività

  • Efficienza nello sviluppo software.
  • Fattori: capacità degli sviluppatori, management, strumenti di sviluppo, metodologie di sviluppo, riusabilità.
  • Esempio: utilizzo di framework e librerie velocizza il processo.

Tempestività

  • Capacità di rilasciare il software al momento giusto.
  • Pianificazione accurata, stime realistiche, milestone definite, consegne incrementali.
  • Esempio: software utile al momento del rilascio.

Visibilità

  • Chiarezza e trasparenza nello sviluppo.
  • Documentazione, strumenti di tracciamento, processi formali, strutturazione del codice aumentano la visibilità.
  • Esempio: progetti open-source, codice ben commentato.

Aree Applicative del Software

  • Il software soddisfa esigenze specifiche in diverse aree.

Sistemi Informativi

  • Gestione e organizzazione dati.
  • Esempi: sistemi bancari, bibliotecari, ERP.

Sistemi in Tempo Reale

  • Rispondere a eventi entro tempi specifici.
  • Esempi: monitoraggio industriale, controllo volo, input.
  • Caratteristiche chiave: tempo di risposta, affidabilità, safety.

Sistemi Distribuiti

  • Funzionamento su più computer connessi in rete.
  • Esempi: cloud computing, blockchain, streaming.

Sistemi Embedded

  • Integrazione software con hardware specifico.
  • Esempi: centraline auto, robot industriali, dispositivi medici.

Misurazione del Software

  • Alcune qualità sono misurabili, altre sono più soggettive.

Principi, Metodi, Tecniche e Metodologie nello Sviluppo del Software

  • Sviluppo software basato su principi, metodi, tecniche e metodologie.

Principi Fondamentali

  • Rigore e Formalità: processo strutturato per qualità e affidabilità.
  • Separazione degli Interessi: affrontare aspetti diversi separatamente.
  • Modularità: dividere in unità indipendenti (moduli) ad alta coesione e basso accoppiamento.
  • Astrazione: concentrarsi sugli aspetti essenziali ignorando dettagli irrilevanti.
  • Anticipazione del Cambiamento: progettare software adattabile a modifiche future.
  • Generalità: soluzioni riutilizzabili, problemi più generali più semplici.
  • Incrementalità: sviluppo in fasi successive, feedback precoce.

Esempio Pratico (compilatori)

  • Applicazione dei principi allo sviluppo di compilatori.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

Use Quizgecko on...
Browser
Browser