Introduzione

Il SW engineer non è uno sviluppatore. Ha due problemi:

  • il cliente non si esprime bene (quindi tradurre i needs dei clienti)
  • assegnare le persone a un progetto

Se non funziona qualcosa la colpa è del SE.

Questo problema ha vari aspetti:

  • tempo
  • budget numero di persone

Quindi nel nostro gioco ci sono essenzialmente tre oggetti:

  • environment: tutto ciò che agisce con l’utente (sistema, utente, sensori…)
  • requisiti: definiscono tutte le proprietà che il sistema deve rispettare, tipicamente vengono divisi in due classi:
    • funzionali: es. ordinare un vettore
    • non-funzionali: performance es. voglio che per ordinare un vettore impiego 1 microsecondo

Se il sistema lo avessimo potremmo fare infiniti test, ma noi all’inizio non abbiamo il sistema, lo dobbiamo costruire ex-novo.

Inizialmente si costruiscono dei generatori di test e degli oracoli, dei programmi che dicono se il test è passato oppure no. Si potrebbero costruire anche dei mockup che approssimano il sistema: se sono un’azienda che faccio sempre lo stesso prodotto (es. chip), potrebbe essere vantaggioso per me fare un mockup usando sempre lo stesso linguaggio.

La documentazione ha un difetto: si può solo contemplare: per questo motivo sono nati i test.

Correlazione oggetto - modello: in tutti i campi dell’ingegneria si ha presente qual è il SW e qual è il modello. Il SE siccome non ha un risultato tangibile dell’oggetto che andrà a costruire, è difficile da “rappresentare”.