Program Analizine başlarken


10

Program analizine başlamak için kaynaklar arıyorum .

Bu konuda bulduğum tek kitap Nielson & Nielson kitabı.

Bunun dışında, "program analizi" nin bir bölüm ya da bu satırlar boyunca bir şey olacağı sadece "derleyici" kitaplar var gibi görünüyor.

İnsanlar başka kaynakları biliyorlar mı?


3
Başlamak için Nielson ve Nielson'u yenmek zor. Anket kağıtları için Google. Statik Analiz Sempozyumu'nun (SAS) son bildirilerine bakın. Sonra ilgilendiğiniz google özel analizleri.
Dave Clarke

Liste sorularını pek beğenmediğimizi unutmayın . Neyse ki, bu iyi bir cevap almış gibi görünüyor, ancak lütfen bu tür sorular sormaktan kaçının. Google'ı kendiniz yapın ve bulduğunuz kaynaklardaki şeyleri sorun.
Raphael

Yanıtlar:


7

Ne yazık ki konuyla ilgili çok fazla ders kitabı yok. Bugün program analizini öğrenmenin en iyi yolunun mevcut olan farklı dersleri incelemek, birkaç uygulama ile oynamak ve daha sonra özel ihtiyaçlarınız için birkaç araştırma makalesine bakmak olduğunu düşünüyorum. Bunu izleyen şey, dışarıdakilerin çok küçük bir örneklemidir. Özellikle derleyici odaklı analizlerin kolay bulunabildiğinden, bu tür materyalleri aşağıda ele almayacağım.

Web tabanlı kaynaklar Bunlar, bir derleme bağlamı dışında statik analiz kullanımını vurgulayan makalelerdir.

  1. Program analizi üzerine bir Ters Mühendislik Reddit tartışmasının birçok yararlı bağlantısı vardır.

  2. Soyut yorum üzerinde Mozilla Wiki .

  3. Statik Analiz Uygulaması , Flash Sheridan'ın Dr. Dobbs makalesi

  4. Birkaç Milyar Kod Daha Sonra: Gerçek Dünyadaki Hataları Bulmak için Statik Analiz Kullanmak , Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, Dawson Engler ACM İletişiminde.

Üniversite program analizi dersleri

  1. Arhus Üniversitesi'nden Anders Møller , nesne yönelimli ve web teknolojisini kapsayan bir ders vermektedir .
  2. Colorado Boulder Üniversitesi'ndeki Bor-Yuh Evan Chang , OCaml uygulaması ve lisansüstü kursu içeren bir temel kursa sahiptir .
  3. California Santa Barbara Üniversitesi'nden Ben Hardekopf büyük ödevlere sahipti , ancak artık çevrimiçi olarak mevcut değiller. Dersini alan bazı öğrenciler bir Python uygulamasını hazırlamış gibi görünüyor .
  4. Markus Müller-Olm , Android analizi üzerine yüksek lisans dersine sahiptir .
  5. Sarbruecken Üniversitesi'ndeki Reinhard Wilhelm , zamanlama analizi, önbellek davranış tahmini ve bazı şekil analizi gibi statik analiz uygulamalarını kapsayan bir yüksek lisans dersi vermektedir .
  6. MSR'den Sumit Gulwani , Oregon Programlama Dilleri Yaz Okulu'nda programların (zaman / bellek) kaynak tüketiminin statik olarak tahmin edilmesi konusunda güzel bir ders verdi .
  7. Berkeley'deki California Üniversitesi'ndeki Koushik Sen , böcek bulmaya odaklanan ve konuları konik yürütme ve yazılım modeli kontrolünü kapsayan bir kurs öğretiyor .
  8. Maryland Üniversitesi'ndeki Jeffrey Foster , tip sistemleri, model kontrolü, takma ad analizi ve diğer birçok normal materyali kapsayan bir ders veriyor .
  9. Patrick Cousot bir yılı MIT'de geçirdi ve soyut yorum üzerine kapsamlı ve temel bir ders verdi. Ödevler, somut toplama semantiğinden algoritmik olarak önemsiz olmayan fikirlere uzanan bir OCaml uygulamasını içerir.
  10. Bir lisansüstü ders alanında bazı liderleri tarafından öğretilen soyut yorumunu da fazla teorisi üzerine yakalamak için iyi bir yerdir.
  11. Patrick Cousot , 2009'da Oregon Programlama Dilleri Yaz Okulu'nda soyut yorumlama üzerine kısa bir ders verdi .

