[ad_1]
Pengkodean dengan model bahasa besar (LLM) memberikan harapan besar, namun hal ini juga mengungkap beberapa kelemahan yang sudah lama ada dalam perangkat lunak: kode yang berantakan, sulit diubah dengan aman, dan sering kali tidak jelas tentang apa yang sebenarnya terjadi. Para peneliti di Laboratorium Ilmu Komputer dan Kecerdasan Buatan (CSAIL) MIT sedang memetakan jalur yang lebih “modular” ke depan.
Pendekatan baru mereka memecah sistem menjadi “konsep”, bagian-bagian sistem yang terpisah, yang masing-masing dirancang untuk melakukan satu pekerjaan dengan baik, dan “sinkronisasi”, aturan eksplisit yang menggambarkan dengan tepat bagaimana bagian-bagian tersebut dapat menyatu. Hasilnya adalah perangkat lunak yang lebih modular, transparan, dan lebih mudah dipahami. Bahasa khusus domain kecil (DSL) memungkinkan untuk mengekspresikan sinkronisasi secara sederhana, dalam bentuk yang dapat dihasilkan oleh LLM dengan andal. Dalam studi kasus di dunia nyata, tim menunjukkan bagaimana metode ini dapat menyatukan fitur-fitur yang seharusnya tersebar di berbagai layanan.
Tim tersebut, termasuk Daniel Jackson, seorang profesor teknik elektro dan ilmu komputer (EECS) MIT dan direktur asosiasi CSAIL, dan Eagon Meng, seorang mahasiswa PhD EECS, afiliasi CSAIL, dan perancang DSL sinkronisasi baru, mengeksplorasi pendekatan ini dalam makalah mereka “What You See Is What It Does: A Structural Pattern for Legible software,” yang mereka presentasikan pada Splash Conference di Singapura pada bulan Oktober. Tantangannya, jelas mereka, adalah bahwa dalam sebagian besar sistem modern, satu fitur tidak pernah sepenuhnya berdiri sendiri. Menambahkan tombol “bagikan” ke platform sosial seperti Instagram, misalnya, tidak hanya ada di satu layanan. Fungsionalitasnya terbagi menjadi beberapa kode yang menangani pengeposan, pemberitahuan, autentikasi pengguna, dan banyak lagi. Semua bagian ini, meskipun tersebar di seluruh kode, harus diselaraskan dengan cermat, dan setiap perubahan berisiko menimbulkan efek samping yang tidak diinginkan di tempat lain.
Jackson menyebut hal ini sebagai “fragmentasi fitur”, yang merupakan hambatan utama terhadap keandalan perangkat lunak. “Cara kita membangun perangkat lunak saat ini, fungsinya tidak dilokalisasi. Anda ingin memahami cara kerja 'berbagi', namun Anda harus mencarinya di tiga atau empat tempat berbeda, dan ketika Anda menemukannya, koneksinya terkubur dalam kode tingkat rendah,” kata Jackson.
Konsep dan sinkronisasi dimaksudkan untuk mengatasi masalah ini. Sebuah konsep menggabungkan satu bagian fungsi yang koheren, seperti berbagi, menyukai, atau mengikuti, beserta statusnya dan tindakan yang dapat diambil. Sinkronisasi, di sisi lain, menggambarkan pada tingkat yang lebih tinggi bagaimana konsep-konsep tersebut berinteraksi. Daripada menulis kode integrasi tingkat rendah yang berantakan, pengembang dapat menggunakan bahasa kecil khusus domain untuk mengeja hubungan ini secara langsung. Dalam DSL ini, aturannya sederhana dan jelas: tindakan suatu konsep dapat memicu tindakan konsep lainnya, sehingga perubahan dalam suatu keadaan dapat tetap sinkron dengan keadaan lainnya.
“Bayangkan konsep sebagai modul yang benar-benar bersih dan independen. Sinkronisasi kemudian bertindak seperti kontrak – sinkronisasi menyatakan dengan tepat bagaimana konsep seharusnya berinteraksi. Hal ini sangat berguna karena membuat sistem lebih mudah dipahami manusia dan lebih mudah bagi alat seperti LLM untuk dibuat dengan benar,” kata Jackson. “Mengapa kita tidak bisa membaca kode seperti buku? Kami percaya bahwa perangkat lunak harus dapat dibaca dan ditulis sesuai dengan pemahaman kita: harapan kami adalah konsep-konsep tersebut dipetakan ke fenomena yang sudah dikenal, dan sinkronisasi mewakili intuisi kita tentang apa yang terjadi ketika konsep-konsep tersebut digabungkan,” kata Meng.
Manfaatnya melampaui kejelasan. Karena sinkronisasi bersifat eksplisit dan deklaratif, sinkronisasi dapat dianalisis, diverifikasi, dan tentu saja dihasilkan oleh LLM. Hal ini membuka pintu bagi pengembangan perangkat lunak yang lebih aman dan otomatis, di mana asisten AI dapat mengusulkan fitur-fitur baru tanpa menimbulkan efek samping yang tersembunyi.
Dalam studi kasusnya, para peneliti menetapkan fitur-fitur seperti menyukai, berkomentar, dan berbagi ke dalam satu konsep — seperti arsitektur layanan mikro, namun lebih modular. Tanpa pola ini, fitur-fitur ini tersebar di banyak layanan, sehingga sulit ditemukan dan diuji. Dengan menggunakan pendekatan konsep-dan-sinkronisasi, setiap fitur menjadi terpusat dan dapat dibaca, sementara sinkronisasi menjelaskan dengan tepat bagaimana konsep-konsep tersebut berinteraksi.
Studi ini juga menunjukkan bagaimana sinkronisasi dapat mengatasi permasalahan umum seperti penanganan kesalahan, pemformatan respons, atau penyimpanan persisten. Daripada menyematkan detail ini di setiap layanan, sinkronisasi dapat menanganinya satu kali, sehingga memastikan konsistensi di seluruh sistem.
Arahan yang lebih maju juga dimungkinkan. Sinkronisasi dapat mengoordinasikan sistem terdistribusi, menjaga replika di server yang berbeda tetap berjalan, atau memungkinkan database bersama berinteraksi dengan lancar. Melemahnya semantik sinkronisasi dapat memungkinkan konsistensi pada akhirnya sambil tetap menjaga kejelasan pada tingkat arsitektur.
Jackson melihat potensi perubahan budaya yang lebih luas dalam pengembangan perangkat lunak. Salah satu idenya adalah penciptaan “katalog konsep,” perpustakaan bersama yang berisi konsep-konsep spesifik domain yang telah teruji dengan baik. Pengembangan aplikasi kemudian bisa menjadi lebih sedikit tentang menyatukan kode dari awal dan lebih banyak tentang memilih konsep yang tepat dan menulis sinkronisasi di antara konsep-konsep tersebut. “Konsep bisa menjadi bahasa pemrograman tingkat tinggi jenis baru, dengan sinkronisasi seperti program yang ditulis dalam bahasa tersebut.”
“Ini adalah cara untuk membuat koneksi dalam perangkat lunak terlihat,” kata Jackson. “Saat ini, kami menyembunyikan koneksi tersebut dalam kode. Namun jika Anda dapat melihatnya secara eksplisit, Anda dapat memikirkan perangkat lunak pada tingkat yang jauh lebih tinggi. Anda masih harus menghadapi kompleksitas yang melekat pada fitur-fitur yang berinteraksi. Namun sekarang hal tersebut terbuka, tidak tersebar dan dikaburkan.”
“Membangun perangkat lunak untuk digunakan manusia berdasarkan abstraksi dari mesin komputasi yang mendasarinya telah membebani dunia dengan perangkat lunak yang sering kali mahal, membuat frustrasi, bahkan berbahaya untuk dipahami dan digunakan,” kata Kevin Sullivan, Profesor Madya Universitas Virginia, yang tidak terlibat dalam penelitian ini. “Dampaknya (seperti dalam layanan kesehatan) sangat buruk. Meng dan Jackson membalikkan keadaan dan bersikeras membangun perangkat lunak interaktif berdasarkan abstraksi dari pemahaman manusia, yang mereka sebut 'konsep'. Mereka menggabungkan logika matematika ekspresif dan bahasa alami untuk menentukan abstraksi yang bertujuan, memberikan dasar untuk memverifikasi maknanya, menyusunnya ke dalam sistem, dan menyempurnakannya menjadi program yang sesuai untuk digunakan manusia. Ini adalah arah baru dan penting dalam teori dan praktik desain perangkat lunak yang perlu diperhatikan.”
“Sudah jelas selama bertahun-tahun bahwa kita memerlukan cara yang lebih baik untuk mendeskripsikan dan menentukan apa yang kita ingin perangkat lunak lakukan,” tambah Thomas Ball, profesor kehormatan Universitas Lancaster dan staf pengajar afiliasi Universitas Washington, yang juga tidak terlibat dalam penelitian ini. “Kemampuan LLM untuk menghasilkan kode hanya menambah bahan bakar pada api spesifikasi. Pekerjaan Meng dan Jackson pada desain konsep memberikan cara yang menjanjikan untuk menggambarkan apa yang kita inginkan dari perangkat lunak dengan cara modular. Konsep dan spesifikasi mereka sangat cocok untuk dipasangkan dengan LLM untuk mencapai maksud perancang.”
Ke depan, para peneliti berharap penelitian mereka dapat mempengaruhi cara berpikir industri dan akademisi tentang arsitektur perangkat lunak di era AI. “Jika perangkat lunak ingin menjadi lebih dapat dipercaya, kita memerlukan cara penulisan yang membuat tujuan perangkat lunak tersebut transparan,” kata Jackson. “Konsep dan sinkronisasi merupakan salah satu langkah menuju tujuan tersebut.”
Pekerjaan ini sebagian didanai oleh Inisiatif Aplikasi Pembelajaran Mesin (MLA) dari CSAIL Alliances. Pada saat pendanaan, dewan inisiatifnya adalah British Telecom, Cisco, dan Ernst and Young.
[ad_2]
Peneliti MIT mengusulkan model baru untuk perangkat lunak modular yang dapat dibaca | Berita MIT