Zusammenfassungen

Universitätsnotizen im Markdown-Format aus Obsidian.

Introduzione all'Ingegneria del Software

download MD herunterladen

Cos'è un software?

Sono programmi per computer che hanno documentazione associata (ad es. requisiti, modelli di progettazione e manuali utente). Un software può essere:

  • generico: sviluppato per essere venduto a una gamma di clienti diversi, ad es. Software per PC come Excel o Word;
  • specifico (personalizzato): sviluppato per un singolo cliente secondo le sue specifiche.

Un nuovo software può essere creato dallo sviluppo di nuovi programmi, dalla configurazione di software generici e dal riutilizzo di software esistenti.

Cos'è l'Ingegneria del Software?

È una disciplina ingegneristica che si occupa di tutti gli aspetti della produzione di software.

Gli ingegneri del Software dovrebbero adottare un approccio sistematico e organizzato al loro lavoro e utilizzare strumenti e tecniche appropriate a seconda del problema da risolvere, dei vincoli di sviluppo e delle risorse disponibili.

Qual è la differenza tra Ingegneria del Software e Informatica?

L'informatica si occupa di teoria e fondamenti mentre l'Ingegneria del Software si occupa degli aspetti pratici dello sviluppo e della fornitura di software utili ed economici.

Qual è la differenza tra Ingegneria del Software e Ingegneria dei Sistemi?

L'Ingegneria dei Sistemi si occupa di tutti gli aspetti dello sviluppo di sistemi basati su computer: hardware, software e ingegneria di processo.

L'Ingegneria del Software fa parte di questo processo per quanto riguarda l'infrastruttura software, il controllo, le applicazioni e i database nel sistema.

Gli ingegneri di sistema sono coinvolti nelle specifiche del sistema, nella progettazione architettonica, nell'integrazione e nella distribuzione.

Cos'è lo processo software?

È un insieme di attività il cui obiettivo è lo sviluppo o l'evoluzione del software. Le attività generiche in tutti i processi software sono:

  • specifiche: cosa dovrebbe fare il sistema e i suoi vincoli di sviluppo;
  • sviluppo: produzione del sistema software;
  • convalida: verifica che il software sia ciò che il cliente desidera;
  • evoluzione: cambiare il software in risposta alle mutevoli esigenze.

Che cos'è un modello del processo software?

È una rappresentazione semplificata di un processo software, presentata da una prospettiva specifica. Esempi di prospettive di processo sono:

  • Prospettiva del flusso di lavoro, sequenza di attività;
  • Prospettiva del flusso di dati, flusso di informazioni;
  • Prospettiva di ruolo/azione, chi fa cosa.

Esistono alcuni modelli di processo generici come il modello a cascata, lo sviluppo iterativo e l'ingegneria del software basata su componenti.

Quali sono i costi dell'Ingegneria del Software?

All'incirca il 60% per i costi di sviluppo, 40% per i costi di test.

Per i software personalizzati, i costi di evoluzione spesso superano i costi di sviluppo.

I costi variano in base al il tipo di sistema che si sta sviluppando e alle prestazioni e affidabilità del sistema.

La distribuzione dei costi dipende dal modello di sviluppo utilizzato.

distribuzioneCostiAttivita
distribuzioneCostiAttivita

Quali sono i metodi dell'Ingegneria del Software?

Sono approcci strutturati allo sviluppo del software come per esempio:

  • descrizioni e notazioni dei modelli, descrizioni dei modelli grafici che dovrebbero essere prodotti;
  • regole, vincoli applicati ai modelli di sistema;
  • raccomandazioni, consigli sulle buone pratiche di progettazione;
  • guida al processo, quali attività seguire.

Che cos'è CASE (Computer-Aided Software Engineering)

Sono sistemi software destinati a fornire supporto automatizzato per le attività dei processi software. I sistemi CASE sono spesso utilizzati per il supporto del metodo come per esempio:

  • Upper-CASE, strumenti a supporto delle prime attività di processo dei requisiti e della progettazione;
  • Lower-CASE, strumenti per supportare attività successive come programmazione, debug e test.

Quali sono le caratteristiche di un buon software?

Il software deve fornire all'utente le funzionalità e le prestazioni richieste e deve essere manutenibile, affidabile e accettabile:

  • manutenibilità: il software deve evolversi per soddisfare le mutevoli esigenze;
  • affidabilità: il software deve essere affidabile;
  • efficienza: il software non dovrebbe fare un uso dispendioso delle risorse di sistema;
  • accettabilità: il software deve essere accettato dagli utenti per i quali è stato progettato. Ciò significa che deve essere comprensibile, utilizzabile e compatibile con altri sistemi.

Quali sono le principali sfide che l'Ingegneria del Software deve affrontare?

  • eterogeneità: sviluppo di tecniche per la creazione di software in grado di far fronte a piattaforme e ambienti di esecuzione eterogenei;
  • consegna: sviluppo di tecniche che portano a una consegna più rapida del software;
  • fiducia: sviluppo di tecniche che dimostrino che il software può essere considerato affidabile dai suoi utenti.

Responsabilità professionale ed etica

L'ingegneria del software è più che l'applicazione di competenze tecniche. Gli ingegneri devono comportarsi in modo onesto ed eticamente responsabile. Il comportamento etico è più che semplicemente rispettare la legge.

Abbiamo vari problemi legati alla responsabilità professionale come:

  • riservatezza: gli ingegneri dovrebbero normalmente rispettare la riservatezza dei loro datori di lavoro o clienti, indipendentemente dal fatto che sia stato firmato o meno un accordo formale di riservatezza.
  • competenza: gli ingegneri non dovrebbero travisare il loro livello di competenza. Non dovrebbero accettare consapevolmente un lavoro che è al di fuori delle loro competenze.
  • diritti di proprietà intellettuale: essere a conoscenza delle leggi locali sulla proprietà intellettuale come brevetti, copyright, ecc. e fare attenzione a garantire che la proprietà intellettuale di datori di lavoro e clienti sia protetta;
  • uso improprio del computer: l'Ingegnere non dovrebbe utilizzare le proprie competenze tecniche per abusare dei computer di altre persone.

Codice Etico ACM/IEEE

Le società professionali negli Stati Uniti hanno collaborato per produrre un codice di pratica etica. Questo codice contiene otto principi relativi al comportamento e alle decisioni e riguarda professionisti, educatori, manager, supervisori e responsabili politici, nonché tirocinanti e studenti della professione.

Dilemmi etici

Alcuni esempi di dilemmi etici:

  • disaccordo in linea di principio con le politiche dell'alta dirigenza;
  • il tuo datore di lavoro agisce in modo non etico e rilascia un sistema critico per la sicurezza senza aver terminato il test del sistema;
  • partecipazione allo sviluppo di sistemi d'arma militari o sistemi nucleari.