Sei sulla pagina 1di 4

Cap 1 : introduzione all'ingegneria del software

I sistemi sono complessi, per rimanere utili devono evolvere con gli utilizzatori e
gli ambienti per i quali sono stati sviluppati. I sistemi software sono molto
complessi: hanno molte funzioni , molte componenti e le persone che lo
sviluppano provengono da ambiti diversi; inoltre il suo sviluppo spesso dura molti
anni.
I software sono soggetti a costanti cambiamenti, perch i requisiti sono molto
complessi e si aggiornano mano a mano che vengono scoperti nuovi errori;
inoltre le tecnologie evolvono costantemente (anche durante lo sviluppo).
L'ingegneria del software :
unattivit di modellazione. Gli ingegneri(a causa della difficolt) sono in
gradi di focalizzarsi solo sui dettagli rilevanti e lasciare il resto;
un attivit di problem-solving: i modelli sono usati per trovare una
soluzione accettabile tramite la sperimentazione . Per a causa di un
budget limitato bisogna valutare tramite metodi empirici quale sia la
scelta migliore;
un attivit di acquisizione di conoscenze . Si collezionano dati che
vengono elaborati per fornire ulteriori conoscenze;
un attivit rationale-driven . Tutte le decisioni prese sono razionali e
dipendono dal contesto e dal dominio usato.

MODELLING
Il modello una rappresentazione astratta del sistema che ci permette di
rispondere a domande sul sistema. Sono utili quando il sistema troppo grande
o troppo complicato.
Il modello del dominio dellapplicazione una descrizione di questi aspetti
del sistema del mondo reale che sono rilevanti nel problema sotto
considerazione.
Si ha bisogno di capire lambiente nel quale il sistema andr ad operare per
creare :
il modello del dominio dell'applicazione formato dai concetti rilevanti al
sistema;
il modello della soluzione del dominio

PROBLEM SOLVING
Si trova la soluzione appropriata provando e facendo errori. Questo metodo
include :
1. Formulare problema,
2. analizzare problema,
3. cercare la soluzione,
4. decidere la soluzione appropriata,
5. specificare la soluzione.
Per avere un prodotto completo si necessita di esperienza, di riuso dei pattern e
di un evoluzione incrementale del sistema.
Lo sviluppo infatti richiede sei attivit: lanalisi dei requisiti, il design del sistema,
implementazione e il testing.

ACQUISIZIONE DELLE CONOSCENZE


l'acquisizione delle conoscenze non avviene in maniera lineare con
l'avanzamento del progetto. Infatti lacquisizione di una nuova informazione
potrebbe invalidare lintero progetto. Ci sono due strade da poter seguire:
lo sviluppo risk-based : si cerca di anticipare le sorprese identificando le
componenti ad alto rischio,
sviluppo issue-based (basati sul problema) si cerca di rimuovere tutta
la linearit effettuando parallelamente tutte le attiv
t (analisi, testing, implementazione,..).

RATIONALE(FONDAMENTO LOGICO)
Un sistema cambia costantemente , eventualmente l'application model si
stabilizza una volta che si acquisiscono abbastanza informazioni; la solution
domain model sono in costante mutamento. La rationale del sistema capire il
contesto nel quale una decisione stata presa.

CONCETTI DI SOFTWARE ENGINEERING


Un progetto composto di un numero di attivit. Ogni attivit a sua volta divisa
in tasks. Un task consuma Risorse e produce un WorkProduct (sistema, modello,
documento, risorsa, ... ).

Ogni rettangolo rappresenta un


concetto, le linee rappresentano le
relazioni fra concetti,i triangoli
rappresentano la generalizzazione
fra le relazioni.

PARTECIPANTI E RUOLI
il cliente ordina e paga il sistema. Lo sviluppatore costruisce il sistema. Il project
manager pianifica il progetto e coordina gli sviluppatori e il sistema. Lend user
sono supportati dal sistema. Tutte queste figure sono definite partecipanti . Un
insieme di responsabilit sono un ruolo, associato ad un set di compiti
assegnati ai partecipanti (possono avere pi ruoli).

