컴퓨터 프로그램 개발

컴퓨터 프로그래밍을 공부하려는 사람들이 자의든 타의든 늘어나고 있다. 내가 처음에 컴퓨터 프로그래밍을 공부했을 때에는 초등학교 3학년, 아마 92년이었던 것 같은데, 그 때 아버지 손에 이끌려서 총무처 전산실에서 시행하는 직원 가족 대상 컴퓨터 교육에 갔었을 때이다. 그 때 배운 언어는 GW-BASIC이라는 것인데, 솔직히 그 때는 내가 알파벳도 모르던 시절이었다 보니 뭘 어떻게 해야 하는지 모르고 그냥 보이는대로 코드를 그대로 붙여서 쳤다. 실행되면 뭐 그런가보다 했고, 뭐가 어떻게 되는지는 전혀 이해할 수 없었다. 그 이후로 컴퓨터는 나에게 그냥 오락기였고, 딱히 컴퓨터 프로그램 개발에 대해서 공부할 일은 거의 없었다. 그리고 대학에 가서 대학교 3학년이 되었을 때 처음으로 C언어 프로그램을 만들어서 컴파일 할 수 있었다. 어쨌든, 어디서 정식으로 컴퓨터 프로그램을 공부한 적은 없고 책과 인터넷을 뒤져가면서 공부한 게 전부다. 나중에 방송대에서 컴퓨터과학 전공과정을 이수하기는 했는데 사실 그거는 수업 안듣고 시험만 쳤기 때문에 뭘 배웠다고 하기는 좀 그렇다.

자, 그럼, 초보자들이 프로그램 만드는 방법을 어떻게 공부하는 것이 좋을까? 이 글에서는 그에 대한 이야기를 하려고 한다. 사람마다 각자 자신만의 방법이 있고, 내가 소개하려는 방법이 가장 좋은 방법이 아닐 수도 있지만 이것은 그냥 내 경험에 기반한 이야기가 될 것이다. 이 글은 컴퓨터를 켜서 워드 프로그램이나 아래한글 프로그램으로 문서를 작성해 본 사람 정도를 대상으로 한다.

프로그램을 만드는 과정은 기획-설계-코딩-디버깅-검수-출시 단계로 나누어진다. 그중 가장 중요하지 않은 단계는 코딩이다. 의외로 코딩의 중요성이 가장 떨어진다. 가장 중요한 과정은 기획이고, 그 다음으로 중요한 단계는 검수이다. 하나씩 설명해 보자.

기획은 어떤 프로그램을 만들 것인지 생각하는 단계이다. 이 단계에서는 프로그램이 어떤 작동을 해야 하고, 겉모습은 어떻고, 누가 사용할 것이고, 어떤 상황에서 사용할 것인지 세세히 정하는 것이다. 프로그램을 처음부터 끝까지 혼자서 다 만든다면 크게 문제가 되지 않지만, 여럿이서 협력해서 만드는 경우에는 가장 중요한 과정이된다. 기획이 제대로 되어 있지 않으면 그 프로그램의 개발 과정은 망한다고 보면 된다.

프로그램의 기획이란 어떻게 하는 것인가? 가장 쉽게 말하면, 앞으로 사용하게 될 프로그램의 사용설명서를 만드는 과정이라고 생각하면 된다. 사용설명서에 적혀있는 내용은 그대로 작동해야 하고, 거기에 적혀있지 않은 내용은 어떻게 될지 모른다. 그것이 가장 중요하다. 따라서 사용설명서는 최대한 자세히 작성해야 한다. 사용설명서는 어떻게 적어야 하는가? 앞에서 적어두었듯이, 사용설명서는 이 프로그램이 어떤 목적을 갖고 있고, 어떤 기능을 하는지 적는 것이다. 윈도우에서처럼 그래픽 인터페이스를 사용하는 프로그램이라면, 어떤 모습을 갖고 있을지 그림을 그리고, 그 그림에서 어느 부분을 누르면 어떤 일이 일어나는지 적는 것이다. 이 부분을 누르면 새로운 창이 뜨고, 저 부분을 누르면 어떤 기능이 처리되는 등등에 대해 설명하는 것이다. 이 설명을 자세하게 쓰면 쓸 수록 더 좋은 프로그램이 만들어진다. 여기에 사용되는 언어는 꼭 이과적이어야 한다거나, 전문용어를 사용해야 한다거나, 그럴 필요는 없다. 중요한 것은 굉장히 구체적이어야 한다는 점이다. 사용설명서를 읽어본 사람들은 알겠지만, 굉장히 쓸데없고 상식적일 것이라고 생각되는 이야기들까지 모두 적혀 있다. 당신이 만든 기획서 역시 그렇게 되어야 한다. 사용자가 이상한 행동을 할 때에 프로그램이 어떻게 반응해야 하는지도 적어야 한다.

