프로그램 분석 을 시작하는 데 필요한 리소스를 찾고 있습니다.
제가이 주제에서 찾은 유일한 책은 Nielson & Nielson 책입니다.
그 외에는 "프로그램 분석"이 챕터 또는 그 행을 따르는 "컴파일러"책만있는 것 같습니다.
사람들이 다른 자원을 알고 있습니까?
프로그램 분석 을 시작하는 데 필요한 리소스를 찾고 있습니다.
제가이 주제에서 찾은 유일한 책은 Nielson & Nielson 책입니다.
그 외에는 "프로그램 분석"이 챕터 또는 그 행을 따르는 "컴파일러"책만있는 것 같습니다.
사람들이 다른 자원을 알고 있습니까?
답변:
불행히도 주제에 관한 많은 교과서가 없습니다. 오늘 프로그램 분석을 배우는 가장 좋은 방법은 사용 가능한 여러 코스를 조사하고, 몇 가지 구현을하고, 특정 요구에 맞는 몇 가지 연구 논문을 보는 것입니다. 다음에 나오는 것은 매우 작은 것입니다. 컴파일러 중심 분석을 쉽게 찾을 수 있다고 언급 했으므로 아래에서는 이러한 자료를 다루지 않습니다.
웹 기반 리소스 다음은 컴파일 컨텍스트 외부에서 정적 분석 사용을 강조하는 기사입니다.
프로그램 분석에 대한 리버스 엔지니어링 Reddit 토론 에는 많은 유용한 링크가 있습니다.
추상적 해석에 관한 Mozilla Wiki .
Flash Sheridan 의 Dr. Dobbs 기사 정적 분석 배포
수십억 줄의 코드 라인 : 정적 분석을 사용하여 실제 세계에서 버그 찾기 , Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, Dawson Engler ACM의 커뮤니케이션에서.
프로그램 분석에 대한 대학 과정
가지고 놀 도구
여기에 많은 연구 도구가 없습니다. 그중 많은 것들이 있지만 나는 당신이 다운로드하고 지역을 더 잘 이해하기 위해 놀 수있는 몇 가지를 나열하려고했습니다.
Interproc 은 수치 정적 분석에 대해 배우기 위해 사용하는 매우 교육적인 도구입니다.
실제로 숫자 분석을하고있는 경우 Apron Numeric Abstraction 라이브러리 .
Slayer 는 Microsoft Research의 형상 분석 도구입니다.
jStar 는 분리 로직을 기반으로하는 Java 용 분석기입니다.
Microsoft Research 에는 수많은 도구를 개발하는 수많은 그룹이 있으며 그 중 다수는 다운로드하거나 웹 데모를 제공합니다. 나는 여기에 모든 것을 나열 할 수 없으며 당신이 그들과 놀기를 제안합니다.
더 많은 것이 있지만 아마도 당신을 잠시 동안 바쁘게 유지하기에 충분할 것입니다.
이 분야는 매우 광범위합니다 ... 프로그램 정확성의 증거를 찾으십시오 ( Klee 와 같은 몇 가지 도구가 있습니다 ). 그런 다음 다양한 정교함을 가진 모든 종류의 "프로그램 검사기"(예 : 범위 샘플링을위한 부목 또는 결함 탐지기 참조 ), "프로그램 지침 준수"를 확인하는 프로그램이 있습니다. 리눅스의 일치조차도이 범주에 속합니다.
다이나믹 툴의 경우, 모든 종류의 성능 / 테스트 커버리지 툴과 valgrind 와 같은 메모리 검사를위한 툴이 있습니다 .
관심 범위를 좁힌 다음 드릴 다운하십시오.
있다 이 개 연구의 초점을 맞추고 : 프로그램 분석 dynamic
및 static
프로그램 분석.
프로그램 분석을 처음으로 맛 보려면 컴파일러에 대한 배경 지식이있는 경우 Dragon 책의 4 장, 6, 9 장을 읽는 것이 좋습니다 .
또는 최소한 기본 그래프를 알고 있다면 MIT 6.820 및 CMU 17-355 / 17-665 / 17-819 와 같은 대학원 수준의 과정을 따르는 것이 좋습니다 .
위는 정적 프로그램 분석에 관한 것입니다. 동적 프로그램 분석에 대해 더 관심을 경우 , 프로그램 프로파일 링은 시작하기에 좋은 지점입니다.