Abstrak
1 Pendahuluan
2 Pengumpulan Data
3 RQ1: Jenis pertanyaan rekayasa perangkat lunak apa yang diajukan pengembang kepada ChatGPT dalam prompt awal?
4 RQ2: Bagaimana pengembang menyajikan pertanyaan mereka kepada ChatGPT dalam percakapan multi-giliran?
5 RQ3: Apa karakteristik perilaku berbagi?
6 Diskusi
7 Ancaman terhadap Validitas
8 Karya Terkait
9 Kesimpulan dan Pekerjaan Masa Depan
Referensi
\
==Motivasi:== Hasil yang disajikan dalam Gambar 3 dan Gambar 4 mengungkapkan bahwa sebagian besar dalam DevGPT-PRs (33,2%) dan DevGPT-Issues (26,9%) mencakup percakapan multi-giliran. Dalam percakapan satu giliran, pengembang mengajukan pertanyaan terkait SE dalam prompt awal dan menerima satu respons dari ChatGPT, memberikan pertukaran yang jelas dan langsung. Namun, dinamika percakapan multi-giliran memperkenalkan kompleksitas. Interaksi ini melampaui kueri dan respons sederhana, melibatkan serangkaian pertukaran yang berpotensi menyempurnakan, memperluas, atau mengklarifikasi pertanyaan awal.
\ Komunikasi berlapis ini menimbulkan pertanyaan tentang strategi pengembang untuk mengartikulasikan pertanyaan mereka dalam beberapa giliran. Oleh karena itu, kami memperkenalkan RQ2, yang mempelajari sifat prompt pengembang dalam percakapan multi-giliran. Untuk memfasilitasi analisis komprehensif, kami lebih lanjut memperkenalkan dua sub-RQ:
– RQ2.1: Apa peran prompt pengembang dalam percakapan multi-giliran? Pertanyaan ini bertujuan untuk mengkategorikan peran struktural setiap prompt dalam percakapan multi-giliran yang sesuai.
– RQ2.2: Apa pola aliran dalam percakapan multi-giliran? Berdasarkan taksonomi yang diusulkan sebagai jawaban atas RQ2.1, pertanyaan ini mengeksplorasi pola transisi yang sering dari peran prompt yang diidentifikasi dalam percakapan multi-giliran. Jawaban atas sub-RQ di atas akan memberikan wawasan bagi peneliti tentang dinamika dan praktik pengembang dalam memanfaatkan ChatGPT melalui beberapa putaran interaksi.
\ 4.1 Pendekatan
Dalam RQ2.1, kami mempertimbangkan prompt dalam semua 189 percakapan multi-giliran, yaitu 64 percakapan dari DevGPT-PRs dan 125 dari DevGPT-Issues. Mengikuti metode yang mirip dengan RQ1, kami menggunakan pengkodean terbuka untuk secara manual memberi label pada 645 prompt (236 prompt dari DevGPT-PRs dan 409 prompt dari DevGPT-Issues) dalam percakapan multi-giliran selama tiga putaran:
– Pada putaran pertama, lima rekan penulis secara independen memberi label pada 20 percakapan yang dipilih secara acak dari kedua dataset multi-giliran DevGPT-PRs dan DevGPT-Issues, mencakup 40 percakapan dan 123 prompt. Setelah diskusi, kami mengembangkan buku pengkodean yang terdiri dari tujuh label berbeda.
– Pada putaran kedua, berdasarkan buku pengkodean yang ada, dua anotator secara independen memberi label pada set lain dari 20 percakapan dari masing-masing dataset multi-giliran DevGPT-PRs dan DevGPT-Issues, total 144 prompt. Kedua anotator mencapai skor kesepakatan antar-penilai 0,89, sebagaimana diukur oleh koefisien kappa Cohen, yang mewakili kesepakatan hampir sempurna (Landis dan Koch, 1977). Anotator kemudian mendiskusikan dan menyempurnakan buku pengkodean.
\ – Akhirnya, masing-masing dari dua anotator dari putaran kedua secara independen memberi label pada data yang tersisa. Dalam RQ2.2, kami menggunakan model Markov (Gagniuc, 2017) untuk menganalisis pola aliran percakapan dengan memplot Grafik Transisi Markov. Grafik Transisi Markov adalah grafik terarah yang menunjukkan transisi probabilistik
antara berbagai keadaan atau node. Dalam kasus kami, setiap node dalam grafik mewakili kategori spesifik yang dikembangkan dalam RQ2.1, dan tepi terarah antara node menunjukkan kemungkinan transisi dari satu taksonomi ke taksonomi lain berdasarkan percakapan multi-giliran yang kami kumpulkan. Untuk mengekstrak wawasan bermakna dari Grafik Transisi Markov, kami mengusulkan langkah-langkah pasca-pemrosesan berikut:
Kami memangkas grafik dengan menghapus transisi dengan probabilitas lebih rendah dari 0,05, memastikan fokus pada hubungan yang signifikan secara statistik.
Kami menyempurnakan struktur grafik dengan menghapus node tanpa tepi masuk dan keluar, kecuali node awal dan akhir. Langkah ini memastikan penyederhanaan karena kami hanya menyimpan komponen penting.
Kami secara sistematis mereorganisasi Grafik Transisi Markov menjadi bagan alir untuk meningkatkan interpretabilitasnya, menawarkan representasi pola aliran yang lebih mudah dipahami.
\ 4.2 Hasil
4.2.1 RQ 2.1 Apa peran prompt pengembang dalam percakapan multi-giliran? Tabel 4 menyajikan taksonomi yang kami usulkan untuk mengklasifikasikan prompt dalam percakapan multi-giliran. Analisis kami mengungkapkan bahwa, baik dalam pull request maupun issues, percakapan multi-giliran mengandung tiga jenis utama prompt: yang mengajukan pertanyaan lanjutan (M1), yang memperkenalkan tugas awal (M2), dan yang disempurnakan dari prompt sebelumnya (M3). Satu prompt dari DevGPT-PRs dan enam prompt dari DevGPT-Issues dikategorikan di bawah "Lainnya" karena sifatnya yang merupakan percakapan kasual atau kurangnya detail yang cukup untuk menentukan peran mereka.
\ Di bawah ini, kami menjelaskan setiap kategori secara lebih detail.
==(M1) Tindak lanjut iteratif:== Dalam 33% dan 40% prompt dalam multi-giliran DevGPT-PRs dan DevGPT-Issues, pengembang memposting kueri yang langsung dibangun berdasarkan respons sebelumnya dari ChatGPT atau konteks yang sedang berlangsung, seperti debugging dan memperbaiki solusi setelah generasi kode oleh ChatGPT. Tindak lanjut iteratif semacam itu biasanya muncul ketika tugas awal menghadirkan tantangan kompleks yang mungkin tidak sepenuhnya diselesaikan ChatGPT dalam satu interaksi. Akibatnya, pengembang terlibat dalam prompt yang menentukan permintaan tindak lanjut, memungkinkan ChatGPT untuk menggabungkan umpan balik manusia dan secara iteratif meningkatkan solusi yang diusulkan.
\ ==(M2) Mengungkapkan tugas awal:== Kami menemukan bahwa fraksi yang serupa, yaitu 26% dalam multi-giliran DevGPT-PRs dan 29% dalam multi-giliran DevGPT-Issues, dari prompt berfungsi untuk memperkenalkan tugas awal ke ChatGPT. Distribusi ini menyoroti bahwa dalam percakapan multi-giliran, tidak seperti dalam percakapan satu giliran, di mana satu-satunya prompt didedikasikan untuk menguraikan tugas utama, ada sejumlah signifikan prompt yang melayani tujuan lain.
\ ==(M3) Menyempurnakan prompt:== Selain tindak lanjut iteratif (M1), pengembang juga cenderung meningkatkan solusi yang diusulkan oleh ChatGPT dengan memberikan prompt permintaan yang disempurnakan dengan konteks atau batasan tambahan. Tujuannya adalah untuk meningkatkan kualitas respons untuk kueri yang sama yang diposting dalam prompt sebelumnya. Prompt yang Disempurnakan menyumbang 17% dari prompt dalam multi-giliran DevGPT-PRs dan 14% dalam DevGPT-Issues.
\ ==(M4) Pemberian informasi:== Dalam 8% dan 6% prompt dalam multi-giliran DevGPT-PRs dan DevGPT-issues, pengembang tidak memposting permintaan apa pun untuk ChatGPT, tetapi lebih berbagi pengetahuan atau konteks dengan ChatGPT.
\ ==(M5) Mengungkapkan tugas baru== Kami mengamati bahwa 7% dan 4% prompt dalam multi-giliran DevGPT-PRs dan DevGPT-issues memposting tugas baru ke ChatGPT, yang berbeda dari tugas yang diperhatikan dalam prompt sebelumnya. Kategori ini mewakili perbedaan yang jelas dari tindak lanjut iteratif (M1), karena tugas baru tidak berhubungan dengan atau dibangun berdasarkan respons sebelumnya dari ChatGPT dan bertujuan untuk tujuan yang berbeda. Misalnya, seorang pengembang awalnya meminta ChatGPT untuk menghasilkan SQL yang sesuai dengan set kueri Django dan, dalam prompt berikutnya, meminta SQL untuk set kueri yang berbeda, sehingga mengalihkan fokus percakapan ke tugas yang sama sekali baru tanpa relevansi sebelumnya.
\ ==(M6) Umpan balik negatif:== Dalam percakapan multi-giliran, beberapa (6% di DevGPT-PRs dan 2% di DevGPT-Issues) prompt hanya berisi umpan balik negatif yang ditujukan pada respons sebelumnya dari ChatGPT, tanpa memberikan informasi apa pun untuk ChatGPT untuk meningkatkan atau menyelesaikan lebih lanjut. Misalnya, "Kode Anda salah", "Kesalahan yang sama tetap ada", dan "...tidak berfungsi". Kategori ini menggarisbawahi contoh di mana pengembang berusaha memberi tahu ChatGPT tentang kekurangannya, tanpa mencari bantuan atau klarifikasi lebih lanjut.
\ (M7) Meminta klarifikasi: 4% dan 5% prompt dalam multi-giliran DevGPTPRs dan DevGPT-Issues meminta ChatGPT untuk menjelaskan responnya. Permintaan elaborasi ini bertujuan untuk memastikan kelengkapan solusi, misalnya, "Apakah saya perlu melakukan hal lain?". Mereka juga termasuk verifikasi kapasitas ChatGPT untuk menangani tugas-tugas tertentu, atau pertanyaan untuk memverifikasi apakah kondisi tertentu telah dipertimbangkan dalam respons. Selain itu, pengembang mungkin bertanya mengapa beberapa alternatif diabaikan oleh ChatGPT, menunjukkan keterlibatan yang lebih dalam dengan solusi yang diusulkan dan keinginan untuk memahami alasan di balik solusi yang diusulkan ChatGPT.
4.2.2 RQ 2.2 Apa pola aliran dalam percakapan multi-giliran?
Gambar 5 menyajikan bagan alir yang dihasilkan setelah menerapkan langkah-langkah pasca-pemrosesan pada Grafik Transisi Markov berdasarkan percakapan yang dianotasi sebagai hasil dari RQ2.1. Bagan alir berlaku untuk percakapan multi-giliran baik di DevGPT-PRs maupun DevGPT-Issues. Seperti yang diilustrasikan dalam Gambar 5, percakapan multi-giliran biasanya dimulai dengan presentasi tugas awal (M2) atau informasi kontekstual (M4).
\ Analisis tindak lanjut terperinci kami mengungkapkan bahwa 81% percakapan multi-giliran di DevGPT-PRs dan 90% di DevGPT-Issues dimulai dengan menguraikan tugas awal. Sebaliknya, sekitar 13% percakapan multi-giliran di DevGPT-PRs dan 3% di DevGPT-Issues memperkenalkan tugas awal dalam prompt kedua. Dalam kasus ekstrem, tugas awal diungkapkan setelat giliran ketujuh, atau, dalam beberapa kasus, tugas awal tidak pernah secara eksplisit disajikan—sebaliknya, percakapan ini hanya menyajikan informasi kepada ChatGPT tanpa secara langsung menyatakan tugas.
\ Untuk aliran lengkap, kami mengidentifikasi pola-pola berikut berdasarkan Gambar 5:
Mulai → mengungkapkan tugas awal → tindak lanjut iteratif → akhir
Mulai → mengungkapkan tugas awal → menyemp


