Artikel yang berjudul "Software Architecture in Practice: Challenges and Opportunities" oleh Wan, Zhiyuan; Zhang, Yun; Xia, Xin; Jiang, Yi; dan Lo, David merupakan sebuah kontribusi berharga dalam pemahaman tentang praktik arsitektur perangkat lunak. Penulis telah melakukan wawancara mendalam dengan 32 praktisi dari 21 organisasi yang berbeda untuk mengeksplorasi kegiatan arsitektur perangkat lunak dalam praktik sehari-hari dan tantangan yang dihadapi oleh para praktisi. Makalah ini mencerminkan pemahaman yang mendalam tentang realitas kompleksitas dalam pengembangan dan pemeliharaan perangkat lunak.
Pandangan Umum tentang Arsitektur Perangkat Lunak:
Penting untuk memahami bahwa arsitektur perangkat lunak adalah fondasi dari setiap sistem perangkat lunak yang ada. Ini adalah tentang mengambil keputusan desain yang mempengaruhi struktur, perilaku, dan kualitas dari sistem perangkat lunak tersebut. Peran arsitektur perangkat lunak sangat penting, sebab dari arsitektur itulah banyak keputusan selanjutnya akan dibuat.
Bidang arsitektur perangkat lunak telah berkembang pesat selama beberapa dekade terakhir. Dari sudut pandang teknis murni, arsitektur perangkat lunak telah berkembang menjadi pandangan sosial-teknis yang memperhitungkan aspek manusia dan teknologi. Perubahan ini mencerminkan pemahaman bahwa manusia adalah bagian integral dari proses pengembangan perangkat lunak dan bahwa arsitek perangkat lunak harus bekerja dalam kolaborasi yang erat dengan pemangku kepentingan lainnya.
Namun, meskipun ada kemajuan dalam pemahaman tentang arsitektur perangkat lunak, ada sedikit pemahaman tentang bagaimana praktisi sebenarnya menjalankan praktik arsitektur perangkat lunak. Makalah ini mengisi kesenjangan ini dengan melakukan wawancara langsung dengan praktisi yang berada di lapangan.
Tantangan dalam Persyaratan Perangkat Lunak:
Pada tahap awal pengembangan perangkat lunak, masalah yang muncul seringkali terkait dengan persyaratan. Persyaratan perangkat lunak mungkin berubah dengan cepat dan tidak dapat diprediksi. Perubahan ini bisa menjadi sulit untuk ditangani, terutama jika arsitektur yang ada tidak dapat dengan mudah menyesuaikan diri dengan perubahan tersebut.
Masalah lain yang muncul adalah ketika persyaratan baru melanggar asumsi-asumsi awal tentang atribut kualitas yang diharapkan dari sistem. Ini bisa melibatkan aspek-aspek seperti kapasitas, kinerja, atau jumlah pengguna bersamaan yang semula tidak diantisipasi.
Selain itu, dengan perubahan yang terus-menerus dalam lingkungan bisnis dan teknologi, persyaratan perangkat lunak juga akan terus berubah. Memahami dan merancang arsitektur perangkat lunak yang dapat mendukung evolusi jangka panjang dan perubahan persyaratan adalah tugas yang sangat menantang, terutama ketika sumber daya dan waktu terbatas.
Tantangan dalam Desain Perangkat Lunak: