Lewati ke Konten
Artikel ini telah diterjemahkan dari bahasa Jepang menggunakan AI
Baca dalam bahasa Jepang
Artikel ini berada dalam Domain Publik (CC0). Silakan gunakan secara bebas. CC0 1.0 Universal

Pengembangan Berorientasi Pembangunan dan Pengujian Berbasis Refactoring

Pengembangan adalah penciptaan sesuatu yang baru dan bermanfaat secara iteratif.

Ketika kita memikirkan pengembangan, pengembangan produk baru sering kali terlintas dalam pikiran. Ini berbeda dari manufaktur, yang menghasilkan produk individual; sebaliknya, ini melibatkan penciptaan spesifikasi desain atau cetakan untuk produk.

Dengan demikian, cetak biru atau cetakan yang dibuat melalui pengembangan produk baru digunakan berulang kali di pabrik untuk memproduksi banyak produk yang identik.

Ada juga penggunaan seperti mengembangkan kemampuan individu atau mengembangkan masyarakat dan bangsa. Ini menyiratkan tidak hanya peningkatan apa yang dimiliki seseorang, tetapi kemampuan untuk berulang kali menggunakan dan mendapatkan manfaat dari kemampuan yang dikembangkan.

Meskipun kekuatan ekonomi individu dan masyarakat dapat berfluktuasi karena kondisi ekonomi, kemampuan yang dikembangkan pada dasarnya bersifat permanen.

Bahkan jika mereka menurun, itu dianggap sebagai kemerosotan daripada fluktuasi naik-turun kemakmuran ekonomi.

Selain itu, ada juga pengembangan teknologi dan pengetahuan. Tidak seperti kemampuan individu atau masyarakat tertentu, ini memiliki karakteristik mudah dibagikan.

Dan di antara produk, kemampuan, pengetahuan, dan teknologi yang merupakan hasil dari pengembangan ini, beberapa dapat berkontribusi pada pengembangan selanjutnya.

Dengan mengembangkan keluaran yang bermanfaat tersebut, cakupan pengembangan meluas, dan efisiensi serta kualitas meningkat.

Pengembangan Perangkat Lunak Berbasis AI

Secara umum, pengembangan membutuhkan waktu dan upaya yang signifikan. Terutama seiring kemajuan masyarakat dan berbagai hal menjadi lebih canggih, menciptakan hal-hal baru menjadi semakin sulit.

Namun, dengan munculnya AI generatif, situasi ini berubah. Saat ini, pengembangan perangkat lunak mengalami perubahan dramatis berkat kemampuan pemrograman AI generatif yang tinggi.

Dalam lanskap ini, visi masa depan di mana agen otonom berbasis AI generatif menjadi pusat pengembangan perangkat lunak sebagai insinyur perangkat lunak sudah menjadi kenyataan.

Kita saat ini berada dalam fase transisi. Meskipun kita belum dapat sepenuhnya menyerahkan pengembangan kepada AI generatif, memanfaatkan AI generatif dengan terampil dapat secara kuat memajukan pengembangan perangkat lunak.

Ini disebut sebagai pengembangan perangkat lunak berbasis AI.

Pengembangan Berorientasi Pembangunan

Ketika AI generatif membuat pengembangan perangkat lunak lebih efisien, ini tidak hanya dapat menyederhanakan pengembangan perangkat lunak target akhir tetapi juga pengembangan perangkat lunak yang membantu dalam pengembangan itu sendiri.

Seperti yang disebutkan sebelumnya, hasil yang memfasilitasi pengembangan memperluas cakupannya, dan membantu meningkatkan efisiensi serta kualitas. Terlebih lagi, jika dibuat secara efektif, mereka dapat digunakan kembali dalam proyek pengembangan lainnya.

Oleh karena itu, dengan mengembangkan perangkat lunak yang membantu dalam pengembangan selama proses pengembangan perangkat lunak, efisiensi keseluruhan dapat ditingkatkan, dan aset-aset ini dapat dimanfaatkan untuk pengembangan di masa mendatang.

Secara konvensional, mengembangkan perangkat lunak bantu semacam itu adalah praktik umum, tetapi ini membutuhkan waktu dan upaya pengembangannya sendiri, sehingga memerlukan pertimbangan yang cermat dan pelaksanaan yang terfokus.

Dengan memanfaatkan AI generatif, seseorang dapat dengan cepat membuat perangkat lunak sederhana untuk mengotomatiskan tugas-tugas kecil yang terlintas dalam pikiran. Jika tugas tersebut melibatkan pemrosesan yang jelas, AI generatif dapat secara akurat menghasilkan program hampir tanpa kesalahan.

Akibatnya, mengembangkan perangkat lunak untuk membantu pengembangan selama proses pengembangan perangkat lunak menjadi lebih mudah daripada sebelumnya.

Dan, dengan memikirkannya secara mendalam, muncul gaya pengembangan di mana alat-alat yang berguna untuk pengembangan terus-menerus dibuat selama proses tersebut, sehingga mengubah metodologi pengembangan itu sendiri.

