Progetto Software @ dmi.unict.itmalus@freaknet

38
1 getto Software @ dmi.unict.it [email protected] Software Engineering & Software Design SWEBOK

description

Software Engineering & Software Design SWEBOK. 1. Progetto Software @ [email protected]. Software Design. Cosa tratteremo? - Cos’è il Software Design... - Pubblicazioni sul Software Design... - Struttura ed architettura del Software... - PowerPoint PPT Presentation

Transcript of Progetto Software @ dmi.unict.itmalus@freaknet

Page 1: Progetto Software @ dmi.unict.itmalus@freaknet

1Progetto Software @ dmi.unict.it [email protected]

Software Engineering&

Software Design

SWEBOK

Page 2: Progetto Software @ dmi.unict.itmalus@freaknet

2Progetto Software @ dmi.unict.it [email protected]

Software Design

Cosa tratteremo?

- Cos’è il Software Design...- Pubblicazioni sul Software Design...- Struttura ed architettura del Software...- Analisi della qualita' del Software...- Notazioni e linguaggi relativi al Software Design...- Strategie e metodi relativi al Software Design...

Page 3: Progetto Software @ dmi.unict.itmalus@freaknet

3Progetto Software @ dmi.unict.it [email protected]

Software Design

L'IEEE 610.12-90 definisce il design come “il processodi definizione della struttura, dei componenti, delleinterfacce e altre caratteristiche unito al risultato di taleprocesso.

Per definizione il Software Design e' l'essenzadell'ingegneria del software, tramite il quale icomponenti vengono analizzati per ricavarne lastruttura interna del software.

Page 4: Progetto Software @ dmi.unict.itmalus@freaknet

4Progetto Software @ dmi.unict.it [email protected]

Software Design

Ma a che ci serve questo lavoro?

Grazie al Software Design si possono creare più modellidel progetto che si deve implementare. Possiamo quindianalizzarli e valutarli per decidere quale soddisfi meglioi requisiti richiesti. Infine è possibile sfruttare il modelloper pianificare il lavoro.

Page 5: Progetto Software @ dmi.unict.itmalus@freaknet

5Progetto Software @ dmi.unict.it [email protected]

Software Design

Per l'IEEE/EIA 12207 (software life cycle processes) ilSoftware Design consiste nell'unione dell'analisi deirequisiti con la costruzione del software.

- Software Architectural Design:descrive la struttura di alto livello del software.

- Software Detailed Design:descrive la struttura di basso livello, utile per lacostruzione del software.

Page 6: Progetto Software @ dmi.unict.itmalus@freaknet

6Progetto Software @ dmi.unict.it [email protected]

Software Design

Della terminologia associata al Software Design sene e' occupato Tom DeMarco [Dem99] e spiega cheche esistono 3 livelli di conoscenza del Software Design:

- D-design --> basso livello (decomposizione del softwaree analisi dei componenti).

- FP-design --> family pattern (modelli ed interfacce).

- I-design --> invention ( inventiva a run-time)

Page 7: Progetto Software @ dmi.unict.itmalus@freaknet

7Progetto Software @ dmi.unict.it [email protected]

Software Design

Ma... quali sono le basi del Software Design?

- Idee generali:L'attenzione del Software Design non e' rivolta soloal prodotto finale ma anche alla risoluzione di difficiliproblemi.

- Contesto del Software Design:tutto il ciclo di vita......analisi dei requisiti -->progettazione -->costruzione -->testing -->

Page 8: Progetto Software @ dmi.unict.itmalus@freaknet

8Progetto Software @ dmi.unict.it [email protected]

Software Design

- Processo di progettazione del software:- organizzazione dei componenti.- progetto dettagliato dei componenti.

- Tecniche abilitate:sono delle nozioni fondamentali per un buonapproccio con diversi software.

Page 9: Progetto Software @ dmi.unict.itmalus@freaknet

9Progetto Software @ dmi.unict.it [email protected]

Software Design

- Astrazione:è un processo tramite il quale due componentidiverse sembrino identiche.- astrazione per parametrizzazione.- astrazione per specificazione.

