Anteprima
Vedrai una selezione di 20 pagine su 115
Appunti di Ingegneria del software Pag. 1 Appunti di Ingegneria del software Pag. 2
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 6
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 11
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 16
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 21
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 26
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 31
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 36
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 41
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 46
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 51
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 56
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 61
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 66
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 71
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 76
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 81
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 86
Anteprima di 20 pagg. su 115.
Scarica il documento per vederlo tutto.
Appunti di Ingegneria del software Pag. 91
1 su 115
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Svantaggi

La divisione inflessibile del progetto in fasi distinte rende difficile rispondere alle mutevoli esigenze dei clienti. Pertanto, questo modello è appropriato solo quando i requisiti sono ben compresi e le modifiche saranno piuttosto limitate durante il processo di progettazione.

Si tenga anche conto del fatto che il ritorno ad una fase precedente costa tanto di più indietro verso fasi precedenti si deve ritornare. Pochissimi sistemi aziendali hanno requisiti stabili.

Il modello a cascata viene utilizzato principalmente per grandi progetti di ingegneria dei sistemi in cui un sistema viene sviluppato in diversi siti. In queste circostanze, la natura pianificata del modello a cascata aiuta a coordinare il lavoro.

Prototyping

Questo approccio intreccia le attività di specifica, sviluppo e convalida. Il sistema viene sviluppato come una serie di versioni (incrementi), ciascuna delle quali aggiunge nuove funzionalità alla versione precedente.

Ciascun incremento o

  1. La versione del sistema incorpora qualcuna delle funzionalità richieste dal cliente.
  2. In generale, gli incrementi iniziali del sistema includono la funzionalità più importante e urgente richiesta dal cliente.
  3. Questo significa che il cliente o l'utente può valutare il sistema nelle prime fasi dello sviluppo per vedere se esso realizza ciò che è stato richiesto.
  4. In caso contrario, deve essere modificato soltanto l'incremento corrente del sistema e, possibilmente, dovrà essere definita una nuova funzionalità per i successivi incrementi.

Prototyping esplorativo

L'obiettivo è lavorare con i clienti e far evolvere un sistema finale da delle specifiche iniziali. Dovrebbe iniziare con requisiti ben compresi, iniziando quindi da ciò che è chiaro e cercando di capire il resto.

Prototyping usa e getta

L'obiettivo è comprendere i requisiti di sistema (o un aspetto tecnico). Dovrebbe iniziare con

requisiti poco conosciuti. Viene sviluppato un prototipo "veloce esporco", quindi, quando i requisiti sono stati compresi, il prototipo viene gettato via. Concentrarsi solo su ciò che non è chiaro, per capirlo meglio. VANTAGGI Il costo di implementazione delle modifiche dei requisiti è ridotto. L'analisi e la documentazione che devono essere ripetute sono significativamente minori rispetto a quelle richieste dal modello a cascata. È più facile ottenere il feedback del cliente sul lavoro di sviluppo che è stato fatto. Il cliente può fare i suoi commenti durante le dimostrazioni del software e vedere quanto è già stato implementato. È difficile per un cliente giudicare l'avanzamento del lavoro dai documenti della progettazione del software. È possibile consegnare in anticipo al cliente una versione utilizzabile del software, anche se non sono state incluse tutte le funzionalità. I clienti sono

In grado di utilizzare e valutare il software prima di quanto sia possibile con un processo a cascata.

SVANTAGGI

  • Il processo non è visibile. I manager devono avere delle consegne regolari per misurare i progressi.
  • Se il sistema è sviluppato velocemente, non è economico produrre documentazione che rifletta ogni versione del sistema.
  • La struttura dei sistemi tende a degradarsi quando vengono aggiunti nuovi incrementi. Ogni volta che viene aggiunta una nuova funzionalità, il codice diventa sempre più complicato, quindi diventa sempre più difficile e costoso aggiungere nuove funzionalità a un sistema. Per ridurre il livello di degrado strutturale e di complicazione del codice, i metodi agili suggeriscono un costante refactoring (miglioramento della struttura) del software.

193. Hybrid

Combinazione di modelli: un ciclo di vita waterfall con attività prototyping dove necessario.

4. Sviluppo di sistemi formali

Quando formulo le specifiche mediante un

linguaggio matematico che so via via trasformare inversioni successive che mi portano ad una descrizione di questa trasformazione in termini di un programma eseguibile e quindi garantisco che le specifiche siano contenute nel risultato. Una bella idea, ma di attuazione praticamente molto limitata, difficile, se non di fatto impossibile.

Formal transformations

T1 T2 T3 T4

Formal Executable

R1 R2 R3

specification program

P1 P2 P3 P4

Proofs of transformation correctness

PROBLEMI

Necessità di competenze specialistiche e formazione per applicare la tecnica. Difficile specificare formalmente alcuni aspetti del sistema come l'interfaccia utente e i sistemi interattivi in generale. Si riesce a fare per problemi 'giocattolo' e non per sistemi complessi.

APPLICABILITÀ

Sistemi critici, specialmente quelli in cui è necessario creare un caso di sicurezza prima che il sistema venga messo in funzione.

5. Sviluppo orientato al riutilizzo (basato su componenti)

Si basa sul semplice

