• Non ci sono risultati.

Ingegneria del Software 12. Progettazione

N/A
N/A
Protected

Academic year: 2022

Condividi "Ingegneria del Software 12. Progettazione"

Copied!
16
0
0

Testo completo

(1)

Ingegneria del Software 12. Progettazione

Dipartimento di Informatica Università di Pisa

A.A. 2014/15

(2)

progettare prima di produrre

• Tipico della produzione industriale

• “s ul tavolo da disegno si usa la gomma, sul cantiere la

mazza” [Frank Lloyd Wright]

La frase di Wright si applica al software, nonostante la apparente omogeneità dei materiali tra progetto e

realizzazione: il codice è più

“duro” dei modelli!

• Alcune motivazioni

Complessità del prodotto

Organizzazione e riduzione delle responsabilità

Controllo preventivo della

qualità

(3)

obiettivi della progettazione: produttore

Trasformare la complessità globale del sistema

Ridurre le difficoltà di comprensione e realizzazione

Organizzare il sistema in

sottosistemi di minore complessità

Identificare i sottosistemi riusabili

Soddisfare i requisiti di qualità del produttore

Il modello progettuale deve essere una guida leggibile e comprensibile per chi genera il codice, per chi lo verifica e per chi dovrà mantenerlo e fornire supporto agli utenti, una volta che il software sarà operativo

Il modello progettuale deve fornire un’immagine completa del software, che copra il dominio dei dati, delle funzioni e del comportamento da un punto di vista realizzativo

(4)

altri obiettivi

• Produrre la

documentazione necessaria

Per far procedere la codifica senza ulteriori informazioni

Per tracciare i requisiti nelle unità

Per definire le configurazioni del sistema

• Associare componenti fisici alle unità

Per organizzare il lavoro di codifica

• Definire gli strumenti per le prove delle unità

Casi di prova e componenti fittizi per le prove e

l’integrazione

(5)

metodo

• Progettaz. di alto livello

• Progettaz. di dettaglio

• Top-down

decomposizione di problemi

• Bottom-up

composizione di soluzioni

• Sandwich

approccio “naturale”

S

1

S

2.1

S

2.2

S

n.1

S

n.2

... S

n.m

(6)

progettazione di alto livello (architetturale)

• L’architettura di un sistema software (in breve architettura software) è la struttura del sistema,

costituita dalle parti del sistema, dalle relazioni tra le parti e dalle loro proprietà visibili


[check dispensa]

(7)

progettazione di dettaglio

Definizione di unità di

realizzazione (sottosistema terminale)

Un sistema che non deve essere ulteriormente trasformato

Quando un’altra trasformazione avrebbe un costo ingiustificato o porterebbe a un’inutile esposizione di dettagli

Un carico di lavoro assegnabile a una sola persona

Un sottosistema definito (ad esempio, un componente)

Un insieme di funzionalità affini (ad esempio, un package)

Descrizione delle unità di realizzazione

Da zero o per specializzazione di sistemi esistenti

Definizione delle caratteristiche

“interessanti”

stato dei/interazione tra sistemi

(8)

principi di progettazione

• Astrazione

dati

controllo

corsi precedenti

• Information Hiding

controllo delle interfacce

• Raffinamento

elaborazione dei dettagli di ogni astrazione

• Modularità

compartimentalizzazione dati e funzioni

Coesione e accoppiamento

(9)

moduli come astrazione sul controllo (librerie)

Nei linguaggi di programmazione tradizionali per modulo si intende una prima forma di astrazione effettuata sul flusso di controllo e il concetto di modulo è identificato con il concetto di subroutine o procedura

Una procedura può effettivamente nascondere una scelta di progetto riguardante l'algoritmo utilizzato. Ad esempio, per

l'ordinamento di un vettore di elementi interi si hanno più algoritmi diversi per tale compito: bubblesort, shellsort, quicksort, etc.

Le procedure in quanto astrazioni sul controllo sono utilizzate

come parti di alcune classi di moduli, che prendono il nome di

librerie (ad esempio, librerie di funzioni matematiche e grafiche)

(10)

moduli come astrazione di dato

Un’astrazione di dato (o Struttura Dati Astratta, ADS) è un modo di incapsulare un dato in una rappresentazione tale da regolamentarne l’accesso e la modifica

Interfaccia dell’oggetto (operazioni) stabile anche in presenza di modifiche alla struttura dati

Risultati dell’attivazione di un’operazione su un oggetto dipendenti anche dal valore del dato (stato)

Non puramente funzionali (come le librerie)

(11)

• Componenti come scatole nere

Fornitori e clienti di funzionalità (relazione d’uso)

È nota solo l’interfaccia (dichiarazione dei servizi)

• Sono mantenuti nascosti

Algoritmi usati

Strutture dati interne

• Vantaggi di un’alto IH

Nessuna assunzione sul

funzionamento della componente

Manutenibilità, riusabilità

information hiding

(12)

• Coesione: proprietà di un (sotto)sistema

grado in cui un sistema realizza “uno e un solo concetto”

funzionalità “vicine” devono stare nello stesso sistema

vicinanza per tipo, algoritmi, dati in ingresso e in uscita

• Accoppiamento: proprietà di un insieme di (sotto)sistemi

grado in cui un sistema è “legato” ad altri sistemi

modularità

(13)

• Si hanno vantaggi con (sotto)sistemi che esibiscono

un alto grado di coesione

un basso accoppiamento

• Maggior riuso e migliore mantenibilità

• Ridotta interazione fra (sotto)sistemi

• Miglior comprensione del sistema

modularità

(14)

• Quale è il giusto numero di moduli?

modularità: compromessi

ottimo costo del

software

numero di moduli

costo di

integrazione

costo unitario di sviluppo

(15)

• Reingegnerizzazione

In seguito a successivi e massicci interventi di manutenzione

In seguito a un cambio di piattaforma o di tecnologia

• Riprogettazione

Quando lo sviluppo parte dalla progettazione

Quando i requisiti sono definiti e sostanzialmente stabili

In caso di interventi, anche radicali, sia sulla struttura del sistema sia sul codice

Sempre, per reing. e riuso

dall’uso alla (ri)progettazione

(16)

• Refactoring è “il

processo di cambiare un sistema software senza alterarne il comportamento esterno ma

migliorandone la struttura

interna” [Fowler]

• Si cercano

ridondanze

elementi inutilizzati

algoritmi inefficienti

strutture dati inappropriate o

“deboli”

refactoring (ristrutturazione)

Riferimenti

Documenti correlati

Multi Misura Con MatrixGold è possibile avere più misure dello stesso anello in pochi second anche di vostri progetti già realizzati in STL.. Report tecnico Soluzione in un clic

inoltre produce un’eccezione (ErroreSovrapposizioneE) se tale volo si sovrappone ad un altro volo per lo stesso aereo (detti v1 e v2 due voli per lo stesso aereo, non si

 L'Ingegneria di Sistema ha come oggetto tutti gli aspetti dello sviluppo di un sistema basato su computers, inclusi gli aspetti hardware, software e di processo.  L'Ingegneria

Supponiamo che per fare questo sia possibile ridurre la durata di un solo task; si supponga inoltre che il task, una volta “accorciato”, non possa avere durata nulla. Si richiede

 L'Ingegneria di Sistema ha come oggetto tutti gli aspetti dello sviluppo di un sistema basato su computers, inclusi gli aspetti hardware, software e di processo.  L'Ingegneria

7) Si consideri un sistema di frenaggio ABS di una automobile. Per migliorare la sicurezza del dispositivo, i progettisti hanno deciso di includere tre centraline hardware di

Linux può condividere file e stampanti in una rete Novell sia come client che come server, inoltre sono supportate le funzionalità di router e bridge IPX ed è

ƒ Il campo “Nome del gruppo” deve contenere la WikiWord della pagina che identifica il nome del gruppo (deve cioè essere un link alla pagina del gruppo). ƒ Il campo “Proposta