Saya mencari sumber daya untuk memulai dengan analisis program .
Satu-satunya buku yang saya temukan pada topik adalah buku Nielson & Nielson .
Selain itu, sepertinya hanya ada buku "kompiler" di mana "analisis program" akan menjadi bab, atau sesuatu di sepanjang baris itu.
Apakah orang tahu sumber daya lain?
Jawaban:
Sayangnya tidak ada banyak buku pelajaran tentang topik ini. Saya pikir cara terbaik untuk mempelajari analisis program hari ini adalah dengan mensurvei berbagai kursus yang tersedia, bermain dengan beberapa implementasi dan kemudian melihat beberapa makalah penelitian untuk kebutuhan spesifik Anda. Berikut ini adalah contoh sangat kecil dari apa yang ada di luar sana. Karena Anda secara khusus menyebutkan analisis berorientasi compiler mudah ditemukan, saya tidak akan membahas materi seperti di bawah ini.
Sumber daya berbasis web Ini adalah artikel yang menekankan penggunaan analisis statis di luar konteks kompilasi.
Sebuah diskusi Reverse Engineering Reddit pada analisis program memiliki banyak link yang berguna.
Mozilla Wiki pada interpretasi abstrak.
Menyebarkan Analisis Statis , artikel Dr. Dobbs oleh Flash Sheridan
Beberapa Miliar Baris Kode Kemudian: Menggunakan Analisis Statis untuk Menemukan Bug di Dunia Nyata , Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, Dawson Engler dalam Komunikasi ACM.
Kursus universitas tentang analisis program
Alat untuk bermain
Saya tidak mencantumkan banyak alat penelitian di sini. Ada banyak dari mereka tetapi saya telah mencoba daftar beberapa yang dapat Anda unduh dan mainkan untuk memahami area dengan lebih baik.
Interproc adalah alat yang sangat mendidik untuk belajar tentang analisis statis numerik.
Perpustakaan Abstraksi Angka Apron jika Anda benar-benar ke dalam analisis numerik.
Slayer adalah alat analisis bentuk dari Microsoft Research.
jStar adalah penganalisis untuk Java yang didasarkan pada logika pemisahan.
Microsoft Research memiliki banyak grup yang mengembangkan berbagai alat, banyak di antaranya tersedia untuk diunduh atau memiliki demo web. Saya tidak bisa daftar semuanya di sini dan menyarankan Anda bermain dengan mereka.
Ada banyak lagi, tetapi itu mungkin cukup membuat Anda sibuk untuk sementara waktu.
sumber
Bidang ini sangat luas ... cari bukti kebenaran program (ada beberapa alat di sekitar, seperti Klee ). Lalu ada segala macam "pemeriksa program" dengan berbagai kecanggihan (lihat misalnya belat atau pencari cacat untuk contoh kisaran), program yang memeriksa "kepatuhan pedoman pemrograman". Bahkan smatch Linux termasuk dalam kategori ini.
Untuk alat dinamis, ada segala macam alat cakupan kinerja / tes di sekitar, dan hal-hal untuk memeriksa memori seperti valgrind .
Persempit rentang minat, lalu telusuri.
sumber
Ada dua fokus penelitian dalam analisis program:
dynamic
danstatic
analisis program.Untuk merasakan analisis program pertama kali, saya sarankan untuk membaca Bab 4, 6, 9 di buku Naga jika Anda memiliki latar belakang dalam kompiler .
Atau jika setidaknya Anda tahu grafik dasar, akan lebih baik untuk mengikuti kursus tingkat pascasarjana, seperti MIT 6.820 dan CMU 17-355 / 17-665 / 17-819 .
Di atas adalah tentang analisis program statis. Jika Anda lebih peduli tentang analisis program dinamis , pembuatan profil program adalah langkah yang baik untuk memulai.
sumber