Tarkvaraprojekti esijalgne kavandamine
isegi kui selleks on vaja mõnes alamsüsteemis lisakoodi luua). Suuremamahuliste projektide
kirjeldamiseks peaks kasutama UML-i (Unified Modeling Language). Juba arhitektuuri etapil
peaks püüdma määratleda need tarkvaraosad, kus kõige tõenäolisemalt võib edaspidi osutuda
vajalikuks muudatuste sisseviimine (põhjustatuna näiteks muudatustest arendatava tarkvaraga
seotud tarkvaras), aga samuti tarkvarakomponendid, mis ostetakse/tellitakse väljastpoolt, mis
võetakse kasutusele varemarendatud tarkvarast ja mis arendatakse uuena. Viimati nimetatud
komponentide oskusliku kombineerimise tulemusena võib tarkvara arendamise aega ja selleks
kuluvaid ressursse oluliselt vähendada.
Arhitektuuri faasis peab käsitlema ka tervet rida tarkvara funktsionaalsusega seotud küsimusi,
nagu näiteks:
· Kas ja millise muu tarkvaraga ning millise protokolliga ja andmetega peab loodav
tarkvara suhtlema,
· Mil määral on kasutajaliides seotud tarkvara muude osadega,