Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Alcuni obiettivi del design possono essere inferiti dai requisiti non-funzionali.
La definizione degli obiettivi del design è il passo finale del system design.
Alcuni obiettivi del design devono essere elicitati dal committente.
2 In fase di identificazione degli obiettivi del design possiamo fare riferimento a cinque gruppi di
criteri progettuali. Citane almeno quattro. sull’occupazione
- Prestazioni, includono i requisiti sui tempi di risposta e di memoria imposti sul
sistema;
- Affidabilità, determinano quanto sforzo deve essere speso per minimizzare gli arresti del sistema
e le relative conseguenze;
- Costo, includono gli oneri finanziari di sviluppo ed amministrazione del sistema, sia per quanto
riguarda la progettazione che la gestione;
- Manutenzione, determinano quanto sia difficile modificare il sistema dopo la sua installazione;
dell’utente dell’utente.
- Criteri finale, indicano qualità che sono desiderabili dal punto di vista
3 Un gruppo di criteri progettuali su cui si basa l'identificazione degli obiettivi del design prende in
considerazione la manutenzione del sistema. Fornisci degli esempi delle caratteristiche del sistema
tipicamente coinvolte.
Quando ci si concentra sulla manutenzione del sistema come criterio progettuale, si fa riferimento a tutte
quelle caratteristiche che facilitano la modifica, l'evoluzione e la correzione del software nel tempo.
Ecco alcune caratteristiche del sistema che supportano la manutenzione efficace:
Modularità
• Il sistema è suddiviso in componenti indipendenti.
• Ogni modulo ha una responsabilità chiara e limitata.
• Modifiche locali non impattano il sistema intero.
Separazione delle responsabilità
• La logica del sistema è separata in livelli o strati funzionali (es. presentazione, logica, dati).
• Facilita aggiornamenti mirati.
Documentazione chiara
• Codice ben commentato, diagrammi aggiornati, specifiche accessibili.
• Aiuta i manutentori a comprendere rapidamente il sistema.
Coesione alta e accoppiamento basso
• I componenti fanno bene una sola cosa (alta coesione).
• Sono poco dipendenti tra loro (basso accoppiamento), facilitando modifiche isolate.
Estendibilità
• Il sistema è progettato per accogliere nuove funzionalità senza stravolgimenti.
• Es: uso di interfacce, design a plugin, factory pattern.
Riusabilità
• Parti del sistema possono essere riutilizzate in altri progetti o contesti.
• Riduce i tempi di sviluppo futuri.
Testabilità
• Il sistema supporta test automatici e modulari (unit test, integration test).
• Ogni modifica può essere verificata rapidamente e con sicurezza.
In sintesi
Le caratteristiche che favoriscono la manutenibilità sono:
modularità, bassa dipendenza, buona documentazione, coesione, testabilità,
estendibilità e riusabilità.
Queste proprietà rendono il sistema più facile da correggere, aggiornare ed evolvere nel tempo.
4 Un gruppo di criteri progettuali su cui si basa l'identificazione degli obiettivi del design prende in
considerazione i costi associati al sistema. Fornisci degli esempi delle tipologie di costo tipicamente
coinvolte.
Costo di sviluppo
• Risorse necessarie per progettare, implementare e testare il sistema.
• Dipende da:
• complessità del software,
• competenze richieste,
• strumenti o tecnologie adottate.
Costo di manutenzione
• Spese legate a:
• correzione di bug,
• aggiornamenti,
• adattamento a nuovi requisiti.
Costo di esercizio (operativo)
• Riguarda le risorse necessarie per far funzionare il sistema:
• hardware, server, licenze software,
• consumo energetico, banda, spazio su disco.
Costo di formazione
• Riguarda il tempo e le risorse per formare:
• gli sviluppatori (su framework o linguaggi specifici),
• gli utenti finali (su nuove interfacce o funzionalità).
Costo di migrazione o integrazione
• Se il sistema deve essere integrato con software esistente o sostituire un sistema legacy,
ci sono:
• costi di adattamento,
• conversione dei dati,
• testing di compatibilità.
Costo di licenza e supporto
• Costi ricorrenti per:
• licenze di software di terze parti,
• contratti di assistenza o supporto tecnico.
In sintesi
Le tipologie di costo tipicamente considerate negli obiettivi del design includono:
• Sviluppo
• Manutenzione
• Esercizio
• Formazione
• Integrazione/Migrazione
• Licenze e supporto
La progettazione architetturale consapevole può aiutare a ottimizzare o contenere molte di queste voci.
5 Un gruppo di criteri progettuali su cui si basa l'identificazione degli obiettivi del design prende in
considerazione la dependability (affidabilità) del sistema. Fornisci degli esempi delle caratteristiche del
sistema tipicamente coinvolte.
La dependability (affidabilità) è un criterio progettuale fondamentale nei sistemi critici o mission-critical, e
rappresenta la capacità del sistema di fornire un servizio affidabile e continuo anche in presenza di
guasti o condizioni impreviste.
Ecco le principali caratteristiche del sistema che contribuiscono alla dependability:
Affidabilità (Reliability)
• Capacità del sistema di funzionare correttamente per un certo periodo di tempo senza
guasti.
• Es: un sistema bancario deve eseguire le transazioni senza errori per ore/giorni.
Disponibilità (Availability)
• Probabilità che il sistema sia operativo e accessibile quando serve.
• Es: un sito e-commerce deve essere online 24/7, con tempi di inattività minimi.
Tolleranza ai guasti (Fault Tolerance)
• Capacità del sistema di continuare a funzionare anche in presenza di guasti parziali.
• Es: un server ridondante che prende il posto di quello guasto.
Manutenibilità (Maintainability)
• Facilità con cui il sistema può essere riparato, aggiornato o migliorato senza introdurre
nuovi errori.
• →
Maggiore manutenibilità minore rischio di errore durante le modifiche.
Sicurezza (Safety)
• Capacità del sistema di evitare danni a persone, ambiente o risorse anche in caso di
errore.
• Tipica nei sistemi industriali, automotive, medicali.
Integrità (Integrity)
• Capacità del sistema di proteggere i dati da modifiche non autorizzate o involontarie.
• Include meccanismi di validazione, checksum, controllo accessi.
Recuperabilità (Recoverability)
• un’interruzione.
Capacità di ripristinare il sistema o i dati dopo un guasto o
• Es: backup automatici, log di ripristino, rollback.
In sintesi
Le caratteristiche tipicamente coinvolte nella dependability includono:
• Affidabilità
• Disponibilità
• Tolleranza ai guasti
• Manutenibilità
• Sicurezza (safety)
• Integrità dei dati
• Recuperabilità
Questi aspetti sono cruciali in contesti come:
• sanità, aviazione, finanza, automazione industriale, telecomunicazioni.
6 Un gruppo di criteri progettuali su cui si basa l'identificazione degli obiettivi del design prende in
considerazione le prestazioni del sistema. Fornisci degli esempi delle caratteristiche del sistema
tipicamente coinvolte.
Le prestazioni sono uno dei criteri progettuali più importanti nella definizione degli obiettivi del design,
soprattutto nei sistemi in cui efficienza, velocità e reattività sono fondamentali.
Ecco le principali caratteristiche che influenzano o descrivono le prestazioni di un sistema:
Tempo di risposta (Response time)
• dell’utente
Intervallo di tempo tra la richiesta e la risposta del sistema.
• Es: un'app web dovrebbe rispondere entro 200 ms per una buona UX.
Throughput (Tasso di elaborazione)
• Quantità di operazioni, richieste o dati elaborati dal sistema in un dato intervallo di tempo.
• Es: un server API che gestisce 10.000 richieste al secondo.
Scalabilità
• all’aumentare
Capacità del sistema di mantenere prestazioni accettabili del carico (es.
più utenti, più dati).
• Può essere scalabilità verticale (hardware più potente) o orizzontale (più istanze).
Efficienza dell'uso delle risorse
• Quanto bene il sistema utilizza CPU, memoria, banda, disco.
• l’utilizzo
Un sistema performante deve evitare sprechi e ottimizzare delle risorse
disponibili.
Tempo di avvio (Startup time)
• l’avvio.
Tempo richiesto affinché il sistema sia operativo dopo
• Importante per sistemi embedded o real-time.
Reattività (Responsiveness)
• Capacità del sistema di rispondere velocemente agli input, anche sotto carico.
• Cruciale nelle interfacce utente e nei sistemi interattivi.
Determinismo
• In sistemi real-time: capacità del sistema di garantire tempi di risposta entro limiti
predefiniti, anche in condizioni critiche.
In sintesi
Le caratteristiche del sistema che rientrano nei criteri di prestazione includono:
• Tempo di risposta
• Throughput
• Scalabilità
• Efficienza delle risorse
• Tempo di avvio
• Reattività
• Determinismo (in sistemi real-time)
Queste caratteristiche guidano le scelte architetturali e tecnologiche, specialmente in:
• sistemi web ad alto traffico,
• sistemi embedded,
• applicazioni in tempo reale.
7 Un gruppo di criteri progettuali su cui si basa l'identificazione degli obiettivi del design prende in
considerazione i criteri dell'utente finale. Fornisci degli esempi delle caratteristiche del sistema
tipicamente coinvolte. dell’utente
Quando si considerano i criteri finale nella definizione degli obiettivi del design, ci si concentra
su aspetti che rendono il sistema facile da usare, accessibile, efficace e soddisfacente per chi lo utilizza.
Ecco le principali caratteristiche coinvolte:
Usabilità
• Quanto il sistema è facile da imparare, usare e ricordare.
• dell’interfaccia,
Include chiarezza coerenza, semplicità delle operazioni.
• un’app un’azione
Es: che consente di completare in pochi clic.
Accessibilità
• Capacità del sistema di essere usato anche da persone con disabilità (visive, uditive,
motorie).
• Es: compatibilità con screen reader, supporto a tastiera, colori ad alto contrasto.
Internazionalizzazione e localizzazione
&bu