Architekturę oprogramowania tworzy się po zebraniu wymagań na system. W praktyce przeważnie jest tak, że dane oprogramowanie w celu spełnienia wymagań może być zbudowane na kilka sposobów - zatem istnieje kilka alternatywnych architektur (ang. candidate architecture) danego rozwiązania. To na jaką wersję się decydujemy zależy od wielu czynników. Do najważniejszych z nich zalicza się:
- otoczenie biznesowe (profil działalności, strategia firmy, w której wytwarzane będzie dane rozwiązanie, czas potrzebny na implementację danego rozwiązania, koszt rozwiązania);
- dotychczasowe doświadczenie i wiedzę architekta;
- zespół projektowy, który będzie implementował dane rozwiązanie (kompetencje zespołu).