1. 프로젝트 소개
Log4shell 사태로 인해, 사용한 오픈소스를 문서화하지 않아 SW 구성요소에 대한 가시성 부족이 발생해 식별이 어려워 대응 시간이 지연되는 문제가 발생했다. 이러한 문제를 해결하기 위해 SBOM(Software Bill of Materials)이라는 문서 체계가 등장했다.
SBOM은 소프트웨어 구성 명세서로, 특정 소프트웨어 제품을 구성하는 모든 컴포넌트와 그 관계를 상세히 기술한 공식 문서이다. 이는 마치 제조업에서 사용하는 부품 목록(Bill of Materials)과 유사한 개념으로, 소프트웨어 개발 및 유지보수 과정에서 중요한 역할을 한다.
하지만, SBOM 문서를 작성한다고 끝나는 것이 아닌 해당 문서를 최신화하고 위변조 되지 않도록 무결성을 보장해야 한다. 이를 위해 블록체인이라는 기술을 활용하여 SBOM 문서를 안전하게 관리하기 위한 무결성 검증 시스템을 개발하였다.
2. 프로젝트 회고
이번 프로젝트를 되돌아보며, 우리 팀이 기대했던 좋은 결과물을 얻지 못했다. 돌이켜보면, 우리는 단순히 제출을 위한 결과물 생성에 급급했던 것 같아 아쉬움이 남는다.
1) 프로젝트의 목표 구체화의 실패
프로젝트의 가장 큰 문제점은 초기 단계에서 발생했다.
프로젝트를 수행하는 목표설정과 각 팀원들이 어떤결과물을 구체적으로 정의하지 않았다. 이로 인해 팀원들의 목표달성률과 프로젝트의 목표 달성률을 수치화할 수 없어 측정할 수 없는 프로젝트가 되었고, 만족스럽지 못한 결과물이 나오게 되었다.
2) 커뮤니케이션의 중요성
프로젝트 진행 과정에서 커뮤니케이션의 중요성을 뼈저리게 느꼈다.
각자의 개발에만 집중하다 보니 전체적인 프로젝트에 큰 그림에 대한 내용을 팀원이 모두 이해하지 못하였고, 이로 인해 각자가 개발한 부분을 합치는 부분에서 문제가 발생했다.
특히 블록체인의 기술에 대한 이해도 차이로 인해 프로젝트 설명에 많은 시간을 소비했다. 블록체인이 클라이언트-서버 구조가 아닌, 각 노드가 클라이언트와 서버 역할을 모두 할 수 있는 구조라는 점을 팀원들에게 효과적으로 전달하지 못한 것이 큰 문제였다.
또한, 팀원들의 기술 역량과 이해도를 충분히 고려하지 않고 역할을 분배한 것도 문제였다. 이로 인해 일부 팀원들은 자신의 능력을 벗어난 과제를 맡게 되었고, 이는 프로젝트 지연으로 이어졌다. 결국 프로젝트는 완벽하지 못한 상태로 마무리되었다.
3) 소프트웨어 설계의 중요성
이번 프로젝트를 통해 소프트웨어 설계의 중요성을 깨달았다. 복잡한 프로젝트를 수행하면서 소프트웨어의 동작을 이해하기 위해서는 체계적인 설계가 필수적이라는 것을 알게 되었다. 명확한 설계 문서와 다이어그램은 팀원들 간의 이해도 차이를 줄이고, 전체 시스템의 구조를 파악하는 데 큰 도움이 되었을 것이다.
4) 프로젝트 관리
프로젝트 관리를 위한 시각화 도구의 중요성도 인식하게 되었다. 겨울방학 중에 전체적인 역할만 배분하고 학기 중 개발 진행상황을 확인했을 때, 개발을 아예 진행하지 않았다는 것을 파악하였다. 이후 지도 교수님의 조언에 따라 간트 차트를 활용한 주간 보고를 기반으로 프로젝트를 수행하면서, 상황이 크게 개선되었다.
간트 차트를 통해 프로젝트의 전체적인 흐름과 진행도를 명확히 파악할 수 있었고, 이를 바탕으로 역할을 효과적으로 재배분하는 데 많은 도움이 되었다. 또한 이 도구를 통해 각 팀원의 작업 진행 상황을 실시간으로 확인할 수 있어, 지연되는 부분을 신속하게 파악하고 대응할 수 있었다.
이러한 경험을 통해 프로젝트 관리 도구의 활용이 단순히 진행 상황을 추적하는 것을 넘어, 팀의 생산성과 프로젝트의 성공에 직접적인 영향을 미친다는 것을 깨달았다. 향후 프로젝트에서는 초기 단계부터 이러한 도구를 적극적으로 활용하여 더 효율적인 프로젝트 관리를 해야겠다고 느꼈다.
3. 프로젝트 결과물