소프트웨어 공학의 근본 과제는 무엇인가

이 논문은 소프트웨어 공학이 과학적 이론을 결여한 채 상업·정치적 실용주의에 굴복해 온 현상을 비판한다. 근본적인 이론 구축을 위해서는 먼저 ‘소프트웨어’ 자체가 무엇인지 명확히 정의해야 함을 주장한다.

소프트웨어 공학의 근본 과제는 무엇인가

초록

이 논문은 소프트웨어 공학이 과학적 이론을 결여한 채 상업·정치적 실용주의에 굴복해 온 현상을 비판한다. 근본적인 이론 구축을 위해서는 먼저 ‘소프트웨어’ 자체가 무엇인지 명확히 정의해야 함을 주장한다.

상세 요약

본 논문은 소프트웨어 공학(Software Engineering, SE)이 현재 겪고 있는 ‘존재론적 위기’를 중심으로 전개된다. 저자는 SE가 과학적 이론보다는 현장의 요구와 상업적·정치적 압력에 의해 실용주의적 접근을 택해 왔으며, 이로 인해 학문적 정체성과 체계적 이론 구축이 정체된다고 지적한다. 특히, SE가 “전문 직업”으로서의 정체성을 강조하면서도 “과학”으로서의 엄격한 메타이론을 배제해 온 점을 비판한다. 이는 소프트웨어 자체에 대한 명확한 정의가 부재한 채, 도구와 프로세스에만 초점을 맞춘 결과이며, 결국 문제 정의가 모호해져 연구와 실천 사이에 괴리가 발생한다는 논리적 귀결을 낳는다.

논문은 이 위기의 근본 원인을 두 가지 축으로 분석한다. 첫째, 상업적 이해관계자와 정책 입안자들이 빠른 시장 출시와 비용 절감을 최우선 목표로 삼음에 따라, 학문적 탐구보다 실용적 해결책이 우선시되는 구조적 압력이 존재한다. 둘째, 교육 및 연구 기관이 ‘프로젝트 관리’, ‘품질 보증’ 등 실무 중심 커리큘럼에 집중하면서, 소프트웨어의 본질—즉, 추상적 논리 구조, 계산 모델, 그리고 인간-기계 상호작용의 복합적 특성—에 대한 이론적 탐구를 소홀히 해 왔다.

이러한 상황을 타개하기 위해 저자는 “소프트웨어가 무엇인가?”라는 근본 질문을 제기한다. 이는 단순히 코드나 실행 파일을 의미하는 것이 아니라, 소프트웨어를 구성하는 개념적, 형식적, 사회문화적 차원을 포괄하는 정의를 요구한다. 구체적으로는 (1) 소프트웨어를 ‘명시적 알고리즘과 데이터 구조의 집합’, (2) ‘시스템·사용자·환경 간의 상호작용을 매개하는 추상적 매커니즘’, (3) ‘경제·법·윤리적 맥락에서 생산·배포·유지보수되는 사회적 산물’으로 삼는 다층적 모델을 제안한다.

이 정의를 토대로 SE는 다음과 같은 이론적 과제를 수행해야 한다. 첫째, 소프트웨어의 형식적 특성을 다루는 수학·논리학 기반 이론(예: 타입 이론, 형식 검증)과 실천적 특성을 연결하는 통합 프레임워크를 구축한다. 둘째, 소프트웨어 생명주기 전반에 걸친 ‘문제-해결-가치’ 흐름을 모델링하여, 요구 분석부터 유지보수까지 일관된 이론적 근거를 제공한다. 셋째, 사회·경제적 영향을 정량화하는 메트릭과 정책 모델을 개발해, 기술적 선택이 비즈니스·규제 환경과 어떻게 상호작용하는지를 설명한다.

결론적으로, 논문은 SE가 단순히 “문제 해결 도구”를 제공하는 수준을 넘어, 소프트웨어 자체를 과학적 대상으로 규정하고, 그에 맞는 이론 체계를 구축해야 함을 역설한다. 이는 학문적 정체성을 회복하고, 장기적인 기술 혁신과 지속 가능한 소프트웨어 생태계를 조성하는 데 필수적이다.


📜 논문 원문 (영문)

🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...