1 / 38

Progetto Software @ dmi.unict.it malus@freaknet

Software Engineering & Software Design SWEBOK. 1. Progetto Software @ dmi.unict.it malus@freaknet.org. Software Design. Cosa tratteremo? - Cos’è il Software Design... - Pubblicazioni sul Software Design... - Struttura ed architettura del Software...

tayte
Download Presentation

Progetto Software @ dmi.unict.it malus@freaknet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering & Software Design SWEBOK 1 Progetto Software @ dmi.unict.it malus@freaknet.org

  2. 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... 2 Progetto Software @ dmi.unict.it malus@freaknet.org

  3. Software Design L'IEEE 610.12-90 definisce il design come “il processo di definizione della struttura, dei componenti, delle interfacce e altre caratteristiche unito al risultato di tale processo. Per definizione il Software Design e' l'essenza dell'ingegneria del software, tramite il quale i componenti vengono analizzati per ricavarne la struttura interna del software. 3 Progetto Software @ dmi.unict.it malus@freaknet.org

  4. Software Design Ma a che ci serve questo lavoro? Grazie al Software Design si possono creare più modelli del progetto che si deve implementare. Possiamo quindi analizzarli e valutarli per decidere quale soddisfi meglio i requisiti richiesti. Infine è possibile sfruttare il modello per pianificare il lavoro. 4 Progetto Software @ dmi.unict.it malus@freaknet.org

  5. Software Design Per l'IEEE/EIA 12207 (software life cycle processes) il Software Design consiste nell'unione dell'analisi dei requisiti 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 la costruzione del software. 5 Progetto Software @ dmi.unict.it malus@freaknet.org

  6. Software Design Della terminologia associata al Software Design se ne e' occupato Tom DeMarco [Dem99] e spiega che che esistono 3 livelli di conoscenza del Software Design: - D-design --> basso livello (decomposizione del software e analisi dei componenti). - FP-design --> family pattern (modelli ed interfacce). - I-design --> invention ( inventiva a run-time) 6 Progetto Software @ dmi.unict.it malus@freaknet.org

  7. Software Design Ma... quali sono le basi del Software Design? - Idee generali: L'attenzione del Software Design non e' rivolta solo al prodotto finale ma anche alla risoluzione di difficili problemi. - Contesto del Software Design: tutto il ciclo di vita...... analisi dei requisiti --> progettazione --> costruzione --> testing --> 7 Progetto Software @ dmi.unict.it malus@freaknet.org

  8. Software Design - Processo di progettazione del software: - organizzazione dei componenti. - progetto dettagliato dei componenti. - Tecniche abilitate: sono delle nozioni fondamentali per un buon approccio con diversi software. 8 Progetto Software @ dmi.unict.it malus@freaknet.org

  9. Software Design - Astrazione: è un processo tramite il quale due componenti diverse 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. 9 Progetto Software @ dmi.unict.it malus@freaknet.org

  10. Software Design - Decomposizione e modularizzazione: è il decomporre e modularizzare il software in sotto-software ognuno dei quali svolge una funzione specifica. - Incapsulamento ed occultamento delle informazioni: pacchettizzazione degli elementi ed inaccessibilità dall'esterno ai dettagli riservati. 10 Progetto Software @ dmi.unict.it malus@freaknet.org

  11. Software Design - Separazione di interfaccia ed implementazione: creazione di una interfaccia pubblica conosciuta dall'utente ma alla quale vengono celati i meccanismi ed i dettagli del funzionamento del software. - Adeguatezza, completezza e primitività: se il software ha questi attributi vuol dire che è un buon software. 11 Progetto Software @ dmi.unict.it malus@freaknet.org

  12. 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 che sta intorno all'applicazione. Tali pubblicazioni puntano quindi alla funzionalità del sistema ed alle performance. Elenchiamo alcune delle principali chiavi: 12 Progetto Software @ dmi.unict.it malus@freaknet.org

  13. 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 le chiamate agli eventi. - ripartizione dei componenti: controllare il supporto dell'hardware della macchina su cui il software deve girare. 13 Progetto Software @ dmi.unict.it malus@freaknet.org

  14. Software Design - manipolazione degli errori e delle eccezioni e tolleranza dei fallimenti: come prevenirli. - interazione e presentazione: in che modo l'utente interagisce e capisce l'applicazione. - durata: il tempo necessario per l'implementaione. 14 Progetto Software @ dmi.unict.it malus@freaknet.org

  15. Software Design Struttura ed architettura del Software. L'architettura del software si occupa della descrizione di sottosistemi e componenti ricavati dalla scomposizione di un'applicazione. Descrive quindi il modo in cui il Software è organizzato e costruito. Con l'avvento di questa disciplina a meta' degli anni '90 nacque lo stile di programmazione. Inoltre il progettare l'architettura di un software può essere utile per il riutilizzo dello stesso. I punti principali dell'architettura del software sono i seguenti: 15 Progetto Software @ dmi.unict.it malus@freaknet.org

  16. 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 ne specifica le proprietà. Esse inoltre possono essere di tipo: - logico - applicativo - fisico - evolutivo - ecc. 16 Progetto Software @ dmi.unict.it malus@freaknet.org

  17. Software Design - stile di architettura: uno stile di architettura è un set di regole, nonchè limitazioni, da seguire affinchè il software rientri in una data famiglia architetturale. Gli stili principali seguono delle linee guida che possono essere così schematizzate: -- struttura generale. -- sistemi distribuiti. -- sistemi interattivi. -- sistemi adattabili. -- altri. 17 Progetto Software @ dmi.unict.it malus@freaknet.org

  18. Software Design - progetto dei modelli: il modello è una soluzione veloce ad un semplice problema relativo ad un contesto. i principali tipi di modelli sono: -- modello creativo. -- modello strutturale. -- modello comportamentale. 18 Progetto Software @ dmi.unict.it malus@freaknet.org

  19. Software Design - famiglie di programmi e strutture: le famiglie di strutture sono molto importanti per il riutilizzo del software. Basta identificare le similitudini tra il software in questione ed una data famiglia di strutture. 19 Progetto Software @ dmi.unict.it malus@freaknet.org

  20. Software Design - OO programming: La programmazione orientata agli oggetti svolge un ruolo fondamentale nella progettazione strutturale del software. Inoltre grazie ad essa e' piu' semplice inserire estenzioni (plugins) nel software. 20 Progetto Software @ dmi.unict.it malus@freaknet.org

  21. 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à. 21 Progetto Software @ dmi.unict.it malus@freaknet.org

  22. 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. 22 Progetto Software @ dmi.unict.it malus@freaknet.org

  23. Software Design - misurazioni: servono a valutare ma soprattutto a quantificare vari aspetti del software. le misurazioni possono essere di due tipi... -- function oriented: effettua una scomposizione della struttura funzionale e i componenti vengono rappresentati tramite un diagramma gerarchico. -- object oriented: viene fatta una scomposizione al livello delle classi e viene rappresentata una gererchia delle stesse. 23 Progetto Software @ dmi.unict.it malus@freaknet.org

  24. Software Design Notazioni per il Software Design. Esistono molti linguaggi, sia testuali che grafici, dediti alla rappresentazione dei prodotti del Software Design. Si dividono in due grandi gruppi - static view. Per la descrizione strutturale, spesso grafici puntano spesso alla comprensione delle interconnessioni tra i componenti. - dynamic view. Per la descrizione comportamentale, spesso testuali. 24 Progetto Software @ dmi.unict.it malus@freaknet.org

  25. 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 una componente 25 Progetto Software @ dmi.unict.it malus@freaknet.org

  26. Software Design -- deployment diagrams: rappresentano l'ambiente fisico in cui il software deve girare. -- entity-relationship diagrams: rappresentano un modello concettuale dell'immagazzinamento dei dati. -- interface description languages (IDLs): simili a linguaggi di programmazione definiscono le interfacce dei componenti software. 26 Progetto Software @ dmi.unict.it malus@freaknet.org

  27. Software Design -- jackson structure diagrams: descrivono i meccanismi delle strutture. -- structure charts: tabelle che schematizzano le chiamate dei componenti. 27 Progetto Software @ dmi.unict.it malus@freaknet.org

  28. 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 modo in cui essi scambiano i messaggi. -- data flow diagrams: mostrano il flusso dei dati tra i processi. 28 Progetto Software @ dmi.unict.it malus@freaknet.org

  29. 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 e soprattutto la cronologia degli scambi dei messaggi. -- state transition and state charts diagrams: mostrano il controllo di flusso al variare dello stato della macchina. 29 Progetto Software @ dmi.unict.it malus@freaknet.org

  30. Software Design -- formal specification languages: linguaggi testuali che in maniera rigorosa ma astratta descrivono passo per passo lo stato del software. -- pseudo-code and program design languages (PDLs): simili a linguaggi di programmazione strutturata servono per dare una prima forma a procedure e metodi a livello detailed design. 30 Progetto Software @ dmi.unict.it malus@freaknet.org

  31. Software Design Strategie e metodi del Software Design Nello sviluppo del software si possono adottare strategie e metodi. Le strategie sono quasi una guida mentre i metodi scendono di più nello specifico. I metodi inoltre provvedono alla scelta della notazione e a fornire delle linee guida per la progettazione. Elenchiamo alcune strategie e metodi... 31 Progetto Software @ dmi.unict.it malus@freaknet.org

  32. Software Design - strategie generali: la guerra si combatte tra top-down e bottom-up. Le linee generali includono l'astrazione e l'incapsulamento, l'uso di modelli e modelli di linguaggio 32 Progetto Software @ dmi.unict.it malus@freaknet.org

  33. Software Design - progettazione orientata alle funzioni: è il metodo classico, si individua la funzione principale e poi con strategia top-down si prosegue. 33 Progetto Software @ dmi.unict.it malus@freaknet.org

  34. Software Design - metodo orientato agli oggetti: molti metodi di Software Designing sono basati sulla OO Programming. Si deve soprattutto sfruttare la potenza dell'astrazione permessa dai moderni linguaggi di alto livello. 34 Progetto Software @ dmi.unict.it malus@freaknet.org

  35. Software Design - design basato su una struttura dati: si parte da un processo che produce e/o modifica dati e poi si costruisce il software attorno. 35 Progetto Software @ dmi.unict.it malus@freaknet.org

  36. Software Design - design basato sui componenti: si sviluppano parallelamente le componenti per poi assemblarle. - altri... 36 Progetto Software @ dmi.unict.it malus@freaknet.org

  37. Software Design Spero di essere stato chiaro e grazie per l'attenzione :-)))) 37 Progetto Software @ dmi.unict.it malus@freaknet.org

  38. Software Design Se volete scaricare queste slides sono disponibili al sito http://www.maluslab.net/ per domande non fatte in questa sede malus@freaknet.org 38 Progetto Software @ dmi.unict.it malus@freaknet.org

More Related