Rocket Simulater wrtie Python.
이 프로젝트는 기본적으로 로켓 시뮬레이터를 기반으로 학습한 내용을 작성한 것이다. 파이썬의 함수와 클래스를 가볍게 다루지만, 자세한 설명은 하지 않으니 참고하기 바란다.
로케싀 제원에 대한 설정에 기초하여 로켓을 날리고, 일정 시간이 지난 후 고도와 속도, 그리고 그때가지의 비행 궤적을 계산하는 것을 목적으로 한다. 이 프로젝트는 언어의 기능을 충분히 활용하여 중요한 기능을 전저 구현한 프로토타입을 빠른 시간 안에 구축하는 빠른 프로토타이핑(Rapid Prototyping)의 한 예이다.
이 프로젝트의 목표는 개발 기법의 큰 그림을 파악하는 것이다.
PyRockSim은 주어진 초기 조건에 따라 로켓의 추진체가 내는 추력을 계산하고, 고도에 따라 변화하는 중력가속도 및 대기의 영향, 그리고 공기역학 계산에 따라 저항과 양력을 계산한다. 이들 값을 기초로 로켓의 위치, 속도, 자세각을 순차적으로 업데이트하면서 지정한 시간까지 시뮬레이션을 계속한다. 본래 프로그램은 6자유도(회전 3축 + 이동 3축) 시뮬레이터로의 확장을 전제로 하고 있지만, 지금 소개하는 프로그램은 이동 3축에 해당하는 3자유도를 갖는다.
PyRockSim을 구축하는 데 필요한 절차를 열거하면 다음과 같다.
-
기능 분할(함수나 클래스 단위로 기능을 정리)
-
파일 분할(각 기능 분야별로 파일을 나눔)
-
프로그램 작성
-
정적 코드 분석
-
단위 테스트
-
디버깅
-
프로그램 최적화
우선 프로그램에 필요한 기능을 골라내고, 이 기능을 다시 적절히 분할하여 함수나 클래스로 정리해야 한다. 또, 특정한 분야의 기능을 담당하는 함수 및 클래스를 같은 파일에 모아두면 유지보수성이 향상되므로 여러 개의 파일로 프로그램을 분할하도록 한다.
그리고 파이썬에서는 파일 하나로 구성된 라이브러리를 **모듈(module)**, 파일 여러 개로 구성된 라이브러리를 **패키지(package)**라고 한다. 특정한 분야의 기능을 모듈이나 패키지로 정리해두면 다른 프로그램에서 이를 빌려 쓸 수 있으므로 편리하다.
그 다음에는 실제 코딩을 진행한 후 작성된 프로그램이 올바르게 작성됐는지 확인하기 위해 정적 코드 분석, 단위 테스트를 실시한다. 그러고 마녀 의도하지 않은 동작을 수정하기 위한 디버깅, 신뢰성 향상 및 빠른 처리 속도를 위해 프로그램 최적화를 수행한다.
이와 같은 과정을 모두 기록하는 것은 어려우니 프로젝트의 commit massage 혹은 완성된 code를 통해 이해하기 바란다.