Unit 1 / 12

Pengenalan kepada Kecerdasan Buatan dan Disiplin Pengesahan dalam Kejuruteraan Komputer

Keuntungan:

  • Keupayaan untuk membezakan di mana AI menyediakan kelajuan sebenar dalam kitaran hayat pembangunan perisian dan di mana keputusan dan tanggungjawab kekal dengan jurutera
  • Keupayaan untuk menerapkan disiplin kejuruteraan tiga lapisan yang mengesahkan setiap kod dan reka bentuk yang dihasilkan melalui penyusunan, ujian dan semakan.
  • Biasakan mengosongkan konteks untuk memanfaatkan AI tanpa berkongsi kod sumber sulit, bukti kelayakan dan data pelanggan

Apabila anda melihat hari jurutera komputer, gambar adalah serupa dalam kebanyakan pasukan: memahami permintaan perniagaan, mereka bentuk, menulis kod, membaca kod orang lain, nyahpepijat (proses mengetahui sebab program berfungsi dengan tidak betul dan membetulkannya), menulis ujian, menyediakan dokumentasi, menyemak kod dan menghadiri mesyuarat. Dalam erti kata lain, masa yang ditumpukan kepada "penghakiman kejuruteraan" sebenar, iaitu, sama ada penyelesaian itu betul, selamat dan mampan, dihancurkan di bawah kerja yang berulang. Di sinilah kecerdasan buatan (pendek kata AI; perisian yang berfungsi pada teks dan kod dengan model bahasa yang besar) dimainkan. AI tidak membuat keputusan untuk anda; Ia menyediakan anda untuk membuat keputusan, menghasilkan rangka kod, mengecilkan pepijat dan meletakkan draf yang telah dikerjakan di hadapan anda. Sepanjang modul ini kami akan meletakkan AI bukan sebagai "pengaturcara automatik" tetapi sebagai rakan pengaturcaraan pasangan berdisiplin yang outputnya disusun, diuji dan disemak setiap kali.

Dalam unit pertama ini, kami menjelaskan tiga perkara: Pada peringkat apakah kitaran hayat pembangunan perisian (peringkat yang dilalui perisian daripada idea kepada pengeluaran: analisis, reka bentuk, pengekodan, ujian, penggunaan, penyelenggaraan) AI menambah nilai sebenar; keputusan yang mana harus kekal dengan ketat oleh jurutera; dan apakah pengesahan dan disiplin kerahsiaan yang anda mesti patuhi semasa melakukan perkara ini. Tanpa bumbung ini dipasang dengan betul, teknik pada unit berikutnya boleh menjadi berbahaya; Kerana ralat dalam perisian menjangkau berjuta-juta pengguna pada masa yang sama dan boleh bertukar menjadi kelemahan keselamatan.

Konsep: Halusinasi: Pembuatan AI yang meyakinkan tentang kaedah, perpustakaan, API atau tingkah laku yang sebenarnya tidak wujud. Konteks: Input yang anda berikan kepada AI (kod, mesej ralat, keperluan, kekangan). Pengesahan: Menyemak output dengan cara bebas (kompilasi, ujian, dokumentasi). Ketiga-tiga konsep ini merupakan tunjang kepada keseluruhan modul.

Dalam Perniagaan Manakah AI Accelerator, Dalam Perniagaan Manakah Ia Berisiko?

Pekerjaan perisian jatuh pada spektrum serampang dua mata dari segi hasil. Pada satu hujung boleh diterbalikkan, kerja persediaan berisiko rendah; Di sisi lain, terdapat tugas yang sukar dikembalikan yang memasuki persekitaran pengeluaran dan boleh menyebabkan kehilangan data, kelemahan keselamatan atau gangguan. Nilai AI berbeza-beza bergantung pada kedudukan anda pada spektrum ini.

jenis perniagaan

Sumbangan AI

Peranan jurutera

Kod rangka / boilerplate

Penjanaan pesat struktur berulang

Logik dan kawalan status tepi

penyahpepijatan

Hipotesis dan senarai sebab yang mungkin

Pengeluaran semula dan pengesahan punca

ujian menulis

Draf ujian dan penciptaan senario

Penegasan yang bermakna dan pemeriksaan skop

pemfaktoran semula

Cadangan pemfaktoran semula

Mengekalkan tingkah laku melalui ujian

Dokumentasi

Draf dan struktur pertama

Semakan ketepatan terhadap kod

Keputusan seni bina/keselamatan

Senarai pilihan dan kebaikan dan keburukan

Keputusan dan tanggungjawab muktamad

Peraturannya mudah: risiko output AI sama dengan kerosakan yang akan ditanggung jika output itu membuat ralat. Mencadangkan nama pembolehubah secara salah adalah tidak berbahaya; Pengesahan yang tidak betul (menyemak sama ada pengguna itu benar-benar orang yang mereka dakwa) menjadikan keseluruhan sistem terdedah. Jadi soalan pertama yang perlu ditanya sebelum menggunakan output ialah: "Apa yang berlaku jika ini salah dan siapa yang perasan dan bila?"