SISTEMI E MODELLI
il sistema una collezione di parti connesse. Il modello un astrazione del
sistema.

WORK PRODUCTS
un artefatto che prodotto durante lo sviluppo(documento o un pezzo di
software,). Pu essere ad uso interno o deliverable se va al cliente.

ATTIVIT , TASKS E RISORSE


Un attivit un set di task che sono sviluppate per un obiettivo specifico. Le
attivit possono essere composte da altre attivit (fasi).
Un task un unit di lavoro atomico che pu essere gestita; un manger lo
assegna ad uno sviluppatore e ne controlla gli sviluppi.
Le risorse sono attivit che sono usate per finire un lavoro (tempo,
equipaggiamenti e lavoro).

REQUISITI FUNZIONALI E NON FUNZIONALI


un requisito funzionale la specificazione di una funzione che il sistema
deve supportare;
un requisito non funzionale una funzione non direttamente relazionata al
sistema.

NOTAZIONI, METODI E METODOLOGIE


Una notazione un set di regole testuali o grafiche per rappresentare il modello.
Il metodo una tecnica ripetibile che specifica i passi da seguire per risolvere un
determinato problema.
Una metodologia una collezione di metodi per risolvere una classe di problemi e
specificare come e quando ogni metodo dovrebbe essere usato

ATTIVIT DI SVILUPPO DELL'INGEGNERIA DEL SOFTWARE


le attivit di sviluppo includono:
1. Elicitazione dei requisiti: il cliente e lo sviluppatore definiscono lo scopo
del sistema. Il risultato di questa attivit la descrizione del sistema in
termini di attori e use cases . Gli attori rappresentano la le attivit esterne
che interagiscono con il sistema . Includono ruoli come end users, altri PC
connessi e ambiente. Gli use cases sono una sequenza generale di eventi
che descrivono tutte le possibili azioni tra attori e sistema per un dato
pezzo di funzionalit;
2. Analisi: gli sviluppatori mirano a produrre un modello di sistema che
corretto, completo, consistente e non ambiguo. Trasformano gli use cases
prodotti nella precedente fase in un model object che descrive
completamente il sistema. Vengono scoperte ambiguit e inconsistenze da
risolvere con il cliente. Il sistem model viene annotato con attributi ,
operazioni e associazioni.
3. System design: lo sviluppatore definisce gli obiettivi di progettazione e
suddivide il sistema in sotto porzioni realizzabili da vari team.
4. Object Design: definiscono la soluzione al dominio per collegare la
differenza fra il modello di analisi e le piattaforme software/hardware
definite durante il design di sistema.
5. Implementazione: si traduce la soluzione al modello del dominio in
codice sorgente .
6. Testing : vengono trovate differenze fra il sistema e il modello eseguendo
il sistema stesso.

GESTIRE LO SVILUPPO DEL SOFTWARE


1. Comunicazione: lattivit pi critica e dispendiosa. Incomprensioni e
omissioni portano a errori e ritardi cos dispendiosi da non poter essere
corretti.
2. Gestione razionale: il razionale la giustificazione delle decisioni.
Prendere una decisione include analizzare le alternative , i criteri di
valutazione,.. se cambiano le valutazioni cambieranno anche le decisione
prese . Il razionale linformazione pi complessa ed molto difficile da
aggiornare e mantenere.
3. Gestione della configurazione software: il processo che controlla il
cambio nei prodotti di lavoro. Per esempio il cliente richiede nuove features
o cambiano le tecnologie usate. La gestione delle configurazioni permette
agli sviluppatori di controllare i cambiamenti
4. Gestione del progetto: rappresenta linsieme della progettazione del
sistema dal budget alla gestione del cliente.
5. Software life Cycle

Potrebbero piacerti anche