-- procedurale.-- dati.-- interazione.

- Legame e coesione (coupling and cohesion):- legame: la forza con cui i moduli sono uniti.- coesione: come i moduli sono messi in relazione.

Page 10: Progetto Software @ dmi.unict.itmalus@freaknet

10Progetto Software @ dmi.unict.it [email protected]

Software Design

- Decomposizione e modularizzazione:è il decomporre e modularizzare il software insotto-software ognuno dei quali svolge una funzionespecifica.

- Incapsulamento ed occultamento delle informazioni:pacchettizzazione degli elementi ed inaccessibilitàdall'esterno ai dettagli riservati.

Page 11: Progetto Software @ dmi.unict.itmalus@freaknet

11Progetto Software @ dmi.unict.it [email protected]

Software Design

- Separazione di interfaccia ed implementazione:creazione di una interfaccia pubblica conosciutadall'utente ma alla quale vengono celati i meccanismied i dettagli del funzionamento del software.

- Adeguatezza, completezza e primitività:se il software ha questi attributi vuol dire che è unbuon software.

Page 12: Progetto Software @ dmi.unict.itmalus@freaknet

12Progetto Software @ dmi.unict.it [email protected]

Software Design

Publicazioni sul Software Design ce ne sono state tante,alcune puntano alla qualità, altre all'organizzazione.Ogni progetto è indirizzato verso l'uno o l'altro aspetto.Inoltre ci sono pubblicazioni che puntano a quello chesta intorno all'applicazione. Tali pubblicazioni puntanoquindi alla funzionalità del sistema ed alle performance.

Elenchiamo alcune delle principali chiavi:

Page 13: Progetto Software @ dmi.unict.itmalus@freaknet

13Progetto Software @ dmi.unict.it [email protected]

Software Design

- coerenza:come decomporre il software in thread, processi, ecc.tutto in relazione allo schedulatore.

- controllo e manipolazione degli eventi:organizzare e controllare il flusso dei dati e lechiamate agli eventi.

- ripartizione dei componenti:controllare il supporto dell'hardware della macchinasu cui il software deve girare.

Page 14: Progetto Software @ dmi.unict.itmalus@freaknet

14Progetto Software @ dmi.unict.it [email protected]

Software Design

- manipolazione degli errori e delle eccezioni etolleranza dei fallimenti:

come prevenirli.

- interazione e presentazione:in che modo l'utente interagisce e capisce l'applicazione.

- durata:il tempo necessario per l'implementaione.

Page 15: Progetto Software @ dmi.unict.itmalus@freaknet

15Progetto Software @ dmi.unict.it [email protected]

Software Design

Struttura ed architettura del Software.

L'architettura del software si occupa della descrizionedi sottosistemi e componenti ricavati dalla scomposizionedi un'applicazione. Descrive quindi il modo in cui ilSoftware è organizzato e costruito. Con l'avvento diquesta disciplina a meta' degli anni '90 nacque lo stiledi programmazione. Inoltre il progettare l'architetturadi un software può essere utile per il riutilizzo dello stesso.

I punti principali dell'architettura del software sono iseguenti:

Page 16: Progetto Software @ dmi.unict.itmalus@freaknet

16Progetto Software @ dmi.unict.it [email protected]

Software Design

- strutture e punti di vista architetturali:ogni minima sfaccettatura dovrebbe essere documentata.Le sfaccettature vengono spesso chiamate “views”.

Una view rappresenta una parte del progetto e nespecifica le proprietà. Esse inoltre possono esseredi tipo:

- logico- applicativo- fisico- evolutivo- ecc.

Page 17: Progetto Software @ dmi.unict.itmalus@freaknet

17Progetto Software @ dmi.unict.it [email protected]

Software Design

- stile di architettura:uno stile di architettura è un set di regole, nonchèlimitazioni, da seguire affinchè il software rientri inuna data famiglia architetturale.

Gli stili principali seguono delle linee guida chepossono essere così schematizzate:-- struttura generale.-- sistemi distribuiti.-- sistemi interattivi.-- sistemi adattabili.-- altri.

