Hampir semua sistem berbasis komputer yang berskala besar merupakan sistem terdistribusi (sistem tersebar). Sistem terdistribusi adalah sistem dimana pemrosesan informasi didistribusikan pada beberapa komputer dan tidak terbatas hanya pada satu mesin saja. Jelas rekayasa terdistribusi memiliki banyak kesamaan dengan rekayasa perangkat lunak, tapi isu-isu khusus yang harus diperhitungkan ketika merancang tipe sistem ini. Engineer yang melakukan rekayasa perangkat lunak haruslah menyadari pentingnya memperhitungkan segala sesuatunya, sebab sistem terdistribusi ini banyak digunakan. Belum lama ini kebanyakan sistem besar masih menggunakan sistem sentral yang berjalan pada satu mainframe dengan terminal-terminal yang terhubung padanya. Sistem tersebut banyak kelemahannya dimana terminal-terminal hanya sedikit kemampuan pemrosesannya dan semua tergantung pada komputer sentral.
Sampai saat ini sistem utama masih terdiri atas:
- Sistem Personal yang tidak terdistribusi dan dirancang untuk satu workstation saja.
- Sistem Embedded yang berjalan pada satu processor atau pada kelompok prosesor yang terintegrasi.
- Sistem Terdistribusi dimana perangkat lunak sistem berjalan pada kelompok prosesor yang bekerja sama dan terintegrasi secara longgar, dengan diubungkan oleh jaringan. Contoh sistem ATM bank, sistem groupware, dll.
Menurut Coulouris et.al (1994) mengidentifikasi 6 karakteristik yang penting untuk sistem terdistribusi yaitu:
- Pemakaian bersama sumber daya
- Keterbukaan. Keterbukaan siste adalah terbuka untuk banyak sistem operasi dan banyak vendor.
- Konkurensi. Sistem terdistribusi memungkinkan beberapa proses dapat beroperasi pada saat yang sama pada berbagai komputer jaringan. Proses ini dapat (tapi tidak perlu) berkomunikasi satu dengan lainnya pada saat operasi normalnya.
- Skalabilitas. Sistem terdistribusi dapat diskala dengan mengupgrade atau menambahkan sumber daya baru untuk memenuhi kebutuhan sistem.
- Toleransi kesalahan. Sistem terdistribusi bersifat toleran terhadap beberapa kegagalan perangkat keras dan lunak dan layanan terdegradasi dapat diberikan ketika terjadi kegagalan.
- Transparansi. Sistem terdistribusi adalah bersifat terbuka bagi user.
Selain hal-hal tersebut ada juga kelemaan dari sistem terdistribusi, yaitu:
- Kompleksitas. Sistem terdistribusi bersifat lebih kompleks dari pada sistem sentral.
- Keamanan. Sistem terdistribusi dapat diakses dari beberapa komputer dan jalur jaringan mudah disadap, sehingga keamanan jaringan sistem terdistribusi menjadi masalah yang besar.
- Kemampuan untuk dikendalikan. Komputer yang terdapat di sistem terdistribusi bisa terdiri dari berbagai tipe yang berbeda dan mungkin dijalankan pada sistem operasi yang berbeda pula. Kesalahan pada satu mesin bisa berakibat pada yang lainnya, sehingga harus banyak usaha untuk mengendalikannya.
- Tidak dapat diramalkan. Sistem terdistribusi tidak dapat diramalkan tanggapannya. Tanggapan tergantung beban total sistem, pengorganisasian, dan beban jaringannya.
Ada 2 tipe generic arsitektur sistem terdistribusi yaitu:
- Arsitektur Client Server. Sistem dianggap sebagai satu set layanan yang disediakan untuk klien. Server dan client diperlakukan berbeda.
- Arsitektur Objek Terdistribusi. Tidak ada perbedaan antara server dan client, sistem dapat sebagai satu set object yang berinteraksi yang ikatannya tidak relevan. Tidak ada perbedaan antara penyedia layanan dan user layanan.