Oynamak için araçlar

Burada çok fazla araştırma aracı listelemiyorum. Bunların birçoğu var ama alanı daha iyi anlamak için indirip oynayabileceğiniz birkaçını listelemeye çalıştım.

  1. Interproc , sayısal statik analiz hakkında bilgi edinmek için oynamak için çok eğitici bir araçtır.

  2. Gerçekten sayısal analiz yapıyorsanız Apron Sayısal Soyutlama kütüphanesi .

  3. Slayer , Microsoft Research'ten bir şekil analiz aracıdır.

  4. jStar , Java için ayırma mantığına dayanan bir analizördür.

  5. Microsoft Research'te , birçoğu indirilebilir veya web demoları olan çok sayıda araç geliştiren çok sayıda grup vardır. Burada her şeyi listeleyemiyorum ve onlarla oynamanızı tavsiye edemem.

Çok daha fazlası var, ama muhtemelen bir süre meşgul etmek için yeterli.


Vay be, şimdi bu kapsamlı bir cevap! Çok teşekkürler!
13'te 21

@Vijay Cevabınız için teşekkür ederim! Derleyici analizi için benim için birkaç işaret ekleyebilir misiniz acaba?
AnneTheAgile

@AnneTheAgile, bence uzatma ayrı bir soru ve cevap. Lütfen soruyu sorun ve cevabı vermekten mutluluk duyuyorum.
Vijay D

@VijayD, teşekkür ederim! Ben yazdım; cs.stackexchange.com/questions/13392/…
AnneTheAgile

Çok yavaş yanıt veriyorum ve yazım silindi. @VijayD belki beni IM veya buraya ekleyebilirsiniz? İlgilendiğim temel şey. Hangi "bulmak kolay" hangi "derleyici odaklı analiz" bulmak için emin değilim? Alanda yeniyim ve doğru şekilde başlamak istiyorum. ty!
AnneTheAgile

2

Bu alan son derece geniştir ... programın doğruluğuna dair kanıtlar arayın (etrafında Klee gibi birkaç araç vardır ). Daha sonra , "programlama yönergelerine uygunluğu" kontrol eden programlar , çeşitli karmaşıklığa sahip her türlü "program denetleyicisi" (örneğin , aralıktan örnekleme için atel veya kusur bulucuya bakınız ) vardır. Linux'un işlenmesi bile bu kategoriye girer.

Dinamik araçlar için, her türlü performans / test kapsamı araçları ve valgrind gibi bellek kontrolü için şeyler vardır .

İlgi aralığını daraltın, sonra ayrıntıya inin.


Teşekkürler. Bahsettikleriniz araçlardır , ama statik program analizi hakkında kitaplar veya anketler ne olacak?
Mart'ta

1

Orada iki araştırma odakları : Program analizinde dynamicve staticprogram analizi.

Program analizinin ilk zevkine sahip olmak için , derleyicilerde arka planınız varsa Dragon kitabında Bölüm 4, 6, 9'u okumanızı tavsiye ederim .

Veya en azından temel grafikleri biliyorsanız, MIT 6.820 ve CMU 17-355 / 17-665 / 17-819 gibi bir lisansüstü dersi takip etmek daha iyi olur .

Yukarıdakiler statik program analizi ile ilgilidir. Dinamik program analizi hakkında daha fazla önem veriyorsanız , program profili oluşturma iyi bir başlangıç ​​noktasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.