Page 18: Progetto Software @ dmi.unict.itmalus@freaknet

18Progetto Software @ dmi.unict.it [email protected]

Software Design

- progetto dei modelli:il modello è una soluzione veloce ad un sempliceproblema relativo ad un contesto.

i principali tipi di modelli sono:-- modello creativo.-- modello strutturale.-- modello comportamentale.

Page 19: Progetto Software @ dmi.unict.itmalus@freaknet

19Progetto Software @ dmi.unict.it [email protected]

Software Design

- famiglie di programmi e strutture:le famiglie di strutture sono molto importanti per ilriutilizzo del software. Basta identificare le similitudinitra il software in questione ed una data famiglia distrutture.

Page 20: Progetto Software @ dmi.unict.itmalus@freaknet

20Progetto Software @ dmi.unict.it [email protected]

Software Design

- OO programming:La programmazione orientata agli oggetti svolge unruolo fondamentale nella progettazione strutturaledel software. Inoltre grazie ad essa e' piu' sempliceinserire estenzioni (plugins) nel software.

Page 21: Progetto Software @ dmi.unict.itmalus@freaknet

21Progetto Software @ dmi.unict.it [email protected]

Software Design

Analisi della qualità e valutazione del Software Design.

- attributi di qualità:

vengono così suddivisi...-- ilities: mantenimento, portabilità, testing, debugging.-- nesses: correttezza, robustezza, sicurezza, usabilità.

Page 22: Progetto Software @ dmi.unict.itmalus@freaknet

22Progetto Software @ dmi.unict.it [email protected]

Software Design

- analisi della qualità e valutazione delle tecniche:

ci sono tre step...-- revisione del software design:

revisione, ispezione, tracciamento dei requisiti.-- analisi statica:

revisione dello schema del progetto.-- analisi dinamica:

simulazione, testing.

Page 23: Progetto Software @ dmi.unict.itmalus@freaknet

23Progetto Software @ dmi.unict.it [email protected]

Software Design

- misurazioni:servono a valutare ma soprattutto a quantificare variaspetti del software.

le misurazioni possono essere di due tipi...-- function oriented:

effettua una scomposizione della strutturafunzionale e i componenti vengono rappresentatitramite un diagramma gerarchico.

-- object oriented:viene fatta una scomposizione al livello delle classi e viene rappresentata una gererchia dellestesse.

Page 24: Progetto Software @ dmi.unict.itmalus@freaknet

24Progetto Software @ dmi.unict.it [email protected]

Software Design

Notazioni per il Software Design.

Esistono molti linguaggi, sia testuali che grafici, deditialla rappresentazione dei prodotti del Software Design.

Si dividono in due grandi gruppi- static view.

Per la descrizione strutturale, spesso grafici puntanospesso alla comprensione delle interconnessioni trai componenti.

- dynamic view.Per la descrizione comportamentale, spesso testuali.

Page 25: Progetto Software @ dmi.unict.itmalus@freaknet

25Progetto Software @ dmi.unict.it [email protected]

Software Design

Elenchiamo ora vari linguaggi di tipo static view...

-- architectural description languages (ADLs):linguaggi che descrivono le interconnessioni.

-- class and object diagrams:relazioni tra le classi e gli oggetti.

-- component diagrams:relazioni tra componenti fisiche e interfacce.

-- collaboration responsabilities cards (CRCs):danno un nome, proprieta' e dipendenze ad unacomponente

Page 26: Progetto Software @ dmi.unict.itmalus@freaknet

26Progetto Software @ dmi.unict.it [email protected]

Software Design

-- deployment diagrams:rappresentano l'ambiente fisico in cui il softwaredeve girare.

-- entity-relationship diagrams:rappresentano un modello concettualedell'immagazzinamento dei dati.

-- interface description languages (IDLs):simili a linguaggi di programmazione definisconole interfacce dei componenti software.

Page 27: Progetto Software @ dmi.unict.itmalus@freaknet

27Progetto Software @ dmi.unict.it [email protected]

