Satuan 1 / 12

Pengantar Kecerdasan Buatan dan Disiplin Verifikasi Teknik Komputer

Keuntungan:

  • Kemampuan untuk membedakan di mana AI memberikan kecepatan nyata dalam siklus hidup pengembangan perangkat lunak dan di mana keputusan dan tanggung jawab tetap berada di tangan teknisi
  • Kemampuan untuk menerapkan disiplin teknik tiga lapis yang memverifikasi setiap kode dan desain yang dihasilkan melalui kompilasi, pengujian, dan peninjauan.
  • Biasakan membersihkan konteks untuk memanfaatkan AI tanpa membagikan kode sumber rahasia, kredensial, dan data pelanggan

Ketika Anda melihat hari-hari seorang insinyur komputer, gambarannya serupa di sebagian besar tim: memahami permintaan bisnis, merancang, menulis kode, membaca kode orang lain, debugging (proses mencari tahu mengapa suatu program tidak berfungsi dengan benar dan memperbaikinya), menulis tes, menyiapkan dokumentasi, meninjau kode, dan menghadiri pertemuan. Dengan kata lain, waktu yang dihabiskan untuk “penilaian rekayasa” yang sebenarnya, yaitu apakah suatu solusi benar, aman dan berkelanjutan, terbuang sia-sia karena pekerjaan yang berulang-ulang. Di sinilah kecerdasan buatan (disingkat AI; perangkat lunak yang bekerja pada teks dan kode dengan model bahasa besar) berperan. AI tidak mengambil keputusan untuk Anda; Ini mempersiapkan Anda untuk mengambil keputusan, menghasilkan kerangka kode, mempersempit bug dan menempatkan draf yang sudah dikerjakan di depan Anda. Sepanjang modul ini kami akan memposisikan AI bukan sebagai “pemrogram otomatis” tetapi sebagai mitra pemrograman berpasangan yang disiplin yang keluarannya dikompilasi, diuji, dan ditinjau setiap saat.

Dalam unit pertama ini, kami mengklarifikasi tiga hal: Pada tahapan siklus hidup pengembangan perangkat lunak (tahapan yang dilalui perangkat lunak mulai dari ide hingga produksi: analisis, desain, pengkodean, pengujian, penerapan, pemeliharaan) apakah AI memberikan nilai tambah yang nyata; keputusan mana yang harus tetap berada di tangan insinyur; dan disiplin verifikasi dan kerahasiaan apa yang harus Anda patuhi saat melakukan ini. Tanpa atap ini dipasang dengan benar, teknik pada unit berikutnya bisa berbahaya; Karena kesalahan pada perangkat lunak menjangkau jutaan pengguna secara bersamaan dan dapat berubah menjadi kerentanan keamanan.

Konsep: Halusinasi: Pemalsuan AI yang meyakinkan atas suatu metode, perpustakaan, API, atau perilaku yang sebenarnya tidak ada. Konteks: Masukan yang Anda berikan ke AI (kode, pesan kesalahan, persyaratan, batasan). Verifikasi : Pengecekan keluaran secara mandiri (kompilasi, pengujian, dokumentasi). Ketiga konsep ini adalah tulang punggung keseluruhan modul.

Di Bisnis Manakah AI Accelerator, Di Bisnis Mana yang Berisiko?

Pekerjaan di bidang perangkat lunak mempunyai dua spektrum dalam hal hasil. Di satu sisi terdapat pekerjaan persiapan yang dapat dibalik dan berisiko rendah; Di sisi lain, ada tugas yang sulit dikembalikan yang memasuki lingkungan produksi dan dapat menyebabkan kehilangan data, kerentanan keamanan, atau gangguan. Nilai AI bervariasi tergantung pada posisi Anda dalam spektrum ini.

jenis bisnis

Kontribusi AI

Peran insinyur

Kerangka kode / boilerplate

Pembuatan struktur berulang yang cepat

Kontrol logika dan status tepi

melakukan debug

Hipotesis dan daftar kemungkinan penyebab

Reproduksi dan konfirmasi akar permasalahan

tes menulis

Draf uji dan pembuatan skenario

Penegasan yang bermakna dan pemeriksaan ruang lingkup

pemfaktoran ulang

Proposal pemfaktoran ulang

Mempertahankan perilaku melalui pengujian

Dokumentasi

Draf dan struktur pertama

Pemeriksaan kebenaran terhadap kode

Keputusan arsitektur/keamanan

Daftar opsi dan pro dan kontra

Keputusan dan tanggung jawab akhir

Aturannya sederhana: risiko keluaran AI sama dengan kerusakan yang akan ditimbulkan jika keluaran tersebut membuat kesalahan. Menyarankan nama variabel secara salah tidak berbahaya; Otentikasi yang tidak tepat (memeriksa apakah pengguna benar-benar sesuai dengan klaimnya) membuat keseluruhan sistem menjadi rentan. Jadi pertanyaan pertama yang harus ditanyakan sebelum menggunakan keluarannya adalah: "Apa yang terjadi jika ini salah dan siapa yang memperhatikannya dan kapan?"

Perhatian: AI menghasilkan kode yang lancar dan percaya diri. Kefasihan bukanlah jaminan keakuratan. Model bahasa dapat menghasilkan nama fungsi yang sebenarnya tidak ada, urutan parameter yang salah, atau bahkan pola yang tidak aman. Dalam perangkat lunak, hal ini tidak tinggal di atas kertas; Ini mengkompilasi, menjalankan, dan meledak dalam produksi.

Keputusan Yang Harus Diserahkan Kepada Insinyur

Beberapa keputusan tidak boleh sepenuhnya otomatis; membawa risiko teknis, hukum dan etika:

  • Persetujuan untuk produksi: Pelepasan kode ke dalam produksi dan tanggung jawab untuk ini.
  • Keamanan dan arsitektur: Keputusan mahal seperti otentikasi, otorisasi, enkripsi, dan model data.
  • Lisensi dan hak cipta: Kegunaan kode yang dihasilkan dalam produk komersial dan kepatuhan lisensi.
  • Bekerja dengan data rahasia: Transaksi dengan data pelanggan, rahasia kode sumber, dan informasi identitas.
Peringatan: Meskipun AI mengatakan "kode ini aman dan siap untuk diproduksi", menerimanya tanpa pengujian keamanan, peninjauan kode, dan validasi dalam beban nyata tidak dapat diterima. Dalam pekerjaan yang kritis terhadap keselamatan, keluaran AI tidak pernah bisa menggantikan persetujuan dari insinyur yang kompeten; Setiap keluaran yang mengarah pada suatu keputusan harus diverifikasi secara independen dan disetujui oleh insinyur yang berwenang sebelum penerapan.

Disiplin Verifikasi: Kontrol Tiga Lapis

Terapkan tiga lapisan kontrol untuk menggunakan keluaran AI seperti pengulas senior, bukan secara membabi buta. Ini adalah refleks dasar yang akan kita ulangi sepanjang modul ini.

  1. Kompilasi dan pemeriksaan statis: Apakah kode benar-benar dikompilasi/dijalankan? Apakah ada kesalahan ketik, variabel yang tidak digunakan, API yang tidak ada? Apa yang dimaksud dengan alat analisis statis (alat yang memeriksa kode tanpa menjalankannya)?
  2. Reproduksi independen (pengujian): Jalankan kode dengan masukan kecil yang diketahui dan lihat apakah Anda mendapatkan keluaran yang diharapkan. Coba kasus tepi (null, zero, negative, huge).
  3. Verifikasi sumber: Setiap API, versi perpustakaan, dan fitur bahasa yang digunakan AI harus diverifikasi dari dokumentasi resmi.

Perintah verifikasi (mempermudah pemeriksaan keluaran): "Cantumkan SEMUA pustaka eksternal, metode, dan fitur bahasa yang Anda gunakan dalam kode Anda. Untuk masing-masing pustaka, tunjukkan versi mana yang tersedia dan beri label 'harus diverifikasi dari dokumentasi'. Jangan membuat API apa pun yang Anda tidak yakin; jika Anda tidak yakin, tulis dengan jelas 'tidak yakin'. Cantumkan juga kasus-kasus tepi yang belum Anda atasi sebagai daftar terpisah."

Kritik perintah kode Anda sendiri: "Perhatikan secara kritis kode yang baru saja Anda tulis, seperti seorang insinyur senior yang mempekerjakan Anda. Berikan item konkret di bawah tiga judul berikut: (1) kesalahan logika/kasus tepi, (2) risiko keamanan, (3) masalah kinerja atau keterbacaan. Untuk setiap item, tulis 'mengapa masalahnya' dan 'saran perbaikan'. Jika tidak ada masalah, katakan 'Saya tidak dapat menemukan masalah'; jangan mencoba untuk membumbuinya."

Prompt Lemah / Prompt Kuat

LEMAH:"Tuliskan saya fungsi otentikasi pengguna."(Hasil: tidak jelas bahasa apa, aturan mana, perilaku kesalahan yang mana; kode generik, sering kali tidak aman atau di luar konteks.)KUAT:"Tulis fungsi validasi email untuk Python 3.11. Masukan: string. Keluaran: Benar jika valid, Salah jika tidak. Aturan: string kosong Salah; Tidak diperlukan kepatuhan RFC, format dasar sudah cukup. JANGAN GUNAKAN perpustakaan eksternal. Tes 5 sampel di bawah blok penambahan fungsi: valid, kosong, tidak '@', ganda '@', hanya berisi spasi."

Perbedaannya terletak pada konteksnya. Perintah yang kuat; Ini mencakup bahasa, versi, kontrak input-output, batasan, dan ekspektasi pengujian. Disiplin tunggal ini sangat mengurangi risiko halusinasi dan kode yang tidak aman.

Kasus Mini

Kasus 1 — Metode yang dibuat-buat. Pengembang mendengar dari AI bahwa ada metode yang disebut date.addBusinessDays(5) di perpustakaan tanggal dan dijelaskan dengan percaya diri. Melihat dokumentasinya, dia melihat bahwa tidak ada metode seperti itu, cara yang benar adalah perulangan manual. Halusinasi ditangkap sebelum diproduksi dengan verifikasi 10 menit.

Kasus 2 — Hilangnya status tepi. AI menghasilkan fungsi “hitung rata-rata”; Ia berfungsi saat diuji dengan 1.000 baris data. Namun, jika daftarnya kosong, maka akan terjadi kesalahan pembagian dengan nol. Sejak teknisi menambahkan pengujian masukan kosong, dia melihat dan memperbaiki kesalahan sebelum ditayangkan. Uji kondisi tepi tunggal mencegah alarm produksi pada jam 3 pagi.

Kasus 3 — Risiko privasi. Seorang pakar akan menempelkan file dengan string koneksi database aktual dan kunci API ke alat publik. Mengingat kebijakan institusi; Ini menggantikan rahasia dengan <REDACTED>, mengurangi kode menjadi contoh yang representatif, dan memintanya. Dengan demikian, dia mendapat pertolongan dalam 5 menit, namun informasi identitasnya tidak keluar.

Prinsip Bekerja dengan Kode Rahasia dan Informasi Identitas

Bagian paling sensitif dari perangkat lunak; rahasia kode sumber, informasi identitas (kunci API, kata sandi, token) dan data pelanggan/pribadi. Prinsip dasarnya: berbenah sebelum berbagi, tanyakan inti permasalahannya saja dengan contoh yang representatif jika memungkinkan.

