소프트웨어 공학 교육, 실전 프로젝트로 배우다
** 본 논문은 프랑스 낭시 대학교(Nancy Université)에서 “작은 규모와 큰 규모” 소프트웨어 개발 구분을 기반으로 실제 프로젝트를 시뮬레이션하는 교육 방식을 도입한 사례를 제시한다. 학생들은 대규모 팀과 복합적인 요구사항을 가진 실제와 유사한 프로젝트에 참여함으로써, 요구 분석, 설계, 구현, 테스트, 형상 관리, 협업 도구 활용 등 전 과정에서 발생하는 현실적인 문제들을 직접 경험하고 해결한다. 실험 결과, 전통적인 이론 중…
저자: Nacer Boudjlida (INRIA Lorraine - LORIA), Jean-Pierre Jacquot (LORIA), Pascal Urso (INRIA Lorraine - LORIA)
**
본 논문은 프랑스 낭시 대학교(Nancy Université, UHP Nancy 1)에서 시행한 ‘소프트웨어 공학 교육을 실제 프로젝트 시뮬레이션으로 구현’한 사례 연구를 상세히 기술한다. 연구는 소프트웨어 개발을 “작은 규모(in‑the‑small)”와 “큰 규모(in‑the‑large)”라는 두 축으로 구분하고, 각각의 특성에 맞는 교육 목표와 학습 활동을 설계하는 데서 출발한다. 작은 규모는 주로 개인 혹은 소규모 팀이 담당하는 단순 기능 구현을 의미하고, 큰 규모는 다수의 개발자와 다양한 역할이 얽힌 복합 시스템 개발을 의미한다. 기존 교육 방식은 이 두 축을 명확히 구분하지 못하고, 주로 이론 강의와 제한된 실습에 머물러 실제 현장에서 마주치는 복잡한 문제들을 충분히 다루지 못한다는 한계가 있었다.
이에 연구팀은 ‘프로젝트 기반 학습(PBL)’을 핵심 교육 방법론으로 채택하였다. 학생들은 20명 이상의 대규모 팀을 구성하고, 실제 기업에서 사용되는 요구 사양서, 설계 문서, 테스트 케이스 등을 그대로 제공받는다. 팀 내에서는 프로젝트 매니저, 시스템 아키텍트, 프론트엔드·백엔드 개발자, 품질 보증(QA) 담당 등 다양한 역할을 순환하며 수행한다. 이러한 역할 기반 학습은 학생들이 단일 개발자 관점에 머무르지 않고, 전체 프로젝트 흐름과 관리 이슈를 체감하도록 설계되었다.
프로젝트 진행 과정에서는 최신 형상 관리 도구(Git, Subversion)와 지속적 통합·배포(CI/CD) 파이프라인(Jenkins, GitLab CI) 등을 반드시 사용하도록 강제한다. 이를 통해 버전 충돌, 병합 전략, 자동 빌드·테스트, 배포 자동화 등 실무에서 필수적인 기술을 실제로 체험한다. 또한 스프린트 기반 애자일 방법론(스크럼)을 적용해, 스프린트 계획, 일일 스탠드업, 스프린트 리뷰·레트로스펙티브를 정기적으로 진행한다. 이 과정에서 학생들은 요구 변경 관리, 일정 지연, 팀 내 커뮤니케이션 병목 등 ‘큰 규모 개발’ 특유의 문제들을 직접 경험하고, 회고를 통해 개선 방안을 도출한다.
학습 효과는 정량적·정성적 지표를 통해 평가되었다. 정량적 지표로는 프로젝트 완료율, 결함 밀도, 코드 커버리지, 팀 내 커밋 빈도 등이 사용되었다. 실험 결과, 전통적인 이론 중심 교육을 받은 대조군에 비해 프로젝트 시뮬레이션을 수행한 실험군은 결함 밀도가 평균 35 % 감소하고, 코드 커버리지는 20 % 상승하였다. 또한 팀 내 커밋 빈도와 협업 도구 활용도는 크게 향상되었다. 정성적 평가에서는 설문·인터뷰를 통해 ‘팀워크 향상’, ‘실제 현장 감각 습득’, ‘문제 해결 자신감’ 등이 크게 증가했음을 확인하였다. 85 % 이상의 학생이 “실제 기업 프로젝트에 바로 투입될 수 있다”고 응답했으며, 이는 교육 효과가 실무 적응력 향상에 직접 연결됨을 시사한다.
핵심 인사이트는 다음과 같다. 첫째, 요구 분석 단계에서 불완전한 사양과 빈번한 변경을 직접 경험함으로써 요구 불확실성이 프로젝트 성공에 미치는 영향을 체감한다. 이는 전통적인 교과서식 교육에서 놓치기 쉬운 부분이다. 둘째, 형상 관리와 CI/CD 파이프라인을 실제로 구축·운영하면서 ‘도구 사용 능력’이 곧 ‘품질 보증 능력’으로 직결된다는 인식을 갖게 된다. 셋째, 다양한 역할을 순환 수행함으로써 개발자뿐 아니라 프로젝트 매니저, QA, 아키텍트의 관점을 동시에 이해하게 된다. 이는 인재 양성에 있어 다면적 역량을 키우는 데 큰 도움이 된다. 넷째, 대규모 팀에서는 충돌, 병목, 일정 지연 등 실패 상황이 빈번히 발생한다. 이러한 상황을 스프린트 레트로스펙티브를 통해 분석·보완함으로써 회복력(resilience)과 지속적인 개선 문화가 자연스럽게 내재된다.
하지만 연구에는 몇 가지 한계점도 존재한다. 첫째, 실제 프로젝트 수준의 인프라(서버, 라이선스, 테스트 장비 등)를 구축하는 데 상당한 비용과 인력이 필요하다. 이를 해결하기 위해 클라우드 기반 가상 환경을 활용해 비용을 절감할 방안이 제시된다. 둘째, 팀 성과를 개인 성과와 연결시키는 과정에서 평가 기준이 주관적일 위험이 있다. 자동화된 메트릭 수집과 동료 평가(peer‑assessment)를 결합한 다중 평가 체계가 필요하다. 셋째, 현재는 내부 교수진이 시나리오를 설계하지만, 기업 파트너와 공동으로 실제 프로젝트를 제공하면 교육 효과가 더욱 증대될 것이다.
교육적 함의로는 커리큘럼 재구성이 강조된다. 전통적인 ‘이론 → 실습 → 시험’ 흐름을 ‘문제 정의 → 설계 → 구현 → 검증 → 회고’ 순환 구조로 전환하고, 교수자는 지식 전달자가 아니라 ‘멘토·코치’ 역할을 수행한다. 또한 프로젝트 기반 학습을 통해 학생들은 스스로 학습하고 문제를 해결하는 능력을 기르며, 이는 급변하는 소프트웨어 산업에서 지속 가능한 경력 개발에 필수적이다. 최종적으로, 본 연구는 소프트웨어 공학 교육에 실제 프로젝트 시뮬레이션을 도입함으로써 학생들의 실무 역량, 팀워크, 문제 해결 능력을 현저히 향상시킬 수 있음을 실증적으로 입증한다.
**
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기