Software Design

-- jackson structure diagrams:descrivono i meccanismi delle strutture.

-- structure charts:tabelle che schematizzano le chiamate deicomponenti.

Page 28: Progetto Software @ dmi.unict.itmalus@freaknet

28Progetto Software @ dmi.unict.it [email protected]

Software Design

E ora passiamo ai linguaggi di tipo dynamic view...

-- activity diagrams:controllano il flusso di esecuzione.

-- collaboration diagrams:controllano l'interazione tra gli oggetti e il modoin cui essi scambiano i messaggi.

-- data flow diagrams:mostrano il flusso dei dati tra i processi.

Page 29: Progetto Software @ dmi.unict.itmalus@freaknet

29Progetto Software @ dmi.unict.it [email protected]

Software Design

-- decision tables and diagrams:mostrano le complesse condizioni e le relative azioni

-- flowcharts and structured flowcharts:mostrano il flusso di controllo e le azioni associate.

-- sequence diagrams:mostrano le interazioni tra gruppi di oggetti esoprattutto la cronologia degli scambi dei messaggi.

-- state transition and state charts diagrams:mostrano il controllo di flusso al variare dello statodella macchina.

Page 30: Progetto Software @ dmi.unict.itmalus@freaknet

30Progetto Software @ dmi.unict.it [email protected]

Software Design

-- formal specification languages:linguaggi testuali che in maniera rigorosa ma astrattadescrivono passo per passo lo stato del software.

-- pseudo-code and program design languages (PDLs):simili a linguaggi di programmazione strutturataservono per dare una prima forma a procedure emetodi a livello detailed design.

Page 31: Progetto Software @ dmi.unict.itmalus@freaknet

31Progetto Software @ dmi.unict.it [email protected]

Software Design

Strategie e metodi del Software Design

Nello sviluppo del software si possono adottare strategiee metodi. Le strategie sono quasi una guida mentre imetodi scendono di più nello specifico. I metodi inoltreprovvedono alla scelta della notazione e a fornire dellelinee guida per la progettazione.

Elenchiamo alcune strategie e metodi...

Page 32: Progetto Software @ dmi.unict.itmalus@freaknet

32Progetto Software @ dmi.unict.it [email protected]

Software Design

- strategie generali:la guerra si combatte tra top-down e bottom-up.Le linee generali includono l'astrazione el'incapsulamento, l'uso di modelli e modelli dilinguaggio

Page 33: Progetto Software @ dmi.unict.itmalus@freaknet

33Progetto Software @ dmi.unict.it [email protected]

Software Design

- progettazione orientata alle funzioni:è il metodo classico, si individua la funzioneprincipale e poi con strategia top-down siprosegue.

Page 34: Progetto Software @ dmi.unict.itmalus@freaknet

34Progetto Software @ dmi.unict.it [email protected]

Software Design

- metodo orientato agli oggetti:molti metodi di Software Designing sono basatisulla OO Programming. Si deve soprattuttosfruttare la potenza dell'astrazione permessa daimoderni linguaggi di alto livello.

Page 35: Progetto Software @ dmi.unict.itmalus@freaknet

35Progetto Software @ dmi.unict.it [email protected]

Software Design

- design basato su una struttura dati:si parte da un processo che produce e/o modificadati e poi si costruisce il software attorno.

Page 36: Progetto Software @ dmi.unict.itmalus@freaknet

36Progetto Software @ dmi.unict.it [email protected]

Software Design

- design basato sui componenti:si sviluppano parallelamente le componentiper poi assemblarle.

- altri...

Page 37: Progetto Software @ dmi.unict.itmalus@freaknet

37Progetto Software @ dmi.unict.it [email protected]

Software Design

Spero di essere stato chiaro e grazieper l'attenzione :-))))

Page 38: Progetto Software @ dmi.unict.itmalus@freaknet

38Progetto Software @ dmi.unict.it [email protected]

Software Design

Se volete scaricare queste slides sono disponibilial sito

http://www.maluslab.net/

per domande non fatte in questa sede

[email protected]