Kami akan menyebut ini "pengembangan berorientasi pembangunan."

Untuk mempraktikkan pengembangan berorientasi pembangunan, seseorang membutuhkan kebiasaan mengamati pengembangan perangkat lunak mereka sendiri secara objektif, mempertimbangkan bagian mana yang dapat ditangani oleh perangkat lunak dan bagian mana yang hanya oleh manusia, bersama dengan keterampilan untuk mengembangkan perangkat lunak bantu tersebut.

Selanjutnya, AI generatif dapat diintegrasikan ke dalam alat perangkat lunak ini. Dengan menyematkannya di dalam perangkat lunak, tidak seperti agen AI generatif, cakupan pemrosesan dapat dipersempit sampai batas tertentu, dan jalur dapat ditentukan.

Meskipun agen AI dapat mencapai hasil serupa melalui prompt, perangkat lunak dengan AI generatif yang tertanam dapat lebih mudah meningkatkan akurasi dengan menggabungkan program dan prompt.

Jika pengembangan berorientasi pembangunan semacam ini dapat dipraktikkan, proyek kedua akan menunjukkan peningkatan kualitas dan biaya dibandingkan dengan yang pertama. Selain itu, dengan setiap proyek berikutnya—ketiga, keempat, dan seterusnya—peningkatan akan terus terakumulasi.

Ini sama sekali berbeda dari sekadar menggunakan AI generatif untuk mengembangkan perangkat lunak. Kesenjangan yang signifikan akan muncul seiring waktu antara tim yang hanya menguasai alat AI generatif dan tim yang mempraktikkan pengembangan berorientasi pembangunan.

Pengujian Berbasis Refactoring

Ada konsep yang disebut Test-Driven Development (TDD), di mana tes dirancang terlebih dahulu berdasarkan spesifikasi, dan kemudian perangkat lunak dikembangkan untuk lulus tes tersebut.

Awalnya, saya juga berpikir bahwa dengan memanfaatkan AI generatif, akan mudah untuk mengembangkan program tes untuk pengujian otomatis, sehingga TDD menjadi layak.

Namun, ketika saya mulai mempraktikkan pengembangan berorientasi pembangunan, saya mulai percaya bahwa memikirkan tes sebelum mengimplementasikannya tidak selalu merupakan pendekatan yang paling cocok.

Terutama untuk perangkat lunak seperti aplikasi web yang melibatkan aspek subjektif seperti kegunaan dan desain visual, yang berinteraksi langsung dengan pengguna, saya menyadari bahwa menjalankan dan berinteraksi dengan perangkat lunak lebih diutamakan daripada tes yang detail.

Ini karena jika ada ketidakpuasan yang signifikan pada tingkat UI/UX setelah berinteraksi dengannya, ada kemungkinan ingin mengubah bagian-bagian fundamental seperti kerangka kerja, arsitektur dasar, model data, atau use case.

Dalam proyek pengembangan perangkat lunak pribadi saya saat ini, saya melihat masalah dengan fleksibilitas fitur dan kinerja dan akhirnya mengganti dua kerangka kerja dengan yang berbeda.

Saya juga harus meninjau ulang pemrosesan di beberapa area karena penggunaan memori yang tidak efisien.

Pada saat-saat refactoring inilah pengujian pertama kali menjadi pertimbangan yang disadari.

Jika ini berada pada tahap awal pengembangan, atau jika fungsi dan spesifikasi akan berubah secara signifikan, tes mungkin tidak diperlukan.

Namun, jika pengembangan sudah cukup maju dan ada banyak item untuk diperiksa, tes akan diperlukan untuk mengonfirmasi bahwa refactoring tidak memperkenalkan cacat fungsional atau kelalaian.

Oleh karena itu, pendekatan membuat program tes ketika pengembangan telah mencapai tingkat tertentu dan refactoring menjadi perlu bukanlah ide yang buruk.

Pada titik ini, kuncinya bukan untuk membuat tes untuk semua kode, tetapi untuk fokus pada pengujian bagian-bagian yang matang yang tidak mungkin banyak berubah di masa mendatang, sementara meninggalkan bagian-bagian yang cair tanpa tes otomatis.

Ini bisa disebut Pengujian Berbasis Refactoring.

Kesimpulan

AI generatif secara dramatis mengubah pengembangan perangkat lunak.

Dalam artikel sebelumnya, saya menulis tentang pentingnya bertujuan untuk menjadi "Insinyur Omni-arah," yang mampu mengembangkan sistem yang menggabungkan berbagai domain, infrastruktur, dan lingkungan eksekusi, melampaui insinyur full-stack tradisional.

Saya juga menulis artikel yang menunjukkan bahwa kita memasuki era "Pengembangan Berpusat pada Pengalaman & Perilaku," di mana fokusnya bukan pada penyelarasan spesifikasi dengan implementasi, tetapi pada peningkatan pengalaman pengguna melalui perilaku perangkat lunak.

Pengembangan berorientasi pembangunan dan pengujian berbasis refactoring正是 yang mengarah pada cakrawala baru dalam pengembangan perangkat lunak ini.