소프트웨어 엔지니어링의 성배를 요구하고 있으며 아직이 질문에 대한 "답변"을 가진 사람은 없습니다.
중요한 것은 수행중인 오류 유형을 추적 한 다음 이러한 오류를 분석하여 공통 추세가 있는지 확인하는 것입니다. 근본 원인 분석은 이러한 유형의 내부 검사에 대한 공식적인 이름이며 이에 관한 웹에는 많은 자료가 있습니다.
전문가들은 버그 추적 시스템을 사용하여 (1) 수정해야 할 사항을 알 수있을뿐 아니라 (2) 사후 수정해야 할 사항을 분석 할 수 있습니다. 당신은 그렇게 정식 일 필요는 없습니다. 노트북에 탈리 만 두는 것이 좋습니다.
설계 단계 결함
대부분의 오류가 문제 설명에 대한 오해에서 비롯된 것임을 발견하거나 계속해서 문제를 해결하기 위해 따라야 할 잘못된 알고리즘이나 경로를 선택한 경우 설계 단계에 문제가 있습니다.
프로젝트를 시작할 때 더 많은 시간이 걸리고 수행해야 할 작업과 수행 방법을 정확하게 작성하는 것이 좋습니다. 이 작업을주의 깊게 검토하고 원래 문제를 다시 검토하여 실제로 올바른 방식으로 문제를 해결하고 있는지 확인하십시오. 시작시 1 시간 또는 3 시간이 더 걸리면 많은 시간을 절약 할 수 있습니다.
코딩 오류
디자인이 견고하지만 코딩하는 언어와 끊임없이 싸우고 있다면 코드를 분석하고 조기에 경고하고 종종 실수를 저지르는 몇 가지 도구를 사용하십시오.
C로 프로그래밍하는 경우 모든 컴파일러 경고를 켜고와 같은 의미 검사기 lint
를 사용하고 valgrind
일반적인 동적 메모리 관련 문제를 포착 하는 것과 같은 도구를 사용하십시오 .
펄을 프로그래밍하는 경우에 설정 strict
하고 warnings
그것이 말하는 무엇을주의.
어떤 언어를 사용하든 디버깅 단계에 도달하기 전에 일반적인 실수를 잡는 데 도움이되는 많은 도구가있을 수 있습니다.
통합 단계 결함
훌륭한 모듈화 사례에 따라 코드를 개발할 때는 별도의 조각을 함께 붙여야합니다. 예를 들어, 코드의 다른 섹션은 사용자 입력, 데이터베이스 상호 작용, 데이터 표시, 알고리즘 / 논리와 관련이있을 수 있으며 각 섹션은 서로 독립적으로 구축됩니다 (즉, 해당 섹션에 집중하는 경향이 있음) 다른 모든 것들과의 통합에 대해 걱정하기보다는).
여기에 TDD (Test Drived Development)가 매우 유용합니다. 코드의 각 모듈에는 설계된 방식에 따라 작동하는지 확인하는 테스트가있을 수 있습니다. 이러한 테스트는 프로세스 초기에 작성되거나 매우 빠르므로 정직하게 유지하기 위해 "도우미"를 가질 수 있습니다. 모든 것이 함께 작동하기 시작하고, 이것이 구현되거나 다른 하위 시스템과 상호 작용하는 방식을 변경해야한다는 것을 알게되면 테스트를 다시 수행하여 수행 한 작업이 수행되었는지 확인할 수 있습니다. 그것은 모두 함께 작동하여 코드의 정확성을 깨뜨리지 않습니다.
등등...
소프트웨어 엔지니어링과 실용적인 코딩 기술에 관한 책을 집어 들고 개발을 혼란스럽고 신뢰성있게 만드는 다양한 방법을 배우게됩니다. 또한 딱딱한 노크 스쿨에서 학위를 취득하면 평범한 오래된 경험을 통해 몸매가 좋아질 것입니다.
거의 모든 것이 마무리되는 것은 약간의 시간과 선행 작업이 나중에 개발 / 릴리스 프로세스에서 큰 배당금을 지불한다는 것입니다.
경력 초기에 이러한 문제를 발견했다는 사실은 미래에 잘 어울리므로 행운을 빕니다.