User Tools

Site Tools


appunti3s:ingegneria_del_software
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


appunti3s:ingegneria_del_software [2020/06/08 22:19] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== Ingegneria del software ======
 +(vedere appunti Monfardini unisi.it)
 +    - processo = sequenza: principi (teorici) -> metodologia (tecniche) -> prodotti 
 +    - rigore, formalismo, sistematicità e leggi matematiche aiutano lo sviluppo delle soluzioni
 +    - le specifiche del prodotto/problema vanno separate (funzionalità,prestazioni,usabilità)
 +      - specifiche operazionali (flussodati) 
 +        - quali dati memorizzare
 +        - quali operazioni fare
 +      - specifiche descrittive (ER-relazioni)
 +      - le specifiche possono essere fornite in modo confuso dall'utente
 +    - la documentazione del processo aiuta la gestione del processo
 +    - i responsabili dei processi aiutano a risolvere i problemi
 +    - esempio: metodo //a cascata// diviso (nel tempo) in fasi e attività
 +    - la modularità del software: un sistema è composto da parti collegate (ma sommando le parti non si riottiene il sistema)
 +      - esempio di un giocatore di una squadra di calcio: giocare da soli non è la stessa cosa
 +      - divide et impera per vincere la complessità
 +      - coesione dei moduli (chiusi) e basso accoppiamento dei moduli (dipendenze)
 +    - astrazione del sistema/problema: ignorare i dettagli, identif. aspetti principali
 +      - ottenere un modello astratto semplificato
 +      - descriverlo in modo formale
 +      - risolvere il modello non il problema reale
 +    - prevedere lo sviluppo delle specifiche nel tempo (evoluzione sw)
 +    - cercare di riutilizzare soluzioni esistenti 
 +    - fare un esempio: progetto di un sistema "ascensore"
  
 +====== Modelli di sviluppo del software (lifecycle) ======
 +  - a cascata
 +  - incrementale
 +  - microsoft 
 +  - open source
 +  - metodologie
 +  - processo unificato
 +  - scrivi e correggi: è un modello che non so quanto mi costa e nemmeno quando finirà! :(
 +  - metodo agile
 +
 +===== metodo di sviluppo 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)
 +
 +  - //analisi del problema//
 +    * semplificare e definire il problema
 +    * dividere in sotto-problemi
 +    * definire gli obiettivi
 +  - //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
 +  - //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
 +  - 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: 2020/06/08 22:19 by 127.0.0.1