Ingegneria del software

(vedere appunti Monfardini unisi.it)

  1. processo = sequenza: principi (teorici) → metodologia (tecniche) → prodotti
  2. rigore, formalismo, sistematicità e leggi matematiche aiutano lo sviluppo delle soluzioni
  3. le specifiche del prodotto/problema vanno separate (funzionalità,prestazioni,usabilità)
    1. specifiche operazionali (flussodati)
      1. quali dati memorizzare
      2. quali operazioni fare
    2. specifiche descrittive (ER-relazioni)
    3. le specifiche possono essere fornite in modo confuso dall'utente
  4. la documentazione del processo aiuta la gestione del processo
  5. i responsabili dei processi aiutano a risolvere i problemi
  6. esempio: metodo a cascata diviso (nel tempo) in fasi e attività
  7. la modularità del software: un sistema è composto da parti collegate (ma sommando le parti non si riottiene il sistema)
    1. esempio di un giocatore di una squadra di calcio: giocare da soli non è la stessa cosa
    2. divide et impera per vincere la complessità
    3. coesione dei moduli (chiusi) e basso accoppiamento dei moduli (dipendenze)
  8. astrazione del sistema/problema: ignorare i dettagli, identif. aspetti principali
    1. ottenere un modello astratto semplificato
    2. descriverlo in modo formale
    3. risolvere il modello non il problema reale
  9. prevedere lo sviluppo delle specifiche nel tempo (evoluzione sw)
  10. cercare di riutilizzare soluzioni esistenti
  11. fare un esempio: progetto di un sistema “ascensore”

Modelli di sviluppo del software (lifecycle)

  1. a cascata
  2. incrementale
  3. microsoft
  4. open source
  5. metodologie
  6. processo unificato
  7. scrivi e correggi: è un modello che non so quanto mi costa e nemmeno quando finirà! :(
  8. metodo agile

nato per evitare i problemi relativi ai progetti troppo grandi e dispersivi

  • è un processo di sviluppo del software
  • è iterativo: si ripetono dei passaggi
  • è incrementale: ad ogni passaggio ottengo qualcosa di migliore
  • analisi → progetto → realizzazione → test (ciclicamente)
  1. analisi del problema
    • semplificare e definire il problema
    • dividere in sotto-problemi
    • definire gli obiettivi
  2. progettazione
    • individuare lo stile di programmazione più utile (fare un ponte di legno o di acciaio?)
    • individuare il linguaggio che usa tale stile
    • individuare l'architettura della soluzione
    • individuare i mezzi (quanto tempo e quante persone?)
    • definire gli obiettivi
  3. realizzazione o implementazione (fare il ponte nel materiale scelto)
    • ricercare soluzioni esistenti
    • personalizzare tali soluzioni
    • creare nuove soluzioni (generali e personalizzabili in futuro)
    • mettere insieme le soluzioni parziali
  4. verifica
    • non è l'ultima fase ma va fatta continuamente durante il progetto (come la documentazione)

Sebbene le fasi dello sviluppo del software siano state numerate, non si deve credere che si tratti di un modello “a cascata”. Le fasi si influenzano a vicenda e può accadere, ad esempio, che per risolvere un problema sorto in fase di implementazione si apportino delle modifiche alla fase di progettazione.

principi

  • dare molta importanza alle persone
  • scrivere più software e meno documentazione (svantaggi?)
  • sensibilità ai cambiamenti delle specifiche (anche non documentati)
  • riunioni in piedi
  • gruppi di lavoro piccoli e autonomi nelle decisioni
  • responsabilità di tutti
  • appunti3s/ingegneria_del_software.txt
  • Last modified: 2018/04/25 07:55
  • (external edit)