알고리즘 프로그램 개발 사례: 분광 분석과 석탄 퇴적환경
우리비엔씨는 대학·공공기관·기업 연구자가 논문 속 계산식, 엑셀 계산 시트, 의사코드(pseudo-code)로 가지고 있는 알고리즘을 실제로 쓰는 윈도우 프로그램으로 개발해 왔습니다. 이 글에서는 충북대학교 분광라이브러리 프로그램(2014)과 한국가스공사 CBM 퇴적환경 분석 프로그램(2018) 두 사례를 통해, 복잡한 수식이 어떤 과정을 거쳐 연구 현장에서 쓰이는 프로그램이 되는지 정리했습니다.
알고리즘 프로그램 개발은 수식을 옮기는 일만이 아닙니다
상담 전화에서 자주 듣는 말이 있습니다. “계산식은 다 정리돼 있으니 코드로만 옮겨 주시면 됩니다.” 맞는 말이지만, 막상 개발해 보면 수식 한 줄을 코드로 바꾸는 일보다 그 앞과 뒤에서 정할 것이 훨씬 많습니다. 입력값은 어떤 파일에서 오는지, 조건에 따라 식이 바뀌는지, 계산 결과를 연구자가 어떻게 읽고 싶은지 같은 것들입니다.
| 연구자가 가진 것 | 프로그램이 되려면 더 정해야 할 것 |
|---|---|
| 논문·엑셀의 계산식 | 입력값이 어떤 파일·화면에서 들어오는지, 값이 비었을 때 어떻게 처리할지 |
| 조건별로 다른 식 | 어떤 조건에서 어떤 식을 쓸지 고르는 규칙 |
| 계산 결과 숫자 | 그래프, 판정 구역, 결과표처럼 바로 해석할 수 있는 화면 |
| 시료 몇 개의 계산 | 수백 개 자료를 쌓아 두고 다시 찾고 비교할 수 있는 저장 구조 |
| 연구자 PC의 파일 | 다른 연구원 PC에도 설치해 똑같이 쓸 수 있는 배포 방식 |

두 사례를 같은 4단계로 나눠 본 흐름. 계산식(②)은 전체 과정의 한 칸입니다.
사례 1. 충북대학교 분광라이브러리 구축 및 분석 프로그램
충북대학교 산학협력단이 발주한 “분광라이브러리 구축 및 출력 프로그램의 개발 및 납품” 용역입니다. 초분광 센서와 분광복사계로 취득한 스펙트럼(spectrum) 자료를 라이브러리 형태로 구축하고, 기본적인 출력과 분석 연산을 수행하는 것이 목적이었습니다. 2014년 4월~5월에 진행했고, 과업지시서상 과업기간은 계약일로부터 27일, 결과물은 setup.exe 설치 파일이었습니다. 개발은 C#, DevExpress, SQL Server CE로 했습니다.

분광라이브러리 분석 화면. 왼쪽 트리에서 두 스펙트럼을 고르면 리샘플링 결과와 유사도 4종이 계산됩니다.
입력: 형식이 다른 두 종류의 파일을 자동으로 읽기
측정 자료는 메타데이터와 수치값으로 이루어진 파일이었는데, 텍스트(ASCII) 형식의 .sed 파일과 바이너리 형식의 .asd 파일 두 가지가 섞여 있었습니다. 과업지시서에는 “제공한 입력 파일들을 사용할 경우에도 오류가 발생하지 않도록 제작”이라는 조건이 있었고, 두 형식을 모두 자동으로 읽어 같은 양식으로 저장하도록 만들었습니다.
저장: 연구실의 분류 체계를 파일명으로
스펙트럼이 수백 개로 늘어나도 찾을 수 있도록, 콤보박스에서 분류 항목을 고르면 파일명이 자동으로 만들어지게 했습니다. 화면의 “Manmade,100,Artificial,II,20140516,SR,NIS”가 그렇게 만들어진 이름입니다.
| 항목 | 값의 예 |
|---|---|
| type | Manmade / Veg / Ground / Water |
| level1·level2 | Manmade → 100(construction, road, artificial, greenhouse) 등, Veg → 200(paddy, field)·300(Deciduous, Coniferous, Mixed) 등 |
| materials·date | 세부 재질명, yyyymmdd |
| equipment·wavelength | SR / Img, VIS / NIR / VIS-NIR |
파일명에 담지 않는 정보는 메타데이터로 따로 입력받았습니다. 측정 위치의 GPS 좌표와 고도, 측정 시간, 기온·습도·기압·운량·에어로졸 광학 두께 같은 기상 자료, 장비 모델명·FOV·분광해상도, reference panel 사용 여부 등이고, 입력하지 않은 항목은 공백으로 기록되게 했습니다.
계산: 두 스펙트럼이 얼마나 닮았는지
분석의 핵심은 기준 스펙트럼과 대상 스펙트럼을 비교하는 것입니다. 두 자료를 리샘플링해 같은 축 위에 겹친 뒤, ED(유클리드 거리), Correlation, Spectral Angle, 2nd derivative correlation 네 가지 유사도 값을 계산해 결과창에 보여 줍니다. 웨이블릿(wavelet)을 이용한 데이터 오차(노이즈) 제거도 과업에 들어 있었고, 처리한 자료를 다른 이름으로 저장하면 원래 파일명 끝에 “denoising”이 붙도록 했습니다.
세부 알고리즘은 연구 책임자의 직접 설명과 의사코드로 전달받았습니다. 과업지시서에도 “설명이 어려운 부분은 방문하거나 서면, 문서 등을 통하여 개발 전 명확하게 이해”하라는 문구가 있었는데, 알고리즘 개발에서는 이 단계가 가장 중요하다고 생각합니다. 참고로 연구실이 참고 사례로 제시한 것은 NASA JPL의 웹 기반 분광 라이브러리였고, 저희는 같은 개념을 연구실 PC에 설치해 쓰는 프로그램으로 구현했습니다.
사례 2. 한국가스공사 CBM 퇴적환경 분석 프로그램
한국가스공사 가스연구원 자원기술연구센터의 의뢰로 2018년 3월~4월에 개발한 프로그램입니다(C#, SQLite). CBM(Coal Bed Methane, 석탄층 메탄가스) 자원을 평가하려면 석탄층이 어떤 환경에서 쌓였는지 아는 것이 중요한데, 이를 석탄 시료의 마세랄(maceral, 현미경으로 본 석탄의 미세 조직 성분) 함량으로 추정하는 프로그램입니다.

CBM Analyzer 화면. 시료별 계산 결과가 오른쪽 퇴적환경 구역 그래프 위에 점으로 찍힙니다.
계산식: 석탄 등급마다 식이 다르다
마세랄 함량(Volume %)으로 네 가지 지표를 계산하는데, 석탄 등급에 따라 마세랄 구성이 달라서 같은 지표라도 적용하는 식이 다릅니다. 개발 자료로 받은 엑셀 계산 시트에는 4개 지표 × 3개 등급, 모두 12개의 식이 정리되어 있었습니다.
| 지표 | 의미 | 등급별 근거 문헌 |
|---|---|---|
| GI | Gelification Index (겔화 지수) | Mid~high rank·Brown coal: Diessel(1986, 1992) / Low rank: Kalaitzidis et al.(2000) |
| TPI | Tissue Preservation Index (조직 보존 지수) | |
| GWI | Groundwater Influence Index (지하수 영향 지수) | Mid~high rank·Brown coal: Calder et al.(1991), Calder(1993) / Low rank: Stock et al.(2016), Kalaitzidis et al.(2000) |
| VI | Vegetation Index (식생 지수) |
엑셀 시트에서는 12개 식의 결과가 한꺼번에 계산되어 시료 등급에 맞는 칸을 직접 골라 봐야 하지만, 프로그램에서는 시료를 입력할 때 Coal Type을 지정하면 그에 맞는 식과 도표가 자동으로 선택됩니다.
결과: 숫자가 아니라 “어느 환경인가”로 보이게
GI-TPI, GWI-VI 상관관계 그래프에 결과를 찍으면 시료가 퇴적된 환경을 유추할 수 있습니다. 그래서 문헌의 퇴적환경 구역(Marsh, Fen, Wet Forest Swamp, Dry Forest Swamp, Mesotropic, Ombrotropic 등) 이미지를 그래프 배경에 고정 합성하고, 계산된 시료를 그 위에 점으로 표시하도록 했습니다. 이 밖에 프로그램에 들어간 기능은 다음과 같습니다.
- 마세랄 분석값 입력 화면, 입력값 자동 저장과 추가 자료 연속 입력
- 유정(Well)별·깊이별·사용자 조건별 결과 필터
- 석탄·퇴적환경·마세랄 용어와 계산식을 설명한 도움말, 참고 이미지 출력
- 분석 결과 이미지·도표·산출식의 PDF 변환, 화면 캡처, 인쇄
- PC용 독립형 설치 프로그램(CD·USB 설치, 설치 비밀번호)
전체 화면 구성과 결과 이미지 합성 같은 시각화 방식은 저희가 먼저 제안해 정했습니다. 계산식이 아무리 정확해도 연구원이 결과를 한눈에 읽지 못하면 쓰이지 않는 프로그램이 되기 때문입니다.
수식을 프로그램으로 옮기기 전에 확인하는 5가지
두 사례는 분야가 전혀 다르지만, 개발 전에 확인한 내용은 거의 같았습니다. 다른 알고리즘 과제를 상담할 때도 이 다섯 가지를 먼저 여쭤봅니다.
| 확인 항목 | 왜 중요한가 | 두 사례에서는 |
|---|---|---|
| 1. 식이 조건에 따라 갈리는가 | 식 선택 규칙이 빠지면 계산이 맞아도 결과가 틀립니다 | 석탄 등급 3종별로 다른 식 12개 |
| 2. 입력 데이터의 실제 형식 | 장비가 내보내는 파일은 설명서와 다를 때가 많습니다 | .sed(텍스트)와 .asd(바이너리) 혼재 |
| 3. 값이 비거나 예외인 경우 | 빈 값, 0으로 나누기 같은 경우의 처리 기준이 필요합니다 | 메타데이터 미입력 항목은 공백으로 기록 |
| 4. 결과를 읽는 방식 | 숫자만 나오면 해석은 다시 사람 몫이 됩니다 | 유사도 결과표, 퇴적환경 구역 그래프 |
| 5. 누가 어디서 쓰는가 | 설치 방식과 저장 구조가 달라집니다 | 두 사례 모두 연구원 PC 설치형 |
이런 계산·알고리즘도 프로그램으로 만들었습니다
두 사례 외에도 계산식이나 판단 로직이 중심인 과제를 여러 분야에서 진행했습니다. 회사 소개서의 실적표에 있는 프로젝트 중 일부입니다.
| 프로젝트 | 고객사 | 기간 |
|---|---|---|
| 콘크리트 열화예측 소프트웨어 | 한국원자력연구원 | 2026.04~07 |
| LCA 전과정 환경영향평가 소프트웨어 | 삼성물산 | 2023.11~2024.02 |
| 열교환 모듈 Heat Exchange Design (Fortran 해석 코드 GUI) | 아주대학교 공과대학 | 2023.10~12 |
| Travel Bubble 잠재노선 선정 소프트웨어 | 인천국제공항공사 | 2020.11~12 |
| CDSS 환자 위험군 예측관리 | 서울대학교 간호대학 | 2018.02~03 |
| 한발(가뭄) 분석 소프트웨어 | 경기도 농업기술원 | 2017.04~06 |
| 콘크리트 배합설계 소프트웨어 | 한국도로공사(공주대학교) | 2014.09~12 |
의뢰 전에 준비하면 좋은 자료
| 자료 | 설명 |
|---|---|
| 계산식과 출처 | 논문, 엑셀 시트, 의사코드 어느 형태든 괜찮습니다. 출처 문헌이 있으면 함께 주세요. |
| 실제 입력 파일 | 장비나 다른 프로그램이 내보낸 원본 파일 그대로가 가장 좋습니다. |
| 손계산·엑셀 결과 예시 | 입력값과 정답이 있는 예시 몇 건이 있으면 계산 검증이 빨라집니다. |
| 원하는 결과 화면 | 손 스케치, 논문 그림, 참고 프로그램(충북대 사례의 NASA JPL 사이트처럼)이면 충분합니다. |
| 사용 환경 | 몇 명이 어떤 PC에서 쓰는지, 자료를 서로 공유해야 하는지 알려 주세요. |
자주 묻는 질문
Q. 수식을 완전히 이해하지 못한 상태여도 의뢰할 수 있나요?
가능합니다. 충북대 사례처럼 연구 책임자와 협의하면서 입력 자료의 특성과 분석 방법을 개발 전에 함께 정리합니다. 상담과 협의는 대표 개발자가 직접 진행합니다.
Q. 논문에 나온 알고리즘도 프로그램으로 만들 수 있나요?
식과 변수 정의가 논문에 명확히 나와 있다면 대부분 구현할 수 있습니다. CBM 사례의 12개 식도 모두 공개된 문헌에 근거한 것이었습니다. 다만 저희는 내용을 충분히 듣고 책임지고 완료할 수 있다고 판단될 때만 개발을 진행합니다.
Q. 이미 엑셀로 계산하고 있는데 프로그램으로 바꿀 필요가 있을까요?
시료가 몇 개뿐이라면 엑셀로도 충분합니다. 자료가 쌓여 유정별·깊이별로 다시 찾아야 하거나, 조건마다 다른 식을 골라야 하거나, 결과를 그래프 구역과 함께 봐야 한다면 프로그램이 훨씬 편합니다. 엑셀 계산을 프로그램으로 옮긴 다른 사례는 아래 LCA 글에 자세히 정리했습니다.
Q. 개발 기간은 얼마나 걸리나요?
계산식의 수와 화면 범위에 따라 다릅니다. 이 글의 두 사례는 충북대 분광라이브러리가 과업기간 27일, 한국가스공사 CBM 프로그램이 2018년 3월~4월이었습니다. 자료를 보고 나면 기간과 견적을 함께 안내해 드립니다.
함께 보면 좋은 개발 사례
- Fortran 열교환기 해석 코드에 GUI를 입힌 아주대학교 사례
- 건축물 LCA 평가, 엑셀 계산을 프로그램으로 옮긴 삼성물산 사례
- 분석 프로그램 개발 의뢰 전 꼭 확인할 질문들
- 로그·CSV·텍스트 데이터를 DB로 모아 분석하는 프로그램
- 업무용 DB와 분석용 DB는 무엇이 다를까
작성: 우리비엔씨 대표 이완종 (KOSA 특급기술자)
홈페이지: https://www.wooribnc.com
연락처: 070-4809-7769 // 0 1 0 - 5 1 7 7 - 8 0 5 5
이메일: admin@wooribnc.com // lwjvegas@gmail.com
* KOSA 소프트웨어사업자 등록업체
* KOSA 소프트웨어기술자경력 특급기술자, 정보처리기사
* 가천대학교 가족회사 협약업체
#알고리즘프로그램개발 #수식프로그램화 #연구용프로그램개발 #분광라이브러리 #CBM퇴적환경분석 #스펙트럼분석 #과학계산프로그램 #윈도우프로그램개발 #우리비엔씨