Awas: AI menghasilkan kod yang fasih dan yakin. Kefasihan bukan jaminan ketepatan. Model bahasa boleh menghasilkan nama fungsi yang sebenarnya tidak wujud, jujukan parameter yang salah, atau bahkan corak yang tidak selamat. Dalam perisian, ini tidak kekal di atas kertas; Ia menyusun, berjalan, dan meletup dalam pengeluaran.

Keputusan Yang Harus Diserahkan Kepada Jurutera

Sesetengah keputusan tidak boleh diautomatikkan sepenuhnya; membawa risiko teknikal, undang-undang dan etika:

  • Kelulusan untuk pengeluaran: Pengeluaran kod ke dalam pengeluaran dan tanggungjawab untuk ini.
  • Keselamatan dan seni bina: Keputusan mahal seperti pengesahan, kebenaran, penyulitan dan model data.
  • Lesen dan hak cipta: Kebolehgunaan kod yang dihasilkan dalam produk komersial dan pematuhan lesen.
  • Bekerja dengan data sulit: Transaksi dengan data pelanggan, rahsia kod sumber dan maklumat identiti.
Amaran: Walaupun AI ​​mengatakan "kod ini selamat dan sedia untuk pengeluaran", menerima ini tanpa ujian keselamatan, semakan kod dan pengesahan di bawah beban sebenar adalah tidak boleh diterima. Dalam kerja kritikal keselamatan, output AI tidak sekali-kali boleh menggantikan kelulusan daripada jurutera yang cekap; Sebarang output yang membawa kepada keputusan mesti disahkan secara bebas dan diluluskan oleh jurutera yang diberi kuasa sebelum pelaksanaan.

Disiplin Pengesahan: Kawalan Tiga Lapisan

Gunakan tiga lapisan kawalan untuk menggunakan output AI seperti pengulas kanan dan bukannya membabi buta. Ini adalah refleks asas yang akan kami ulangi sepanjang modul.

  1. Penyusunan dan semakan statik: Adakah kod itu sebenarnya disusun/dijalankan? Adakah terdapat ralat jenis, pembolehubah tidak digunakan, API tidak wujud? Apakah yang dikatakan oleh alat analisis statik (alat yang memeriksa kod tanpa menjalankannya)?
  2. Pengeluaran semula bebas (ujian): Jalankan kod dengan input kecil yang diketahui dan lihat jika anda mendapat output yang diharapkan. Cuba kes tepi (null, sifar, negatif, besar).
  3. Pengesahan sumber: Setiap API, versi perpustakaan dan ciri bahasa yang digunakan AI harus disahkan daripada dokumentasi rasmi.

Gesaan pengesahan (membuat lebih mudah untuk menyemak output): "Senaraikan SEMUA perpustakaan luaran, kaedah dan ciri bahasa yang anda gunakan dalam kod anda. Bagi setiap satu, nyatakan versi mana ia tersedia dan labelkan ia 'mesti disahkan daripada dokumentasi'. Jangan buat sebarang API yang anda tidak pasti; jika anda tidak pasti, tulis dengan jelas 'tidak pasti'. Senaraikan juga mana-mana kes tepi yang anda miliki sebagai senarai berasingan."

Kritik gesaan kod anda sendiri: "Lihat secara kritis pada kod yang baru anda tulis, seperti jurutera kanan yang mengupah anda. Berikan item konkrit di bawah tiga tajuk ini: (1) ralat logik/kes tepi, (2) risiko keselamatan, (3) masalah prestasi atau kebolehbacaan. Untuk setiap item, tulis 'mengapa masalahnya' dan 'cadangkan pembaikan'. Jika tiada masalah, jangan cuba mencari masalah."

Gesaan Lemah / Gesaan Kuat

LEMAH:"Tulis saya fungsi pengesahan pengguna."(Hasil: tidak jelas bahasa mana, peraturan mana, tingkah laku ralat mana; kod generik, selalunya tidak selamat atau di luar konteks.) KUAT:"Tulis fungsi pengesahan e-mel untuk Python 3.11. Input: rentetan. Output: Betul jika sah, Palsu sebaliknya. Peraturan: Pematuhan rentetan kosong AS TIDAK mencukupi. Tidak diperlukan pustaka luar RFC. Ujian 5-sampel di bawah blok tambah fungsi: sah, kosong, tiada '@', dua kali '@', mengandungi ruang sahaja."

Perbezaannya adalah dalam konteks. Gesaan yang kuat; Ia termasuk bahasa, versi, kontrak input-output, kekangan, dan jangkaan ujian. Disiplin tunggal ini sangat mengurangkan risiko halusinasi dan kod tidak selamat.

Kes Mini

Kes 1 — Kaedah rekaan. Seorang pembangun mendengar daripada AI bahawa terdapat kaedah yang dipanggil date.addBusinessDays(5) dalam pustaka tarikh dan ia dijelaskan dengan cara yang yakin. Melihat kepada dokumentasi, dia melihat bahawa tidak ada kaedah sedemikian, cara yang betul adalah gelung manual. Halusinasi ditangkap sebelum ia dikeluarkan dengan pengesahan selama 10 minit.

