Principi di ingegneria del software Flashcards

1
Q

Scopo ingegneria del software

A

Ingegnerizzare mediante norme e strumenti la creazione e il mantenimento del software:

  • Scelta linguaggio di programmazione: si usa il paradigma di programmazione orientato agli oggetti, che permette l’integrazione del lavoro di molte persone
  • Definizione struttura del progetto mediante strumenti semplici e verificabili
  • Verifica mediante sistemi automatici, più semplici possibile per gli utilizzatori
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Modelli ciclo di vita del software

A
  • Modello a cascata

- Modello a spirale

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Modello a cascata

A

1) Analisi e specifica dei requisiti:
requisiti del committente vengono formalizzati e si verifica che siano consistenti (realizzabili)

2) Progettazione e specifica del sistema:
report che dice come deve funzionare il sistema, verificando che funzioni correttamente. Utilizzato linguaggio Statechart di specifica semi formale

3) Codifica e test di modulo:
scrittura del codice mediante strumenti automatici, verifica del codice implementato e dell’insieme dei file (modulo)

4) Integrazione e test del sistema
5) Consegna e manutenzione

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Modello a spirale

A

Riprende il modello a cascata, ma si eseguono ciclicamente le varie operazioni

1) Analisi e specifica dei requisiti
2) Progetto dell’architettura del sistema
3) Implementazione
4) Verifica/test

Primo giro:

  • Analisi iniziale
  • Progetto iniziale
  • Primo prototipo
  • Verifica del primo prototipo

Secondo giro:

  • Nuove specifiche da parte del committente
  • Progettazione del sistema completo
  • Prima versione del sistema completo
  • Verifica della prima versione
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Problemi programmazione in C

A

Se più persone lavorano sullo stesso programma, le modifiche di un programmatore si ripercuotono sul codice degli altri, quindi i membri del team non possono lavorare in modo indipendente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Principio della programmazione orientata agli oggetti

A

Alla base della programmazione object oriented c’è il concetto di classe, un tipo di dato astratto che include la coppia di elementi:

  • Definizione del tipo
  • Metodi che operano sul tipo

In questo modo tutte le funzioni necessarie per operare su un tipo sono incluse nel tipo di dato astratto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Tipo di dato astratto: differenza tra C e OO

A
  • Se simuliamo un tipo di dato astratto in C, le variabili vengono allocate in memoria, mentre le funzioni operano nel file di chi le ha definite, e le variabili vengono quindi passate in quel file
  • Nella programmazione OO, invece, in memoria viene copiato l’intero contenuto della struttura dati astratta (definizione del tipo e attributi), che prende il nome di oggetto. Chi opera sul tipo di dato astratto lo fa localmente, senza modificare file di altri.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Class Diagram

A

Rappresentazione del software

  • Nome classe
  • Attributi
  • Metodi

Per ogni attributo: Visibilità Nome : Tipo
Per ogni metodo: Visibilità Nome Argomenti in input Tipo in output

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Visibilità

A
  • Public + : visibile da altre classi
  • Private - : visibile solo nella classe in cui è definito
  • Protected # : pubblico per la classe che sta estendendo, privato per tutte le altre classi
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Linguaggio compilato o interpretato

A
  • Compilato (es C) : specifico per sistema operativo, eseguibile generato ed eseguito direttamente nel sistema in cui viene compilato
  • Interpretato (es Java) : Presente interprete (Java Virtual Machine), codice eseguibile su macchine diverse, indipendentemente da dove viene compilato:
    file sorgente .java - > compilato .class (JVM lavora su file .class)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Costruttore

A
  • Metodo generato in automatico
  • Sempre public
  • Nome uguale alla classe
  • Serve per allocare in memoria la classe - > OGGETTO
  • Dopo aver chiamato il costruttore per una variabile, si possono chiamare i metodi relativi; altrimenti la variabile punta a NULL
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Overload del metodo

A

In una classe ci possono essere metodi con stesso nome che ricevono in input parametri di tipo diverso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Garbage collector

A

La JVM ogni tanto pulisce la memoria occupata e non più referenziata, non c’è quindi bisogno di malloc e free.
Questo è un problema per i sistemi real time, perché il garbage collector impiega risorse e non è predicibile, quindi generalmente Java non è usato per sistemi real-time.
Negli Stati Uniti usano Java senza virtual machine, perdendo però la possibilità di eseguire i programmi su sistemi diversi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Attributi/metodi statici

A
  • Parola chiave static riferita ad attributi o metodi
  • Metodo o attributo statico vive indipendentemente dall’oggetto: si può quindi fare riferimento senza che la classe sia allocata
  • Una modifica di una variabile static in un oggetto si ripercuote su tutti gli altri oggetti
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Estensione di una classe

A
  • Una classe A può estendere una classe B
  • A è la sottoclasse, B la superclasse
  • B è più generale di A
  • Sottoclasse può ridefinire metodi public della superclasse
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Overriding dei metodi

A

Sottoclasse può ridefinire i metodi public della superclasse

17
Q

Final

A

Keyword che precede definizione di attributo, metodo o classe

  • final + attributo : costante (nell’oggetto)
  • final + metodo : non permette overriding del metodo
  • final + classe : non permette estensione della classe
18
Q

Upcasting

A

Casting verso la superclasse

Casting: dato di un certo tipo trasformato in dato di un altro tipo

19
Q

Polimorfismo (metodi polimorfici)

A
  • Chiamata ad un metodo, metodo eseguito dipende dall’input

- Metodo polimorfico: il suo effetto dipende dal tipo di dato in ingresso

20
Q

Differenze binding C - Java

A

In C il compilatore sostituisce ad una funzione l’indirizzo in cui è presente tale funzione: binding statico
Ciò non è possibile in Java per la possibilità di metodi polimorfici
In Java binding dinamico: a Runtime viene assegnato l’indirizzo del metodo da usare

21
Q

Metodo getter

A
  • Permette di restituire variabili private

- Di solito non riceve parametri in input

22
Q

Metodo setter

A
  • Permette assegnamento
  • Sempre public
  • Riceve parametri in input
  • Non restituisce nulla
  • Risolve problemi di visibilità