Quando si progetta e si scrive la documentazione per un progetto, un'architettura deve essere chiaramente definita: quali sono i moduli di alto livello del sistema, quali sono le loro responsabilità, come comunicano tra loro, quali protocolli vengono utilizzati ecc. Ma in questo elenco dovrebbero essere specificate le tecnologie concrete o si tratta in realtà di dettagli di implementazione e devono essere specificati a un livello inferiore?
Ad esempio, si consideri un'applicazione distribuita che ha due moduli che comunicano in modo asincrono tramite il protocollo AMQP, mediato da un broker di messaggi. Il fatto che questi moduli utilizzino la libreria Spring AMQP per l'invio e la ricezione di messaggi è un fatto che deve essere specificato nell'architettura o è un dettaglio dettagliato della progettazione / implementazione?