Estratto del documento

Concetti generali

L'ingegnere del software

L'ingegnere del software deve essere in grado di sviluppare modelli, esprimere concetti software con diversi livelli di astrazione, trovare le risorse, lavorare in gruppo e gestire progetti.

Fasi per la progettazione del software

  • Analisi e specifiche dei requisiti: caratteristiche del sistema;
  • Progettazione e specifiche: organizzazione componenti che comporranno il sistema e suddivisione in moduli;
  • Codifica e test dei moduli;
  • Integrazione e test: integrazione dei moduli e test;
  • Rilascio: test di accettazione e consegna al committente;
  • Manutenzione;

Tipi di prodotti software

  • Programma: insieme di istruzioni autoconsistenti rispetto ad uno o più obiettivi. Scarsa documentazione, difetti rilevati sul campo, scarsa validazione, vita relativamente breve causa difficoltosa manutenzione.
  • Applicazione: insieme di programmi interagenti tra loro. Pacchetto usabile fornito di interfaccia e documentazione d'uso. Basso livello di qualità e manutenzione difficoltosa.
  • Sistema software: insieme di programmi interagenti che copre un dominio applicativo con alto livello di qualità e documentazione completa (requisiti, progettazione, manuali d'uso). Usabilità e portabilità sono caratteristiche chiave per far rientrare gli alti costi di produzione. Deve invecchiare lentamente.
  • Applicazioni per l'impresa: dati persistenti, rilevanti volumi di dati, accesso concorrente, integrazione tra applicazioni.
  • Sistemi in tempo reale: risposta in breve intervallo di tempo. Orientati al controllo (pochi dati, molte funzioni). Utilizzati per operazioni critiche (affidabilità).
  • Sistemi embedded: non hanno interfacce verso l'utente ma sempre verso altri dispositivi dello stesso sistema. Poche capacità funzionali.

Qualità dei prodotti

  • Correttezza: soddisfare i requisiti funzionali.
  • Affidabilità: probabilità che si comporti secondo le attese.
  • Robustezza: si deve comportare in modo accettabile anche in situazioni impreviste.
  • Usabilità: facilità d'uso da parte dei suoi utilizzatori.
  • Manutenibilità: facilità con cui si identifica la causa di malfunzionamento o si aggiungono o modificano funzionalità.

Prestazioni

  • Tempo di risposta: tempo necessario per elaborare un processo dall'avvio al risultato
  • Reattività: tempo impiegato dal sistema per notificare l'acquisizione della richiesta
  • Latenza: tempo minimo necessario per ricevere una qualsiasi risposta
  • Throughput: quanto lavoro il sistema riesce ad eseguire nell'unità di tempo
  • Carico: quanto lavoro contemporaneo può fare il sistema
  • Sensibilità al carico: quanto varia una prestazione con il cambiamento di carico
  • Efficienza: prestazione rapportata alle risorse utilizzate
  • Capacità: il massimo throughput o carico che un sistema può reggere
  • Scalabilità: misura della capacità di modificare le prestazioni all'aumento delle risorse

Problemi dell'ingegneria del software

La carenza di conformità dei processi software causa carenza di qualità.

Frontiere dell'ingegneria del software

Potenziare lo sviluppatore mediante:

  • Sviluppo per configurazione invece che per scrittura codice attraverso:
    • Framework: componente che generalizza le applicazioni di uno stesso dominio per sviluppare applicazioni non scrivendo codice o scrivendone poco attraverso la parametrizzazione, i plug-in e gli scripting (frammento esegui. di codice).
    • Produzione per linee di prodotti: richiede maggior tempo della costruzione di una singola applicazione. Utilizza un modello di dominio di riferimento. Promuove il riuso. L'efficacia migliora man mano con nuove varianti di prodotti dello stesso dominio.
    • Sviluppo per componenti: utilizzare software già scritto per costruire nuove applicazioni. Problemi di certificazione e integrazione delle componenti. Rischio di manutenibilità molto costosa.
  • Distribuire la produzione del software attraverso:
    • Global Software Development: utilizzare le risorse umane disponibili sull'intero globo e concentrare l'impresa su poche competenze. È necessaria una profonda competenza nella gestione dei progetti.
    • Sviluppo di software Open Source: utilizzo di creatività e potenza di sviluppo di comunità estese. Problema sulla responsabilità della correzione ed evoluzione del software.
    • Sviluppo per Web-Services: utilizzo di creatività e potenza di sviluppo di comunità estese pagando le componenti per l'uso. Problema sulla responsabilità della correzione ed evoluzione del software.

Principi dell'ingegneria del software

I principi descrivono proprietà desiderabili dei prodotti e dei processi e si applicano attraverso metodi e tecniche specifiche.

Rigore

È la coerenza con le pre-condizioni, il metodo e le tecniche che si intendono utilizzare nella produzione. Consente di sviluppare software con buoni livelli di qualità.

Formalità

È l'uso esclusivo di formalismi matematici per guidare lo sviluppo del software e per valutarlo. Consente la gestione automatica dello sviluppo software.

Separazione degli interessi

Separare le decisioni necessarie per risolvere aspetti diversi dello stesso problema. Diversi criteri di separazione:

  • Per tempo: Aspetti che si rilevano in tempi diversi. (es.: I problemi di pianificazione dell'analisi si separano da quelli della pianificazione della progettazione)
  • Per caratteristiche: Ogni aspetto rilevante corrisponde ad una caratteristica, ognuna è analizzata separatamente dall'altra. (es.: Si progetta prima il sistema software con una elevata qualità della struttura. Successivamente, se fosse necessario, si affina la struttura perché sia efficiente quanto è richiesto)
  • Per prospettive: Ogni aspetto si attiene alla prospettiva di un portatore di interessi. (es.: Si struttura il sistema per assicurare una buona interfaccia con l'utente; Si rivede la struttura per assicurare una manutenzione economica)
  • Per parti: Ogni capacità del sistema deve riguardare una parte di esso. (es.: Le applicazioni devono essere progettate con gestione interfaccia, gestione regole di dominio applicativo, gestione dati persistenti)

Modularità

I moduli sono parti del sistema software. Ognuno realizza una parte delle sue funzioni. I moduli devono avere alta coesione interna e basso accoppiamento tra loro. Un'applicazione si può costruire scomponendo il problema in moduli e dettagliando man mano (Top Down), o partendo dai moduli in dettaglio e componendo (Bottom Up).

Vantaggi: consentono la separazione degli interessi. I moduli possono essere componenti già scritte e riusate. Svantaggi: eccessiva divisione può diminuire la comprensibilità.

Anticipazione del cambiamento

Capacità dell'applicazione di accogliere i cambiamenti (del dominio applicativo o delle tecnologie) con poco impegno e in poco tempo.

Vantaggi: Riduce i tempi per la manutenzione e aumenta la riusabilità. Svantaggi: l'analisi deve essere accurata per prevedere i cambiamenti futuri. Curare l'accoppiamento dei moduli. Conoscenza approfondita del dominio applicativo.

Astrazione

Estrarre e analizzare gli aspetti più significativi di un problema trascurando i dettagli dello stesso.

Vantaggi: consente di presentare prospettive diverse di uno stesso sistema software. Svantaggi: Un'astrazione mal calibrata rispetto allo scopo potrebbe dare una immagine deformata dei contenuti di dettaglio.

Generalità

Capacità di riformulare un problema generico.

Anteprima
Vedrai una selezione di 7 pagine su 27
Riassunto Ingegneria del SW Pag. 1 Riassunto Ingegneria del SW Pag. 2
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Riassunto Ingegneria del SW Pag. 6
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Riassunto Ingegneria del SW Pag. 11
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Riassunto Ingegneria del SW Pag. 16
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Riassunto Ingegneria del SW Pag. 21
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Riassunto Ingegneria del SW Pag. 26
1 su 27
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Tonetto393 di informazioni apprese con la frequenza delle lezioni di Ingegneria del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bari o del prof Caivano Danilo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community