인공지능 시대가 오면서 새로운 문제점이 생겨나고 있습니다.
그중 하나가 문제 식별 문제입니다.
러버덕 디버깅은 이러한 문제점을 효과적으로 잡아주는 프로그램입니다.
오늘은 러버덕 디버깅뜻 과 장단점 및 다양한 디버깅 방법을 완벽하게 정리해 드리겠습니다.
러버덕 디버깅 뜻
러버덕 디버깅은 Rubber Duck (고무 오리)와 devugging(디버깅)이 합성된 언어로 돌발 문제점이 발견되었을 때 고무 오리에게 반복적으로 설명을 해서 문제를 해결하는 방법입니다.
쉽게 설명하면 개발자가 문제점을 발견했을 때 이를 해결하기 위해 장난감 오리에게 문제를 설명하면서 문제점을 해결하는 것을 말합니다.
1. 유래
러버덕 디버깅은 ‘데이비드 토머스’의 책 ‘실용주의 프로그래머’에서 처음 소개가 되었습니다.
데이티브 토머스는 당시 ‘러버덕 디버깅은 프로그래머가 아니기 때문에 코드를 이해하기 어려운 경우가 많습니다.
하지만 개발자가 코드를 다른 사람에게 설명을 하다 보면, 예상하지 못한 동작을 발견하게 되고 , 이러한 문제를 해결할 새로운 방법을 얻을 수 있다.’라고 하였습니다.
2. 러버덕 디버깅 사용 방법
1) 러버덕에게 코드 설명
2) 러버덕에게 코드의 각 부분은 간단하고 명확하게 설명하고, 꼭 결과도 설명해야 합니다.
3) 러버덕에게 코드를 설명하다 보면, 예상치 못한 동작 발견 하게 됩니다. 이 부분을 집중적으로 조사합니다.
4) 다양한 방법으로 오류를 해결할 방법을 고민을 해보고, 해결 방안을 찾습니다.
5) 문제 해결 후 코드 다시 실행하여 결과 확인합니다.
러버덕 디버깅 장단점
러버덕 디버깅은 간단한 프로그램이지만 장점 및 단점이 존재합니다.
1. 장점
1) 코드의 각 부분을 러버덕에게 쉽게 풀어서 설명을 하다 보면, 생각지 못하게 그 부분에 대해 이해를 하게 되고, 오류를 발견할 가능성이 높아집니다.
2) 사람은 내가 작성한 프로그램에 대해 오류를 잡아 내기가 힘듭니다. 하지만 다른 사람에게 설명을 하다 보면, 내 시야가 아닌 다른 사람 시각으로 바라볼 수 있기 때문에 예상치 못한 문제를 발견하기 쉽습니다.
3) 이러한 문제 해결 방법을 숙달하게 되면, 더욱 빠르고 효율적 해결 방안을 찾아낼 수 있습니다.
4) 러버덕 디버깅은 혼자 할 수 있지만, 다른 사람과 공유해서 할 수 있으며, 다른 사람과 같이 할수록 더욱 효율성이 높아집니다.
2. 단점
1) 러버덕에게 코드 각 부분을 알기 쉽게 풀어서 설명을 해줘야 하기 때문에 시간이 오래 걸립니다. 만약 코드가 복잡하고, 어려울 경우에는 더욱 많은 시간이 소모됩니다.
2) 장난감에게 말을 걸어 본 적 있으신가요? 처음 장난감에게 말을 할 때 엄청 어색할 수 있습니다.
만약 주변에 다른 사람들이 있다면 더욱 그런 생각이 많이 듭니다.
하지만 계속하다 보면 익숙해집니다. 처음이 힘든 것이지 하다 보면 괜찮습니다.
다양한 디버깅 방법
러버덕 디버깅은 오래전부터 있었던 방법입니다. 그만큼 효과적이긴 하지만 단점이 존재합니다.
그래서 다른 다양한 디버깅 방법을 알려드리겠습니다.
1. 코드 리뷰 사용
코드 리뷰는 어떻게 보면 러버덕 디버깅과 비슷하지만 다른 점이 있다면, 내가 아닌 다른 사람에게 검토를 부탁하는 것입니다.
내가 아닌 다른 사람의 시각으로 코드를 보기 때문에 보다 쉽게 예상치 못한 문제점을 발견을 할 수 있고 시간 단축 할 수 있다는 장점이 있습니다.
하지만 사실 유무를 꼭 확인해야 합니다.
2. 디버거 사용
디버거는 디버깅 전문 프로그램으로 코드를 제어하여, 변수 값을 확인하고, 코드의 흐름을 추적해서 오류를 찾아내는 방법입니다.
확실히 좋은 방법이나 디버거를 사용하면 코드 실행 속도가 크게 느려질 수 있고, 코드를 복잡하게 만들 수 있습니다.
3. 테스트 코드 사용
테스트 코드를 작성하여 문제점을 찾는 방법으로 코드를 실행하지 않아도 문제점을 쉽게 이해하고 분석이 가능합니다.
하지만 테스트 코드를 유지 관리 하는데 어려움이 있고 코드가 변경되면 테스트 코드도 업데이트를 해야 하는 단점이 있습니다.
4. 브레이크 포인트 사용
브레이크 포인트 사용 방법은 코드 실행 중 특정 지점에서 실행을 중단하도록 설정하는 기능으로 문제 발생 지점을 쉽게 찾을 수 있고 코드 실행 흐름을 쉽게 이해할 수 있습니다.
하지만 코드 실행 중 특정 지점에서 실행이 중단되기 때문에 코드 실행 속도가 크게 느려질 수 있고, 코드를 복잡하게 만들 수 있습니다.
이외에도 다양한 디버깅 방법이 있습니다.
하지만 각 방법은 장단점이 있으니 어떠한 방법을 사용하실지는 개발자의 선택입니다.
마치며
오늘은 러버덕 디버깅 뜻과 장단점, 다양한 디버깅 방법에 대해 알려 드렸습니다.
디버깅은 개발자에게는 꼭 필요한 방법이고, 개발자가 아니더라도 일상생활에 적용할 수 있습니다.
저 같은 경우 생각지 않은 문제점이 있을 때 러버덕은 아니지만 혼자 하는 말을 통해 문제점을 찾아보고 해결을 하고 있습니다.
여러분들도 꼭 러버덕이 아니어도 상관없습니다.
잘 풀리지 않는 문제점이나 고민이 있을 때 속으로 쌓아 놓지 마시고 혼자 하는 말이라도 좋으니 얘기를 하면서 문제점을 찾고 해결하시기 바랍니다.
끝까지 읽어주셔서 감사합니다.