728x90

프로그램 제작 과정

이 글과 이어진 글 보러 가기


2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음


변화해야 하는 프로그램


여러분들은 프로그램을 만들 때 프로그램의 신뢰성을 가장 중요하게 생각해야 합니다. 프로그램이 의도한 대로 동작하지 않아서 그것을 신뢰할 수 없다면 심각한 상황이 일어날 수도 있습니다. 그래서 우리는 프로그램을 만들 때 잘 설계해야 합니다. 프로그램이 의도한 바와는 전혀 상관없는 일을 하거나, 우리를 짜증 나게 하는 일을 한다면, 그 프로그램은 누구도 이용하지 않을 것입니다.

지금까지 프로그래머가 아닌 사람들의 입장에서 소프트웨어를 살펴봤는데, 이러한 가치를 프로그래머의 이상으로 삼고 항상 명심해야 합니다. 성공적인 소프트웨어를 만들고 싶다면 특히 개발 초기 단계에 이를 주의해야 합니다. 또한, 여기에 더해서 코드 자체의 이상도 고려해야 합니다. 우리가 작성한 코드는 유지보수가 쉬워야 합니다. 즉, 코드를 작성한 사람이 아니더라도 이해하고 변경하는 데 어려움이 없어야 합니다. 프로그램은 보통 수명이 길고, 계속해서 수정되어야 합니다. 예를 들면, 새로운 하드웨어에 설치되거나, 새로운 기능을 추가하거나, 새로운 입출력 수단을 활용해야 하는 상황이 올 수도 있습니다. 프로그램이 더는 수정되지 않는다는 것은 그 프로그램의 수명이 다했다는 것입니다. 유지보수가 쉬우려면 코드는 단순하고, 표현하고자 하는 아이디어가 코드에 직접 드러나야 합니다.

복잡하게 프로그램을 작성하는 것은 주어진 문제 자체에 오류가 있을 수도 있지만, 아이디어를 코드로 표현하는 방법이 서툴러서 발생할 수도 있습니다. 그러므로 훌륭한 코딩 스타일을 배움으로써 이런 문제점을 피해야 합니다.


프로그램을 이해하는 것


프로그램을 만드는 일은 그다지 어려워 보이지 않을 수도 있지만, 막상 해보면 무척 어렵습니다. 프로그래밍은 우리가 의도하는 바를 기계에 전달해주기만 하면 됩니다. 그런데 왜 프로그래밍이 어려운 일일까요? 컴퓨터 역시 근본적으로는 단순합니다. 컴퓨터는 숫자를 계산하고 그에 대한 결과에 따라 다음 명령을 실행하는 등의 몇 가지 동작을 할 뿐입니다. 문제는 우리가 컴퓨터로 하고자 하는 일이 간단하지 않다는 것에 있습니다. 우리는 컴퓨터의 도움이 필요할 만큼 어려운 일을 기계에 시키고 싶어 하지만, 컴퓨터는 계산기에 지나지 않습니다.

여러 관점에서 볼 때 프로그래밍이란 '이해하는 일'과 같습니다. 여러분이 어떤 작업을 프로그램으로 만들 수 있다면 그 작업을 완벽히 이해하고 있다는 말입니다. 다른 말로 하자면 프로그래밍은 어떤 주제를 이해하고자 하는 노력의 목적으로, 프로그래밍의 결과물인 프로그램은 해당 주제에 대해 이해한 바를 명확히 표현한 것이라고 할 수 있습니다.


프로그램을 개발하는 과정


지금까지 설명한 내용을 바탕으로 프로그램의 개발 과정을 네 단계로 나눌 수 있습니다.

  • 분석 무엇이 문제인지, 사용자가 원하는 것이 무엇이고 어떤 것을 필요로 하는지
  • 설계 문제를 어떻게 해결해야 하는지, 시스템의 전체적인 구조는 어떻게 되어야 하는지, 시스템의 각 부분은 무엇으로 구성되며 서로 어떤 방식으로 통신하는지
  • 프로그래밍 문제의 해법을 코드로 표현하는 것을 말합니다. 주어진 시간 내에 금전적인 부분 등 요구되는 모든 제약을 만족하면서 코드를 작성해야 합니다. 이때 코드는 정확하고 간단해서 유지보수가 쉬워야 합니다.
  • 테스팅 만들어진 프로그램을 실행시켜봄으로써 모든 경우에 프로그램이 정상적으로 작동하는지를 확인합니다.
위에서 프로그래밍 단계와 테스팅 단계를 통틀어 구현 단계라고도 합니다. 소프트웨어 개발을 이렇게 네 단계로 나누는 일은 개발 과정을 단순화시킨 것입니다. 각 단계 하나하나가 책 한 권을 차지할 만큼 방대한 주제이며, 네 단계가 어떻게 관련되는지를 다루는 책 또한 많습니다. 여기서 알아야 할 점은 소프트웨어 개발의 각 단계는 서로 독립적이지 않으며, 꼭 순서대로 일어나지도 않는다는 것입니다. 일반적으로 분석 단계부터 시작하지만, 테스팅 단계에서 다시 분석해서 설계해야 하는 일이 생길 수도 있습니다. 또한, 설계를 진행하다 보면 분석 단계에서 놓쳤던 부분이 드러나기도 합니다.


728x90
728x90