Kes 2 — Kehilangan keadaan tepi. AI menghasilkan fungsi "kira purata"; Ia berfungsi apabila diuji dengan 1,000 baris data. Walau bagaimanapun, apabila senarai itu kosong, ia memberikan pembahagian dengan ralat sifar. Memandangkan jurutera menambah ujian input kosong, dia melihat dan membetulkan ralat sebelum ia disiarkan secara langsung. Ujian keadaan tepi tunggal menghalang penggera pengeluaran pada pukul 3 pagi.

Kes 3 — Risiko privasi. Seorang pakar akan menampal fail dengan rentetan sambungan pangkalan data sebenar dan kunci API ke dalam alat awam. Mengingati dasar institusi; Ia menggantikan rahsia dengan <REDACTED>, mengurangkan kod kepada contoh yang mewakili, dan memintanya. Oleh itu, dia mendapat bantuan dalam masa 5 minit, tetapi maklumat identitinya tidak keluar.

Prinsip Bekerja dengan Kod Rahsia dan Maklumat Identiti

Bahagian perisian yang paling sensitif; rahsia kod sumber, maklumat identiti (kunci API, kata laluan, token) dan data pelanggan/peribadi. Prinsip asas: bersihkan sebelum berkongsi, tanya hanya intipati masalah dengan contoh yang mewakili jika boleh.

Corak gesaan tanpa nama: "Terdapat ralat dalam fungsi berikut. Saya menggantikan logik perniagaan sebenar dan pemalar tersembunyi dengan nilai perwakilan (kunci API, nama jadual, nama generik medan). Masalah: Saya mendapat ralat Y dalam input X. Cuma cari ralat logik dalam kod wakil ini dan terangkan versi yang diperbetulkan. [kod perwakilan]"

Petua: Jika ragu-ragu, ambil ujian ini: "Adakah organisasi saya akan menghadapi masalah jika saya menulis ini secara terbuka dalam forum?" Walaupun jawapannya tidak jelas, jelaskan dahulu. Menetapkan semula sentiasa lebih murah daripada mengejar kebocoran kemudian.

Kesilapan biasa

  • Menggunakan output tanpa menyusun/menguji. "AI menulis" bukan justifikasi; Setiap keping kod disahkan dengan menjalankannya.
  • Membuat permintaan tanpa konteks. Jika bahasa, versi, input-output dan kekangan tidak diberikan, kod tersebut menjadi generik dan selalunya tidak selamat.
  • Berkongsi maklumat sulit tanpa berfikir. Kunci API, kata laluan dan data pelanggan tidak boleh dikeluarkan tanpa dibersihkan.
  • Mengelirukan bahasa tepat dengan ketepatan. Semakin yakin AI bercakap, semakin berhati-hati anda; Nada yakin bukan bukti.
  • Mewakilkan keputusan kepada AI. Keputusan untuk dimasukkan ke dalam pengeluaran, keselamatan dan seni bina kekal dengan jurutera; AI hanya menghasilkan bahan.

Secara ringkasnya

AI mempercepatkan bahagian kerja perisian yang berulang dan memakan masa: kod rangka, penggubalan ujian, penyempitan pepijat, dokumentasi. Bagaimanapun, keputusan dan tanggungjawab tetap di tangan jurutera. Setiap output mesti melepasi tiga lapisan kawalan (kompil/statik, ujian, sumber). Menulis gesaan dengan konteks dan mengosongkan maklumat tersembunyi ialah dua tabiat utama yang akan kami ulangi dalam setiap unit modul ini. Apabila anda menggunakan AI dengan disiplin, anda mendapat kelajuan; apabila anda menggunakannya tanpa disiplin, anda membawa ralat dan kelemahan ke dalam pengeluaran.

Tugasan permohonan

Pilih tugas pengekodan kecil daripada kerja anda sendiri atau daripada projek khayalan (cth. fungsi pengesahan). Mula-mula tulis gesaan yang lemah dan dapatkan output. Kemudian gunakan corak gesaan yang berkuasa daripada unit ini: tambah bahasa/versi, kontrak input-output, kekangan dan jangkaan ujian. Letakkan dua cetakan sebelah menyebelah dan tulis perbezaannya. Kemudian susun keluaran teguh dan uji dengan sekurang-kurangnya tiga kes tepi (null, sifar/negatif, format tidak dijangka) dan perhatikan perkara yang anda temui dalam ujian mana.

senarai semak

  • [ ] Saya menambah bahasa, versi dan kontrak input-output pada gesaan.
  • [ ] Saya menulis "Jangan mengada-ada, beritahu saya jika anda tidak pasti" dan kekangan skop.
  • [ ] Saya menyusun/menjalankan kod, menyemak amaran statik.
  • [ ] Saya menguji dengan sekurang-kurangnya tiga kes tepi.
  • [ ] Saya mengesahkan API yang digunakan daripada dokumentasi rasmi.
  • [ ] Saya telah mengosongkan sebarang kod/kelayakan rahsia atau alat perusahaan yang digunakan.
  • [ ] Saya mengesahkan bahawa keputusan untuk dimasukkan ke dalam pengeluaran dan keselamatan kekal dengan manusia.