-
Assegnare un nome all'interfaccia per riflettere il ruolo che ricopre nel sistema.
-
Il nome deve essere breve, di 1-2 parole.
-
Il nome non deve comprendere la parola "interface"; è implicito nel tipo di elemento di modello (ad esempio
interface)
-
La descrizione deve comunicare le responsabilità dell'interfaccia.
-
La descrizione deve contenere alcune frasi, fino a creare un breve paragrafo.
-
La descrizione non deve semplicemente ribadire il nome dell'interfaccia, ma deve anche far emergere il ruolo
rivestito dall'interfaccia del sistema.
-
I nomi delle operazioni devono riflettere il risultato dell'operazione.
-
Quando un'operazione imposta oppure ottiene informazioni, è superfluo specificare set oppure
get nel nome dell'operazione. Assegnare all'operazione lo stesso nome della proprietà dell'elemento del
modello che viene impostato o richiamato. Un'operazione così chiamata, senza parametri, richiama la proprietà;
un'operazione così chiamata con un parametro imposta la proprietà.
Esempio
name() restituisce il nome dell'oggetto; name(aString) imposta il nome dell'oggetto su aString.
-
La descrizione dell'operazione deve descrivere cosa fa l'operazione, compreso qualsiasi algoritmo di chiavi,
e quale valore viene restituito.
-
Assegnare un nome di parametri dell'operazione per indicare quali informazioni vengono passate all'operazione.
-
Identificare il tipo del parametro.
Il comportamento definito dall'interfaccia viene specificato come un insieme di operazioni. Potrebbe essere necessario
fornire ulteriori informazioni:
-
Il modo in cui vengono utilizzate le operazioni, e l'ordine in cui vengono effettuate (illustrate dai diagrammi di
sequenza di esempio).
-
Le operazioni, che possono essere osservate dall'esterno, dichiarano un elemento di modello che realizza che
l'interfaccia potrebbe essere inclusa (illustrato da una macchina di stato, consultare Linea guida: Diagramma di stato).
-
Piani e script di test che verificano il comportamento di tutti gli elementi di modello che realizza l'interfaccia.
Per raggruppare e gestire queste informazioni, occorre creare n pacchetto per contenere l'interfaccia e tutti i
prodotti di lavoro correlati.
Ciascuna interfaccia rappresenta un "punto di unione" nel sistema; un posto in cui il sistema può essere "messo da
parte", ed essere ricreato e riprogettato. Le interfacce rappresentano la separazione della specifica dalla
progettazione o implementazione. Interfacce strutturate in modo corretto:
-
sono semplici ma complete, fornendo tutte le operazioni necessarie, sufficienti a specificare un singolo servizio
-
sono comprensibili, fornendo sufficienti informazioni per utilizzare e realizzare l'interfacce senza dover
esaminare un utilizzo o un'implementazione esistente
-
sono accessibili, fornendo informazioni che conducono l'utente alle proprietà chiave senza essere sopraffatti dai
dettagli delle operazioni
Quando si disegna un'interfaccia:
-
utilizzare la notazione "lollipop" ogni qualvolta occorre specificare semplicemente la presenza di un punto di
unione nel sistema. Molto spesso ciò è necessario per i sottosistemi ma non per le classi.
-
Utilizzare la notazione di "classe" estesa quando occorre presentare i dettagli del servizio stesso. Molto spesso
ciò è necessario per specificare i servizi offerti da un pacchetto o un sottosistema.
|