fatto che se si è già sviluppato qualcosa più o meno simile a ciò che si sta affrontando, è certamente utile poter riutilizzare codice già sviluppato (testato, ...) Basato sul riutilizzo sistematico in cui i sistemi sono integrati da componenti esistenti o sistemi COTS (Commercial-off-the-shelf). Requirements System design Requirements Component modification with reuse specification analysis Development System and integration validation Cicli di processo I requisiti di sistema si evolvono sempre nel corso di un progetto. Quindi l'iterazione del processo in cui le fasi precedenti vengono rielaborate fa sempre parte del processo per i sistemi di grandi dimensioni ogni volta che si verifica un cambiamento. L'iterazione può essere applicata a qualsiasi modello di processo generico. Ci sono due approcci (correlati) che applicano sistematicamente l'iterazione: - sviluppo incrementale: sviluppo basato su incrementi successivi,

consegna incrementale oa fasi.- Combina il Waterfall con il modello prototyping;

piuttosto che fornire il sistema come una singola consegna, lo sviluppo e la consegna sono suddivisi in incrementi (cioè un sottosistema dell'intero sistema, chiamato anche rilasci) con ogni incremento che fornisce parte della funzionalità richiesta;

ai requisiti degli utenti viene data la priorità e i requisiti con la priorità più alta sono inclusi nei primi incrementi;

una volta avviato lo sviluppo di un incremento, i suoi requisiti vengono congelati sebbene i requisiti e gli incrementi successivi possano continuare a evolversi.

Design system

Define outline

Assign requirements

requirements architecture

to increments

Integrate

Validate

Develop system

Validate increment

System incomplete

Rischio

La possibilità di perdite, lesioni o altre circostanze avverse o indesiderate, corrisponde ad una mancanza di informazione. Si utilizza

L'analisi dei rischi come strumento di decision making per procedere nello sviluppo di un progetto.

Modello risk-driven denominato modello a spirale (proposto da Barry Bohem - 1988).

  • sviluppo a spirale: più un approccio generale che un modello specifico di ciclo di vita
  • Il processo è rappresentato come una spirale piuttosto che come una sequenza di attività con backtracking
  • Ogni anello della spirale rappresenta una fase del processo.
  • Nessuna fase fissa come la specifica o il progetto: i loop nella spirale vengono scelti in base a ciò che è richiesto
  • I rischi vengono esplicitamente valutati e risolti durante tutto il processo
  • Si parte dalle attività che hanno il più alto livello di rischio.

Determine objectives Evaluate alternatives alternatives and identify, resolve risks constraints Risk analysis Risk analysis Risk Opera-analysis Prototype 3 tional protoype Prototype 2 Risk Proto-analysis REVIEW type 1 Requirements plan Simulations, models,

  1. benchmarks
  2. Life-cycle plan
  3. Concept of Operation
  4. S/W Product requirements
  5. Detailed design
  6. Design Requirement Development
  7. Validation plan
  8. Code Unit test Design
  9. Integration V&V
  10. Integration and test plan
  11. Plan next phase test
  12. Acceptance test
  13. Develop, verify Service next-level product

Cause per cui un progetto di sviluppo software può fallire:

  • Requisiti incompleti / vaghi, conflitti con le parti interessate
  • Mancanza di coinvolgimento dell'utente, scarso input dell'utente
  • Mancanza di risorse, abilità che non corrispondono al lavoro
  • Aspettative non realistiche
  • Scarsa gestione del progetto, pianificazione o stima dei costi
  • Scarso supporto esecutivo
  • Mancanza di comunicazione
  • Modifica dei requisiti e delle specifiche
  • Architettura scadente
  • Rilevamento dei segnali di avviso di guasto in ritardo

Software project management

Un progetto (project) consiste, in senso generale, nell'organizzazione di azioni nel tempo per il perseguimento di uno scopo predefinito, attraverso le

varie fasi di progettazione (design), … daparte di uno o più progettisti, ... Scopo finale è la realizzazione di un bene o servizio il cui ciclo disviluppo è gestito tipicamente attraverso tecniche di project management. Cosa fa un manager? - Pianificare: quali obiettivi voglio raggiungere e in che tempi - Organizzare: quali attività, processi, come correlati, con quali competenze, … - Rendere disponibili le necessarie risorse (persone, macchine, corsi di formazione): quali risorse, quando, a fare cosa - Dirigere: attivare l’esecuzione di attività e supportarne l’esecuzione - Monitorare e controllare: verificare l’esecuzione, i risultati, i tempi e mantenere le attività focalizzate al risultato mediante eventuali azioni correttive. Il manager raggiunge il successo se riesce a costruire il sistema in tempo, con le risorse che gli sono state date (budget) e in conformità con i requisiti / aspettative delle

Organizzazioni che sviluppano e acquistano il software. Inoltre, mantengono un team di sviluppo "felice" e "ben funzionante". La gestione del progetto è necessaria perché lo sviluppo del software è sempre soggetto a vincoli di budget e pianificazione stabiliti dall'organizzazione che sviluppa il software.

Distinzioni di gestione del software rispetto ad altre tecnologie:

  • Il prodotto è immateriale
  • Il prodotto è straordinariamente flessibile
  • L'ingegneria del software non è riconosciuta come disciplina ingegneristica con lo stesso status dell'ingegneria meccanica, elettrica, ecc. ma più come programmatore.
Dettagli
A.A. 2022-2023
115 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/03 Telecomunicazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher margheritamonte23 di informazioni apprese con la frequenza delle lezioni di Ingegneria del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Udine o del prof Tasso Carlo.