Vediamo da vicino le fasi di anilisi e di progettazione, precisando che in seguito, per comodità di esposizione, non puntualizzeremo se stiamo parlando di classi o di oggetti di quelle classi.
Definizioni:
L'OOA (Object-Oriented analysis) è la fase del ciclo di vita del software che si occupa di descrivere la realtà che stiamo considerando. Consiste nel produrre un modello concettuale di tale realtà, utilizzando gli oggetti e le classi. (concettuale in questo case vuol dire astratto. In sostansa, nella fase di OOA si fornisce una rappresentazione del problema da analizzare).

L'OOD (object Oriented Design) è la fase del ciclo di vita del software che si occupa della ricerca di una soluzione. Trasforma la rappresentazione del problema, in una rappresentazione della soluzione al problema, definendo l'architettura software del sistema.
Nella fase di design si dovranno trovare le soluzioni per l'implementazione dei requisiti di persistenza, interfacciamento, prestazioni, dislocazione fisica delle parti del sistema. Le classi potranno essere raggruppate in moduli, detti package.

L'OOP (Object Oriented Programming) è la fase di codifica, che porta a una vera applicazione a oggetti. Essa fa corrispondere agli oggetti del modello di progettazione oggetti software scritti in un vero e proprio linguaggio di programmazione.
Si dice infatti che la fade di OOP, implementa i modelli derivati dalle fasi precedenti, ottenendo un codice a oggetti.