In qualsiasi ambiente iterativo / agile, l'analisi e la progettazione dell'architettura e del modello di dominio è un processo continuo. Le ipotesi di base sono che all'inizio del progetto hai solo idee di base su cosa dovrebbe fare il software. E che nel tempo, i feedback di utenti, parti interessate e sviluppatori cambieranno (a volte drasticamente) il modo in cui il dominio dovrebbe essere rappresentato. L'idea che il dominio possa essere modellato come prima cosa nel progetto e che questo modello non cambi è irrazionale nel migliore dei casi.
Per raggiungere questo obiettivo, non dovresti concentrarti sulla modellazione del dominio, ma su come apportare modifiche al dominio in modo semplice e indolore. Ad esempio, in uno sviluppo non iterativo, c'è un'idea, quel documento che descrive il modello viene creato per primo (ERD) da cui viene creato il codice che lo implementa. Quindi qualsiasi modifica al modello deve essere eseguita due volte, una volta per il documento e una seconda per il codice. Ciò rende questo cambiamento più costoso da fare. Questo fa parte del Manifesto Agile come "Software di lavoro, una documentazione completa". Fa anche parte del Domain Driven Design, in cui il dominio è modellato non nel documento, ma nel codice.
Tutto questo è un'idea di architettura evolutiva . Che è un'ideologia che l'architettura non viene creata in una volta, ma si evolve nel tempo. E abbracciare questa ideologia consente la creazione di architetture più adatte al loro scopo. Ed è ancora una volta il pensiero agile che abbraccia il cambiamento invece di cercare di prevederlo.