Arsitektur perangkat lunak adalah istilah untuk struktur tingkat tinggi dari sistem perangkat lunak. Ini dapat didefinisikan sebagai kumpulan struktur yang diperlukan untuk alasan tentang sistem perangkat lunak, yang terdiri dari elemen perangkat lunak, hubungan di antara mereka, dan properti dari kedua elemen dan hubungan. Istilah ini juga menunjukkan seperangkat praktik yang digunakan untuk memilih, mendefinisikan, atau merancang arsitektur perangkat lunak.