Saya pikir kita harus menggunakan aturan berikut untuk menentukan kapan kita berbicara tentang Desain vs Arsitektur: Jika elemen-elemen gambar perangkat lunak yang Anda buat dapat dipetakan satu ke satu ke konstruksi sintaksis bahasa pemrograman, maka Desain, jika tidak Arsitektur.
Jadi, misalnya, jika Anda melihat diagram kelas atau diagram urutan, Anda dapat memetakan kelas dan hubungannya dengan bahasa Pemrograman Berorientasi Objek menggunakan konstruksi sintaksis Kelas. Ini jelas Desain. Selain itu, ini mungkin membawa ke tabel bahwa diskusi ini memiliki hubungan dengan bahasa pemrograman yang akan Anda gunakan untuk menerapkan sistem perangkat lunak. Jika Anda menggunakan Java, contoh sebelumnya berlaku, karena Java adalah Bahasa Pemrograman Berorientasi Objek. Jika Anda datang dengan diagram yang menunjukkan paket dan dependensinya, itu juga Desain. Anda dapat memetakan elemen (paket dalam kasus ini) ke konstruksi sintaksis Java.
Sekarang, misalkan aplikasi Java Anda terbagi dalam beberapa modul, dan setiap modul adalah sekumpulan paket (direpresentasikan sebagai unit penyebaran file jar), dan Anda akan diberikan diagram yang berisi modul dan dependensinya, yaitu Arsitektur. Tidak ada cara di Jawa (setidaknya tidak sampai Java 7) untuk memetakan modul (satu set paket) ke konstruksi sintaksis. Anda mungkin juga memperhatikan bahwa diagram ini mewakili langkah yang lebih tinggi dalam tingkat abstraksi model perangkat lunak Anda. Diagram apa pun di atas (berbutir kasar daripada) diagram paket, mewakili tampilan Arsitektur saat berkembang dalam bahasa pemrograman Java. Di sisi lain, jika Anda mengembangkan di Modula-2, maka, diagram modul mewakili Desain.
(Sebuah fragmen dari http://www.copypasteisforword.com/notes/software-architecture-vs-software-design )