Design GRASP Flashcards
Cosa significa l’acronimo RDD?
Responsibility-Driven Development
Cioè
Progettazione Guidata dalle Responsabilità
Cos’è RDD?
Progettazione a oggetti basata su:
- Responsabilità
gli oggetti hanno responsabilità - Ruoli
la capacità che un oggetto ha di partecipare ad una relazione con un altro oggetto - Collaborazioni
gli oggetti collaborano per raggiungere un obiettivo
Come può essere la granularità delle responsabilità?
- Fine
Quando si tratta di aggiungere un metodo a una classe - Grossa
Quando si tratta di progettare numerose classi
Che tipi di responsabilità esistono?
- Responsabilità di fare
- Responsabilità di conoscere
Quando si parla di “Responsabilità di fare” di che si tratta?
- Fare qualcosa esso stesso, come eseguire un calcolo
- Dare inizio a un’azione in altri oggetti
- Controllare e coordinare le attività di altri oggetti
Quando si parla di “Responsabilità di conoscere” di che si tratta?
- Conoscere i propri dati privati incapsulati
- Conoscere gli oggetti correlati
- Conoscere cose che può derivare o calcolare
Quando si assegnano le responsabilità?
Durante la modellazione e la codifica
Cosa significa l’acronimo GRASP?
General Responsibility Assignment Software Patterns
Cos’è GRASP?
I pattern GRASP danno un nome e descrivono i principi base per la progettazione di oggetti e l’assegnazione di responsabilità
Cos’è il pattern Information Expert?
Il pattern Information Expert fornisce i modelli generali associati all’assegnazione delle responsabilità agli oggetti
Cosa si intende per responsabilità?
Si intende una astrazione di ciò che fa un oggetto
Come intende l’UML una responsabilità?
Un contratto o un obbligo di un classificatore
Come si assegnano le responsabilità?
- Si identificano le responsabilità e si considerano una alla volta
- Ci si chiede a quale oggetto va assegnata
- Ci si chiede come fa l’oggetto a soddisfare la responsabilità, se da solo o collaborando
Quali sono i principali pattern GRASP?
- Creator
- Information Expert
- Low Coupling
- High Cohesion
- Controller
Quali altri pattern GRASP ci sono?
- Polymorphism
- Pure Fabrication
- Indirection
- Protected Variations
Cos’è un pattern?
E’ una coppia problema/soluzione ben conosciuta e con un nome
Con cosa si definisce un pattern?
- Nome
- Problema
- Soluzione
Quale problema risolve il pattern creator?
Chi crea un oggetto A
Per il pattern creator, quante e quali condizioni devono essere vere per fare sì che un oggetto B crei un oggetto A?
- B contiene oggetti di tipo A
- B registra A
- B utilizza strettamente A
- B possiede i dati per l’inizializzazione di A (quindi B è un information expert)
Cosa si chiede il pattern Information Expert?
Qual è un principio di base per assegnare responsabilità agli oggetti?
Che risposta si da il pattern Information Expert?
Assegno una responsabilità alla classe che possiede le informazioni necessarie per soddisfarla
Cosa non deve comportare l’assegnamento di responsabilità?
L’aggiunta di nuove dipendenze tra classi e quindi un incremento dell’accoppiamento
Cosa si chiede il pattern Low Coupling?
Come ridurre l’impatto dei cambiamenti?
Come si risponde il pattern Low Coupling?
Assegno le responsabilità in modo tale che l’accoppiamento rimanga basso, uso questo criterio quando devo valutare delle alternative
Quale problema risolve il pattern Controller?
Qual è il primo oggetto oltre allo strato UI a ricevere e coordinare una operazione di sistema?
Come risolve il problema il pattern Controller?
Assegna le responsabilità a un sistema che
o rappresenta il sistema complessivo oppure rappresenta lo scenario di un caso d’uso
Usando il controller, come vanno implementate le funzioni di sistema?
Utilizzando altri oggetti SW che verranno “chiamati” dal controller, così da aumentare la coesione
Cos’è la coesione?
Una misura di quanto sono correlate le operazioni di un elemento SW da un punto di vista funzionale
Cosa si chiede il pattern High Cohesion?
Come mantenere gli oggetti focalizzati, comprensibili e gestibili
Come risolve il problema il pattern High Cohesion?
Assegna le responsabilità in modo tale che la coesione rimanga alta