Pola prompt yang dianonimkan: "Ada kesalahan dalam fungsi berikut. Saya mengganti logika bisnis aktual dan konstanta tersembunyi dengan nilai yang mewakili (kunci API, nama tabel, nama bidang generik). Masalah: Saya mendapatkan kesalahan Y pada masukan X. Temukan saja kesalahan logika dalam kode perwakilan ini dan jelaskan versi yang diperbaiki. [kode perwakilan]"

Tip: Jika ragu, ikuti tes ini: "Apakah organisasi saya akan mendapat masalah jika saya menulis ini secara publik di forum?" Walaupun jawabannya tidak jelas, jelaskan terlebih dahulu. Menyetel ulang selalu lebih murah daripada mengejar kebocoran nanti.

Kesalahan umum

  • Menggunakan output tanpa kompilasi/pengujian. “AI menulis” bukanlah sebuah pembenaran; Setiap bagian kode diverifikasi dengan menjalankannya.
  • Membuat permintaan tanpa konteks. Jika bahasa, versi, input-output, dan batasan tidak diberikan, kode menjadi umum dan sering kali tidak aman.
  • Berbagi informasi rahasia tanpa berpikir. Kunci API, kata sandi, dan data pelanggan tidak boleh dirilis tanpa dibersihkan.
  • Membingungkan bahasa yang tepat dengan akurasi. Semakin percaya diri AI berbicara, Anda harus semakin berhati-hati; Nada percaya diri bukanlah bukti.
  • Mendelegasikan keputusan kepada AI. Keputusan untuk melakukan produksi, keamanan, dan arsitektur tetap berada di tangan insinyur; AI hanya memproduksi material.

Singkatnya

AI mempercepat bagian pekerjaan perangkat lunak yang berulang dan memakan waktu: kode kerangka, penyusunan pengujian, penyempitan bug, dokumentasi. Namun, keputusan dan tanggung jawab tetap berada di tangan teknisi. Setiap keluaran harus melewati tiga lapisan kontrol (kompilasi/statis, pengujian, sumber). Menulis petunjuk dengan konteks dan membersihkan informasi tersembunyi adalah dua kebiasaan utama yang akan kita ulangi di setiap unit modul ini. Saat Anda menggunakan AI dengan disiplin, Anda memperoleh kecepatan; ketika Anda menggunakannya tanpa disiplin, Anda membawa kesalahan dan kerentanan ke dalam produksi.

Tugas aplikasi

Pilih tugas pengkodean kecil dari pekerjaan Anda sendiri atau dari proyek imajiner (misalnya fungsi validasi). Pertama tulis prompt yang lemah dan dapatkan hasilnya. Kemudian terapkan pola prompt yang kuat dari unit ini: tambahkan bahasa/versi, kontrak input-output, batasan, dan ekspektasi pengujian. Letakkan kedua hasil cetakan secara berdampingan dan tuliskan perbedaannya. Kemudian kompilasi keluaran yang kuat dan uji dengan setidaknya tiga kasus tepi (null, nol/negatif, format tidak terduga) dan catat apa yang Anda temukan dalam pengujian mana.

daftar periksa

  • [] Saya menambahkan bahasa, versi, dan kontrak input-output ke prompt.
  • [ ] Saya menulis "Jangan mengada-ada, beri tahu saya jika Anda tidak yakin" dan batasan cakupannya.
  • [] Saya mengkompilasi/menjalankan kode, memeriksa peringatan statis.
  • [] Saya menguji dengan setidaknya tiga kasus Edge.
  • [] Saya memverifikasi API yang digunakan dari dokumentasi resmi.
  • [ ] Saya menghapus kode rahasia/kredensial atau menggunakan alat perusahaan.
  • [ ] Saya menegaskan bahwa keputusan untuk memasukkan produksi dan keamanan tetap berada di tangan manusia.