Zusammenfassungen
Universitätsnotizen im Markdown-Format aus Obsidian.
Introduzione all'Ingegneria del Software
download MD herunterladenCos'è 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.

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.