
Arhitectura unui sistem informatic este influentata in principal de cerintele functionale – serviciile oferite de un sistem – si consideratiile privind calitatea (scalabilitatea sau performanta). Dincolo de aceste cerinte, arhitecturile sunt influentate de constrangeri tehnice cum ar fi sistemul software utilizat (de ex. sistemul de operare), middleware, sistemele de mostenire care vor fi integrate, standardele utilizate, regulile de dezvoltare (de ex. ghiduri de scriere a codului) sau aspectele de distribuire (de exemplu distribuirea in diverse locatii a unei companii).
Deoarece sistemele software sunt in permanenta schimbare, arhitecturile sunt de obicei dezvoltate intr-o maniera iterativa, ceea ce nu garanteaza o arhitectura solida. O abordare iterativa nu este suficienta pentru rezolvarea problemelor specifice de proiectare precum integrarea sistemelor de mostenire in dezvoltarea unei arhitecturi (sabloanele de proiectare sunt foarte eficiente in sprijinirea deciziilor de proiectare), scrie
Ionel Timisan pe
blogul sau.