그 다음 설계인데, 기획서를 바탕으로 실제로 무엇을 만들어야 하는지 구성하는 과정이다. 설계는 어떤 언어를 이용해서 만들지, 어떤 프레임워크를 사용할지, 어떤 라이브러리를 사용할지, 어떤 알고리즘을 사용할지 구체적으로 정하는 단계이다. 프레임워크, 라이브러리, 알고리즘 같은 것이 어떤 것들인지 잘 모를 수 있는데, 그것은 프로그래밍 공부를 하다 보면 알게 될 것이다. 설계 단계에서 어떻게 프로그램을 쪼개서 만들 것인지 고민하게 된다. 이 부분에서 프로그래머와 기획자가 굉장히 소통을 많이 해야 한다. 프로그래머는 자신이 이해하지 못한 것은 만들 수 없고, 기획서에 써 있지 않은 것은 만들지 않는다. 프로그래머는 자신이 이해하지 못한 부분을 끝까지 물어봐야 하고, 기획자는 프로그래머가 이해할 때 까지 최대한 상세하고 쉽게 설명을 해야 한다. 안 그러면 그냥 똥 쓰레기 프로그램이 만들어질 뿐이다.

코딩은 구체적으로 프로그램을 만드는 과정이다. 프로그래밍 언어라는 것은 이 과정에서 쓰인다. 설계된 내용에 해당하는 코드를 작성하면 되는데, 이 부분은 다른 글에서 다시 작성하려고 한다. 대부분의 컴퓨터 학원에서 배우는 것은 이 부분이라고 보면 된다.

디버깅은 프로그램에 나타난 버그를 잡는 과정이다. 버그는 프로그램이 원치 않는 작동을 하는 경우를 말하는데, 단순히 컴파일이나 작동 과정에서 오류 메시지가 나오는 걸 막는 것을 뜻하는 것이 아니다. 오류 메시지가 나타나는 것은 당연히 다 잡아야 하고, 그게 문제가 아니라 실제로 코드가 원하는 대로 만들어 졌는지 확인하는 과정이다. 예를 들어, 1+1을 수행시켰을 때 2가 나오는 것이 정상적인 작동인데, 3이 나오도록 작동한다면 문제가 되는 것이다. 이런 종류의 문제는 그것이 컴파일 과정에서는 오류가 나타나지 않을 수 있지만, 실제로 작동시켜보면 문제가 나타난다. 이것이 정상적인 작동인지 문제가 있는 작동인지는 프로그래머가 판단할 수 밖에 없다. 이것을 디버깅 과정에서 잡아낸다. 이 과정에서 발견된 오류는 코딩 과정에서의 문제이다.

검수는 프로그램이 기획한 대로 만들어졌는지 확인하는 과정이다. 검수는 기획자가 직접 하거나, 사용설명서를 읽으면서 제3자가 검수를 하게 된다. 특히, 가능하면 아무것도 모르는 제3자가 사용설명서만 읽으면서 이것저것 사용해 보는 것이 중요하다. 프로그램의 기획 시점에서 알 수 없었던 작동을 사용자가 했을 때 어떤 일이 일어나는지 알아내려면, 편견 없이 사용해 볼 수 있는 사람이 있는 것이 좋다. 예를 들어, 100 이하의 값을 입력할 것이라고 생각하는 위치에 10억이라는 이상한 값을 넣으면 어떤 작동이 일어나는지 등등. 이 과정에서 발견된 문제는 기획 단계에서의 문제이다.

출시는 이제 다 만들어진 프로그램을 다른 사람들에게 쓰라고 보내주는 과정이다. 이후 이 프로그램을 계속 발전시켜 나가고 싶으면 다른 사용자들이 전달해주는 이야기를 잘 듣고 새로운 기획을 해서 프로그램의 다음 버전에 반영시키는 것이다.

이제 코딩, 즉 프로그래밍 언어를 어떻게 공부하는지 알아보자.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d 블로거가 이것을 좋아합니다: