Progetto Software @ dmi.unict.itmalus@freaknet
description
Transcript of 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...
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.
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.
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.
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)
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 -->
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.
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.
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.
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.
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:
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.
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.
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:
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.
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.
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.
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.
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.
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à.
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.
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.
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.
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
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.
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.
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.
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.
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.
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...
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
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.
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.
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.
36Progetto Software @ dmi.unict.it [email protected]
Software Design
- design basato sui componenti:si sviluppano parallelamente le componentiper poi assemblarle.
- altri...
37Progetto Software @ dmi.unict.it [email protected]
Software Design
Spero di essere stato chiaro e grazieper l'attenzione :-))))
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