본문 바로가기
공부

프로그램 개발 과정 (2)

by 알고있니 2017. 3. 17.
728x90
반응형

프로그램 개발 과정은 요구 사항 분석 → 알고리즘의 개발 → 소스 작성 → 컴파일과 링크 → 실행과 디버깅 → 유지 보수로 진행된다.

 

▶프로그램의 링크

컴파일이 성공적으로 수행되면 다음 단계는 링크이다. 링크는 오브젝트 파일들을 라이브러리와 연결하여 실행 프로그램(.exe)을 만든다.

 

라이브러리란 프로그래머들이 많이 사용하는 기능을 미리 작성해 놓은 것으로 컴파일러에 내장되어 있다. 링크를 수행하는 프로그램을 링커라고 칭한다.

 

예를 들면 윈도우에서는 test.obj 파일에 라이브러리를 붙여서 실행 가능한 파일인 test.exe가 생성된다. 하나의 프로그램은 일반적으로 여러 개의 소스 파일로 구성된다.

 

여러 개의 소스 파일로 구성된 프로그램의 경우, 각각의 파일을 각각 따로 컴파일한 후에 링커를 통해 결합한다.

 

만약 하나의 소스 파일만 변경한 경우에도 모든 소스 파일을 다시 컴파일 해야만 한다면 상당한 시간이 낭비될 것이다.

 

만약 링크 단계가 있다면 변경된 소스 파일만 다시 컴파일하면 된다.

 

프로그램 실행과 디버깅

오류를 모두 수정하여 컴파일과 링크가 성공적으로 수행되면 실행 가능한 파일이 만들어진다. 

 

예를 들면 소스 파일이 test.c이라면 test.exe 파일이 생성된다. 

 

이 실행파일을 더블클릭하면 실행 파일이 실행된다. 

 

그렇다면 프로그램이 실행 파일로 만들어져서 성공적으로 실행되기만 하면 모든 작업이 끝날 것이라고 생각하면 오산이다. 

 

문법적인 오류가 없다고 해서 프로그램이 항상 우리가 원하는 대로 실행되는 것이 아니기 때문이다. 

 

문법이 완벽하더라도 실행 결과는 잘못 나올 수 있다는 말이다. 

 

만약 실행 도중에 오류가 발생하거나 실행 결과가 잘못되면 실행을 중단하고 다시 편집 단계로 돌아가서 소스 파일을 수정해야 한다.

 

컴파일 오류는 없지만 알고리즘을 잘못 생각하여 의도했던 대로 실행되지 않는 경우도 있다. 

 

이러한 오류를 논리적인 오류라고 하는데 문법은 틀리지 않았지만 논리적으로 정확하지 않음을 의미한다.

 

 

 

 

논리적인 오류를 잡는 것은 생각보다 어려울 수 있다. 

 

추리력이 필요한 작업이고 많은 데이터를 이용하여 테스트해야 한다. 

 

논리 오류는 마지막 순간까지도 모르고 넘어가는 경우도 많다. 대개 프로그래머는 자신의 프로그램이 논리적으로 절대적으로 맞는다고 확신하는 경우가 많아 논리적인 오류를 발견하지 못하고 지나친다. 

 

어처구니없는 실수를 하기도 하고 대강 생각하고 넘어간 부분도 있고, 고쳐야지 하면서 잊어버린 경우도 있다. 

 

거의 모든 프로그래머들이 논리적인 오류를 저지른다. 

 

흔히 사람들은 프로그램을 처음부터 정확하게 만드는 것이 가능할 것이라고 생각했지만 현실은 결코 그렇지 않다. 

 

소프트웨어 관련 제품 개발 기간의 거의 절반에 해당하는 기간이 제품 테스트와 디버깅에 소요된다. 

 

따라서 논리적인 오류는 얼마든지 존재할 수 있고, 오류의 숫자를 최대한 없애도록 노력해야 한다. 

 

의도했던 대로 프로그램이 동작하지 않으면 소스 프로그램을 수정하고 다시 컴파일 단계부터 다시 거쳐야 한다. 

 

이러한 오류 수정 작업을 디버깅이라고 하고 이때 사용되는 도구를 디버거라고 한다. 

 

디버깅에서 버그는 벌레를 뜻하며, 디버그는 '해충을 잡다'라는 뜻이다. 

 

이 말은 프로그램의 오류를 벌레에 비유해 오류를 찾아 수정하는 일이라는 의미로 쓰인다.

728x90
반응형

'공부' 카테고리의 다른 글

수의 표현 및 진법 변환, 명령어  (0) 2017.03.18
컴퓨터의 개념  (0) 2017.03.18
프로그램 개발 과정 (3)  (0) 2017.03.18
프로그램 개발 과정 (1)  (0) 2017.03.17
C언어의 특징  (0) 2017.03.16

댓글