프로그램 쉽게 만드는 방법

프로그래밍 접근방법

프로그램을 쉽게 만드는 방법 따위는 없습니다 ㅋㅋ 하려는 일에 적당한 프로그래밍 언어와 환경을 선택하고 학습/연습하는 길 뿐이죠.

하지만 좋은 접근방법은 있다고 생각합니다. 아래의 방법은 스크립트 언어를 사용할 때 특히 알맞다고 생각하는 개발방법 중 하나입니다. 언어에 아직 익숙하지 않을 때에도 뭔가 쓸모있는 걸 만들 수 있습니다.

  1. 만들려는 것(목적)을 최대한 간단한 기능들로 분해.
  2. 부품들을 하나씩 만듬. 핵심 기능에 집중하고 앞/뒤 맥락은 가짜 코드(mock)로 하거나 주석으로 남겨둔다.
  3. 이 부품들은 보통 메서드가 됨.
  4. 조립 : 부품들을 엮어 구조로 만듬.
  5. 잘 돌아가면 기뻐하면 됨.

이런저런 목적으로 루비 를 사용해 간단한 프로그램들을 많이 만들고는 합니다. 보통 로컬 작업의 자동화를 목적으로 하는 프로그램들로 복잡하고 어려운 작업을 하는 것은 아닙니다. REPLirb를 사용해 실험을 하며 메서드를 만듭니다. REPL을 사용하면 바로바로 코드의 결과를 확인할 수 있어서 작고 빠른 스탭으로 개발할 수 있는 큰 장점이 있습니다. 작은 코드들을 REPL에서 실험하며 동작하는지 확인합니다. 어느정도 돌아가는 부분을 만들면 코드를 따로 모아둡니다. 메서드나 구조화된 형태로 모아둘 필요는 없습니다. 다음으로는 이렇게 모인 잡다한 코드 조각들의 뭉치들을 구조화 합니다. 동작(메서드)를 중심으로 필요한 부분은 클래스와 클래스 변수들로 만들어 줍니다. 구조화된 코드를 자주 테스트해야 하기 때문에 단위 테스트를 만드는 것이 좋습니다. 이렇게 원하는 프로그램을 만들어 갑니다.

평가

이 방법이 유효한 것은 한 번에 모든 것을 짠 하고 만드는 것이 어렵기 때문입니다. Top Down으로 개발을 하면 테스트를 할 때야 문제점이 드러나곤 합니다. 실행 가능한 상태를 만드는데 시간이 오래 걸리기 때문에 빨리 개발을 해야할 때에는 적당치 않을 때가 많습니다. 제가 소개하는 이 개발 방법은 우선 실행되는 작은 코드들로 개발을 시작합니다. 전체 동작 보다는 제대로 돌아가는 부품들 부터 만드는 것입니다.
이런 접근방법을 사용할 때 장점과 단점은 대략 이런 것 같습니다.

  • 장점
    • 빠른 개발 : 분해 과정만 필요. 명시적인 설계 과정이 필요하지 않음.
    • 프로그래밍 언어에 익숙치 못해도 개발 가능 : REPL
  • 단점
    • 조립할 때 문제가 생기기 쉬움. 구조화에 좀 어려운 경우가 종종 있으며 나중에 보면 구성이 좋지 못한 결과가 나올 때도 있습니다. 여기저기 중복 코드가 나타나기도 하죠. 못봐주겠으면 리팩토링을 해야할 수 있습니다.
    • 어느정도 숙달을 요함. 나중에 결합할 때 문제가 생기지 않게 주의가 필요. 설계 과정을 생략했기 때문. 간단한 것들로 연습하다보면 나중에는 중간 수준의 복잡한 것들도 커버 가능.
    • 한계 : 지금까지는 큰 단위로 만들어 본 적이 없어서 잘 모르겠지만 아주 크게 확장하기는 좀 한계가 있지 않을까 싶습니다.

정리

어찌보면 무언가를 만들 때 사용하는 아주 일반적인 접근방법이라고 생각되기도 합니다. 프로그래밍에 대한 것 뿐만이 아니라. 특히 공작 활동에서 많이 볼 수 있지 않을까 싶습니다. 가구 제작이라면 만들려는 것의 큰 그림을 대략 구상하고 도면을 그리지 않은 채 각 부품을 만들고 조립하는 것입니다.

테스트 주도 개발도 이런 접근방법 중 하나라고 생각. 이 방법론에 이름을 붙이자면 조각 주도 개발 정도가 될 것 같습니다. 새로운 언어를 배웠는데 어디에 쓸지 모를 때 이런 방법론을 시도해 보는 것도 언어에 익숙해지고 쓸모있는 걸 만드는데 좋을 것 같습니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다