•
인간의 가장 좋은 친구는 반려견이고 개발자의 가장 좋은 친구는 훌륭한 도구다.
1. 설계 도구
•
설계 도구는 설계 다이어그램을 만드는 그래픽 도구가 주요하다.
2. 소스코드 도구
편집
•
IDE
•
다중 파일 문자열 검색 및 바꾸기
•
차이 비교 도구
•
병합 도구
•
소스코드 정돈 도구
•
인터페이스 문서화 도구
•
템플릿
•
참조 도구
•
클래스 계층 구조 생성기
코드 품질 분석
•
까다로운 문법 및 의미 검사기
•
메트릭 보고 도구
소스코드 리팩토링
•
리팩토링 도구
•
재구성 도구
•
코드 변환 도구
버전 관리
•
다음 경우에 버전 관리 도구를 사용하면 소프트웨어 버전을 적절히 다룰 수 있다.
◦
소스코드 제어, 프로젝트 문서 버전 관리, 요구사항 코드
데이터 사전
•
데이터 사전은 주로 데이터베이스 스키마를 다룬다.
3. 실행 코드 도구
코드 생성
•
컴파일러와 링커
•
빌드 도구
•
코드 라이브러리
•
코드 생성 마법사
•
설정과 설치
•
전처리기
디버깅
•
컴파일러 경고 메시지, 테스트 더블, Diff 도구, 실행 프로파일러, 추적 모니터
테스트
•
XJunit 같은 자동화된 테스트 프레임워크
•
자동화된 테스트 생성기
•
테스트 케이스 기록과 실행 유틸리티
•
커버리지 모니터
•
심볼릭 디버거
•
Diff 도구
•
비계법
코드 튜닝
•
실행 프로파일러
◦
프로그램이 실행되는 동안 코드를 감시한 후 각 명령문의 실행 횟수나 각 명령문을 실행하는 데 걸린 시간 또는 실행 결로를 말해준다.
◦
어떻게 작동하는지, 가장 문제가 될 만한 곳은 어딘지, 그리고 어느 코드의 성능을 개선해야 하는지 알려준다.
•
어셈블러 소스와 디스어셈블러
4. 도구 지향적인 환경
•
몇몇 환경은 다른 환경보다 도구 지향적인 프로그래밍에 훨씬 적합하다.
◦
UNIX 환경은 grep, diff, sort와 같이 유기적으로 잘 작동하는 재밌는 이름의 작은 도구를 잘 모아둔 것으로 유명한다.
5. 자신만의 프로그래밍 도구 개발
프로젝트에 특화된 도구
•
데이터 파일의 품질을 검증하기 위해 특별한 종류의 테스트 데이터를 만드는 도구나 아직 존재하지 않는 하드웨어를 흉내내느 도구가 필요할 수 있다.
•
프로젝트의 계획을 세울 때는 필요한 도구를 생각하고 그러한 도구를 작성하는데 시간을 충분히 할애해야 한다.
스크립트
•
반복적인 작업을 자동화하는 도구다.
•
5자 이상의 문자열을 하루에 몇 번 이상 반복해서 입력하고 있다면 그것이 레이아웃 파일이나 스크립트로 만들 수 있는 좋은 예시다.
6. 프로그래밍 도구에 대한 환상
•
도구가 계속 변화하는 이유는 좋은 도구의 도움을 받더라도 본질적으로 프로그래밍은 어렵기 때문이다.
•
아무리 좋은 도구들이 만들어지더라도 개발자들은 복잡한 현실 세계와 싸워야할 것이다.
◦
순서와 의존성, 예외에 대해서 정확하게 생각해야 하고 갈팡질팡하는 고객을 상대해야 한다.
•
항상 해결되어야 할 현실 세계 문제와 그러한 문제를 해결하기 위한 컴퓨터 사이를 연결해줄 수 있는 사람이 필요하다.
요점 정리
•
개발자들은 때로는 수년 동안 간과하고 있다가 가장 강력한 도구를 발견하기도 한다.
•
좋은 도구를 사용하면 삶이 더 편해진다.
•
편집, 코드 품질 분석, 리팩토링, 버전 관리, 디버깅, 테스트, 코드 튜닝에 사용할 수 있는 도구가 있다.
•
프로젝트에 종속되는 특수한 목적을 가진 도구를 많이 만들 수 있다.
•
좋은 도구가 소프트웨어 개발에서 지루한 작업을 줄여줄 수는 있으나 프로그래밍에 대한 본질적인 필요성을 없앨 수는 없다.
◦
그것들이 프로그래밍이라는 형태를 새로이 만들어도 그 본질에는 변함이 없다.